專利名稱:一種嵌入式設備驅動程序輔助生成方法及系統的制作方法
技術領域:
本發明提供了一種嵌入式設備驅動程序輔助生成方法及系統,具體涉及一種用嵌 入式設備驅動程序接口描述語言描述并輔助生成嵌入式設備驅動程序的方法及系統,屬于 嵌入式系統軟件設計領域。
背景技術:
隨著半導體技術和移動通信,移動計算的發展,各種各樣的嵌入式系統已經滲入 生產、生活的各個領域,并且在很多應用領域漸漸沖擊著傳統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日
發明者王剛, 趙霞, 郭耀, 陳向群 申請人:北京大學