rt-thread 设备驱动结构

RT-Thread 提供了一套简单的 I/O 设备管理框架,它把 I/O 设备分成了三层进行处理:应用层、 I/O 设备管理层、硬件驱动层。应用程序通过 RT-Thread 的设备操作接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互。RT-Thread 提供给上层应用的是一个抽象的设备操作接口,给下层设备提供的是底层驱动
框架

  • 设备模型框架
    rt-thread 设备驱动结构_第1张图片

  • 使用序列图rt-thread 设备驱动结构_第2张图片

  • 以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
rt-thread 设备驱动结构_第3张图片

  • 设备初始化调用过程
startup.s component.c board.c drv_gpio.c IMPORT __main rtthread_startup rt_hw_board_init() rt_components_board_init() INIT_BOARD_EXPORT(rt_hw_pin_init) startup.s component.c board.c drv_gpio.c
  • 工程文件文件结构

rt-thread 设备驱动结构_第4张图片

  • 文件函数列举
    rt-thread 设备驱动结构_第5张图片

官方文档

你可能感兴趣的:(rt-thread,I/O设备模型)