Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1713738
  • 博文数量: 143
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1462
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-23 11:14
文章分类

全部博文(143)

文章存档

2022年(3)

2021年(13)

2020年(21)

2019年(8)

2018年(28)

2017年(7)

2016年(63)

我的朋友

分类: 嵌入式

2020-08-31 22:07:00

1. 区别和关系
  MQX为加载设备驱动函数提供了专门的API-_io_dev_install,用于注册设备标识名、设备驱动函数及其数据结构。_io_dev_install 和 _io_dev_install_ext 是一样的,区别在于“Different from * _io_dev_install since this function also installs an uninstall function”
  在_io_dev_install函数内部,创建一个设备节点,传入的设备驱动信息填入后,将其添加到设备管理器的设备队列中去。 例如:当在系统启动过程中调用io_device_install(“decice:”)时,自定义名为“device:”的设备驱动就加载到系统中了。而其参数 io_device_open 当用户使用fopen打开设备时此函数被调用,是初始化设备驱动函数。
个人理解:这里的设备驱动的确是写死绑定在同一个结构中,不像linux。这样造成,即使当前已有适用的driver,却不能重复使用,仍需要重新开发device driver"设备驱动",导致浪费。
  另外,其实如_io_spi_install 内部调用的就是_io_dev_install_ext

选自: 嵌入式实时操作系统MQX应用框架研究

2.另外
  关于fio.h 中的如fopen()
个人理解: MQX把c标准库中的一些库函数改为自己实现的实现了,相应的调用了MQX API系统调用,如_io_fopen。 这些自己实现的被称为MQX I/O库。 如何改的呢? 通过把如stdio.h中的 using std:: fopen 干掉, 而在fio.h 实现如 #define fopen _io_fopen。 显然,掉用 fopen() 就是调用 _io_fopen(), 调用 ioctrl() 就是调用 _io_ioctrl() 。
阅读(752) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~