找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3260|回复: 1
收起左侧

nRF51822 SDK初体验

[复制链接]
ID:51024 发表于 2014-8-16 23:09 | 显示全部楼层 |阅读模式
作为两家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的架构比较

回复

使用道具 举报

ID:552794 发表于 2019-6-11 22:32 | 显示全部楼层
我这里有51822的模块,可以提供开发测试使用。很想同您合作,不知意向如何?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表