欢迎来到天天文库
浏览记录
ID:57672227
大小:201.00 KB
页数:16页
时间:2020-08-31
《rt-thread的IO设备管理源码分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、rt-thread的IO设备管理模块为应用提供了一个对设备进行访问的通用接口,,并通过定义的数据结构对设备驱动程序和设备信息进行管理。从系统整体位置来说I/O管理模块相当于设备驱动程序和上层应用之间的一个中间层。I/O管理模块实现了对设备驱动程序的封装:设备驱动程序的实现与I/O管理模块独立,提高了模块的可移植性。应用程序通过I/O管理模块提供的标准接口访问底层设备,设备驱动程序的升级不会对上层应用产生影响。这种方式使得与设备的硬件操作相关的代码与应用相隔离,双方只需各自关注自己的功能,这降低了代码的复杂性,提
2、高了系统的可靠性。1 IO设备管理控制块[cpp]viewplaincopyprint?1.typedef struct rt_device *rt_device_t; 2./** 3. * Device structure 4. */ 5.struct rt_device 6.{ 7. struct rt_object parent; /**< inherit from rt_object *///内核对象 8. 9. enum r
3、t_device_class_type type; /**< device type *///IO设备类型 10. rt_uint16_t flag; /**< device flag *///设备标志 11. rt_uint16_t open_flag; /**< device open flag *///打开标志 12. 1
4、3. rt_uint8_t device_id; /**< 0 - 255 *///设备ID 14. 15. /* device call back */ 16. rt_err_t (*rx_indicate)(rt_device_t dev, rt_size_t size);//数据接收回调函数 17. rt_err_t (*tx_complete)(rt_device_t dev, void *buffer);//数
5、据发送完回调函数 18. 19. /* common device interface */ 20. rt_err_t (*init) (rt_device_t dev);//初始化通用接口 1. rt_err_t (*open) (rt_device_t dev, rt_uint16_t oflag);//打开通用接口 2. rt_err_t (*close) (rt_device_t dev);//关闭通用接口 3. rt_size_t (*read
6、) (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size);//读通用接口 4. rt_size_t (*write) (rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);//写通用接口 5. rt_err_t (*control)(rt_device_t dev, rt_uint8_t cmd, void *args);//控制通用接口
7、 6. 7.#ifdef RT_USING_DEVICE_SUSPEND 8. rt_err_t (*suspend) (rt_device_t dev);//挂起设备 9. rt_err_t (*resumed) (rt_device_t dev);//还原设备 10.#endif 11. 12. void *user_data; /**< device private data *///私有数据 13.}
8、; typedefstructrt_device*rt_device_t;/***Devicestructure*/structrt_device{structrt_objectparent;/**
此文档下载收益归作者所有