外设驱动
驱动架构
LL (Low Layer)
用于封装各 Chip 寄存器操作,避免应用层直接调用寄存器接口。
HAL (Hardware Adaption Layer)
基于 LL 层接口实现基础硬件功能。
Controller Driver
基于 HAL 层接口 实现 Chip 内各控制器的各种功能,具有 OS 依赖性,执行互斥,信号量等资源保护能力。 (控制器种类如: I2C, SPI, DMA, Timer, WDT, I2S, Clock, USB, SDIO, IRQ, PWM, ADC, LCD, Touch, Uart, RTC, PMU, Crypto Engin, GPIO 等)
Device Driver
基于 Controller Driver 接口,实现 Chip 外部设备驱动功能(如: 传感器, EEPROM, SIP Flash, TFT 屏 ……)
Device Manager
设备管理单元, 用于统一管理当前工程的所有设备 (Controller 及外部设备) 配置,类似 Linux 设备树功能
用户可参考 Example, 使用 Controller Driver API 进行应用程序开发。
驱动介绍
如何添加一个新的设备驱动
基于现在的驱动架构,若要添加一个新的设备驱动基本上有如下步骤和注意事项
规划 新device 驱动架构,包含 ops 定义, 防重入机制的设计, 例如:
文件目录管理
备注
外设驱动中 尽量避免对 HAL 接口的调用,原因是 HAL 接口内部无防重入保护,多个任务直接调用时可能会产生资源访问冲突或死锁问题。