Edit online

驱动框架

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 中。