这里简要说明一下,同步上游代码时主要修改了哪些地方。上游官方仓库
NimBLE
├───apps /* Bluetooth 示例应用程序 */
├───docs /* 文档及 API 说明 */
├───ext
│ └───tinycrypt /* Tinycrypt 加密库 */
├───nimble
│ ├───controller /* Controller 实现 */
│ ├───doc /* 当前包含 transport 层说明文档 */
│ ├───drivers /* Nordic 系列 Phy 驱动 */
│ ├───host /* Host Stack(主机控制器)实现 */
│ ├───include
│ └───transport /* HCI 传输抽象层 */
└───porting /* OS 抽象层及系统配置 */
此目录下都为 Bluetooth 示例应用程序,大部分程序做了 RT-Thread 的适配,已有的例程建议不要直接覆盖;官方对此部分改动应该不会很大,要对照实际内容修改,也可在 debug 过程中修改代码。
官方写的新例程可以尝试添加一下,并按照其他例程形式修改一下在 RT-Thread 上跑起来。
此目录下都为文档资料,包含官方文档,也有后续 rt-thread 社区小伙伴 PR 的文档。官方文档可以更新一下,基本内容都比较少。
目录下包含扩展库,目前包含了一个 Tinycrypt 加密库,提供了一个最小的标准密码原语集,可以跟着官方更新一下。
nimble 目录下的文件基本上都是协议栈的主干部分,包括 controller 、host 和 transport HCI 传输抽象层的东西。 此部分代码与 RT-Thread 基本没有耦合,属于协议栈本身代码;如果要同步到上游,这一部分文件基本都要同步。
不过要注意 transport 下 RT-Thread UART 对接 HCI 的代码,如果 HCI 层框架改变了,则需要进行相应调整。
porting 目录如下
porting /* OS 抽象层及系统配置 */
├───nimble
│ ├───include
│ └───src
└───npl
└───rtthread /* RT-Thread OS 接口实现 */
├───include
│ ├───config /* NimBLE 协议栈配置选项 */
│ ├───console
│ └───nimble
└───src
基本是 OS 抽象层与 rtthread 的对接代码,包括系统配置等等。
SConscript 文件在 NimBLE 软件包根目录下,是 Scons 构建工具的构建描述文件。
在同步上游代码后,需要针对实际编译情况对此文件进行相应修改,如移除某些文件,添加某些头文件路径,添加某些源文件加入编译等。