新闻  |   论坛  |   博客  |   在线研讨会
如何向RT-Thread 仓库提交代码
电子禅石 | 2019-01-15 10:33:41    阅读:14716   发布文章

摘要:以最近官方的一个制作STM32 BSP 为例子,讲解如何向RT-Thread 仓库提交代码。

并且只有一次提交commit.

编程风格

RT-Thread 代码编程风格请参考 rt_thread 项目 documentation 目录下的 coding_style_cn.txt文件。

准备工作

  • 安装 git

  • 安装 TortoiseGit/ Sourcetree 工具,这两个个工具是 git 的一种图形化界面

  • 注意安装 git 的时候记得勾选将 git 所在目录添加到系统环境变量

  • 必须是fork最新的代码。

1.fork 到自己的仓库。1.png

图1:

2.png

2.克隆(clone)

将 rt-thread 仓库 clone 到自己的本地 PC。

3.png

图3:

在本地找个文件夹,

先使用git init 命令 初始化一个仓库。

再使用 clone 命令。

git clone https://github.com/XiaojieFan/rt-thread.git

4.png

图4:

这就是克隆后的最终结果。

5.png

图5:

3. 创建本地分支

我们在这里创建一个stm32f103-hw100k-ibox分支为例。目标是保证提交的干净整洁。

这样做的好处是,master 可以跟踪rt-thread 库获取最新的代码,然后自己可以在stm32f103-hw100k-ibox分支进行开发,两者相互不影响,开发完,进行合并就可以。

这是之前的理解,有点问题,你的分支是不需要合并的,其实master 必须保证是最新的代码,然后每次开发在master上建立分支,所以就不需要合并自己的分支。然后就能保证最小的提交数量,保证提交的整洁。或者你修改好了,copy 出来,然后分支回退,也能保证提交干净。

6.png

图6:

4.开发

在之前已经做好的stm32f103-hw100k-ibox bsp 基础上修改LED引脚。

7.png

图7:

编译通过。

8.png

图8:

实际板子验证一下,能正常运行。

9.png

图9:

5. 提交(commit)

向本地仓库提交 bug.   不推送到远程仓库。

提交的话,需要先把多余的文件清理干净。具体可参考其他bsp,进行最终提交代码的整理。

10.png

图10:

11.png

图11:

RT-Thread STM32 系列 BSP 制作与提交时应当遵守的规范 。开发人员在 BSP 制作完成后,可以根据本规范提出的检查点对制作的 BSP 进行检查,确保 BSP 在提交前有较高的质量

1. BSP 制作规范

STM32 BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 IDE 配置。在已有的 STM32 系列 BSP 的模板中,已经根据下列规范对模板进行配置。在制作新 BSP 的过程中,拷贝模板进行修改时,需要注意的是不要修改这些默认的配置。BSP 制作完成后,需要对新制作的 BSP 进行功能测试,功能正常后再进行代码提交。

下面将详细介绍 BSP 的制作规范。

工程配置

  • 遵从RT-Thread 编码规范,代码注释风格统一

  • main      函数功能保持一致

    • 如果有 LED 的话,main 函数里只放一个 LED 1HZ 闪烁的程序

    • LED_PIN       定义在 board.h,初始化在 board.c 完成

  • rt_hw_board_init 中需要完成堆的初始化:调用 rt_system_heap_init

  • 默认只初始化 GPIO 驱动和 FinSH 对应的串口驱动,不使用 DMA

  • 当使能板载外设驱动时,应做到不需要修改代码就能编译下载使用

  • 提交前应检查      gcc/mdk/iar 三种编译器直接编译或者重新生成后编译是否成功

  • 使用 dist 功能对 BSP 进行发布,检查使用 dist 命令生成的工程是否可以正常使用

Gcc 如何检查呢?说是改python 脚本。不然没法改参数。

直接在env中使用scons 命令就可以。会生成rtthread.bin 文件。


 12.png

 

图12: 

ENV 配置规范

IDE 配置规范:

BSP 提交规范:

以上规范详见:https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md

6. 保持本地仓库最新

保持本地仓库最新。因为第一步已经保证了。所以这里是保证后续如何与RTT仓库保持同步更新。 这里只列出一种方法:https://blog.csdn.net/qq1332479771/article/details/56087333

在准备发起 Pull Request 之前,需要同步原仓库最新的代码,记得检查目前的项目是否是最新的版本。

13.png

(13)

14.png

(14)

15.png

(15)


16.png

(16)

16-1.png

(17)

点获取最新代码,

18.png

(18)

19.png


(19)

然后拉取到本地。

20.png

(20)

21.png

(21)

22.png

(22)

然后将自己的分支合并到主分支上,以让自己的分支也是最新的代码。其实还有方法可以直接更新分支的代码和远程RTT 保持一致。然后直接提交分支就可以。不需要合并。

23.png

(23)

7. Push 到自己的远程仓库

push 到开发者自己的远程仓库中。

24.png

(24)

25.png

(25)

8.发起并完成 Pull Request

在 git 仓库中选择自己修改了的分支,点击 create pull request 按钮发起 pull request。注意顺序。

26.png

(26)

27.png

(27)

第一次提交有个CLA协议的签署。

28.png

(28)

29.png

(29)

30.png

(30)

签完以后,就可以看见自己的提交请求。等待审核。

31.png

(31)

最后官方人员审核完成后的结果如下会被合并到库里面:

32.png

33.png

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客