基于嵌入式技術(shù)的MultiBus-CPU模塊設(shè)計(jì)
數(shù)組里每個(gè)元素的第1個(gè)值代表寄存器的名稱,第2個(gè)值代表要設(shè)定的數(shù)值(1個(gè)十六進(jìn)制的數(shù))。32h寄存器用于設(shè)定LCD顯示的水平像素?cái)?shù)目,計(jì)算方法是把第2個(gè)值轉(zhuǎn)換成十進(jìn)制,加1再乘以8就得出水平像素。例如,0x63換算成十進(jìn)制為99,加1乘以8就是800。38h和39h寄存器分別設(shè)置成0x57和Ox02,就可以顯示600的垂直分辨率。計(jì)算方法是以39h寄存器的bitO和bitl位為高位,38h寄存器的bit0~bit7為低位,組成的一個(gè)十六進(jìn)制的數(shù),再轉(zhuǎn)換成十進(jìn)制。除了要修改這3個(gè)寄存器外,34h和3Ah這兩個(gè)寄存器也會(huì)對(duì)顯示的分辨率有影響。
幀緩沖設(shè)備也屬于字符設(shè)備,要通過(guò)“文件層一驅(qū)動(dòng)層”的接口方式來(lái)對(duì)LCD進(jìn)行驅(qū)動(dòng),就必須對(duì)File_operationes數(shù)據(jù)結(jié)構(gòu)的參數(shù)fh_ops進(jìn)行填充,并實(shí)現(xiàn)其對(duì)應(yīng)的成員函數(shù)。本系統(tǒng)在include/Limix/fb.h中定義了幀緩沖區(qū)的文件操作,部分代碼如下:
這個(gè)結(jié)構(gòu)中的每一個(gè)字段都必須指向驅(qū)動(dòng)程序中實(shí)現(xiàn)特定操作的函數(shù)。對(duì)于不支持的操作,對(duì)應(yīng)的字段可以被置為NULL,或留到后續(xù)開(kāi)發(fā)時(shí)再添加。本模塊中實(shí)現(xiàn)特定操作的成員函數(shù)的代碼如下:
接下來(lái)把一些調(diào)用的函數(shù)寫(xiě)完整,編寫(xiě)好程序后用arm-linux-gcc編譯驅(qū)動(dòng)模塊;然后對(duì)其動(dòng)態(tài)加載,或靜態(tài)將其編譯到Linux內(nèi)核;加載完程序后,就可以編寫(xiě)應(yīng)用程序進(jìn)行讀/寫(xiě)等操作了。
4.2 MiniGUI的移植
在嵌入式開(kāi)發(fā)環(huán)境中,獨(dú)立的顯示操作人機(jī)界面是非常必要的。它可以使嵌入式系統(tǒng)對(duì)PC系統(tǒng)的依賴性降到最低,可以直接操作嵌入式系統(tǒng)并顯示運(yùn)行結(jié)果。MultiBus-CPU模塊采用標(biāo)準(zhǔn)的USB鍵盤、USB鼠標(biāo)、VGA顯示器作為人機(jī)交互界面,使用習(xí)慣類同于PC機(jī),簡(jiǎn)易了開(kāi)發(fā)者的開(kāi)發(fā)過(guò)程,并且用戶的使用過(guò)程也變得簡(jiǎn)單、快捷、易于操作。
MiniGUI是遵循GPL條款發(fā)布的自由軟件,其目標(biāo)是為基于Linux的實(shí)時(shí)嵌入式系統(tǒng)提供一個(gè)輕量級(jí)的圖形用戶界面支持系統(tǒng)。與QT/Embedded、MicoroWindows等其他GUI相比,MiniGUI的最顯著特點(diǎn)就是輕型、占用資源少。據(jù)稱MiniGUI能夠在CPU主頻為30MHz、僅有4 MB RAM的系統(tǒng)上正常運(yùn)行,這是其他多種GUI所無(wú)法達(dá)到的。
MiniGUI在AT91RM9200上的移植包括4個(gè)步驟:
?、贅?gòu)建Linux交叉編譯環(huán)境。通常使用的交叉編譯工具是arm-Linux-gcc2.95.3版本。下載此交叉編譯工具后在Linux內(nèi)安裝好,并且在PATH中添加/usr/local/arm-Linux/bin路徑,交叉編譯環(huán)境就構(gòu)建好了。
?、诮徊婢幾gMiniGUI,這是最關(guān)鍵的一步。首先從網(wǎng)上下載MiniGUI源程序包(包括庫(kù)文件和資源文件),以及其他支持圖形界面的源程序包;然后用上一步安裝好的交叉編譯工具對(duì)其進(jìn)行編譯,編譯時(shí)可指定編譯后庫(kù)文件及資源文件的安裝位置。
?、劭截怣iniCUI資源到開(kāi)發(fā)板。將第2步編譯好的庫(kù)文件及資源文件拷貝到開(kāi)發(fā)板上??截愔跋扔胊rm-Linux-strip命令清除文件中的調(diào)試信息,這樣就使文件體積大大縮小,可以滿足嵌入式系統(tǒng)的需要。
?、馨遢dLinux的MiniGUI環(huán)境配置。將第2步安裝好的MiniGUI配置文件MiniGUI.cfg下載到板子中,并將其中fbcon的defaultmode設(shè)置為合適的顯示模式。
結(jié) 語(yǔ)
本文基于嵌入式技術(shù)設(shè)計(jì)了一種MultiBus-CPU模塊,能夠滿足各種嵌入式開(kāi)發(fā)環(huán)境的設(shè)計(jì)要求。該模塊軟硬件均采用模塊化設(shè)計(jì),采用國(guó)外廣泛應(yīng)用的ModBus通信協(xié)議,可滿足工業(yè)現(xiàn)場(chǎng)的測(cè)控需要。
評(píng)論