嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)_第1頁
嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)_第2頁
嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)_第3頁
嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)_第4頁
嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā) 作者: 日期:10 個人收集整理 勿做商業(yè)用途嵌入式Linux下基于MiniGUI的信息終端軟件開發(fā)作者:潘明泉 張侃諭    文章來源:單片機(jī)及嵌入式系統(tǒng)應(yīng)用摘要:嵌入式系統(tǒng)的開發(fā)已成為新的行業(yè)熱點(diǎn)。本文首先概述嵌入式Linux系統(tǒng)開發(fā)的特點(diǎn)及其工具,然后具體描述MiniGUI圖形系統(tǒng)的移植、使用方法,并舉例說明在該系統(tǒng)上開始信息終端軟件的過程。該方案有很大的應(yīng)用前景。     關(guān)鍵詞:嵌入式操作系統(tǒng) Linux MiniGUI 信息終端引言近年來,隨著軟硬

2、件資源的成熟與完善,嵌入式技術(shù)越來越和人們的生活緊密相關(guān),功能單一的公用電話也開始向嵌入式多媒體信息終端轉(zhuǎn)型。對嵌入式系統(tǒng)的研究,在全球激起了人們極大的興趣。選擇開放源碼的Linux操作系統(tǒng)開發(fā)新一代嵌入式產(chǎn)品已經(jīng)成為其中新的技術(shù)熱點(diǎn).在本系統(tǒng)中,采用了MontaVista Linux系統(tǒng).它提供了很多處理器、目標(biāo)板和主機(jī)環(huán)境的組合,有一套完整的輔助開發(fā)工具,便于嵌入式系統(tǒng)專用人員設(shè)計(jì)、開發(fā)和發(fā)布應(yīng)用程序。與此同時,配備一個優(yōu)秀的圖形用戶界面,使產(chǎn)品和用戶能進(jìn)行友善可靠的交互也已成為開發(fā)工作中非常緊迫的要求。本系統(tǒng)中使用的MiniGUI就是嵌入式Linux系統(tǒng)下一個輕量級的圖形用戶界面支持系統(tǒng)

3、,目前已比較成熟,并已被用到很多項(xiàng)目的實(shí)際開發(fā)中.1 嵌入式Linux系統(tǒng)嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減.適用于用戶系統(tǒng)對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。從20世紀(jì)80年代末開始,陸續(xù)出現(xiàn)了一些嵌入式操作系統(tǒng),如VxWorks、pSOS、WindowsCE、Linux等。其中免費(fèi)源代碼的Linux操作系統(tǒng)因其內(nèi)核小、支持多種硬件平臺、可裁減性好等顯著優(yōu)點(diǎn),得到了廣泛的關(guān)注,為嵌入式系統(tǒng)開發(fā)提供了一個極有力的選擇.(2)MontaVista Linux目前,已有多家公司推出了嵌入式Linux發(fā)行版本。本系統(tǒng)中采用的是應(yīng)用全球三大嵌入式Li

4、nux供應(yīng)商之一MontaVista Software公司的最新版MontaVista Linux3.0。它使用的是最標(biāo)準(zhǔn)Linux內(nèi)核2.4.2,是針對嵌入式設(shè)備度身定制的實(shí)時的、專業(yè)的嵌入式操作系統(tǒng).考慮到嵌入式設(shè)備處理器、存儲器資源有限的情況,在不減少新內(nèi)核對嵌入設(shè)備有利特性的基礎(chǔ)上,MontaVista公司對內(nèi)核部分進(jìn)行了高度裁減、配置,使MontaVista Linux 3.0。它使用的是標(biāo)準(zhǔn)Linux內(nèi)核2。4.2,是針對嵌入式設(shè)備度身定制的實(shí)時的、專業(yè)的嵌入式操作系統(tǒng)??紤]到嵌入式設(shè)備處理器、存儲器資源有限的情況,在不減少新內(nèi)核對嵌入設(shè)備有利特性的基礎(chǔ)上,MontaVista公司

5、對內(nèi)核部分進(jìn)行了高度裁減、配置,使MontaVista Linux 3.0系統(tǒng)性能具備穩(wěn)定、突出等特點(diǎn),同時還為MontaVista Linux 3。0配備了一個由優(yōu)先級驅(qū)動的實(shí)時調(diào)度器(RealTime Scheduler),從而使客戶對實(shí)時性的要求得到更大的滿足。2 軟件開發(fā)平臺MontaVista Software公司在嵌入式Linux發(fā)行版中已提供了系統(tǒng)開發(fā)所需的環(huán)境:a)內(nèi)核和文件系統(tǒng)工具-目標(biāo)配置工具(TCT)、庫優(yōu)化工具(LOT);b)交叉開發(fā)工具-GNU GCC/C+編譯器、GDB源碼調(diào)試器、DDD圖形界面調(diào)試器等;c)實(shí)時性能工具和分析工具。系統(tǒng)內(nèi)核則通過Abatron公司的

6、BDI2000調(diào)試器進(jìn)行測試,內(nèi)核運(yùn)行于PowerPC體系的CPU上。該目標(biāo)系統(tǒng)已實(shí)現(xiàn)以太網(wǎng)接口、串口、USB接口,LCD也能正常顯示.3 系統(tǒng)框架結(jié)構(gòu)應(yīng)用程序是最上層的開發(fā),其交互界面直接通過MiniGUI圖形系統(tǒng)的API接口函數(shù)實(shí)現(xiàn)。MiniGUI屏蔽了對底層顯示、輸入設(shè)備編程的細(xì)節(jié),使程序員更能專注于信息終端界面的特色上,從而縮短了編程投入時間。MiniGUI圖形率編譯安裝后一般以庫的形式存放在操作系統(tǒng)/usr/lib文件目錄下。該嵌入式系統(tǒng)的框架結(jié)構(gòu)如圖1所示。4 MiniGUI的移植(1)MiniGUI特點(diǎn)MiniGUI是由魏永明主掛的一個自由軟件項(xiàng)目,現(xiàn)完全遵循GPL(Genera

7、l Public License)條款的純自由軟件,可以運(yùn)行在任何一種具有POSIX線程支持的POSIX兼容系統(tǒng)上。MiniGUI在體系結(jié)構(gòu)上有許多獨(dú)特之處。它的主要特色有:a)提供了完備的多窗口機(jī)制;b)對話框和預(yù)定義的控件類;c)消息傳遞機(jī)制;d)多字符集和多字體支持;e)全拼、五筆等漢字輸入法支持;f)BMP、GIF、JPEG等常見圖像文件的支持;g)小巧,包含全部功能的庫文件大小為300KB左右;h)可配置,可根據(jù)項(xiàng)目需求進(jìn)行定制配置和編譯;i)可移植性好.(2)MiniGUI的移植過程要使MiniGUI運(yùn)行在入式目標(biāo)板PPC上,需在MontaVista Linux 3。0的交叉開發(fā)環(huán)

8、境下移植該圖形包。MiniGUI 1。2。6版發(fā)布時含資源文件壓縮包miniguires1。2。6.tar.gz、庫文件壓縮包libminigui-1.2.6.tar.gz和一個綜合示范程序mde1.2.6.tar。gz。在開發(fā)主機(jī)上安裝好MontaVista Linux 3.0后,把主機(jī)NFS服務(wù)的輸出目錄配置為硬盤路徑/opt/hardhat/devkit/ppc/8xx/target.目標(biāo)板運(yùn)行起來后,會自動掛載到該目錄下。將該目標(biāo)作為當(dāng)前路徑安裝MiniGUI。打開資源文件壓縮包,執(zhí)行如下命令tarxvf miniguires-1.2.6。tar.gz會自動在當(dāng)前路徑下生成minigu

9、ires目錄。在該目錄下可以看到config。linux文件,修改其中TOPDIR=NONE一項(xiàng),使TOPDIR=/opt/hardhat/devkit/ppc/8xx/target,此處的路徑對應(yīng)的就是前面設(shè)置的NFS輸出目錄.運(yùn)行安裝命令make install即可。編譯庫文件壓縮包libminigui-1。2.6.tar。gz時,解壓步驟如上。不同的是須在當(dāng)前目錄下運(yùn)行configure命令對庫文件進(jìn)行移植的配置。命令行如下:CC=ppc_8xxgcc./configure-build=i386-linux-target=ppcunknownlinuxprefix=/opt/hardha

10、t/devkit/ppc/8xx/targetlibdir=/opt/hardhat/devkit/ppc/8xx/target/usr/lib-includedir=/opt/hardhat/devkit/ppc/8xx/target/usr/include-enabledebug其中,ppc_8xx-gcc是針對PowerPC體系結(jié)構(gòu)目標(biāo)的編譯器,是MontaVista Linux提供的;build是指執(zhí)行編譯的機(jī)器,這里是x86的開發(fā)主機(jī);target是運(yùn)行該編譯器所產(chǎn)生目標(biāo)文件的機(jī)器;prefix是所有安裝路徑的前綴;libdir是庫文件安裝路徑;includedir是頭文件安裝路徑;

11、enabledebub指編譯時需包含調(diào)試信息。配置完,運(yùn)行編譯安裝命令。綜合示范程序mde1.2.6。tar。gz的安裝方法和庫文件類似的。此時,啟動目標(biāo)板,在MontaVisa Linux的控制程序下,進(jìn)入/mde1.2.6/mginit目錄,輸入命令行./mginit運(yùn)行MiniGUI的這個后臺服務(wù)器程序,出現(xiàn)一個有小企圖片的窗口管理器,并在左上角弱出一個控制臺程序的子窗口。在該控制臺下,可以運(yùn)行mde中其它的示范例子。至此,MiniGUI圖形包在目標(biāo)板上移植安裝完成。5 信息終端軟件開發(fā)本系統(tǒng)中采用了MiniGUI專為嵌入式系統(tǒng)開發(fā)的Lite版本。它基于客戶/服務(wù)器(C/S)體系,在服務(wù)

12、器和客戶之間傳遞輸入設(shè)備數(shù)據(jù),以及客戶和服務(wù)器之間的某些語法 和響應(yīng)數(shù)據(jù)。在該信息終端軟件中,就根據(jù)這種結(jié)構(gòu)特點(diǎn),設(shè)計(jì)了一個服務(wù)器程序和兩個客戶進(jìn)程。服務(wù)器始終運(yùn)行后臺,記錄有關(guān)系統(tǒng)信息,如系統(tǒng)計(jì)時、用戶刷卡余額等,通過MiniGUI提供的Socket機(jī)制通信將數(shù)據(jù)傳給下面的客戶程序。主界面客戶進(jìn)程給用戶提供了完整的操作體驗(yàn),用戶可以通過菜單選擇打電話、瀏覽信息等功能.另一客戶進(jìn)程則是廣告屏保,在無人使用的間隙時間里,可以動態(tài)顯示一些精彩的畫面,實(shí)現(xiàn)商業(yè)價值或公益宣傳.下面分別進(jìn)行介紹。(1)信息終端客戶程序該信息終端主體界面客戶程序在MiniGUI服務(wù)器的控制臺程序下打開,彈出的是信息終端的

13、主菜單,顯示了電話、信息查詢、城市交通、新聞專欄等板塊.程序?qū)崿F(xiàn)時,開始是包含的頭文件。MiniGUI圖形包的頭文件有:common。h(MiniGUI常用的宏及數(shù)據(jù)類型的定義)、minigui.h(全局的和通用的接口函數(shù)及雜項(xiàng)函數(shù)的定義)、window。h(定義了和窗口有關(guān)的宏、數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和窗口函數(shù))。使用GDI函數(shù)和控件還需包括gdi。h、control。h兩個頭文件。編程實(shí)現(xiàn)時,MiniGUI的程序入口點(diǎn)是MiniGUIMain函數(shù),系統(tǒng)初始化后就會自動找到該函數(shù)。在該函數(shù)中先設(shè)置主窗口一些基本屬性,建立每個客戶程序唯一的一個消息隊(duì)列。當(dāng)程序結(jié)束時,調(diào)用MainWindow Th

14、readCleanup函數(shù),清除主窗口所使用的消息隊(duì)列系統(tǒng)資源,退回服務(wù)器程序中。其,各個功能子函數(shù)是在MiniGUI程序的另一主體部分主界面窗口的過程函數(shù)中調(diào)用打開的。在主窗口建立時,其中有一項(xiàng)屬性MainWindowProc,即是注明了對應(yīng)該窗口的過程函數(shù)。各個功能模塊的消息也都是通過主窗口中的消息循環(huán)進(jìn)行觸發(fā)的.窗口過程函數(shù)主體上都是switch和case結(jié)構(gòu)的選擇語句,針對不同的消息產(chǎn)生不同的響應(yīng)。一般MSG_CREATE消息在窗口生成時被發(fā)送,因而控件往往在這里調(diào)用CreateWindow函數(shù)生成.MSG_PAINT則是在移動窗口或調(diào)用UpdateWindow重繪時發(fā)生,可根據(jù)需要定

15、義相應(yīng)的操作.MSG_CLOSE即是關(guān)閉窗口時的動作,一般調(diào)用DestroyMainWindow銷毀主窗口,調(diào)用PostQuitMessage退出消息循環(huán)。此外,在窗口過程函數(shù)MiniGUI提供的GDI,即圖形設(shè)備接口(graphics device interface),可以方便地將BMP、GIF、JPEG等圖片用LoadBitmap函數(shù)輸出到界面,并通過設(shè)備上下文(DC)的邏輯字體(logfont)實(shí)現(xiàn)多字體和多字符集支持.廣告進(jìn)程的制作也類似,不再說明.(2)信息終端軟件服務(wù)器程序因?yàn)榉?wù)器和客戶程序需要交換數(shù)據(jù),所以我們使用了經(jīng)MiniGUI包裝過的Socket通信機(jī)制。在服務(wù)器中,建

16、立一個監(jiān)聽套接字:define LISTEN_SOCKET ”/var/tmp/socket1"static int listen_fd;BOOL listen_socket(HWND hwnd) if(listen_fd=serv_listen(LISTEN_SOCKET))<0)return FALSH;return RegisterListenFD(listen_fd,POLLIN,hwnd,NULL);服務(wù)器監(jiān)聽該套接字listen_fd。當(dāng)客戶有連接請求時,服務(wù)器的過程函數(shù)中就會收到MSG_FDEVENT消息,服務(wù)器就可以接受該請求以進(jìn)行相應(yīng)處理:static int

17、 MainFunProc(HWND hWnd, switch(message)case MSG_FDEVENT:if(LOWORD(wParam)= =listen_fd)conn_fd=serv_accept(listen_fd,uid);if(conn_fd0)sock_read(conn_fd,buff20,40);sock_write(conn_fd,buff20,40);break;在主界面進(jìn)程中,需要連接到服務(wù)器時,可以通過cli_conn(LISTEN_SOCKET,'b)來提出請求。這樣,服務(wù)器和客戶程序之間即可相互交流數(shù)據(jù)了。廣告進(jìn)程實(shí)現(xiàn)時,需要在服務(wù)器中設(shè)置事件鉤子

18、函數(shù)SetServerEventHook(my_event_hook)。因?yàn)閺V告屏保是在沒有鍵盤鼠標(biāo)輸入的一段時間后自動打開的,有任意鍵時又自動關(guān)閉,所以只有始終運(yùn)行在后臺的服務(wù)器才能判斷廣告是否要打開關(guān)閉.可以在消息循環(huán)時進(jìn)行判斷:while(GetMessage(Msg,HWND_DESKTOP)if (pid_scrnsaver= =0&GetTickCount()>old_tick_count+1000)ShowCursor(FLASE);pid_scrnsaver=exec_app(”./scrnsaver”,”crnsaver");DispatchMessage(Msg);dld_tick_count是前一次消息的時間。當(dāng)從GetTickCount()得到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論