假日嵌入式藍芽開發工程師:nRF51822 (5)
Introduction of SoftDevice 這一篇我要介紹Nordic SDK的用法,我第一次讀完寫的筆記。自己也都不大會,只好寫下來給社會大眾笑了。 通信系統一般會包括 {Antenna, LNA, RF filter-chain, Digital-front-end, Baseband, BLE protocol}。Baseband/ protocol包括硬體加速器和軟體,這邊的軟體就是SoftDevice,Nordic提供編譯好的binary,燒進指定區域就有BLE protocol可以用。Nordic提供 一系列的SoftDevice ,我只用過S110,其他的都是照著網頁的寫(心虛) S110:BLE Peripheral S120:BLE Peripheral or Central S130:BLE Central, Observer, Broadcaster S210:ANT+ S310:BLE & ANT+ concurrent Nordic的SoftDevice燒進去後,memory map如下圖,S110占Flash(96KB),RAM(8KB),這個數量級證明BLE protocol沒辦法自幹。Nordic SDK讓BLE protocol和User code跑在同個space裡,使用MPU(Memory Protection Unit)保護記憶體不互踩,只是debug要花點心思。另外SoftDevice會佔某些MCU的硬體,用戶要知道哪些硬體還可以用。這種做法最優的地方是BLE protocol能無痛升級,怎麼設計SoftDevice也很有趣。用戶的code用SVC(Supervisor Call)呼叫SoftDevice,這部分等有空再寫一下。我在用的S110 SoftDevice這裡有 文件 可以閱讀。 Basic Program Structure of LBS Example 底下介紹 上一篇 的程式,Nordic sample code結構都差不多,先把周邊設備都初始化,然後初始化BLE stack,最後進入一個low power的main-loop等待事件。Nordic整份SDK都用了event-driven思維,這部分也很值得學習。 看懂