记录开发zephyr的两三事

微信:bangYS

刚听到zephyr是前些年,一个朋友跟我说的,嵌入式的Linux。

的确,Zephyr跟Linux有千丝万缕的联系。

1. Zephyr用dts管理设备,底层也分驱动层和hal层。

2. Zephyr工程也是通过Kconfig来配置的。

3. Zephyr支持shell接入口,虽然没有Linux的shell功能强大,也是一个强大的交互接口。

4. Zephyr支持多线程。

5. Zephyr支持与Linux类似的初始化声明,SYS_INIT等。

Zephyr的官网文档是Zephyr Project Documentation — Zephyr Project Documentationhttps://docs.zephyrproject.org/latest/index.html

Nrf的官网文档是Welcome to the nRF Connect SDK! — nRF Connect SDK 1.9.99 documentationhttps://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.htmlZephyr一直在完善中,版本更新也是挺快的。

Zephyr开发过程中,最麻烦是配置config。当配置config遇到困难的时候,不妨上官网查看config的作用:

All Configuration Options — Kconfig referencehttps://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index-all.html

  1. 工程管理:

    1. Zephyr的工程管理工具是west,一个python工具,可以通过pip3 install west安装。官网指引:Getting started — nRF Connect SDK 1.9.99 documentationhttps://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/getting_started.html
    2. Zephyr的编译工具是cmake。其中cmake嵌套,需要用心查找才能知道细节之处。
  2. 代码结构:
    1. bootloader:

      1. 路径:bootloader/mcuboot/boot/zephyr。
      2. 官网:https://www.mcuboot.com/documentation/https://www.mcuboot.com/documentation/
    2. zephyr系统:
      1. 路径:zephyr。
      2. kernel header: zephyr/include/kernel.h。
    3. 网络核bootloader:
      1. 路径:nrf/samples/nrf5340/netboot。
      2. 备注:根据芯片及设置不同会有所不同。
    4. 网络核zephyr系统:
      1. 路径:zephyr。
      2. kernel header: zephyr/include/kernel.h。
    5. 备注:zephyr工程是以zephyr系统为核心,应用核和网络核都是跑zephyr操作系统,特别是网络核的bootloader就是一个剪裁版的zephyr(单线程的zephyr)。其他第三方的代码,皆以module的方式打包到工程中。
  3. 常用指令:
    1. 编译指令:west build -b <board> <application dir> -d <build dir> -p ; -p表示清空并编译,可选项。
    2. 下载指令:west flash -d <build dir> --skip-rebuild --recover ;--skip-rebuild表示直接下载,不重新编译;--recover表示清空flash再下载。后2个参数都是可选项。
  4. log:
    1. 路径:zephyr/subsys/logging。
    2. 用法:
      #include <logging/log.h>
      LOG_MODULE_REGISTER(smp_service);
  5. mcuboot:
    1. mcuboot是应用核的bootloader。
    2. mcuboot包含AB升级功能。
    3. mcuboot包含image解析和校验功能。
    4. Documentation | MCU Boot https://www.mcuboot.com/documentation/
  6. file system:
    1. Zephyr的文件系统的应用层接口在zephyr/subsys/storage,分flash_map和stream 2个模式。
    2. 驱动在zephyr/drivers/flash和nrf/drivers/flash。
  7. mbedtls:
    1. Zephyr支持的加密库。
    2. 配置复杂,需要根据需要配置config。
  8. shell:
    1. 可以用TAB查看支持的命令。
    2. 可以自己添加命令。
    3. Shell — Zephyr Project Documentationhttps://docs.zephyrproject.org/3.0.0/reference/shell/index.html
  9. 样例工程:
    1. 路径:nrf/samples和zephyr/samples。
    2. 遇事不决,多查sample有没有例子。
  10. IO控制:
    1. 与一般嵌入式类似。
    2. 需要通过dts获取dev。
    3. 不懂就查samples。
  11. Settings:
    1. 路径:zephyr/subsys/settings。
    2. 系统设置,可根据需要设置读写接口,写可以操作flash或ram(变量),实现永久数据或运行时数据。
  12. 系统时间:
    1. zephyr/subsys/timing。
    2. 可以通过外部时钟对系统时间进行高精度的跳动。

林林总总,很多姿势是没在此文体现的,欢迎朋友们遇到问题后一起交流。

道阻且长,行则将至

Zephyr (nrf)相关推荐

  1. ai人工智能将替代人类_AI再次击败人类

    ai人工智能将替代人类 内容丰富 (Informative) Let's take a stroll down memory lane and take a look at the times whe ...

  2. 桌面版应用_【Nordic博文分享系列】开发你的第一个NCS(Zephyr)应用程序

    Nordic有2套并存的SDK 1.老的nRF5 SDK 2.新的NCS SDK 两套SDK相互独立, 大家选择其中一套进行开发即可. 一般而言,如果你选择的芯片是nRF51或者nRF52系列,那么推 ...

  3. nRF Connect SDK(NCS)-Windows开发环境搭建

    目录 安装nRF Connet for Desktop 安装nRF Command Line Tools 安装nRF Connect SDK 1.打开nRF Connet for Desktop,安装 ...

  4. Zephyr pinctrl

    文章目录 PIN控制器 状态模型 标准状态 自定义状态 跳过状态 动态引脚控制 设备树 状态 ESP32 pinctrl 设备树节点 ESP32 pinctrl 驱动 总结 PIN控制器 在芯片中控制 ...

  5. zephyr 的MCUBOOT 使用笔记---基于Nordic 52840

    MCUBOOT 什么是MCUBOOT mcuboot 和常用的BootLoader有一些区别,实际上mcuboot相当于一个安全的引导程序,(注意这里的mcuboot只关注于安全引导,像我们常用的Bo ...

  6. 青风nrf52832跑zephyr——点亮LED

    zephyr版本:1.10 硬件:采用青风nrf52832开发板 开发环境:虚拟机Ubuntu16.04编译+Windows7 64bit烧录 使用的是 zephyr-zephyr-v1.10.0/s ...

  7. zephyr的GPIOTE驱动开发记录——基于nordic的NCS

    本次测试了zephyr的中断驱动方式(GPIOTE),在这可以去看zephyr的官方文档对zephyr的中断定义,连接如下,Interrupts - Zephyr Project Documentat ...

  8. 重学蓝牙之nrf connect sdk 基于nrf52840dk--介绍

    最近因为项目的缘故,又再次使用到了nordic的芯片,想到了18年无限踩坑的52832,永远不知道什么时候才会用的到的long range和增大的广播包,无限感慨. 但是,当同事提前调研告诉我,nor ...

  9. Zephyr内核到1.5版本的改进

    Zephyr内核从1.0到1.5版本发生了很大改变,这些改变给开发人员带来了很大方便,具体如下: ①消除微内核和超微内核构建类型的分离 ②消除微内核应用程序中的MDEF ③更简单易用的内核API ④宽 ...

最新文章

  1. Xamarin.FormsShell基础教程(9)Shell相关类体系
  2. JavaWeb之Servlet学习-----实现文件动态下载功能 手写servlet 手动构建web程序
  3. 技嘉主板万能网卡驱动_技嘉Z490系列主板来袭:16相供电/钽电容,堆料更进一步...
  4. SQL Server导入导出工具弱爆了
  5. mysql注解实体类_jpa实体类生成mysql表及字段注解
  6. php微信商户下载对账单,浅析微信支付:下载对账单和资金账单
  7. ProGuard:类混淆,类的指定函数保留
  8. 学堂在线计算机,学堂在线PC客户端
  9. 做了三年开发后,我选择回家创业
  10. 软件项目管理 --SVN目录结构
  11. 2022用户画像构建
  12. go mysql transfer_GitHub - weiki516/go-mysql-transfer: MySQL Binlog 增量实时同步工具
  13. php.ini 验证码,php怎么解决验证码无法显示的问题
  14. Unity分屏显示效果
  15. 软件测试 | 测试开发 | 双非院校,从外包到外企涨薪85%,他的涨薪秘籍全公开
  16. java 栅栏_Java 并发工具类(栅栏 CyclicBarrier )
  17. Zabbix监控组件介绍、工作原理、监控方式、监控概念
  18. 什么是 Web 3.0?定义、功能和示例
  19. 2020华师计算机基础客观作业,华师13春计算机基础作业
  20. 网易星球区块链靠谱吗?看着点就知道

热门文章

  1. Linux树莓派开发——刷机
  2. 【整理】EFI/UEFI BIOS 入门 : All For Beginners
  3. 逻辑回顾_回顾色彩设计
  4. 快速傅里叶变换python_基于python的快速傅里叶变换FFT(二)
  5. 二维点云拉普拉斯深度平滑算法-matlab
  6. java 对音频文件降噪_(转)音频降噪算法 附完整C代码
  7. Zookeeper Paxos算法 一致性协议
  8. dB,dBi和dBm的区别
  9. H5一键复制 兼容iOS
  10. JVM设置对象直接进入年老代