




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、河南工業(yè)大學(xué)論文題目:基于Linux嵌入式操作系統(tǒng)的圖形化界面的研究和實現(xiàn)學(xué)院:信息科學(xué)與工程學(xué)院班級:電科1304姓名:學(xué)號:2013160304指導(dǎo)老師姓名:王金峰摘要:隨著通訊技術(shù)的發(fā)展和3G網(wǎng)絡(luò)的推廣,用戶對手機(jī)的要求不在只是簡單的語音、收發(fā)短信等基本功能,手機(jī)辦公、手機(jī)娛樂等功能受到人們的青睞。PDA(PersonalDigitalAssistant)正是在這種背景下產(chǎn)生,并且發(fā)展壯大,它不僅集成了傳統(tǒng)手機(jī)的基本功能,同時兼容了筆記本電腦的諸多功能,真正滿足了用戶需求。PDA市場潛力巨大,是個人終端技術(shù)的發(fā)展趨勢。本文以嵌入式的PDA為研究對象,論述了基于嵌入式Linux和Qt/Em
2、bedded的圖形界面終端的設(shè)計與實現(xiàn),最終搭建了適用于PDA的個性化人機(jī)交互系統(tǒng)。論文的主要內(nèi)容包括:通過對當(dāng)前流行的幾種嵌入式處理器、嵌入式操作系統(tǒng)、GUI圖形支持系統(tǒng)優(yōu)缺點的討論,結(jié)合設(shè)備特點選擇了以ARM9核心的S3C2410為本系統(tǒng)的硬件平臺,2.4.18內(nèi)核Linux和Qt為本系統(tǒng)的軟件平臺。建立硬件開發(fā)平臺,對S3C2410處理器、以及外圍接口部件進(jìn)行了分析介紹,講述了它們的結(jié)構(gòu)及功能;對Linux系統(tǒng)的內(nèi)核和文件系統(tǒng)作了深入研究。詳細(xì)分析了Linux系統(tǒng)bootloader的功能以及它的編譯與移植;Linux內(nèi)核的剪切、編譯和移植;Linux文件系統(tǒng)的制作、編譯與移植,為系統(tǒng)開
3、發(fā)搭建了軟件平臺。在對Qt/Embedded系統(tǒng)分析的基礎(chǔ)上,分別建立了Qt在PC機(jī)上的開發(fā)調(diào)試環(huán)境和Qt在cygwin上的編譯移植環(huán)境。在PC機(jī)Qt開發(fā)環(huán)境下,開發(fā)了幾個基于Qt/E的具有友好界面的應(yīng)用軟件。利用這幾個程序構(gòu)建了自己的圖形化界面系統(tǒng),在cygwin上經(jīng)過編譯移植進(jìn)目標(biāo)板,運行穩(wěn)定。驗證了Linux+Qt/Embedded+C+開發(fā)環(huán)境的有效性。最后,開發(fā)的成果為一套精美高效,可觸摸式的人機(jī)交互系統(tǒng),它具有可移植性好、操作簡單和易于二次開發(fā)等特性。關(guān)鍵字:PDA嵌入式處理器嵌入式LinuxQt/Embedded人機(jī)交互系統(tǒng)S3C2410、引言嵌入式系統(tǒng)概述國際電氣和電子工程師協(xié)
4、會(IEEE)定義嵌入式系統(tǒng)為:“用于控制、監(jiān)視或者輔助設(shè)備、機(jī)器或者車間運行的裝置(AnEmbeddedsystemisthedevicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)”。通常來說,嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機(jī)系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶應(yīng)用程序四部分組成,用于實現(xiàn)對其它設(shè)備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)有如下特點:(1)專用性強(qiáng)
5、為特定應(yīng)用設(shè)計,專用于特定的任務(wù),軟硬件可裁剪,滿足對象系統(tǒng)要求的最基本軟硬件配置。(2)可靠性高代碼固化、存放在存儲器芯片或處理器的內(nèi)部存儲器件中。(3)功耗低、體積小、集成度高、成本低系統(tǒng)的硬件和軟件都進(jìn)行高效設(shè)計,在保證穩(wěn)定、安全、可靠基礎(chǔ)上量體裁衣,去除冗余,用較少的軟硬件資源實現(xiàn)較高的性能。嵌入式人機(jī)交互系統(tǒng)的研究現(xiàn)狀人機(jī)交互是研究人、計算機(jī)之間相互作用的技術(shù)。界面是人與計算機(jī)之間交換信息的媒介和對話接口,是計算機(jī)系統(tǒng)的重要組成部分。人機(jī)交互的發(fā)展從人去適應(yīng)計算機(jī)逐步過渡到計算機(jī)不斷地適應(yīng)人,演變過程共經(jīng)歷了以下幾個階段:(1)早期的手工作業(yè)階段,用戶(程序設(shè)計員)采用手工操作和依賴
6、機(jī)器(二進(jìn)制代碼)的方法在計算機(jī)上執(zhí)行操作。(2)作業(yè)控制語言及交互命令語言階段,采用批處理作業(yè)語言及交互命令語言與計算機(jī)交流,需要記憶大量命令,熟悉鍵盤輸入方式。(3)多通道的智能人機(jī)交互階段,涵蓋了用戶表達(dá)意圖、執(zhí)行動作或感知反饋的各種信息交互,如言語、手勢、觸覺等方面。多通道人機(jī)界面是基于視線跟蹤、語音識別、手勢輸入、感覺反饋等的新交互技術(shù),實現(xiàn)科學(xué)計算可視化、虛擬現(xiàn)實等,這些技術(shù)對計算機(jī)系統(tǒng)性能提出了更高的要求。它允許用戶利用多個交互通道以并行、非精確方式與計算機(jī)系統(tǒng)進(jìn)行交互,旨在提高人機(jī)交互的自然性和高效性。嵌入式人機(jī)交互系統(tǒng)的發(fā)展趨勢當(dāng)今信息時代,使得嵌入式產(chǎn)品獲得了巨大的發(fā)展契機(jī)
7、,為嵌入式市場展現(xiàn)了美好的前景,同時也對嵌入式研發(fā)提出了新的挑戰(zhàn)。(1)網(wǎng)絡(luò)化要求隨著因特網(wǎng)技術(shù)的成熟,未來嵌入式設(shè)備為了適應(yīng)網(wǎng)絡(luò)發(fā)展,必然要求硬件上提供各種網(wǎng)絡(luò)通信接口,軟件方面系統(tǒng)內(nèi)核要支持網(wǎng)絡(luò)模塊,實現(xiàn)隨時隨地上網(wǎng)。(2)精簡系統(tǒng)內(nèi)核設(shè)計者應(yīng)盡量精簡系統(tǒng)內(nèi)核,只保留和系統(tǒng)功能緊密相關(guān)的軟硬件,利用最低的資源實現(xiàn)最適當(dāng)?shù)墓δ?。?)提供友好的多媒體人機(jī)界面嵌入式設(shè)備能與用戶親密接觸,最重要的因素就是它能提供非常友好的用戶界面。本課題研究意義嵌入式系統(tǒng)因其體積小、可靠性高、功能強(qiáng)等優(yōu)勢,已滲透到工業(yè)、農(nóng)業(yè)、教育、國防、科研以及日常生活等各個領(lǐng)域,對各行各業(yè)的技術(shù)改造、產(chǎn)品更新?lián)Q代、提高生產(chǎn)率
8、等方面起到了極其重要的作用。同時,嵌入式Linux操作系統(tǒng)以其開放源代碼、易于開發(fā)、功能強(qiáng)大、穩(wěn)定、成本低等優(yōu)勢迅速躋身于主流嵌入式操作系統(tǒng)?;谇度胧絃inux操作系統(tǒng)的研究和應(yīng)用具有巨大的學(xué)術(shù)和商業(yè)價值。相對于桌面系統(tǒng),人機(jī)交互技術(shù)在嵌入式系統(tǒng)中的研究還處于初級階段。嵌入式系統(tǒng)的終端產(chǎn)品在系統(tǒng)簡潔、美觀、方便好用,人性化設(shè)計等方面較桌面系統(tǒng)還有巨大差距,因此越來越多的人投入到嵌入式GUI的的開發(fā)當(dāng)中。本課題正是探索如何在S3C2410處理器(ARM9)上搭建和移植嵌入式Linux操作系統(tǒng)并在移植好的操作系統(tǒng)上實現(xiàn)GUI,同時實現(xiàn)基于Qt/Embedded的應(yīng)用軟件的開發(fā),最后構(gòu)造一個完整的
9、PDA圖形化系統(tǒng)。嵌入式系統(tǒng)開發(fā)硬件平臺構(gòu)建硬件系統(tǒng)設(shè)計方案一個應(yīng)用系統(tǒng)的設(shè)計都是面向產(chǎn)品的,以產(chǎn)品需求來定制系統(tǒng)??偟膩碚f,在系統(tǒng)硬件體系結(jié)構(gòu)設(shè)計時,應(yīng)當(dāng)遵守一定的標(biāo)準(zhǔn),具體標(biāo)準(zhǔn)包括:先要綜合了解系統(tǒng)各方面需求,在分析之后確定合適的解決方案,提出硬件的體系結(jié)構(gòu)及系統(tǒng)外圍各功能模塊的實現(xiàn)。充分利用當(dāng)前比較成熟的技術(shù)方案,這樣可以保證電路設(shè)計的正確性和可靠性,并且可以大大縮短系統(tǒng)的設(shè)計時間。硬件系統(tǒng)采用模塊化、標(biāo)準(zhǔn)化設(shè)計,還應(yīng)盡量選擇典型的電路功能模塊。因為硬件升級比軟件升級相對復(fù)雜,所以硬件系統(tǒng)體系架構(gòu)應(yīng)該盡量使用開放模式,采用通用平臺設(shè)計,以降低成本和減小開發(fā)周期,也便于將來對系統(tǒng)的改進(jìn)與升
10、級。嵌入式系統(tǒng)一般采用軟硬件一體化的解決方案,在硬件設(shè)計同時進(jìn)行軟件開發(fā),硬件的方案要根據(jù)軟件的可行性進(jìn)行考慮,而軟件的設(shè)計也要根據(jù)硬件的性能進(jìn)行考慮,這樣在具體實現(xiàn)時,整個系統(tǒng)就可以不斷的進(jìn)行分析與改進(jìn),能夠使系統(tǒng)達(dá)到最優(yōu)化。系統(tǒng)需求分析本系統(tǒng)提供了一種嵌入式PDA多種應(yīng)用軟件的功能。友好的人機(jī)交互接口組成系統(tǒng)的控制面板,方便用戶的操作。網(wǎng)絡(luò)通信和mp3解碼播放等應(yīng)用的實現(xiàn)使系統(tǒng)除了必需具有人機(jī)交互的控制功能外,還應(yīng)該具有豐富的通訊、網(wǎng)絡(luò)接口和強(qiáng)大的mp3解碼功能。具體需求如下:宿主機(jī)與目標(biāo)板的交互接口,包括UART通用串口、JTAG燒寫接口等;LCD模塊及觸摸屏;必須實現(xiàn)通用的以太網(wǎng)Eth
11、ernet接口,用來實現(xiàn)目標(biāo)機(jī)的遠(yuǎn)程登錄和訪問;強(qiáng)大的處理器解碼性能和可靠的音頻控制器,實現(xiàn)mp3歌曲文件實時播放;必須具有足夠的存儲器空間,用來存儲系統(tǒng)鏡像和音視頻文件。硬件平臺本設(shè)計使用Samsung公司S3C2410處理器的S3EB2410開發(fā)板作為硬件開發(fā)平臺,用它進(jìn)行ARM技術(shù)評估以及嵌入式Linux系統(tǒng)設(shè)計。平臺采用開放式架構(gòu)設(shè)計,便于根據(jù)應(yīng)用需要,進(jìn)行各種功能擴(kuò)展。其硬件框圖如下圖所示:IRDUARIDLL1KTInipo罰口1SFIKiHTShl-MnhlxnACAID:iELCARDCHJ3RMT町龜維口LCDraLUSJCKYST/iLuUlsIUSBtoiceu空乩口IN
12、Ill?n!i1li5haihicCFirS3CSII.0di麗wnrrUSBI:口ATMH-CDILAJiH2Mi-IMHylcKAzikrnciI血I址盍帽KSHLTEJwrit-|1-:UMByfeI理還IUXELJS2ra?JT-WiFCJWEEFCSRT(1)內(nèi)核工作電壓為1.8V、存儲器供電電壓3.3V、外部I/O設(shè)備供電電壓3.3V;(2)使用外部12MHz晶振,CPU內(nèi)部倍頻至200MHz;(3)LCD接口,最大可支持4K色STN和256色TFT;(4)4路PWM;(5)3通道的UART串口接口;雙USB2.0接口,實現(xiàn)與U盤、硬盤、鍵盤等從設(shè)備的通訊,一通道USBDEVICE
13、;(7)TSP觸摸屏控制器;(8)8通道10位ADC模數(shù)轉(zhuǎn)換接口;(9)10M以太網(wǎng)卡;(10)IIC總線EEPROM;IIS數(shù)字音頻輸入/輸出接口。兩片32MBSDRAM,作為程序運行空間。64MBNandFlash存儲器,用于存放Linux系統(tǒng)。電路模塊設(shè)計分析網(wǎng)絡(luò)模塊S3C2410沒有集成網(wǎng)絡(luò)控制器,在嵌入式平臺中需增加獨立的以太網(wǎng)控制芯片來實現(xiàn)網(wǎng)絡(luò)接口,本系統(tǒng)通過外接一片CS8900A芯片擴(kuò)展了一個10M的以太網(wǎng)接口。CS8900A是美國CIRRUSLOGIC公司生產(chǎn)的以太網(wǎng)控制器,由于其優(yōu)良的性能、低功耗及低廉的價格,使其在10Mbps嵌入式網(wǎng)絡(luò)應(yīng)用中占有相當(dāng)?shù)谋壤?。?shù)抿總裟數(shù)獻(xiàn)址脣
14、CS.OOA4獸上圖為CS8900A的硬件連接示意圖。S3C2410通過數(shù)據(jù)總線與若干控制信號和CS8900A相連接,系統(tǒng)與外部網(wǎng)絡(luò)通信通過以太網(wǎng)接口進(jìn)行擴(kuò)展。以太網(wǎng)接口使用的是集成了網(wǎng)絡(luò)變壓器(Transformer)的RJ45網(wǎng)絡(luò)接口,網(wǎng)絡(luò)變壓器的功能就是把PHY輸出的差分信號用差模耦合的方式進(jìn)行耦合濾波以增強(qiáng)信號,并且通過電磁場的轉(zhuǎn)換,耦合到連接網(wǎng)線的另一端,這樣使網(wǎng)絡(luò)傳輸媒介和PHY之間沒有物理上直接連接,隔斷了信號中可能存在的直流分量,實現(xiàn)了在不同電平下工作的設(shè)備可以傳送數(shù)據(jù)。LCD模塊S3C2410內(nèi)部集成了LCD控制器邏輯單元,支持黑白屏LCD、STN-LCD、TFT-LCD等多
15、種顯示屏,用來將LCD圖像數(shù)據(jù)從系統(tǒng)內(nèi)存的視頻緩沖區(qū)傳輸?shù)酵獠縇CD驅(qū)動器,同時產(chǎn)生數(shù)據(jù)傳輸與顯示時使用的各種時鐘與控制信號。如下圖所示的S3C2410的LCD控制器內(nèi)部組成框圖,LCD數(shù)據(jù)總線VD0VD23用來傳輸16位RGB565格式數(shù)據(jù)到液晶模塊顯示,LCD控制線有5條:VFRAME幀同步信號、VLINE行同步信號、VCLK位時鐘信號、LEND行結(jié)束信號、VM輸出數(shù)據(jù)使能信號。LCD運行原理:為了顯示一幀圖像,首先在系統(tǒng)的幀緩沖區(qū)中存入要顯示的圖像數(shù)據(jù),然后讓LCD控制器的DMA地址寄存器指向幀緩沖器的起始地址,讀出幀緩沖區(qū)的數(shù)據(jù)到LCD控制器的輸入FIFO隊列,由于設(shè)計中采用16位方式
16、,不需要對framebuffer幀緩沖區(qū)中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,直接把數(shù)據(jù)送到輸出FIFO隊列,最后將數(shù)據(jù)送到液晶模塊處理,就可以驅(qū)動LCD顯示圖像。電源系統(tǒng)S3C2410使用兩種電壓供電:內(nèi)核電壓1.8V、外圍電壓3.3V。存儲系統(tǒng)的Flash和SDRAM、網(wǎng)絡(luò)控制器CS8900A、音頻控制器UDA1341TS都采用典型的3.3V的TTL電壓供電,而LCD需要5V電壓供電,從而系統(tǒng)中共需要1.8V、3.3V和5V三種不同電平的電壓。被系統(tǒng)的電源電路如下所示:POWERI系統(tǒng)選用線性穩(wěn)壓源方案,輸入電源使用5V/800mA的電源適配器,經(jīng)過鉭電容濾波后送給外圍的LCD接口電路提供5V電壓,同時送
17、到LDO芯片,將5V直流變?yōu)?.3V,并經(jīng)過濾波在經(jīng)過一個LDO芯片,變?yōu)?.8V供處理器內(nèi)核。宿主機(jī)接口本系統(tǒng)用到的宿主機(jī)接口主要包括:并口、UART串口。其中,開發(fā)板的J-TAG接口通過20PIN排線與仿真器相連,仿真器再通過并口線與宿主機(jī)并口相連,J-TAG接口在本系統(tǒng)中用來配合EmbestIDE軟件將系統(tǒng)的內(nèi)核及文件系統(tǒng)燒寫到NandFlash存儲器,而UART串口則是系統(tǒng)開發(fā)時,宿主機(jī)用來操作目標(biāo)板的控制臺接口。本系統(tǒng)目標(biāo)板設(shè)計采用標(biāo)準(zhǔn)的20針接口,以方便連接各種標(biāo)準(zhǔn)的仿真器。其JTAG接口原理圖如下:三、嵌入式系統(tǒng)開發(fā)軟件環(huán)境構(gòu)建3.1交叉編譯環(huán)境搭建交叉編譯環(huán)境的硬件支持為:宿主
18、機(jī):PC一臺,安裝Windows7操作系統(tǒng),安裝cygwin軟件。PC機(jī)有串口(或是USB轉(zhuǎn)串口)和并口同目標(biāo)板通信。交叉編譯軟件:從 HYPERLINK 上下載cygwin,這里用1.5.1版本,在Windows7上安裝。從 HYPERLINK 下載交叉編譯工具cross-armtoolsTinux.tar.bz2,將其拷貝到cygwin/tmp目錄下。運行cygwin,執(zhí)行以下命令完成cygwin環(huán)境下Linux交叉編譯工具安裝:cd/usrar-xvjf/tmp/cross-armtools-linux.tar.bz2lsarm-linux正確解壓后,可以看到多了一個arm-linux目
19、錄,即交叉編譯工具安裝目錄。寫一個shell文本set_linux.sh,來設(shè)置cygwin下程序開發(fā)的環(huán)境變量,以便搭建一個Linux開發(fā)、編譯和應(yīng)用程序測試的環(huán)境。shell文本代碼如下:#!/bin/sh#set_linux.sh/*交叉編譯工具安裝目錄*/exportCROSSDIR=/usr/*存放源代碼和測試程序*/exportSOURCEDIR=/tmp/edukit-2410/*存放vivi,linux,fs,guiandexamples(debug)*/exportWORKDIR=/usr/local/src/edukit-2410/*存放可執(zhí)行文件*/exportINSTA
20、LLDIR=/home/appif-d$SOURCEDIR;thenecho$SOURCEDIRelseechoCreatingdirectory:$SOURCEDIRmkdir-p$SOURCEDIRfiif-d$WORKDIR;thenecho$WORKDIRelseechoCreatingdirectory:$WORKDIRmkdir-p$WORKDIRfiif-d$INSTALLDIR;thenecho$INSTALLDIRelseechoCreatingdirectory:$INSTALLDIRmkdir-p$INSTALLDIRfiexportLIBDIR=-L$CROSSDIR/
21、arm-linux/lib/-L$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3CROSS=arm-linux-exportCC=$CROSSgccexportAS=$CROSSasexportLD=$CROSSldexportCFLAGS=-O2-fomit-frame-pointerexportCPPFLAGS=-I$WORKDIR/kernel/include-I$CROSSDIR/arm-linux/include-I$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/includeexportLDFLAGS=$LIBDIRexpo
22、rtGCCMISC=$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/exportPATH=$CROSSDIR/bin:$CROSSDIR/arm-linux/bin:$GCCMISC:$PATHecho$PATH運行cygwin,執(zhí)行以下命令:source/tmp/edukit-2410/set_linux.sharmlinuxgcc-vBootloeder的移植Bootloader是硬件上電后執(zhí)行的第一段程序,負(fù)責(zé)硬件的初始化和操作系統(tǒng)內(nèi)核的引導(dǎo)。通過這個引導(dǎo)程序,建立內(nèi)存空間的映射,將系統(tǒng)的軟硬件環(huán)境設(shè)置到合適的狀態(tài),最終完成操作系統(tǒng)引導(dǎo)、裝載和運行。本課題B
23、ootloader選用vivi,因為它對S3C2410有很好的支持,其最大的優(yōu)點是直接支持NandFlash。Vivi啟動詳細(xì)過程:在對VIVI進(jìn)行基本的修改之后,運行以下命令進(jìn)行編譯source/tmp/edukit-2410/set_linux.shcd/usr/local/src/edukit-2410/vivimakecleanmakemenuconfigmakemakemenuconfig命令對VIVI進(jìn)行配置(如圖34)。選擇LoadanalternateconfigurationFile選AM29LV160DB芯片的扇區(qū)為:1至5。如下FlashProgrammer配置圖。燒寫完
24、成后,給目標(biāo)板復(fù)位,如燒寫成功,則可通過超級終端看到相關(guān)運行信擇已生成的配置文件smdk2410,選擇保存退出。然后執(zhí)行make命令,生成VIVI的可執(zhí)行映像文件。本項目中要把VIVI燒寫進(jìn)NandFlash,首先運行Flash燒寫軟件FlashProgrammer,選擇要燒寫的文件為NandFlash的配置文件,燒寫芯片為NorFlash,燒寫地址為0X00000000-0X00020000,對應(yīng)本系統(tǒng)中息.Linux內(nèi)核的移植內(nèi)核是Linux系統(tǒng)的核心,用來提供用戶層程序和硬件之間的接口,執(zhí)行發(fā)生在多任務(wù)系統(tǒng)中的實際任務(wù)轉(zhuǎn)換,處理讀寫磁盤的需求,處理網(wǎng)絡(luò)接口,以及管理內(nèi)存等。首先從/pub
25、/Linux/kernel/網(wǎng)站上下載內(nèi)核源碼包,Linux2.4.18.tar.bz2,放進(jìn)cygwin的/tmp/edukit2410/目錄下,在cygwin中執(zhí)行以下命令完成Linux源代碼安裝:source/tmp/edukit2410/set_env_linux.shcdusr/local/src/edukit2410tar-xvjv/tmp/linux-2.4.18.tar.bz2lskernel正確解壓后,可以看到多了一個kernel目錄,即kernel源代碼安裝目錄。進(jìn)入kernel目錄,執(zhí)行以下命令,為內(nèi)核植入支持S3C2410的補(bǔ)?。篶dkernelpatch-p1/tmp
26、/edukit-2410/linux2.4.18-rmk7kit2410.patch編譯步驟:進(jìn)入內(nèi)核目錄,修改kernel目錄下的Makefile文件,指定目標(biāo)代碼類型和編譯器:ARCH:=armCROSS_COMPILE=armlinux其中ARCH:=arm說明目標(biāo)是ARM體系;CR0SS_C0MPILE二arm-linux-說明交叉編譯器的前綴是arm-linux-。在cygwin中執(zhí)行以下命令,完成Linux的編譯過程:source/tmp/edukit-2410/set_linux.shcduser/local/src/edukit-2410/kernelmakemrproperm
27、akexconfig執(zhí)行完makexconfig命令后,本系統(tǒng)中對Linux內(nèi)核的關(guān)鍵配置如下,其中*和表示該選項加入內(nèi)核編譯;和表示不選擇該選項;表示該選項作為模塊編譯內(nèi)核,即可以動態(tài)加載和卸載該模塊。1)增加對模塊的支持Loadablemodulesupport-*Enableloadablemodulesupport/使內(nèi)核支持加載模塊*Moduleunloading/使內(nèi)核支持卸載模塊2)配置文件系統(tǒng)Filesystem-CompressedROMfilesystemsupport支持本系統(tǒng)使用的CRAMFSFileSystem目標(biāo)板上電,在超級終端可以看到vivi啟動信息,輸入空格鍵
28、使vivi進(jìn)入命令狀態(tài),然后打開EmbestIDE軟件,加載下載配置文件,與目標(biāo)板進(jìn)行連接,連接好后點擊IDE的Stop按鈕,配置Debug的Download地址為0X30000000,下載的文件選擇zImage,點擊Download進(jìn)行下載,下載完成后,點擊IDE的Start按鈕,在超級終端中輸入:loadflashkernelx如果燒寫成功,重啟目標(biāo)板,vivi就可以引導(dǎo)Linux內(nèi)核了,可通過超級終端看到相關(guān)運行信息如圖所示,則說明內(nèi)核己經(jīng)移植成功,可以在開發(fā)板上運行了。VIVIvorsimU.1.4(HuanivrKHiuangrM(gcc2.3d!HUiU31b(rekcKyJ)H4
29、.1.4TueJunK22:06:2?Z0B5腳tfiblebaseaddress=0*33DFC000Succeedmsnoryruppinp.HFKdevice:nufadureID:0 xechChipID-0 x?6(SamsungK9D1208VE*!CmiIiIftotfount!stornduiuinararintnrs.llscAtfrUlt馮冋ipariiniftlfirFt.PrteiKvlurntoslciHUmL1NUKi伽.哥理心11冏k知IcryiviCopyliriLixkernelfrora0kGB0D00O0toflxD0eOC;O-fl,izeSsOOdcQ
30、iOOSl.加陽zlwigensgic=0w016f2S13Setuplinuxpar-anelersatBx366B616Bliinu克coMijridlineis:oiriilrdrcot/de*/fcon/2hHt-/LinuMrc(?聞彌1亡一忖磧臚開血ILWPF-193訊口卩UwliiirgLinuxllrwflnipreMingIimiK.”.”Hnna,hMtinkerriftl.Limjxrsion2.4.18-rik7-0Ka:l(huanrtccyersion2.95.320919315(release)#1UedSepKU:t2:332005CP1I:flRH/lCTft
31、RlISnri9?flIsidde0toloilijaesLG)01zooefOJ-1638tpages.zn(1:0pdjes.zooe(2-ftpagesKrtmftlr&iritindlino:niHidtrdiniI/linuwrccorftlft-rtySBmUUG.hwcouriLLXj加Console:colourduiirau出e”i匸eO0n30v03!C:GL:tXEWII53MP*】ffP四、Qt圖形界面的編程及實現(xiàn)構(gòu)建一個帶QTOPIA圖形界面的文件系統(tǒng),需要拷貝編譯產(chǎn)生的可執(zhí)文件、動態(tài)鏈接庫、字庫以及相關(guān)配置文件??砂匆韵虏襟E把已編譯的QTOPIA圖形界面文件加入到L
32、inux文件系統(tǒng):建立一個可用的無圖形界面的cramfs,在第三章我們已經(jīng)做好;把無圖形界面cramfs文件系統(tǒng)存放于$WORKDIR/root-qtopia/目錄下,并在該目錄下建立一個名為qt的文件夾用于存放QTOPIA運行文件;從/usr/arm-linux/lib/目錄下拷貝程序運行所需函數(shù)庫到$WORKDIR/root-qtopia/lib,替換無文件系統(tǒng)的lib目錄;(4)從已編譯QTOPIA目錄拷貝以下目錄及相關(guān)文件到$WORKDIR/root-qtopia/qt/目錄:apps:QTOPIA屬性頁配置文件目錄bin:執(zhí)行文件目錄etc:程序配置及雜項文件il8n:語言配置目錄i
33、nclude:包含文件目錄lib:動態(tài)函數(shù)庫目錄pics:圖片及應(yīng)用程序圖標(biāo)存放目錄plugins:動態(tài)函數(shù)庫存放目錄services:界面服務(wù)程序存放目錄sounds:事件聲音文件存放目錄五、基于Qt/Embedded的應(yīng)用程序設(shè)計使用Qt/Embedded設(shè)計程序一般需要編寫三種類型的文件:頭文件(h)、實現(xiàn)文件(.cpp)和主函數(shù)文件(main.cpp)。頭文件用來定義各種類;實現(xiàn)文件用于實現(xiàn)頭文件中定義的構(gòu)造函數(shù)及實現(xiàn)函數(shù);主函數(shù)文件中包括啟動和主窗口設(shè)置等。Qt/Embedded應(yīng)用程序的開發(fā)流程如下圖:Qt擁有十分強(qiáng)大的類庫,這些類帶有構(gòu)建跨平臺服務(wù)器與客戶端程序的底層構(gòu)造函數(shù)。Q
34、t的類庫可以分成三部分:組件、框架、效用工具。其中,組件包括環(huán)境、主窗口、標(biāo)準(zhǔn)對話框、高級窗口部件等;框架包括對象、模型、窗口部件外觀等;效用工具包括圖像處理、I/O處理和雜項等。在程序設(shè)計中最常用的類包括QObject、Qapplication、QWidget、QMainwindow、QLayout、QEvent。主要類的繼承樹:5.1動感界面的歡迎程序設(shè)計在PC機(jī)上用shell編程完成以下文件編寫頭文件(.h)#include/*Hello類說明*/classHello:publicQWidgetQ_OBJECTpublic:Hello(constchar*text,QWidget*par
35、ent=0,constchar*name=0);signals:voidclicked();protected:voidmouseReleaseEvent(QMouseEvent*);voidpaintEvent(QPaintEvent*);privateslots:voidanimate();private:QStringt;intb;qwidget.h是Qt的組件類,當(dāng)Timer溢出時,在該hello類中調(diào)用成員函數(shù)animator(),使文字帶有動感。編寫實現(xiàn)文件(.cpp)/*包含hello.h頭文件*/#includehello.h#include#include#include#i
36、nclude/*創(chuàng)建一個Hello組件,設(shè)置一個40ms的動感時鐘*/Hello:Hello(constchar*text,QWidget*parent,constchar*name):QWidget(parent,name),t(text),b(0)QTimer*timer=newQTimer(this);connect(timer,SIGNAL(timeout(),SLOT(animate();timer-start(40);resize(260,130);/*每次定時時間一到,privateslot即被調(diào)用*/voidHello:animate()b=(b+1)&15;repaint(F
37、ALSE);/*處理Hello組件的鼠標(biāo)按鈕釋放事件,在組件內(nèi)當(dāng)鼠標(biāo)被釋放時發(fā)出clicked()信號*/voidHello:mouseReleaseEvent(QMouseEvent*e)if(rect().contains(e-pos()emitclicked();/*處理Hello組件的paint事件,文字首先畫在像素圖上,然后像素圖被拷貝到屏幕上*/voidHello:paintEvent(QPaintEvent*)staticintsin_tbl16=0,38,71,92,100,92,71,38,0,-38,-71,-92,-100,-92,-71,-38;if(t.isEmpty
38、()return;/*計算一些尺寸,位置等*/QFontMetricsfm=fontMetrics();intw=fm.width(t)+20;inth=fm.height()*2;intpmx=width()/2-w/2;intpmy=height()/2-h/2;/*創(chuàng)建像素圖并用組件的背景圖填充它*/QPixmappm(w,h);pm.fill(this,pmx,pmy);/*畫像素圖波浪效果*/QPainterp;intx=10;inty=h/2+fm.descent();inti=0;p.begin(&pm);p.setFont(font();while(!ti.isNull()in
39、ti16=(b+i)&15;p.setPen(QColor(15-i16)*16,255,255,QColor:Hsv);p.drawText(x,y-sin_tbli16*h/800,t.mid(i,1),1);x+=fm.width(ti);i+;p.end();/*拷貝像素圖到Hello組件*/bitBlt(this,pmx,pmy,&pm);qpushbutton.h,下壓按鈕組件,用戶可以按下或釋放該按鈕,它可以管理自己的外觀,具體定義在qpushbutton.h中;qpainter.h,qpixmap.h分別是畫圖、像素圖組件。編寫主函數(shù)文件(main.cpp)#includehe
40、llo.h/嵌入自己生成的頭文件#include/*解析命令行,創(chuàng)建一個顯示在Hello組件上的消息字符串*/intmain(intargc,char*argv)QApplicationa(argc,argv);QStrings;for(inti=1;iargc;i+)s+=argvi;if(iargc-1)s+=;if(s.isEmpty()s=Hello,MyDearTeachers!;Helloh(s);h.setCaption(ChengduUniversityofTechnology!);QObject:connect(&h,SIGNAL(clicked(),&a,SLOT(quit
41、();h.setFont(QFont(times,32,QFont:Bold);/設(shè)置默認(rèn)字體h.setBackgroundColor(Qt:white);/設(shè)置默認(rèn)背景色a.setMainWidget(&h);h.show();returna.exec();qapplication.h是所有Qt應(yīng)用程序必須包含的類,它創(chuàng)立了應(yīng)用程序的對象,來管理整個應(yīng)用程序,包括整個應(yīng)用程序范圍內(nèi)的各種資源。main()函數(shù)是程序的入口,Qt在將控制權(quán)交給Qt庫之前,main()函數(shù)只需要進(jìn)行一些初始化工作,然后Qt庫會通過事件來解釋程序用戶的操作,在這里main()函數(shù)來實現(xiàn)初始化窗口系統(tǒng)及創(chuàng)建appli
42、cation對象。執(zhí)行完以上命令后會在虛擬緩存中看到如圖所示hello效果圖。5.2構(gòu)造自己的圖形化系統(tǒng)在PC機(jī)上打造自己的圖形化系統(tǒng),在Qtopia平臺上發(fā)布需要三個文件:執(zhí)行文件(.0)、啟動器文件(.desktop)和圖標(biāo)文件(.png)。把生成的歡迎程序、時鐘、MediaPlayer播放器、文件查看器、錄音機(jī)的可執(zhí)行程序拷貝到/home/host/qtopia/bin目錄下。為歡迎程序、時鐘、MediaPlayer播放器、文件查看器、錄音機(jī)分別選好圖標(biāo)放在/home/host/qtopia/pics目錄下,注意這些圖標(biāo)的格式為.png格式。在/home/host/qtopia/apps
43、/Applications下編寫自己的啟動器文件:歡迎程序啟動器文件代碼:DesktopEntryComment=AHelloProgramExec=helloIcon=AmnType=ApplicationName=Hello時鐘啟動器文件代碼:DesktopEntryComment=AClockProgramExec=clockIcon=TimeType=ApplicationName=ClockNameno=KlokkeNamede=UhrMediaplay啟動器文件代碼:DesktopEntryComment=AMediaPlaybackProgramExec=mpegplayerIc
44、on=medeplayType=ApplicationMimeType=audio/mpeg;video/mpeg;video/x-msvideo;audio/x-wavMimeTypeIcons=SoundPlayer;MPEGPlayer;MPEGPlayer;SoundName=MediaPlayerNameno=MPEGspillerNamede=Medienwiedergabe文件查看器啟動器文件代碼:DesktopEntryComment=AFileManagerProgramExec=filebrowserFile=./apps/Applications/filebrowserIcon=filefindName=FileManagerNamede=DateiManagerNameno=FilviserType=Application錄音機(jī)啟動器文件代碼:DesktopEntryComment=AVoiceRecordingProgramExec=mediareco
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職員崗位工作述職報告(30篇)
- 2025-2030年中國土雞行業(yè)深度研究分析報告
- 2025年機(jī)動噴粉機(jī)項目可行性研究報告
- 2024-2025學(xué)年高中政治第四單元發(fā)展社會主義市抄濟(jì)第十課科學(xué)發(fā)展觀和械社會的經(jīng)濟(jì)建設(shè)課時1中國經(jīng)濟(jì)發(fā)展進(jìn)入新時代課時精練含解析新人教版必修1
- 2024-2025學(xué)年高中語文第二單元義薄云天自讀文本管鮑之交鞏固提升案魯人版選修史記蚜
- 2024-2025學(xué)年高中地理第四章生態(tài)環(huán)境保護(hù)第五節(jié)中國區(qū)域生態(tài)環(huán)境問題及其防治途徑課時作業(yè)新人教版選修6
- 中國男式帆布鞋行業(yè)市場調(diào)研分析及投資前景預(yù)測報告
- 2025年電扇金屬配件行業(yè)深度研究分析報告
- 2024中國機(jī)械設(shè)備租賃市場前景及投資研究報告
- 2024黑色金屬礦采選業(yè)行業(yè)分析報告
- 文化產(chǎn)業(yè)管理專業(yè)大學(xué)生職業(yè)生涯規(guī)劃書
- DSM-V美國精神疾病診斷標(biāo)準(zhǔn)
- 文獻(xiàn)的載體課件
- 2023年高考語文全國乙卷《長出一地的好蕎麥》解析
- 混凝土強(qiáng)度回彈檢測方案
- 歷年中考地理生物變態(tài)難題
- 研學(xué)旅行課程標(biāo)準(zhǔn)(一)-前言、課程性質(zhì)與定位、課程基本理念、課程目標(biāo)
- 部編版二年級下冊語文教案全冊
- 解放牌汽車CA10B后鋼板彈簧吊耳加工工藝及夾具設(shè)計哈
- 大學(xué)??啤稒C(jī)電傳動控制》課件
- 高中地理高清區(qū)域地理填圖冊
評論
0/150
提交評論