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。
3 學習記錄
2 Zephyr官方文檔地圖基本上覆蓋了Zephry的幫助文檔,然后就可以根據需要展開了。