当前位置: 首页 > 解决方案
返回
列表

RT-Thread设备驱动开发之二IO设备框架

发表时间: 2024-02-05 作者: 解决方案

  之前没有接触过驱动开发的人,看到“设备框架”这个名词可能会感到迷茫。大家不妨先思考这样一个问题:“为什么不同厂家、不同价格、不一样的形状的鼠标,插到

  “设备框架”就是针对某一类外设,抽象出来一套统一的操作方法和接入标准。有了这一层抽象,框架上层的应用要访问外设(比如摄像头)是,就不用关具体的厂家或者产地了。只要按照框架提供的操作方法,就能控制摄像头拍照、摄像了。这套设备框架也为生产厂商提供了方便,他们不需要关心应用具体会怎么使用,只要按照设备框架提供的接入标准设计产品,产出就可以在市面上销售了。

  在嵌入式领域,RT- Thread了提供了这样的一层抽象,用于屏蔽嵌入式上的硬件差异,为应用层提供统一的操作方法,也为底层提供统一的接入标准。

  应用程序通过I/O设备管理接口获得正确的设备驱动,然后通过这一个设备驱动与底层I/O硬件设备做数据(或控制)交互。

  I/O设备管理层实现了对设备驱动的封装。应用程序通过I/O设备层提供的标准接口访问底层设备,因此设备驱动程序的升级、更替不会对上层就用产生一定的影响。这种方式使得设备的硬件操作相关的代码能够独立于应用程序而存在,双方只要关注各自的功能实现,以此来降低了代码的耦合性、复杂性,提高了系统的可靠性。I/O设备管理层所饮食的I/O设备管理接口有rt_thread_findopenreadwritecloseregister等。

  设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。

  设备驱动层是一组驱使硬件设备工作的程序,实现了访问硬件设备的功能,它负责创建和注册I/O设备。设备驱动层注册设备有以下两种方式。

  使用I/O设备管理层接口直接注册,在设备驱动文件中通过rt_device_register()接口注册到I/O设备管理器中。这种方式是针对操作逻辑简单的设备,可以不经过设备驱动框架层,直接将设备注册到I/O设备管理器中。

  1)设备驱动根据设备模型定义,创建出具体硬件访问能力的设备实例,将该设备通过rt_device_register接口注册到I/O设备管理器中。

  2)应用程序通过rt_device_find()找到设备,然后使用I/O设备管理接口来该问硬件。

  通过设备驱动框架层提供的注册函数进行注册,注册函数一般命名为rt_hw_xx_register(),设备驱动框架层的注册函数又调用了I/O设备管理接口的注册函数rt_device_register(),从而进行设备注册。此种注册方式是针对一些不能使用I/O设备管理接口完成操作的设备,如看门狗等。看门狗设备注册的主要步骤如下。

  1)看门狗设备驱动程序根据看门狗设备模型定义,创建出具备硬件访问能力的看门狗设备实例,并将该看门狗设备通过rt_hw_watchdog_register()接口注册到看门狗设备驱动框架中。

  2)看门狗设备驱动框架通过rt_device_register()接口将看门狗设备注册到I/O设备管理器中。

  3)应用程序通过rt_device_find()接口查找到设备,然后使用I/O设备管理接口来该问看门狗硬件。

  的实现 /

  第8本相关书籍了,本期我们将抽奖送给大家! 抽奖请移步文末↓↓↓ 随着

  全国大学生计算机系统能力大赛操作系统设计赛-LoongArch 赛道广东龙芯2K1000LA 平台资料分享

  我用全志V851s做了一个魔法棒,使用Keras训练手势识别模型控制一切电子设备