同步上游代码说明.md 3.1 KB

同步上游代码说明

这里简要说明一下,同步上游代码时主要修改了哪些地方。上游官方仓库

NimBLE 目录结构

NimBLE
   ├───apps                   /* Bluetooth 示例应用程序 */
   ├───docs                   /* 文档及 API 说明 */
   ├───ext
   │   └───tinycrypt          /* Tinycrypt 加密库 */
   ├───nimble
   │   ├───controller         /* Controller 实现 */
   │   ├───doc                /* 当前包含 transport 层说明文档 */   
   │   ├───drivers            /* Nordic 系列 Phy 驱动 */
   │   ├───host               /* Host Stack(主机控制器)实现 */
   │   ├───include
   │   └───transport          /* HCI 传输抽象层 */
   └───porting                /* OS 抽象层及系统配置 */

apps

此目录下都为 Bluetooth 示例应用程序,大部分程序做了 RT-Thread 的适配,已有的例程建议不要直接覆盖;官方对此部分改动应该不会很大,要对照实际内容修改,也可在 debug 过程中修改代码。

官方写的新例程可以尝试添加一下,并按照其他例程形式修改一下在 RT-Thread 上跑起来。

docs

此目录下都为文档资料,包含官方文档,也有后续 rt-thread 社区小伙伴 PR 的文档。官方文档可以更新一下,基本内容都比较少。

ext

目录下包含扩展库,目前包含了一个 Tinycrypt 加密库,提供了一个最小的标准密码原语集,可以跟着官方更新一下。

nimble

nimble 目录下的文件基本上都是协议栈的主干部分,包括 controller 、host 和 transport HCI 传输抽象层的东西。 此部分代码与 RT-Thread 基本没有耦合,属于协议栈本身代码;如果要同步到上游,这一部分文件基本都要同步。

不过要注意 transport 下 RT-Thread UART 对接 HCI 的代码,如果 HCI 层框架改变了,则需要进行相应调整。

porting

porting 目录如下

porting                /* OS 抽象层及系统配置 */
    ├───nimble
    │   ├───include
    │   └───src
    └───npl
        └───rtthread       /* RT-Thread OS 接口实现 */
            ├───include
            │   ├───config /* NimBLE 协议栈配置选项 */
            │   ├───console
            │   └───nimble
            └───src

基本是 OS 抽象层与 rtthread 的对接代码,包括系统配置等等。

  • porting/nimble 目录下代码主要是定义 OS 抽象层框架 和 系统配置,可以同步到上游。
  • npl/rtthread 则是 OS 抽象层对接 RT-Thread 的移植代码,一般保留不动,如遇到 bug 可能需要适当调整。

SConscript 文件

SConscript 文件在 NimBLE 软件包根目录下,是 Scons 构建工具的构建描述文件。

在同步上游代码后,需要针对实际编译情况对此文件进行相应修改,如移除某些文件,添加某些头文件路径,添加某些源文件加入编译等。