微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > RTEMS管理机制与USB驱动程序设计

RTEMS管理机制与USB驱动程序设计

时间:08-22 来源:21IC 点击:

3.3.4 USB设备驱动程序入口函数

RTEMS系统的设备驱动程序应该包含下列入口函数:设备初始化例程、设备打开例程、设备关闭例程、从设备中读出数据的例程、向设备中写人数据的例程和特定于具体设备的设备操作例程。如果一个设备驱动程序不支持某个特定的入口函数,在设备驱动程序地址表中这个入口函数的地址值应该设置为空。以下6个函数是驱动程序为标准I/O请求提供的入口函数。

①初始化:rtems_device_driver usb_initialize(rtems_device_major_number maior,rtems_device_minor_numberminor,vold*arg)。在RTEMS系统中注册USB设备的设备名,调用USB_Init实现设备的功能和状态初始化,注册中断。

②打开:rtems_device_driver usb_open(rtems_device_major_number major,rtems_device_minor_number mi-nor,void*arg)。如果设备已经被成功枚举(处于配置态)并且未被其他任务打开,则标记设备已被打开标志,成功返回;否则,打开失败。

③关闭:rtems_device_driver usb_close(rtems_device_major_number major,rtems_device_minor_number mi-nor,void*arg)。清除设备打开标志。

④读操作:rtems_device_driver usb_read(rtems_de-vice_major_number major,rtems_device_minor_numberminor,void*arg)。调用USB_Read(),设置端点为读状态,等待主机端发来的数据,数据到达后,中断服务程序会把端点设置为空闲状态,函数将数据返回给应用程序。

⑤写操作:rtems_device_driver usb_write(rtems_de-vice_major_number major,rtems_device_minor_numberminor,void*arg)。调用USB_Write(),设置端点为写状态,并等待主机接收数据,数据发送完成后,中断服务程序会将端点设置为空闲状态,函数返回。

⑥控制操作:rtems_device_driver usb_control(rtems_device_major_number major,rtems_device_minor_num-ber minor,void*arg)。具体操作根据需要定义。将设备驱动程序的入口函数地址添加到设备驱动程序地址表后,就可以通过RTEMS提供的I/0系统调用对设备进行操作。

结 语

在RTEMS系统的移植和应用开发过程中,设备驱动程序的编写是十分重要的一环。USB由于其协议的复杂性,成为驱动开发中的难点之一。本文对RTEMS系统下USB设备驱动程序的设计与实现进行了详细论述,相应程序在AT91RM9200开发板上得以实现和验证。本设计着眼于程序的可移植性和可扩展性,采用层次结构,实现了硬件平台与USB具体设备类驱动的分离,使其能够方便地移植到其他硬件平台上并实现对特定USB设备类型的支持。同时,由于与操作系统的耦合度较小,驱动程序还可以方便地移植到其他的操作系统上。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top