用户中心

资讯 > 嵌入式系统

嵌入式系统串行设备管理的研究与实现

来源:www.bpq.com.cn/2007.01.21阅读 1593


引言
       随着微电子技术的发展,嵌入式系统的功能越来越强大,像 UART口、IrDA、USB、I2C以及SPI这些串行接口或设备同时存在于一个嵌入式系统中,实现对它们的统一管理将能极大地提高整个嵌入式系统的可移植性、易用性以及开发效率。本文通过对嵌入式系统串行设备管理技术的研究,提出了“带USB的串行管理”模型,并详细阐述了串行设备管理的实现过程。

 串行设备管理

      串行设备管理是指对COM,IrDA、I2C、modem等流设备和接口的统一管理。具体说www.cechina.cn,就是通过统一的上层应用层接口和下层驱动层接口实现对串行设备的统一管理和透明化处理,从而提高整个系统的易用性和可移植性。USB作为一种新型的高速串行总线,由于具有复杂性和高速性等特点www.cechina.cn,在嵌入式操作系统中一般专门为其建立一个USB模型而不放入串行设备管理中。虽然这样有利于全面地管理USB主机、USB Hub以及USB设备,但整个模型实现代码大而难,且在嵌入式系统下位机中多是

USB设备而没有USB主机和USB Hub。针对这一特点,本文把对USB设备的管理加入到串行管理中,使得对USB设备的访问如同对一个串口的访问一样方便,从而提出了带USB的串行管理模型。

 带USB的串行管理模型

       整个管理模型由两层构成,上层为操作系统应用层接口函数CONTROL ENGINEERING China版权所有,主要是统一化的串行流接口函数,如OpenFile等;下层为硬件驱动程序层对象和函数。串行管理的设备对象由虚拟化的HWOBJ结构体来定义,虚拟对象的登记和管理则是通过对DEVICE_LIST结构体的管理来实现。HWOBJ结构体定义为:

    typedef struct _HWOBJ {
    void *device_parent;     //指向DEVICE_LIST结构
    unsigned short  device_index;  //物理设备号,指向实际的串行设备或接口
    unsigned long  bind_flags;     //中断服务线程处理标志位,预留
    unsigned long  IntID;       //指定中断类型,预留
    void  *reserved;
    PHW_VTBL func_tbl;     //硬件驱动函数对象表
    } HWOBJ, *PHWOBJ;
    DEVICE_LIST结构体定义为:
    typedef struct _DEVICE_LIST {
    char  *DllName;            //设备DLL文件名,预留
    unsigned long NumberOf Devices;   //设备数量
    void *DeviceArray;         //设备队列
    } DEVICE_LIST, *PDEVICE_LIST;

       为了解决USB的高速缓冲问题,专门采用了两个单独的循环队列CONTROL ENGINEERING China版权所有,一个用于缓冲USB的IN传输数据控制工程网版权所有,一个用于缓冲USB的OUT传输的数据。

带USB的串行管理的实现

      为了便于给应用层编程人员和驱动程序编程人员提供良好的编程接口,接口函数采用了与Windows操作系统中提供的API函数一致的函数名和参数。整个带USB的串行管理的实现包括名字解析与应用层接口函数的实现、串行
















版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688