一种嵌入式设备驱动程序辅助生成方法及系统的制作方法

文档序号:6607593阅读:171来源:国知局
专利名称:一种嵌入式设备驱动程序辅助生成方法及系统的制作方法
技术领域
本发明提供了一种嵌入式设备驱动程序辅助生成方法及系统,具体涉及一种用嵌 入式设备驱动程序接口描述语言描述并辅助生成嵌入式设备驱动程序的方法及系统,属于 嵌入式系统软件设计领域。
背景技术
随着半导体技术和移动通信,移动计算的发展,各种各样的嵌入式系统已经渗入 生产、生活的各个领域,并且在很多应用领域渐渐冲击着传统PC的地位。一些学者开始断 言,嵌入式系统技术将成为后PC时代的主宰。这个领域的重要性可见一斑。与传统PC的发展不同,嵌入式设备的发展不仅存在诸如性能提高这样的自身的 纵向发展,更为突出的一点是它的横向发展。新体系架构的推出,新设备的层出不穷,各种 多样化的设备也是为了适应嵌入式系统多样化的应用。与这种特点相对应,嵌入式设备缺 乏统一的标准。仅处理器架构这一核心部分,就存在多种主流的架构,如ARM,X86,MIPS等 等。与PC市场中的x86架构占绝对优势,嵌入式领域的多架构现状确实给我们开发嵌入式 系统增加了很大的难度。嵌入式系统分为两部分嵌入式硬件和嵌入式软件。嵌入式系统的快速发展要求 嵌入式软件的快速开发,以适应硬件发展的快节奏。而由于嵌入式设备自身的复杂,以及平 台相关软件固有的复杂性,导致了软件开发难度的增加。在这种矛盾下,一定程度的软件开 发自动化,尤其是硬件相关软件(如设备驱动程序)开发的自动化显得重要而有意义。多样化的架构和多样化的设备交织起来,形成了更加多样化的系统。在这种背景 下,嵌入式系统程序员很希望能够将已有的工作加以复用。通过设备建模技术,这种期望是 可行的。比如有两个采用不同处理器的系统,采用了相同的网卡芯片。这种情况下,为该网 卡芯片建立的模型,只需要做少量修改便可应用到两个系统中去。降低了程序员的工作量。现有的驱动程序辅助生成方法存在只能针对特定平台、缺乏可移植性,方法复杂、 学习成本高、不能降低开发难度等问题。

发明内容
本发明的目的在于提供一种新的开发方法和系统,以提高嵌入式设备驱动程序开 发效率,减少开发过程中的错误,降低开发难度;并提高嵌入式设备驱动程序的可移植性。在本方法中,用嵌入式设备驱动程序接口描述语言描述设备访问接口、硬件平台 特性和硬件设备逻辑功能;并保存成XML格式的文件;解析描述文档并在内存中生成内部 数据结构,利用事先编写的库文件,结合平台和系统特性,生成相应的可供开发人员使用 的,包含了寄存器存取方式及默认值、寄存器访问代码、和设备基本功能函数内容的嵌入式 设备驱动程序桩代码。具体来说,本发明的嵌入式设备驱动程序辅助生成方法包括下列步骤,如图1所 示
A.利用嵌入式设备驱动程序接口描述语言对嵌入式设备信息进行描述;所述的信息是指设备访问接口(寄存器)及访问约束,硬件平台相关特性,驱动程 序所需的设备基本功能,实现步骤如下A1.对设备访问接口中的寄存器进行描述,包括寄存器的名称、地址、大小、属性、 位域(字段)、以及寄存器的访问约束;具体内容如下Al. 1.寄存器名称寄存器名称是驱动开发人员用于区别寄存器的标识符;A1. 2.地址地址是寄存器相对于设备基地址的偏移量,是寄存器在设备内部的 地址,驱动程序通过这个地址访问寄存器;A1.3.大小寄存器的大小以位(bit)为单位,通常有8位、16位或32位;A1. 4.属性寄存器的读写属性包括读写、只读和只写;A1. 5.位域寄存器的不同位域具有不同含义,设备驱动程序通常是对位域进行 操作;A1.6.寄存器访问约束包括该寄存器是否为设备保留,是否可能发生变化 (volatile),是否有写入时发生变化等;A2.对硬件平台相关特性进行描述,包括数据访问方式、设备基地址;具体内容如 下A2. 1.大端优先还是小端优先有些体系结构是大端优先(big ending)的,如ARM 体系结构;有些体系结构是小段优先(little ending)的,如X86体系结构;不同的端优先 性对设备和驱动程序都有影响;A2. 2.设备的基地址通常系统给设备分配一段或几段连续的地址空间,这些地 址空间的起始地址就是设备的基地址。有些设备只有一个基地址,有些设备有多个基地址。 对于有多个基地址的设备,需要在寄存器中指出使用了哪个基地址;A3.对驱动程序所需的设备基本逻辑功能进行描述,用于生成驱动程序中的功能 函数;所述函数的操作以寄存器操作为主,辅以核心服务的调用;B.按照嵌入式设备驱动程序接口描述语言的格式存储步骤A中的描述信息。具体 存储方式如下B1.设备的每一个寄存器的描述信息由一对<RGTRX/RGTR>标签标识,标签内部 还包括以下信息Bl. 1.寄存器名称<NAME>寄存器名</NAME> ;B1. 2.地址<ADDR>16 进制偏移量 </ADDR> ;B1. 3.大小<SIZE>以位为单位的寄存器大小</SIZE> ;B1. 4.属性<ATTR>寄存器读写属性</ATTR>,其中,寄存器读写属性为读写(RW)、 只读(R0)或只写(W);B1. 5.位域<REGN>位域名称,起始位@终止位,默认值</REGN>,如果位域名称为 RSVD则表示该位域是设备保留位域。默认值后面如果跟有一个&,表示该值为固定值;默认 值后面如果跟有一个$,表示该值为自动复位;B1. 6.访问约束访问约束在属性和位域中进行描述;
0031]B2.硬件平台相关特性的描述信息由一对<INTERFACEX/INTERFACE>标签标识, 标签内部还包括以下信息
B2. 1.大端优先还是小端优先<ENDIAN>优先性</ENDIAN>,如果是大端优先,则 优先性为B ;如果小端优先,则优先性为L ;B2. 2.设备的基地址<BASEADDR>16进制基地址〈/BASEADDR〉,有几个基地址就有 几个 <BASEADDRX/BASEADDR> 标签对;B3.每一个驱动程序所需的设备基本功能的描述信息由一对〈FUNCTI0NX/ FUNCTION)标签标识,标签内部还包括以下内容B3. 1.功能名<NAME>功能名字</NAME>,该名字将成为设备驱动程序中相应功能 函数的名字;B3. 2.参数<PARA>以字节为单位的参数大小参数类型@参数名</PARA>,长度 通常为1、2或4,类型有整型(I)、无符号整型(U)、浮点型(F)、指针型(P);B3. 3.返回类型<RETTPYE>以字节为单位的返回类型大小返回类型</RETTPY> ; 一个特例是<RETTPYE>NULL</RETTPYE>表示没有返回值;B3. 4.操作每一个操作保存在一个<0PERATI0N>$关键字-命令字,%标识符 〈/OPERATION〉标签对中。所述的关键字有 SETREG、GETREG、DELAY、WHILE、IFTHEN 类型;所 述的标识符包括REG、VAR、VALUE、CON、SEC ;针对不同的关键字,有不同的可用命令和标识 符;C.对嵌入式设备描述信息进行解析并生成保存在内存中的内部数据结构C1.解析设备寄存器描述信息,建立表示设备寄存器的树结构;C2.解析硬件平台相关特性,设置硬件平台配置参数;C3.解析驱动程序所需的设备基本功能的描述,建立表示设备功能的内部数据结 构;D.根据内部数据结构,生成驱动程序桩代码,包括寄存器存取方式及默认值、寄存 器访问代码、和设备基本功能函数。不同的平台选择不同的库文件;所述的库文件里保存有 预先编写的,用于生成驱动程序的平台相关代码,具体步骤如下D1.根据硬件平台配置参数,设置驱动程序代码的寄存器存取方式及默认值,主要 包括以下内容Dl. 1.特定平台的基本数据类型。例如在32位X86系统中,驱动程序中使用的32 位无符号整型将对应为平台上的无符号整型,而8位无符号整型将对应为平台上的无符号 字符型;D1. 2.特定平台的硬件操作实现代码,例如在X86体系结构中,读写设备寄存器的 指令为in和out指令;而在ARM体系结构中,读写寄存器的指令时内存访问指令;D2.生成寄存器访问代码D2. 1.对于读写属性为RW的寄存器,生成一个getReg和一个setReg函数;D2. 2.对于读写属性为R0的寄存器,生成一个getReg函数;D2. 3.对于读写属性为W的寄存器,生成一个setReg函数;D3.生成驱动程序所需的设备基本功能函数D3. 1.使用setReg和getReg函数操作寄存器;D3. 2.根据库文件将中间表示中的数据类型和操作替换成相应平台上的数据类型 和操作;
本发明针对嵌入式设备驱动程序开发,语法简洁,能够与设备文档相对应,能够描 述设备功能。语言具有平台无关性,生成的程序具有良好的可移植性。同时,对设备的描述 可以由设备厂商直接编写,大大减轻了驱动程序开发人员的工作量,提高了开发效率。本实施例实现了一个嵌入式设备驱动程序辅助生成系统,包括以下几个模块1.人机交互接口模块用于向开发人员提供一个友好的界面供开发人员输入、修 改对设备的描述;2.描述模块将从人机交互接口中获取的描述信息,采用B中所述的方式进行保 存;3.解析模块用于解析描述文件,并生成中间表示;4.桩代码生成模块读入中间表示,根据硬件平台相关特性描述选择库文件,并 生成驱动程序桩代码。各模块之间的关系如下1.人机交互接口获取用户输入并向其他模块发出命令;2.描述模块从人机交互接口获取输入,并生成描述文件;3.解析模块读入描述文件并进行解析,并生成中间表示;4.桩代码生成模块根据内部数据结构生成与设备描述对应的驱动程序桩代码


图1 本发明的方法流程图;图2 本发明的系统结构图。
具体实施例方式下面结合附图,通过s3c44b0开发板上的UART设备驱动程序的开发,对本发明作 进一步阐述。具体步骤如下1.使用人机交互接口对s3c44b0的UART设备进行描述2.生成描述文件,部分文件内容如下所示 最后需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域 的技术人员可以理解在不脱离本发明及所附的权利要求的精神和范围内,各种替换和修 改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权 利要求书界定的范围为准。
权利要求
一种嵌入式设备驱动程序辅助生成方法,其特征在于,包括以下步骤a)利用嵌入式设备驱动程序接口描述语言对嵌入式设备信息进行描述,所述的信息是指设备访问接口(寄存器)及访问约束,硬件平台相关特性,驱动程序所需的设备基本功能;b)按照嵌入式设备驱动程序接口描述语言的格式存储步骤A中的描述信息;c)对嵌入式设备描述信息进行解析并生成保存在内存中的内部数据结构;d)利用库文件,根据内部数据结构,生成驱动程序桩代码,包括寄存器存取方式及默认值、寄存器访问代码、和设备基本功能函数;不同的平台选择不同的库文件;所述的库文件里保存有预先编写的,用于生成驱动程序的平台相关代码。
2.如权利要求1所述的方法,其特征在于,所述步骤A的实现方法为A1.对设备访问接口中的寄存器进行描述,包括寄存器的名称、地址、大小、属性、位域 (字段)、以及寄存器的访问约束;A2.对硬件平台相关特性进行描述,包括数据访问方式、设备基地址;A3.对驱动程序所需的设备基本逻辑功能进行描述,用于生成驱动程序中的功能函数。
3.如权利要求2所述的方法,其特征在于,所述步骤B的实现方法为B1.设备的每一个寄存器的描述信息由一对<RGTRX/RGTR>标签标识,包括寄存器名 称、地址、大小、属性、位域(字段)、以及寄存器的访问约束信息;B2.硬件平台相关特性的描述信息由一对<INTERFACEX/INTERFACE>标签标识,包括 数据访问方式、设备的基地址信息;B3.每一个驱动程序所需的设备基本功能的描述信息由一对<FUNCTI0NX/FUNCTI0N> 标签标识,包括功能名、参数、返回类型、操作信息。
4.如权利要求3所述的方法,其特征在于,所述步骤C的实现方法为 C1.解析设备寄存器描述信息,建立表示设备寄存器的树结构;C2.解析硬件平台相关特性,设置硬件平台配置参数;C3.解析驱动程序所需的设备基本功能的描述,建立表示设备功能的内部数据结构。
5.如权利要求4所述的方法,其特征在于,所述步骤D实现方法为D1.根据硬件平台配置参数,设置驱动程序代码的寄存器存取方式及默认值;D2.生成寄存器访问代码;D3.生成驱动程序所需的设备基本功能函数。
6.一种嵌入式设备驱动程序辅助生成系统,其特征在于,该系统的实现方法如权利要 求1所述;系统包含如下几个功能模块-人机交互接口模块用于向开发人员提供一个友好的界面供开发人员输入、修改对 设备的描述;-描述模块将从人机交互接口中获取的描述信息,采用B中所述的方式进行保存; -解析模块用于解析描述文件,并生成中间表示;-桩代码生成模块读入中间表示,根据硬件平台相关特性描述选择库文件,并生成驱 动程序桩代码。各模块之间的关系如下`1.人机交互接口获取用户输入并向其他模块发出命令;·2.描述模块从人机交互接口获取输入,并生成描述文件;·3.解析模块读入描述文件并进行解析,并生成中间表示;·4.桩代码生成模块根据内部数据结构生成与设备描述对应的驱动程序桩代码。
全文摘要
本发明涉及一种嵌入式设备驱动程序辅助生成方法及系统,属于嵌入式系统软件设计领域。本方法包括,用嵌入式设备驱动程序接口描述语言描述设备访问接口、硬件平台特性和硬件设备逻辑功能;保存成XML格式的文件;解析描述文档并在内存中生成内部数据结构;利用事先编写的库文件,结合平台和系统特性,生成相应的可供开发人员使用的,包含了寄存器存取方式及默认值、寄存器访问代码、和设备基本功能函数内容的嵌入式设备驱动程序桩代码。提高嵌入式设备驱动程序开发效率,减少开发过程中的错误,降低开发难度;并提高嵌入式设备驱动程序的可移植性。
文档编号G06F9/45GK101894039SQ20101025191
公开日2010年11月24日 申请日期2010年8月12日 优先权日2010年8月12日
发明者王刚, 赵霞, 郭耀, 陈向群 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1