mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-13 18:08:54 +00:00
2.6 KiB
2.6 KiB
1. 代码存放位置
在Luban-Lite中,将Driver、HAL、sys(最小系统)代码统称为bsp,存放在SDK跟目录中的bsp文件夹中。
在bsp文件夹中,再按照SoC内置 和 外挂 分为两个文件夹:artinchip 和peripheral
2. 编译框架修改
SConscript 文件的修改和编写。
3. 编码规范
3.1 编码风格
编码风格以RT-Thread的原生规范为准,参考文件:
kernel/rt-thread/documentation/contribution_guide/**coding_style_cn.md
3.2 驱动分层的设计规范
对于每一个模块的驱动,按照 Driver + HAL 两层来设计:
- Driver层:连接HAL和Driver Framework的桥梁,主要是将Driver Framework的各功能接口转换成HAL层的操作组合。
- HAL层:完全屏蔽直接访问 寄存器层面的操作,将寄存器操作封装为一个个单独的功能点(HAL可理解为一个执行器)。
- 一个简单的区分方法:所有寄存器级别的访问,都放在HAL层去封装。也就是说,Driver层不应该出现直接读写寄存器。
- 理想情况:如果要换OS,就只需要换Driver;如果要换硬件,就只需要换HAL。
当然,个别驱动比如syscfg模块的逻辑很简单,不需要模块初始化,也可以不需要Driver层,只实现HAL层即可。
3.3 命名规则
文件名的命名:
- 全部用
小写字母 + 下划线"_"组成,如 hal_rtc.h - 放在 bsp/artinchip/ 目录下都属于ArtInChip开发的代码,除common的文件如aic_log.h,其他各模块的文件名不需再加公司名称的前缀
- Driver层的文件名格式:
“drv_” + 模块名 + “_子功能”(如果需要的话),如 drv_rtc.c - HAL层的文件名格式:
“hal_” + 模块名 + “_子功能”(如果需要的话),如 hal_rtc.c
接口的命名:
- 这里只约束对外的接口,内部使用接口全部用static修饰 ,避免命名冲突即可
- Driver层的对外接口命名格式:
“drv_” + 模块名 + “_子功能”(如果需要的话),如drv_rtc_init() - HAL层的对外接口命名格式:
“hal_” + 模块名 + “_子功能”(如果需要的话),如hal_rtc_init()
数据结构的命名:
一个模块分成Driver和HAL层后,可能需要不同层次的数据结构来存放相应的信息,这个数据结构的名称最好大家也统一风格。
- Driver层的数据结构名称格式:
aic_模块缩写或者aic_模块缩写_dev,如aic_i2c、aic_sdmc、aic_wdt_dev - HAL层的数据结构名称格式:
aic_模块名称_host或者aic_模块名称_ctrl,如 aic_sdmc_host
