rtthread驱动框架介绍
以下通过pin驱动来大概介绍rtthread驱动程序的编写方法
- 首先rtthread的驱动主要存放在两个文件夹中,分别为Drivers和DeviceDrivers;
- Drivers文件夹中:
- 在Drivers文件夹中的drv_gpio主要承担GPIO硬件相关的操作,实现如下6个函数;
- stm32_pin_mode,
- stm32_pin_write,
- stm32_pin_read,
- stm32_pin_attach_irq,
- stm32_pin_dettach_irq,
- stm32_pin_irq_enable
- 这6个函数都是都是直接和硬件打交道的,通过驱动框架最终调用的都是这6个函数;
- 实现完这6个和硬件打交道的函数后,就把函数名(也就是函数的入口地址)填入到rt_pin_ops结构体中,以实现上层应用到底层驱动的连接;
- 在Drivers文件夹中的drv_gpio主要承担GPIO硬件相关的操作,实现如下6个函数;
- DeviceDrivers文件夹中:
- 在DeviceDrivers文件夹中pin主要是实现驱动层代码到应用层的对接,具体实现代码是通过以下几个函数:
- _pin_read
- _pin_write
- _pin_control
- 同时还要把硬件操作相关Drivers中的rt_pin_ops结构体中的函数与rt_device_pin中的ops相关联;
- 最终_pin_read等三个函数可以通过rt_device_pin间接调用到底层的硬件;
- 这样就完成了从应用程序到驱动程序的转换,实现了软件分层;
- 在DeviceDrivers文件夹中pin主要是实现驱动层代码到应用层的对接,具体实现代码是通过以下几个函数:
- 总结:
- 这一套驱动框架的目的就是为了实现驱动与应用的分层,以实现高内聚、低耦合的软件编程思想。