Zephyr (nrf)
记录开发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
- 工程管理:
- 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
- Zephyr的编译工具是cmake。其中cmake嵌套,需要用心查找才能知道细节之处。
- 代码结构:
- bootloader:
- 路径:bootloader/mcuboot/boot/zephyr。
- 官网:https://www.mcuboot.com/documentation/https://www.mcuboot.com/documentation/
- zephyr系统:
- 路径:zephyr。
- kernel header: zephyr/include/kernel.h。
- 网络核bootloader:
- 路径:nrf/samples/nrf5340/netboot。
- 备注:根据芯片及设置不同会有所不同。
- 网络核zephyr系统:
- 路径:zephyr。
- kernel header: zephyr/include/kernel.h。
- 备注:zephyr工程是以zephyr系统为核心,应用核和网络核都是跑zephyr操作系统,特别是网络核的bootloader就是一个剪裁版的zephyr(单线程的zephyr)。其他第三方的代码,皆以module的方式打包到工程中。
- bootloader:
- 常用指令:
- 编译指令:west build -b <board> <application dir> -d <build dir> -p ; -p表示清空并编译,可选项。
- 下载指令:west flash -d <build dir> --skip-rebuild --recover ;--skip-rebuild表示直接下载,不重新编译;--recover表示清空flash再下载。后2个参数都是可选项。
- log:
- 路径:zephyr/subsys/logging。
- 用法:
#include <logging/log.h> LOG_MODULE_REGISTER(smp_service);
- mcuboot:
- mcuboot是应用核的bootloader。
- mcuboot包含AB升级功能。
- mcuboot包含image解析和校验功能。
- Documentation | MCU Boot https://www.mcuboot.com/documentation/
- file system:
- Zephyr的文件系统的应用层接口在zephyr/subsys/storage,分flash_map和stream 2个模式。
- 驱动在zephyr/drivers/flash和nrf/drivers/flash。
- mbedtls:
- Zephyr支持的加密库。
- 配置复杂,需要根据需要配置config。
- shell:
- 可以用TAB查看支持的命令。
- 可以自己添加命令。
- Shell — Zephyr Project Documentationhttps://docs.zephyrproject.org/3.0.0/reference/shell/index.html
- 样例工程:
- 路径:nrf/samples和zephyr/samples。
- 遇事不决,多查sample有没有例子。
- IO控制:
- 与一般嵌入式类似。
- 需要通过dts获取dev。
- 不懂就查samples。
- Settings:
- 路径:zephyr/subsys/settings。
- 系统设置,可根据需要设置读写接口,写可以操作flash或ram(变量),实现永久数据或运行时数据。
- 系统时间:
- zephyr/subsys/timing。
- 可以通过外部时钟对系统时间进行高精度的跳动。
林林总总,很多姿势是没在此文体现的,欢迎朋友们遇到问题后一起交流。
道阻且长,行则将至
Zephyr (nrf)相关推荐
- ai人工智能将替代人类_AI再次击败人类
ai人工智能将替代人类 内容丰富 (Informative) Let's take a stroll down memory lane and take a look at the times whe ...
- 桌面版应用_【Nordic博文分享系列】开发你的第一个NCS(Zephyr)应用程序
Nordic有2套并存的SDK 1.老的nRF5 SDK 2.新的NCS SDK 两套SDK相互独立, 大家选择其中一套进行开发即可. 一般而言,如果你选择的芯片是nRF51或者nRF52系列,那么推 ...
- nRF Connect SDK(NCS)-Windows开发环境搭建
目录 安装nRF Connet for Desktop 安装nRF Command Line Tools 安装nRF Connect SDK 1.打开nRF Connet for Desktop,安装 ...
- Zephyr pinctrl
文章目录 PIN控制器 状态模型 标准状态 自定义状态 跳过状态 动态引脚控制 设备树 状态 ESP32 pinctrl 设备树节点 ESP32 pinctrl 驱动 总结 PIN控制器 在芯片中控制 ...
- zephyr 的MCUBOOT 使用笔记---基于Nordic 52840
MCUBOOT 什么是MCUBOOT mcuboot 和常用的BootLoader有一些区别,实际上mcuboot相当于一个安全的引导程序,(注意这里的mcuboot只关注于安全引导,像我们常用的Bo ...
- 青风nrf52832跑zephyr——点亮LED
zephyr版本:1.10 硬件:采用青风nrf52832开发板 开发环境:虚拟机Ubuntu16.04编译+Windows7 64bit烧录 使用的是 zephyr-zephyr-v1.10.0/s ...
- zephyr的GPIOTE驱动开发记录——基于nordic的NCS
本次测试了zephyr的中断驱动方式(GPIOTE),在这可以去看zephyr的官方文档对zephyr的中断定义,连接如下,Interrupts - Zephyr Project Documentat ...
- 重学蓝牙之nrf connect sdk 基于nrf52840dk--介绍
最近因为项目的缘故,又再次使用到了nordic的芯片,想到了18年无限踩坑的52832,永远不知道什么时候才会用的到的long range和增大的广播包,无限感慨. 但是,当同事提前调研告诉我,nor ...
- Zephyr内核到1.5版本的改进
Zephyr内核从1.0到1.5版本发生了很大改变,这些改变给开发人员带来了很大方便,具体如下: ①消除微内核和超微内核构建类型的分离 ②消除微内核应用程序中的MDEF ③更简单易用的内核API ④宽 ...
最新文章
- Xamarin.FormsShell基础教程(9)Shell相关类体系
- JavaWeb之Servlet学习-----实现文件动态下载功能 手写servlet 手动构建web程序
- 技嘉主板万能网卡驱动_技嘉Z490系列主板来袭:16相供电/钽电容,堆料更进一步...
- SQL Server导入导出工具弱爆了
- mysql注解实体类_jpa实体类生成mysql表及字段注解
- php微信商户下载对账单,浅析微信支付:下载对账单和资金账单
- ProGuard:类混淆,类的指定函数保留
- 学堂在线计算机,学堂在线PC客户端
- 做了三年开发后,我选择回家创业
- 软件项目管理 --SVN目录结构
- 2022用户画像构建
- go mysql transfer_GitHub - weiki516/go-mysql-transfer: MySQL Binlog 增量实时同步工具
- php.ini 验证码,php怎么解决验证码无法显示的问题
- Unity分屏显示效果
- 软件测试 | 测试开发 | 双非院校,从外包到外企涨薪85%,他的涨薪秘籍全公开
- java 栅栏_Java 并发工具类(栅栏 CyclicBarrier )
- Zabbix监控组件介绍、工作原理、监控方式、监控概念
- 什么是 Web 3.0?定义、功能和示例
- 2020华师计算机基础客观作业,华师13春计算机基础作业
- 网易星球区块链靠谱吗?看着点就知道