驱动框架
AIC Driver 需要支持多种形态下的复用。为了达到这个目的,整个驱动框架会分成 3 个层次:
-
RT-Thread Driver Framework:由 Thread 提供的驱动模型,我们只需要实现驱动模型中现有的功能即可。
-
AIC Driver Layer:对接 Framework 的具体实现。
-
AIC HAL Layer:对底层硬件操作的封装,一般是寄存器级别的功能接口。也用于 baremetal 模式的 APP 调用。
对于移植一个新的设备驱动来说,要开发 Driver 和 HAL 两层。
为了保证开发的驱动在多种形态下的复用,需要遵循以下的原则:
-
在 AIC Driver Layer 和 AIC HAL Layer 尽可能的使用 AIC OSAL 接口,避免直接调用具体 Kernel 接口。
-
为了保证可移植性,在 AIC Driver Layer 中除了驱动注册不可避免的需要调用 RT-Thread 接口,在其他地方避免直接调用 RT-Thread 系统接口和 RT-Thread 的相关类型定义。
-
对于中断注册和互斥锁、信号量的操作,尽可能放在 AIC Driver Layer 中,避免放在 AIC HAL Layer 中。