记录如何为nordic 键鼠sdk移植s130协议栈

    nordic 有一个专门针对键鼠的sdk,用的协议栈是s110.官方并没有将sdk移植到s130上,由于s130的一些新特性,有可能需要将协议栈升级到s130.这里的s130指的是s130 v2.0.1,也就是三个s130版本中最新的。在这个版本中有对more data的支持。

     首先。在官网上下载s130协议栈:https://www.nordicsemi.com/Software-and-tools/Software/S130/Download#infotabs

    然后应该在sdk中新建一个文件夹,并替换掉s110的头文件:

记录如何为nordic 键鼠sdk移植s130协议栈

 

因为后面会用到S130宏,在这里可以一起加上:

记录如何为nordic 键鼠sdk移植s130协议栈

然后就是解决掉所有的编译错误。个人错误都有不同,这里记录一些我遇到的通用问题。同时最官方的文档应该是s13x_nrf5x_2.0.1_migration_document.pdf和S130_SDS_v2.0.pdf。

    首先,修改rom和ram的大小设置:

记录如何为nordic 键鼠sdk移植s130协议栈

启重rom的起始必须是0x1B000,因为s130协议栈的大小是108K。提一句rom的分配,softdevice(包含MBR)+app(可能是双份,因为空中升级的缘故)+用户flash数据+bootloard。回到图片。rom的size应该根据自己的app大小设置。ram的起始位置也就是softdevice所占用的内存大小。如何设置这个大小和s110不同。官方说法如下:

记录如何为nordic 键鼠sdk移植s130协议栈

也就是说根据你协议栈初始化设置参数的不同,协议栈所占用的内存是不一样的。我个人的经验是,如果你没更改应用代码,在s110上的设置也适用s130.sd_ble_enable是修改最大的地方,原有的肯定要从写。具体如何从写建议参考使用s130的官方sdk。

 

MBR_SIZE这个宏被从协议栈的头文件中移除。需要添加,一般是0x1000。

sd_nvic开头的api以前是以sv calls的方式调用的,现在以静态函数的方式提供。需要在.c文件中添加nrf_nvic_state_t nrf_nvic_state = {0};全局变量。

有关安全**的结构体成员被更改了名字:

记录如何为nordic 键鼠sdk移植s130协议栈 

上面是我遇到的主要问题,在 s13x_nrf5x_2.0.1_migration_document.pdf这篇文档中都有详细说明。这篇文档的后半部分还说明了s130协议栈的新功能。这两篇文档都可以在官网中找到,或者在你的sdk下的说明文档中去找。不再上传。