Files
luban-lite-t3e-pro/doc/luban-lite_driver_development_guide.md

56 lines
2.6 KiB
Markdown
Raw Normal View History

2023-08-30 16:21:18 +08:00
# 1. 代码存放位置
在Luban-Lite中将Driver、HAL、sys最小系统代码统称为bsp存放在SDK跟目录中的`bsp`文件夹中。
在bsp文件夹中再按照SoC内置 和 外挂 分为两个文件夹:`artinchip``peripheral`
![](images/bsp_dir.png)
# 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