RT-Thread 提供了一套简单的 I/O 设备管理框架,它把 I/O 设备分成了三层进行处理:应用层、 I/O 设备管理层、硬件驱动层。应用程序通过 RT-Thread 的设备操作接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互。RT-Thread 提供给上层应用的是一个抽象的设备操作接口,给下层设备提供的是底层驱动
框架
-
设备模型框架
-
使用序列图
-
以rt-thread官方仿真的GPIO示例来说
层 | 文件夹 | 文件 | 函数 | 对应结构体 |
---|---|---|---|---|
应用层 | Application | main.c | rt_device_init(wdg_dev) | |
I/O设备管理层 | Kernel | device.c | rt_device_init() rt_device_open() | |
设备驱动框架层 | DeviceDrivers | pin.c | rt_device_pin_register() _pin_read() _pin_write() | _hw_pin.parent.read |
设备驱动层 | Drivers | drv_gpio.c | rt_hw_pin_init() stm32_pin_read() stm32_pin_write() | _hw_pin.ops.pin_read |
我理解,结构层应该是操作具体设备。
例如gpio驱动的是led,那么结构层应该是led.c,驱动层还是drv_gpio.c
spi结构驱动flash,那么架构层就是flash.c,驱动层drv_spi.c
- 设备初始化调用过程
- 工程文件文件结构
- 文件函数列举