nrf51822用了 *** 作系统吗

nrf51822用了 *** 作系统吗,第1张

首先,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的架构比较

Q: k60pro能申请手环吗 :

如果橘颂肢你拥有一个nRF52840手环,是的,你樱埋可以申请使用nRF52840的nRF52840-DK硬件开发圆世板(nRF52840-DK),这是一款基于Nordic Semiconductor nRF52840蓝牙SoC(System on Chip)的开发板。它支持Nordic的nRF Connect SDK,可以用来开发基于Bluetooth Low Energy的应用程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12242703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存