1 前言

本来想学习Zyphyr的​​Power Management​​,但是看着看着就被带进去了。

你看功耗,里面的suspend涉及到时间补偿相关的吧,然后就涉及到了​​Kernel Clocks​​/​​Timers​​/​​Thread Sleeping​​。

然后你得知道内核运行情况,想去获取消息,就得熟悉内核的​​Logging​​,包括​​System Logging​​和​​Kernel Event Logger​​。

如果想看到内核实时状态,就还需一个管道取一窥究竟,这就离不开​​Shell​​。

 

如果觉得这已经够了,那就错了。​​Zephry Doc​​已经将Zephyr的方方面面文档归纳总结了。

所以觉得花点时间梳理一下官方文档,了解其知识地图,有利于快速学习、快速查找。

2 Zephyr官方文档地图

2.1 Zephyr Kernel入门

在​​Zephyr Kernel Primer​​关于Kernel的概述介绍了Zephyr内核的:

​Source Tree Structure​​:目录结构

​Threads​​:线程的生命周期、线程调度、线程私有数据、系统线程(idle/main)、工作队列。

​Timing​​:内核时钟和定时器。

​Memory Allocation​​:内存分配器、内存池和对内存池。

​Synchronization​​:内核同步相关的Semaphore、Mutex和Alert。

​Data Passing​​:介绍了不同线程间或者线程和中断间传递参数的方式fifo、lifo、stack、消息队列、管道、mailbox。

​Other Services​​:介绍了内核其他服务中断、原子操作、轮询API、Ring Buffer、浮点数、C++支持、CPU Idling(强制进入idle)、Memory Domain(内存共享)。

 

2.2 Zephyr设备驱动

​Device and Driver Support​​设备驱动是内核的很大一块,所以单独介绍。

​Device Drivers and Device Model​​介绍了驱动通用设备模型以及编写设备驱动API、范例等等。设备驱动的配置数据​​Device Tree​​介绍了如何定义一个设备各种属性。

 

2.3 子系统

Zephyr将一些重要的功能单独成为​​Subsystem​​子系统,包括:

​Bluetooth​​蓝牙、一个裁剪最小化的​​Standard C Library​​、日志​​Logging​​(​​System Logging​​和​​Kernel Event Logger​​)、Zephyr的网络支持​​Networking​​、低功耗管理​​Power Management​​、​​传感器Sensor Drivers​​、​​Shell​​、测试​​Tesing​​相关的测试框架​​Test Framework​​和可用性测试​​Sanity Test​​、​​USB​​。

 

2.4 Zephyr开发指导

如何移植Zephyr(架构和主板)​​Porting Guides​​,对Zephyr的配置选项​​Configuration Options Reference Guide​​逐个详细介绍,还需要熟悉内核应用开发的​​API Documentation​​。

在做了以上了解之后,就可以进行​​Application Development Primer​​了,当然对一些基本功能也提供了​​Samples and Demos​​。

 


【作者】张昺华


【微信公众号】 张昺华