一、IO设备的基本结构是什么?是干什么的?
IO设备分为三层,在硬件层和应用程序层之间,嵌入式的硬件设备种类是特别多的。 RT_Thread操作系统不可能把所有的硬件设备全部包含,只包含了一些常用的硬件设备,如果我们想用一些特殊的传感器设备,就得自己写驱动,我们就必须按照这个设备驱动的框架去完成设备驱动的注册。应用层在使用的时候,通过标准的接口来实现对硬件设备的访问。
二、IO设备模型的三层框架分别是什么?
1.设备驱动层:
设备驱动层就是针对于各类设备写的一个驱动,来驱动自己想要用的传感器设备以及一些外设,比如初始化串口,是选择读串口还是写串口还是读写,这些按照标准的框架以后,应用层直接调用统一的接口函数就可以访问硬件设备。
2.设备驱动框架层:
设备驱动层必须遵循设备驱动框架层的管理,不同的设备类型有不同的框架,我们写任何一个设备驱动按设备的类型进行分类,然后使用对应类型的设备驱动框架来完成驱动的编写。
3.IO设备管理层
IO设备管理层把IO设备管理接口分成了多个块儿,应用程序通过IO设备管理接口最终访问到硬件设备
三、有哪些IO设备模型?
RT-Thread 支持多种 I/O 设备类型,主要设备类型如下所示
RT_Device_Class_Char = 0, /**< character device */
RT_Device_Class_Block, /**< block device */
RT_Device_Class_NetIf, /**< net interface */
RT_Device_Class_MTD, /**< memory device */
RT_Device_Class_CAN, /**< CAN device */
RT_Device_Class_RTC, /**< RTC device */
RT_Device_Class_Sound, /**< Sound device */
RT_Device_Class_Graphic, /**< Graphic device */
RT_Device_Class_I2CBUS, /**< I2C bus device */
RT_Device_Class_USBDevice, /**< USB slave device */
RT_Device_Class_USBHost, /**< USB host bus */
RT_Device_Class_SPIBUS, /**< SPI bus device */
RT_Device_Class_SPIDevice, /**< SPI device */
RT_Device_Class_SDIO, /**< SDIO bus device */
RT_Device_Class_Timer, /**< Timer device */
RT_Device_Class_Miscellaneous, /**< misc device */
RT_Device_Class_Sensor, /**< Sensor device */
RT_Device_Class_Touch, /**< Touch device */
RT_Device_Class_Unknown /**< unknown device*/
原文链接:https://blog.csdn.net/qq_25218501/article/details/132264821
四、写IO设备模型实例需要注意哪些?
写驱动时要记得首先写出板机初始化函数
创建好后要进行注册IO设备
设备被创建后需要实现它访问硬件的操作方法,方法在创建后的返回值里,本例是在demo_dev里,指向init初始化,open打开等方法。然后按照数据类型去定义函数。