日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nRF51822 SDK初体验

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nRF51822 SDK初体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作為兩家BLE芯片大廠之一,nordic不像TI那么開放,nordic的開發資料是很難找的。 今天有幸得到nordic的BLE芯片nRF51822的SDK,看了一下。
首先,nordic號稱協議棧(稱為SoftDevice)和應用完全分開,是怎么實現的呢? TI的協議棧以庫的形式提供,用戶應用在鏈接時和庫鏈在一起形成最終的機器代碼,TI提供庫和頭文件供用戶使用。 nordic用了不同的方式:SoftDevice,這樣協議棧和用戶應用可以單獨編譯和鏈接。實現BLE的SoftDevice似乎叫S110,由nordic提供。我猜nordic應該只提供S110的機器碼,應該不會提供源代碼。 看了nRF51 SDK,里面確實沒有BLE的庫,所有sd_打頭的函數都是SoftDevice相關的。比如:sd_ble_gap_adv_data_set 這個函數是這么定義的: SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen)); 這個SVCALL在使用MDK時是這么定義的: #define SVCALL(number, return_type, signature) return_type __svc(number) signature 似乎是使用了Cortex-M0的SVC機制實現Softdevice。 (題外話,我在想Nordic會把自己的協議棧綁在一種CPU架構上嗎?不是的,代碼里有一個開關SVCALL_AS_NORMAL_FUNCTION 可以讓上面的SVCALL宏定義變成普通的函數聲明。當然在沒有 源代碼和庫的情況下打開這個開關會出現找不到函數實現的鏈接錯誤)
總體來說我覺得softdevice就是nordic一種封閉協議棧核心代碼的方式,和TI提供庫文件的方式沒有區別。 nordic號稱自己的協議棧可以配合其它的RTOS,但是如果RTOS也用了相同的SVC呢? 我不關心nordic或者TI的協議棧核心代碼實現,就算給我源代碼我也懶得看,但是我覺得TI用庫提供協議棧的方式更直接和通用;nordic這種方式太取巧了,某些時候會給用戶帶來一些限制。 當然51822還是有一些優勢的,至少封裝比較小。
至于怎么在nRF51822上開發應用我還沒來得及看,沒辦法和TI的架構比較

總結

以上是生活随笔為你收集整理的nRF51822 SDK初体验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。