当一个 BSP 制作完成之后,需要提交者自查以下内容,这样 review 周期会大大缩短。以下所有要求不针对厂商提供的库文件驱动等等,但为防止库文件 ci 不通过,需要增加一个 .ignore_format.yml 文件到新的 bsp 路径(文件内容参照如下),加入库文件相对路径,将忽略检查该库文件的格式。例如:# files format check exclude path, please follow the instruc tions below to modify;# If you need to exclude an entire folder, add the folder path in dir_path;# If you need to exclude a file, add the path to the file in file_path.file_path:dir_path:
![]() 代码规范部分首先了解代码规范,举例代码格式要求:不允许中文注释4 个空格缩进大括号换行了解上述链接中的代码规范之后,根据链接中的文档要求编写代码,代码格式可以使用 astyle 格式化。readme 检查是否清晰可读 开发板的照片芯片资源的介绍中是否包含 FLASH,RAM(需要在 heap 配置时候检查大小,链接脚本是否配置正确)添加开发板资源的链接硬件连接是否清晰文档中英文之间添加空格,可以使用 vscode-pangu 插件一键格式化文档检查联系人信息,添加维护人自己的名字和 github 链接命名检查函数、变量名:小写命名不包含芯片厂商名,具体如下:bsp 函数命名规范:驱动 ops 命名规则:_外设名_操作 ,以 uart 举例:static _uart_read/write()驱动注册接口命名规则:rt_hw_外设_init(),以 uart 举例:int rt_hw_uart_init(void)代码应用代码不包含设备驱动头文件,如 main 中不出现 #include "drv_gpio.h" ,驱动头文件可以包含在 board.h 中。GCC 代码 rtt 启动部分是否修改(entry)HEAP 大小配置是否正确检查链接脚本 ram rom 大小是否正确中断需要 rt_interrupt_enter(); 与 rt_interrupt_leave();驱动合并重复代码驱动函数名小写不允许提交空文件代码精简:是否存在无用的文件是否存在注释的代码, 如: if 0没有多于一行的连续换行注释注释格式如下,注释应该为英文注释,只允许放在 函数 / 语句 上方或右方/* xxx */license所有文件都要有 license 文件头不能有 GPL 等与 apache 版权冲突的版权非 apache 的兼容 license,需要更新 bsp 目录下的 license 声明:Copyright_Notice.md。bsp 按照字母顺序排列。工程文件检查若支持IAR,应上传:
![]() 若支持MDK5,应上传:
![]() 格式化代码当所有的代码都写完之后,检查代码格式就比较麻烦了,此时可以使用 astyle 工具格式化代码。astyle 格式化参数:!E --style=allman --indent=spaces=4 --indent-preproc-block --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --convert-tabs --verbose有没有经过测试验证提交的 bsp 需要通过测试,并支持最基本的功能:uart 控制台,pin 设备。最基本功能的效果:可以运行 finsh 控制台,可以输入命令;可以点灯。添加 bsp 到 CIbsp 添加到 ci打开源码根目录下 文件,添加 bsp 到 ci提交 pr 之后检查提交 PR 之后,检查 CLA 是否签署(一个账户只需要在第一次提交时候签署)。注意不要使用非 GitHub 账号提交 commmit,或者使用不同的账号提交 commit 后提 Pull Request,这会导致 CLA 签署失败。
![]() 再检查 ci 是否正常运行(ci 检查需要一段时间),有无报错信息,全部通过后显示如下:
![]() 接下来等待 review 结果,有反馈需要修改的话,进行修改直到合并。
原作者:yangjie
|