基于Linux嵌入式操作系統(tǒng)的圖形化界面河南工業(yè)大學(xué)_第1頁(yè)
基于Linux嵌入式操作系統(tǒng)的圖形化界面河南工業(yè)大學(xué)_第2頁(yè)
基于Linux嵌入式操作系統(tǒng)的圖形化界面河南工業(yè)大學(xué)_第3頁(yè)
基于Linux嵌入式操作系統(tǒng)的圖形化界面河南工業(yè)大學(xué)_第4頁(yè)
基于Linux嵌入式操作系統(tǒng)的圖形化界面河南工業(yè)大學(xué)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南工業(yè)大學(xué)論文題目:基于 Linux 嵌入式操作系統(tǒng)的圖形化界面的 研究和實(shí)現(xiàn) 學(xué) 院: 信息科學(xué)與工程學(xué)院班 級(jí): 電科1304姓 名: 學(xué) 號(hào): 2013160304指導(dǎo)老師姓名:王金峰摘要:隨著通訊技術(shù)的發(fā)展和 3G 網(wǎng)絡(luò)的推廣,用戶對(duì)手機(jī)的要求不在只是簡(jiǎn)單的語(yǔ)音、收發(fā)短信等基本功能,手機(jī)辦公、手機(jī)娛樂(lè)等功能受到人們的青睞。PDA (Personal Digital Assistant) 正是在這種背景下產(chǎn)生,并且發(fā)展壯大,它不僅集成了傳統(tǒng)手機(jī)的基本功能,同時(shí)兼容了筆記本電腦的諸多功能,真正滿足了用戶需求。PDA市場(chǎng)潛力巨大,是個(gè)人終端技術(shù)的發(fā)展趨勢(shì)。 本文以嵌入式的PDA為研究對(duì)象,

2、論述了基于嵌入式Linux和Qt/Embedded的圖形界面終端的設(shè)計(jì)與實(shí)現(xiàn),最終搭建了適用于 PDA 的個(gè)性化人機(jī)交互系統(tǒng)。論文的主要內(nèi)容包括:(1)通過(guò)對(duì)當(dāng)前流行的幾種嵌入式處理器、嵌入式操作系統(tǒng)、GUI 圖形支持系統(tǒng)優(yōu)缺點(diǎn)的討論,結(jié)合設(shè)備特點(diǎn)選擇了以ARM9核心的S3C2410為本系統(tǒng)的硬件平臺(tái),2.4.18 內(nèi)核 Linux 和 Qt 為本系統(tǒng)的軟件平臺(tái)。(2)建立硬件開(kāi)發(fā)平臺(tái),對(duì)s3C2410處理器、以及外圍接口部件進(jìn)行了分析介紹,講述了它們的結(jié)構(gòu)及功能;(3)對(duì)Linux 系統(tǒng)的內(nèi)核和文件系統(tǒng)作了深入研究。詳細(xì)分析了 Linux 系統(tǒng) bootloader 的功能以及它的編譯與移植

3、;Linux 內(nèi)核的剪切、編譯和移植;Linux文件系統(tǒng)的制作、編譯與移植, 為系統(tǒng)開(kāi)發(fā)搭建了軟件平臺(tái)。 (4)在對(duì) Qt/Embedded 系統(tǒng)分析的基礎(chǔ)上,分別建立了Qt 在 PC 機(jī)上的開(kāi)發(fā)調(diào)試環(huán)境和 Qt 在 cygwin 上的編譯移植環(huán)境。(5)在PC 機(jī) Qt開(kāi)發(fā)環(huán)境下,開(kāi)發(fā)了幾個(gè)基于 Qt/E 的具有友好界面的應(yīng)用軟件。利用這幾個(gè)程序構(gòu)建了自己的圖形化界面系統(tǒng),在 cygwin 上經(jīng)過(guò)編譯移植進(jìn)目標(biāo)板,運(yùn)行穩(wěn)定。驗(yàn)證了 Linux+Qt/Embedded+ C+開(kāi)發(fā)環(huán)境的有效性。 最后,開(kāi)發(fā)的成果為一套精美高效,可觸摸式的人機(jī)交互系統(tǒng),它具有可移植性好、操作簡(jiǎn)單和易于二次開(kāi)發(fā)等特

4、性。 關(guān)鍵字:PDA 嵌入式處理器 嵌入式 Linux Qt/Embedded 人機(jī)交互系統(tǒng)S3C2410一、引言1.1嵌入式系統(tǒng)概述國(guó)際電氣和電子工程師協(xié)會(huì)(IEEE)定義嵌入式系統(tǒng)為:“用于控制、監(jiān)視或者輔助設(shè)備、機(jī)器或者車間運(yùn)行的裝置(An Embedded system is the devices used to control,monitor,or assist the operation of equipment,machinery or plants)”。通常來(lái)說(shuō),嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等有

5、嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶應(yīng)用程序四部分組成,用于實(shí)現(xiàn)對(duì)其它設(shè)備的控制、監(jiān)視或管理等功能。 嵌入式系統(tǒng)有如下特點(diǎn): (1)專用性強(qiáng)為特定應(yīng)用設(shè)計(jì),專用于特定的任務(wù),軟硬件可裁剪,滿足對(duì)象系統(tǒng)要求的最基本軟硬件配置。(2)可靠性高代碼固化、存放在存儲(chǔ)器芯片或處理器的內(nèi)部存儲(chǔ)器件中。(3)功耗低、體積小、集成度高、成本低系統(tǒng)的硬件和軟件都進(jìn)行高效設(shè)計(jì),在保證穩(wěn)定、安全、可靠基礎(chǔ)上量體裁衣,去除冗余,用較少的軟硬件資源實(shí)現(xiàn)較高的性能。1.2嵌入式人機(jī)交互系統(tǒng)的研究現(xiàn)狀人機(jī)交互是研究人、計(jì)算機(jī)之間相互作用的技術(shù)。界面是人與計(jì)算機(jī)之間交換信息的

6、媒介和對(duì)話接口,是計(jì)算機(jī)系統(tǒng)的重要組成部分。人機(jī)交互的發(fā)展從人去適應(yīng)計(jì)算機(jī)逐步過(guò)渡到計(jì)算機(jī)不斷地適應(yīng)人,演變過(guò)程共經(jīng)歷了以下幾個(gè)階段:(1)早期的手工作業(yè)階段,用戶(程序設(shè)計(jì)員)采用手工操作和依賴機(jī)器(二進(jìn)制代碼)的方法在計(jì)算機(jī)上執(zhí)行操作。(2)作業(yè)控制語(yǔ)言及交互命令語(yǔ)言階段,采用批處理作業(yè)語(yǔ)言及交互命令語(yǔ)言與計(jì)算機(jī)交流,需要記憶大量命令,熟悉鍵盤(pán)輸入方式。(3)多通道的智能人機(jī)交互階段,涵蓋了用戶表達(dá)意圖、執(zhí)行動(dòng)作或感知反饋的各種信息交互,如言語(yǔ)、手勢(shì)、觸覺(jué)等方面。多通道人機(jī)界面是基于視線跟蹤、語(yǔ)音識(shí)別、手勢(shì)輸入、感覺(jué)反饋等的新交互技術(shù),實(shí)現(xiàn)科學(xué)計(jì)算可視化、虛擬現(xiàn)實(shí)等,這些技術(shù)對(duì)計(jì)算機(jī)系統(tǒng)性

7、能提出了更高的要求。它允許用戶利用多個(gè)交互通道以并行、非精確方式與計(jì)算機(jī)系統(tǒng)進(jìn)行交互,旨在提高人機(jī)交互的自然性和高效性。1.3嵌入式人機(jī)交互系統(tǒng)的發(fā)展趨勢(shì)當(dāng)今信息時(shí)代,使得嵌入式產(chǎn)品獲得了巨大的發(fā)展契機(jī),為嵌入式市場(chǎng)展現(xiàn)了美好的前景,同時(shí)也對(duì)嵌入式研發(fā)提出了新的挑戰(zhàn)。(1) 網(wǎng)絡(luò)化要求隨著因特網(wǎng)技術(shù)的成熟,未來(lái)嵌入式設(shè)備為了適應(yīng)網(wǎng)絡(luò)發(fā)展,必然要求硬件上提供各種網(wǎng)絡(luò)通信接口,軟件方面系統(tǒng)內(nèi)核要支持網(wǎng)絡(luò)模塊,實(shí)現(xiàn)隨時(shí)隨地上網(wǎng)。(2) 精簡(jiǎn)系統(tǒng)內(nèi)核設(shè)計(jì)者應(yīng)盡量精簡(jiǎn)系統(tǒng)內(nèi)核,只保留和系統(tǒng)功能緊密相關(guān)的軟硬件,利用最低的資源實(shí)現(xiàn)最適當(dāng)?shù)墓δ堋#?) 提供友好的多媒體人機(jī)界面嵌入式設(shè)備能與用戶親密接觸,最

8、重要的因素就是它能提供非常友好的用戶界面。1.4本課題研究意義嵌入式系統(tǒng)因其體積小、可靠性高、功能強(qiáng)等優(yōu)勢(shì),已滲透到工業(yè)、農(nóng)業(yè)、教育、國(guó)防、科研以及日常生活等各個(gè)領(lǐng)域,對(duì)各行各業(yè)的技術(shù)改造、產(chǎn)品更新?lián)Q代、提高生產(chǎn)率等方面起到了極其重要的作用。同時(shí),嵌入式 Linux 操作系統(tǒng)以其開(kāi)放源代碼、易于開(kāi)發(fā)、功能強(qiáng)大、穩(wěn)定、成本低等優(yōu)勢(shì)迅速躋身于主流嵌入式操作系統(tǒng)?;谇度胧?Linux 操作系統(tǒng)的研究和應(yīng)用具有巨大的學(xué)術(shù)和商業(yè)價(jià)值。相對(duì)于桌面系統(tǒng),人機(jī)交互技術(shù)在嵌入式系統(tǒng)中的研究還處于初級(jí)階段。嵌入式系統(tǒng)的終端產(chǎn)品在系統(tǒng)簡(jiǎn)潔、美觀、方便好用,人性化設(shè)計(jì)等方面較桌面系統(tǒng)還有巨大差距,因此越來(lái)越多的人投

9、入到嵌入式 GUI 的的開(kāi)發(fā)當(dāng)中。本課題正是探索如何在S3C2410處理器(ARM9)上搭建和移植嵌入式 Linux操作系統(tǒng)并在移植好的操作系統(tǒng)上實(shí)現(xiàn) GUI,同時(shí)實(shí)現(xiàn)基于 Qt/Embedded 的應(yīng)用軟件的開(kāi)發(fā),最后構(gòu)造一個(gè)完整的 PDA 圖形化系統(tǒng)。二、嵌入式系統(tǒng)開(kāi)發(fā)硬件平臺(tái)構(gòu)建2.1硬件系統(tǒng)設(shè)計(jì)方案一個(gè)應(yīng)用系統(tǒng)的設(shè)計(jì)都是面向產(chǎn)品的,以產(chǎn)品需求來(lái)定制系統(tǒng)??偟膩?lái)說(shuō),在系統(tǒng)硬件體系結(jié)構(gòu)設(shè)計(jì)時(shí),應(yīng)當(dāng)遵守一定的標(biāo)準(zhǔn),具體標(biāo)準(zhǔn)包括:(1)先要綜合了解系統(tǒng)各方面需求,在分析之后確定合適的解決方案,提出硬件的體系結(jié)構(gòu)及系統(tǒng)外圍各功能模塊的實(shí)現(xiàn)。(2)充分利用當(dāng)前比較成熟的技術(shù)方案,這樣可以保證電路設(shè)

10、計(jì)的正確性和可靠性,并且可以大大縮短系統(tǒng)的設(shè)計(jì)時(shí)間。硬件系統(tǒng)采用模塊化、標(biāo)準(zhǔn)化設(shè)計(jì),還應(yīng)盡量選擇典型的電路功能模塊。(3) 因?yàn)橛布?jí)比軟件升級(jí)相對(duì)復(fù)雜,所以硬件系統(tǒng)體系架構(gòu)應(yīng)該盡量使用開(kāi)放模式,采用通用平臺(tái)設(shè)計(jì),以降低成本和減小開(kāi)發(fā)周期,也便于將來(lái)對(duì)系統(tǒng)的改進(jìn)與升級(jí)。 (4) 嵌入式系統(tǒng)一般采用軟硬件一體化的解決方案,在硬件設(shè)計(jì)同時(shí)進(jìn)行軟件開(kāi)發(fā),硬件的方案要根據(jù)軟件的可行性進(jìn)行考慮,而軟件的設(shè)計(jì)也要根據(jù)硬件的性能進(jìn)行考慮,這樣在具體實(shí)現(xiàn)時(shí),整個(gè)系統(tǒng)就可以不斷的進(jìn)行分析與改進(jìn),能夠使系統(tǒng)達(dá)到最優(yōu)化。2.2系統(tǒng)需求分析本系統(tǒng)提供了一種嵌入式 PDA 多種應(yīng)用軟件的功能。友好的人機(jī)交互接口組成系

11、統(tǒng)的控制面板,方便用戶的操作。網(wǎng)絡(luò)通信和 mp3 解碼播放等應(yīng)用的實(shí)現(xiàn)使系統(tǒng)除了必需具有人機(jī)交互的控制功能外,還應(yīng)該具有豐富的通訊、網(wǎng)絡(luò)接口和強(qiáng)大的 mp3 解碼功能。具體需求如下:(1)宿主機(jī)與目標(biāo)板的交互接口,包括 UART 通用串口、JTAG 燒寫(xiě)接口等;(2)LCD 模塊及觸摸屏;(3)必須實(shí)現(xiàn)通用的以太網(wǎng) Ethernet接口,用來(lái)實(shí)現(xiàn)目標(biāo)機(jī)的遠(yuǎn)程登錄和訪問(wèn);(4)強(qiáng)大的處理器解碼性能和可靠的音頻控制器,實(shí)現(xiàn) mp3 歌曲文件實(shí)時(shí)播放;(5) 必須具有足夠的存儲(chǔ)器空間,用來(lái)存儲(chǔ)系統(tǒng)鏡像和音視頻文件。2.3硬件平臺(tái)本設(shè)計(jì)使用Samsung公司 S3C2410處理器的S3EB2410開(kāi)發(fā)

12、板作為硬件開(kāi)發(fā)平臺(tái),用它進(jìn)行 ARM 技術(shù)評(píng)估以及嵌入式Linux 系統(tǒng)設(shè)計(jì)。平臺(tái)采用開(kāi)放式架構(gòu)設(shè)計(jì),便于根據(jù)應(yīng)用需要,進(jìn)行各種功能擴(kuò)展。其硬件框圖如下圖所示:(1)內(nèi)核工作電壓為 1.8V、存儲(chǔ)器供電電壓 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 串口接口;(6)雙 USB2.0 接口,實(shí)現(xiàn)與 U 盤(pán)、硬盤(pán)、鍵盤(pán)等從設(shè)備的通訊,一通道USB DEVICE;(7)TSP觸摸屏控制器;(8)8 通道 10

13、 位 ADC 模數(shù)轉(zhuǎn)換接口;(9)10M 以太網(wǎng)卡;(10)IIC 總線 EEPROM;(11)IIS 數(shù)字音頻輸入/輸出接口。(12)兩片 32MB SDRAM,作為程序運(yùn)行空間。64MB Nand Flash 存儲(chǔ)器,用于存放 Linux 系統(tǒng)。2.3電路模塊設(shè)計(jì)分析2.3.1網(wǎng)絡(luò)模塊S3C2410沒(méi)有集成網(wǎng)絡(luò)控制器,在嵌入式平臺(tái)中需增加獨(dú)立的以太網(wǎng)控制芯片來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)接口,本系統(tǒng)通過(guò)外接一片 CS8900A芯片擴(kuò)展了一個(gè) 10M 的以太網(wǎng)接口。CS8900A 是美國(guó) CIRRUS LOGIC 公司生產(chǎn)的以太網(wǎng)控制器,由于其優(yōu)良的性能、低功耗及低廉的價(jià)格,使其在 10Mbps 嵌入式網(wǎng)絡(luò)應(yīng)用

14、中占有相當(dāng)?shù)谋壤?。上圖為 CS8900A 的硬件連接示意圖。S3C2410 通過(guò)數(shù)據(jù)總線與若干控制信號(hào)和 CS8900A 相連接,系統(tǒng)與外部網(wǎng)絡(luò)通信通過(guò)以太網(wǎng)接口進(jìn)行擴(kuò)展。以太網(wǎng)接口使用的是集成了網(wǎng)絡(luò)變壓器(Transformer)的 RJ45 網(wǎng)絡(luò)接口,網(wǎng)絡(luò)變壓器的功能就是把 PHY 輸出的差分信號(hào)用差模耦合的方式進(jìn)行耦合濾波以增強(qiáng)信號(hào),并且通過(guò)電磁場(chǎng)的轉(zhuǎn)換,耦合到連接網(wǎng)線的另一端,這樣使網(wǎng)絡(luò)傳輸媒介和PHY 之間沒(méi)有物理上直接連接,隔斷了信號(hào)中可能存在的直流分量,實(shí)現(xiàn)了在不同電平下工作的設(shè)備可以傳送數(shù)據(jù)。2.3.2 LCD模塊S3C2410內(nèi)部集成了 LCD 控制器邏輯單元,支持黑白屏 L

15、CD、STN-LCD、TFT-LCD 等多種顯示屏,用來(lái)將 LCD 圖像數(shù)據(jù)從系統(tǒng)內(nèi)存的視頻緩沖區(qū)傳輸?shù)酵獠?LCD 驅(qū)動(dòng)器,同時(shí)產(chǎn)生數(shù)據(jù)傳輸與顯示時(shí)使用的各種時(shí)鐘與控制信號(hào)。 如下圖 所示的 S3C2410 的 LCD 控制器內(nèi)部組成框圖,LCD 數(shù)據(jù)總線VD0VD23 用來(lái)傳輸 16 位 RGB565 格式數(shù)據(jù)到液晶模塊顯示,LCD 控制線有 5條:VFRAME 幀同步信號(hào)、VLINE 行同步信號(hào)、VCLK 位時(shí)鐘信號(hào)、LEND 行結(jié)束信號(hào)、VM 輸出數(shù)據(jù)使能信號(hào)。LCD 運(yùn)行原理:為了顯示一幀圖像,首先在系統(tǒng)的幀緩沖區(qū)中存入要顯示的圖像數(shù)據(jù),然后讓LCD 控制器的 DMA 地址寄存器指向

16、幀緩沖器的起始地址,讀出幀緩沖區(qū)的數(shù)據(jù)到 LCD 控制器的輸入 FIFO 隊(duì)列,由于設(shè)計(jì)中采用 16 位方式,不需要對(duì) framebuffer 幀緩沖區(qū)中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,直接把數(shù)據(jù)送到輸出 FIFO 隊(duì)列,最后將數(shù)據(jù)送到液晶模塊處理,就可以驅(qū)動(dòng) LCD 顯示圖像。2.3.3 電源系統(tǒng)S3C2410 使用兩種電壓供電:內(nèi)核電壓 1.8V、外圍電壓 3.3V。存儲(chǔ)系統(tǒng)的Flash 和 SDRAM、網(wǎng)絡(luò)控制器 CS8900A、音頻控制器 UDA1341TS 都采用典型的 3.3V 的 TTL 電壓供電,而 LCD 需要 5V 電壓供電,從而系統(tǒng)中共需要 1.8V、3.3V 和 5V 三種不同電平

17、的電壓。被系統(tǒng)的電源電路如下所示:系統(tǒng)選用線性穩(wěn)壓源方案,輸入電源使用 5V/800m A的電源適配器,經(jīng)過(guò)鉭電容濾波后送給外圍的 LCD 接口電路提供 5V 電壓,同時(shí)送到 LDO 芯片,將5V 直流變?yōu)?3.3V,并經(jīng)過(guò)濾波在經(jīng)過(guò)一個(gè) LDO 芯片,變?yōu)?l.8V 供處理器內(nèi)核。2.3.4宿主機(jī)接口本系統(tǒng)用到的宿主機(jī)接口主要包括:并口、UART串口。其中,開(kāi)發(fā)板的J-TAG接口通過(guò) 20PIN 排線與仿真器相連,仿真器再通過(guò)并口線與宿主機(jī)并口相連,J-TAG 接口在本系統(tǒng)中用來(lái)配合 Embest IDE 軟件將系統(tǒng)的內(nèi)核及文件系統(tǒng)燒寫(xiě)到 Nand Flash 存儲(chǔ)器,而 UART 串口則是

18、系統(tǒng)開(kāi)發(fā)時(shí),宿主機(jī)用來(lái)操作目標(biāo)板的控制臺(tái)接口。本系統(tǒng)目標(biāo)板設(shè)計(jì)采用標(biāo)準(zhǔn)的20 針接口,以方便連接各種標(biāo)準(zhǔn)的仿真器。其JTAG接口原理圖如下:三、嵌入式系統(tǒng)開(kāi)發(fā)軟件環(huán)境構(gòu)建3.1交叉編譯環(huán)境搭建交叉編譯環(huán)境的硬件支持為: 宿主機(jī):PC 一臺(tái),安裝 Windows 7操作系統(tǒng),安裝 cygwin 軟件。PC 機(jī)有串口(或是 USB 轉(zhuǎn)串口)和并口同目標(biāo)板通信。 交叉編譯軟件:從 上下載 cygwin,這里用 1.5.1 版本,在 Windows 7上安裝。從 下載交叉編譯工具 cross-armtools-linux.tar.bz2,將其拷貝到 cygw

19、in/tmp 目錄下。運(yùn)行 cygwin,執(zhí)行以下命令完成 cygwin 環(huán)境下 Linux 交叉編譯工具安裝:cd/usrar -xvjf /tmp/ cross-armtools-linux.tar.bz2ls arm-linux正確解壓后,可以看到多了一個(gè) arm-linux 目錄,即交叉編譯工具安裝目錄。寫(xiě)一個(gè)shell 文本 set_linux.sh,來(lái)設(shè)置 cygwin 下程序開(kāi)發(fā)的環(huán)境變量,以便搭建一個(gè) Linux 開(kāi)發(fā)、編譯和應(yīng)用程序測(cè)試的環(huán)境。shell 文本代碼如下:#!/bin/sh # set_linux.sh /* 交叉編譯工具安裝目錄 */ export CROSS

20、DIR=/usr /* 存放源代碼和測(cè)試程序 */ export SOURCEDIR=/tmp/edukit-2410 /* 存放 vivi,linux,fs,gui and examples(debug) */ export WORKDIR=/usr/local/src/edukit-2410 /* 存放可執(zhí)行文件 */ export INSTALLDIR=/home/app if -d $SOURCEDIR ; then echo $SOURCEDIR else echo Creating directory: $SOURCEDIR mkdir -p $SOURCEDIR fi if -d

21、 $WORKDIR ; then echo $WORKDIR else echo Creating directory: $WORKDIR mkdir -p $WORKDIR fi if -d $INSTALLDIR ; then echo $INSTALLDIR else echo Creating directory: $INSTALLDIR mkdir -p $INSTALLDIR fi export LIBDIR=-L$CROSSDIR/arm-linux/lib/ -L$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3 CROSS=arm-linux- ex

22、port CC=$CROSSgcc export AS=$CROSSasexport LD=$CROSSld export CFLAGS=-O2 -fomit-frame-pointer export CPPFLAGS=-I$WORKDIR/kernel/include -I$CROSSDIR/arm-linux/include -I$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/include export LDFLAGS=$LIBDIR export GCCMISC=$CROSSDIR/lib/gcc-lib/arm-linux/2.95.3/ export

23、PATH=$CROSSDIR/bin:$CROSSDIR/arm-linux/bin:$GCCMISC:$PATH echo $PATH 運(yùn)行 cygwin,執(zhí)行以下命令: source /tmp/edukit-2410/set_linux.sh arm-linux-gcc v3.2 Bootloeder的移植Bootloader 是硬件上電后執(zhí)行的第一段程序,負(fù)責(zé)硬件的初始化和操作系統(tǒng)內(nèi)核的引導(dǎo)。通過(guò)這個(gè)引導(dǎo)程序,建立內(nèi)存空間的映射,將系統(tǒng)的軟硬件環(huán)境設(shè)置到合適的狀態(tài),最終完成操作系統(tǒng)引導(dǎo)、裝載和運(yùn)行。本課題 Bootloader 選用 vivi,因?yàn)樗鼘?duì) S3C2410 有很好的支持,其最

24、大的優(yōu)點(diǎn)是直接支持 Nand Flash。Vivi啟動(dòng)詳細(xì)過(guò)程:在對(duì) VIVI 進(jìn)行基本的修改之后,運(yùn)行以下命令進(jìn)行編譯: source /tmp/edukit-2410/set_linux.sh cd /usr/local/src/edukit-2410/vivi make clean make menuconfig makemake menuconfig 命令對(duì) VIVI 進(jìn)行配置(如圖 3-4)。選擇 Load an alternate configuration File,選擇已生成的配置文件 smdk2410,選擇保存退出。然后執(zhí)行make 命令,生成 VIVI 的可執(zhí)行映像文件。本

25、項(xiàng)目中要把 VIVI 燒寫(xiě)進(jìn) Nand Flash,首先運(yùn)行 Flash 燒寫(xiě)軟件 Flash Programmer,選擇要燒寫(xiě)的文件為 Nand Flash 的配置文件,燒寫(xiě)芯片為 Nor Flash,燒寫(xiě)地址為 0X00000000-0X00020000,對(duì)應(yīng)本系統(tǒng)中 AM29LV160DB 芯片的扇區(qū)為:1 至 5。如下Flash Programmer 配置圖。燒寫(xiě)完成后,給目標(biāo)板復(fù)位,如燒寫(xiě)成功,則可通過(guò)超級(jí)終端看到相關(guān)運(yùn)行信息.3.3 Linux內(nèi)核的移植內(nèi)核是 Linux 系統(tǒng)的核心,用來(lái)提供用戶層程序和硬件之間的接口,執(zhí)行發(fā)生在多任務(wù)系統(tǒng)中的實(shí)際任務(wù)轉(zhuǎn)換,處理讀寫(xiě)磁盤(pán)的需求,處理

26、網(wǎng)絡(luò)接口,以及管理內(nèi)存等。首先從 /pub/Linux/kernel/網(wǎng)站上下載內(nèi)核源碼包,Linux-2.4.18.tar.bz2,放進(jìn) cygwin 的/tmp/edukit-2410/目錄下,在 cygwin 中執(zhí)行以下命令完成 Linux 源代碼安裝: source /tmp/edukit-2410/set_env_linux.sh cd usr/local/src/ edukit-2410 tar xvjv /tmp/linux-2.4.18.tar.bz2 ls kernel正確解壓后,可以看到多了一個(gè) kernel 目錄,即 kernel 源代

27、碼安裝目錄。進(jìn)入 kernel 目錄,執(zhí)行以下命令,為內(nèi)核植入支持 S3C2410 的補(bǔ)?。?cd kernel patchp1/tmp/edukit-2410/linux-2.4.18-rmk7- kit2410.patch 編譯步驟: 進(jìn)入內(nèi)核目錄,修改 kernel 目錄下的 Makefile 文件,指定目標(biāo)代碼類型和編譯器:ARCH:=arm CROSS_COMPILE=arm-linux- 其中 ARCH:=arm 說(shuō)明目標(biāo)是 ARM 體系;CROSS_COMPILE=arm-linux-說(shuō)明交叉編譯器的前綴是 arm-linux-。 在 cygwin

28、 中執(zhí)行以下命令,完成 Linux 的編譯過(guò)程: source /tmp/edukit-2410/set_linux.sh cd user/local/src/edukit-2410/kernel make mrproper make xconfig 執(zhí)行完 make xconfig 命令后,本系統(tǒng)中對(duì) Linux 內(nèi)核的關(guān)鍵配置如下,其中*和表示該選項(xiàng)加入內(nèi)核編譯;和表示不選擇該選項(xiàng);表示該選項(xiàng)作為模塊編譯內(nèi)核,即可以動(dòng)態(tài)加載和卸載該模塊。1) 增加對(duì)模塊的支持 Loadable module support- *Enable loadable module support/使內(nèi)核支持加載模

29、塊*Module unloading/使內(nèi)核支持卸載模塊2)配置文件系統(tǒng) File system- Compressed ROM file system support 支持本系統(tǒng)使用的 CRAMFS File System 目標(biāo)板上電,在超級(jí)終端可以看到 vivi 啟動(dòng)信息,輸入空格鍵使 vivi 進(jìn)入命令狀態(tài),然后打開(kāi) Embest IDE 軟件,加載下載配置文件,與目標(biāo)板進(jìn)行連接,連接好后點(diǎn)擊 IDE 的 Stop 按鈕,配置 Debug 的 Download 地址為 0X30000000,下載的文件選擇 z Image,點(diǎn)擊 Download 進(jìn)行下載,下載完成后,點(diǎn)擊 IDE 的St

30、art 按鈕,在超級(jí)終端中輸入: load flash kernel x 如果燒寫(xiě)成功,重啟目標(biāo)板,vivi 就可以引導(dǎo) Linux 內(nèi)核了,可通過(guò)超級(jí)終端看到相關(guān)運(yùn)行信息如圖所示,則說(shuō)明內(nèi)核己經(jīng)移植成功,可以在開(kāi)發(fā)板上運(yùn)行了。四、Qt圖形界面的編程及實(shí)現(xiàn)構(gòu)建一個(gè)帶QTOPIA 圖形界面的文件系統(tǒng),需要拷貝編譯產(chǎn)生的可執(zhí)文件、動(dòng)態(tài)鏈接庫(kù)、字庫(kù)以及相關(guān)配置文件??砂匆韵虏襟E把已編譯的QTOPIA 圖形界面文件加入到Linux 文件系統(tǒng): (1) 建立一個(gè)可用的無(wú)圖形界面的cramfs,在第三章我們已經(jīng)做好;(2)把無(wú)圖形界面cramfs 文件系統(tǒng)存放于$WORKDIR/root-qtopia/目

31、錄下,并在該目錄下建立一個(gè)名為qt 的文件夾用于存放QTOPIA 運(yùn)行文件; (3)從/usr/arm-linux/lib/目錄下拷貝程序運(yùn)行所需函數(shù)庫(kù)到$WORKDIR/root-qtopia/lib,替換無(wú)文件系統(tǒng)的lib 目錄; (4)從已編譯QTOPIA目錄拷貝以下目錄及相關(guān)文件到$WORKDIR/root-qtopia/qt/目錄: apps:QTOPIA 屬性頁(yè)配置文件目錄 bin:執(zhí)行文件目錄 etc:程序配置及雜項(xiàng)文件il8n:語(yǔ)言配置目錄 include:包含文件目錄lib:動(dòng)態(tài)函數(shù)庫(kù)目錄pics:圖片及應(yīng)用程序圖標(biāo)存放目錄plugins:動(dòng)態(tài)函數(shù)庫(kù)存放目錄services:

32、界面服務(wù)程序存放目錄sounds:事件聲音文件存放目錄五、基于Qt/Embedded的應(yīng)用程序設(shè)計(jì)使用 Qt/Embedded 設(shè)計(jì)程序一般需要編寫(xiě)三種類型的文件:頭文件(.h)、實(shí)現(xiàn)文件(.cpp)和主函數(shù)文件(main.cpp)。頭文件用來(lái)定義各種類;實(shí)現(xiàn)文件用于實(shí)現(xiàn)頭文件中定義的構(gòu)造函數(shù)及實(shí)現(xiàn)函數(shù);主函數(shù)文件中包括啟動(dòng)和主窗口設(shè)置等。Qt/Embedded 應(yīng)用程序的開(kāi)發(fā)流程如下圖:Qt 擁有十分強(qiáng)大的類庫(kù),這些類帶有構(gòu)建跨平臺(tái)服務(wù)器與客戶端程序的底層構(gòu)造函數(shù)。Qt 的類庫(kù)可以分成三部分:組件、框架、效用工具。其中,組件包括環(huán)境、主窗口、標(biāo)準(zhǔn)對(duì)話框、高級(jí)窗口部件等;框架包括對(duì)象、模型、窗

33、口部件外觀等;效用工具包括圖像處理、I/O 處理和雜項(xiàng)等。在程序設(shè)計(jì)中最常用的類包括 QObject、Qapplication、QWidget、QMainwindow、QLayout、QEvent。主要類的繼承樹(shù):5.1動(dòng)感界面的歡迎程序設(shè)計(jì)在 PC 機(jī)上用 shell 編程完成以下文件: (1)編寫(xiě)頭文件(.h) #include /*Hello 類說(shuō)明*/ class Hello : public QWidget Q_OBJECT public: Hello( const char *text, QWidget *parent=0, const char *name=0 ); signal

34、s: void clicked(); protected: void mouse Release Event( QMouse Event * ); void paint Event( QPaint Event * ); private slots: void animate(); private: QString t; int b; ; qwidget.h 是 Qt 的組件類,當(dāng) Timer 溢出時(shí),在該 hello 類中調(diào)用成員函數(shù)animator(),使文字帶有動(dòng)感。(2)編寫(xiě)實(shí)現(xiàn)文件(.cpp) /*包含 hello.h 頭文件*/ #include hello.h #include #

35、include #include #include /*創(chuàng)建一個(gè) Hello 組件,設(shè)置一個(gè) 40ms 的動(dòng)感時(shí)鐘*/ Hello:Hello( const char *text, QWidget *parent, const char *name ) : QWidget(parent,name), t(text), b(0) QTimer *timer = new QTimer(this); connect( timer, SIGNAL(timeout(), SLOT(animate() ); timer-start( 40 ); resize( 260, 130 ); /*每次定時(shí)時(shí)間一到

36、,private slot 即被調(diào)用*/ void Hello:animate() b = (b + 1) & 15; repaint( FALSE ); /*處理 Hello 組件的鼠標(biāo)按鈕釋放事件,在組件內(nèi)當(dāng)鼠標(biāo)被釋放時(shí)發(fā)出clicked()信號(hào)*/ void Hello:mouse Release Event( QMouse Event *e ) if ( rect().contains( e-pos() ) ) emit clicked(); /*處理 Hello 組件的 paint 事件,文字首先畫(huà)在像素圖上,然后像素圖被拷貝到屏幕上*/ void Hello:paint Event

37、( QPaint Event * ) static int sin_tbl16 = 0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38; if ( t.is Empty() ) return; /*計(jì)算一些尺寸,位置等*/ QFont Metrics fm = font Metrics();int w = fm.width(t) + 20; int h = fm.height() * 2; int pmx = width()/2 - w/2; int pmy = height()/2 - h/2; /*創(chuàng)建

38、像素圖并用組件的背景圖填充它*/ QPixmap pm( w, h ); pm.fill( this, pmx, pmy ); /*畫(huà)像素圖波浪效果*/ QPainter p; int x = 10; int y = h/2 + fm.descent(); int i = 0; p.begin( &pm ); p.set Font( font() ); while ( !ti.is Null() ) int i16 = (b+i) & 15; p.set Pen( QColor(15-i16)*16,255,255,QColor:Hsv) ); p.draw Text( x, y-sin_tb

39、li16*h/800, t.mid(i,1), 1 ); x += fm.width( ti ); i+; p.end(); /*拷貝像素圖到 Hello 組件*/ bit Blt( this, pmx, pmy, &pm ); qpushbutton.h,下壓按鈕組件,用戶可以按下或釋放該按鈕,它可以管理自己的外觀,具體定義在 qpushbutton.h 中;qpainter.h,qpixmap.h 分別是畫(huà)圖、像素圖組件。 (3)編寫(xiě)主函數(shù)文件(main.cpp) #include hello.h/嵌入自己生成的頭文件 #include /*解析命令行,創(chuàng)建一個(gè)顯示在 Hello 組件上的

40、消息字符串*/ int main( int argc, char *argv ) QApplication a(argc,argv); QString s; for ( int i=1; iargc; i+ ) s += argvi; if ( iargc-1 ) s += ; if ( s.is Empty() ) s = Hello,My Dear Teachers!; Hello h( s ); h.set Caption( Chengdu University of Technology! ); QObject:connect( &h, SIGNAL(clicked(), &a, SL

41、OT(quit() ); h.set Font( QFont(times,32,QFont:Bold) ); / 設(shè)置默認(rèn)字體 h.set Background Color( Qt:white ); / 設(shè)置默認(rèn)背景色 a.set Main Widget( &h ); h.show(); return a.exec(); qapplication.h 是所有 Qt 應(yīng)用程序必須包含的類,它創(chuàng)立了應(yīng)用程序的對(duì)象,來(lái)管理整個(gè)應(yīng)用程序,包括整個(gè)應(yīng)用程序范圍內(nèi)的各種資源。main()函數(shù)是程序的入口,Qt 在將控制權(quán)交給 Qt 庫(kù)之前,main()函數(shù)只需要進(jìn)行一些初始化工作,然后 Qt 庫(kù)會(huì)通過(guò)事件

42、來(lái)解釋程序用戶的操作,在這里 main()函數(shù)來(lái)實(shí)現(xiàn)初始化窗口系統(tǒng)及創(chuàng)建 application 對(duì)象。執(zhí)行完以上命令后會(huì)在虛擬緩存中看到如圖 所示 hello 效果圖。5.2 構(gòu)造自己的圖形化系統(tǒng)在PC 機(jī)上打造自己的圖形化系統(tǒng),在 Qtopia 平臺(tái)上發(fā)布需要三個(gè)文件:執(zhí)行文件(.o)、啟動(dòng)器文件(.desktop)和圖標(biāo)文件(.png)。 (1)把生成的歡迎程序、時(shí)鐘、Media Player 播放器、文件查看器、錄音機(jī)的可執(zhí)行程序拷貝到/home/host/qtopia/bin 目錄下。 (2)為歡迎程序、時(shí)鐘、Media Player 播放器、文件查看器、錄音機(jī)分別選好圖標(biāo)放在/ho

43、me/host/qtopia/pics 目錄下,注意這些圖標(biāo)的格式為.png 格式。(3)在/home/host/qtopia/apps/Applications 下編寫(xiě)自己的啟動(dòng)器文件:歡迎程序啟動(dòng)器文件代碼: Desktop Entry Comment=A Hello Program Exec=hello Icon=Amn Type=Application Name=Hello 時(shí)鐘啟動(dòng)器文件代碼: Desktop Entry Comment=A Clock Program Exec=clock Icon=Time Type=Application Name=Clock Nameno=Kl

44、okke Namede=Uhr Mediaplay 啟動(dòng)器文件代碼: Desktop Entry Comment=A Media Playback Program Exec=mpegplayer Icon=medeplay Type=Application Mime Type=audio/mpeg;video/mpeg;video/x-msvideo;audio/x-wav Mime Type Icons=Sound Player;MPEGPlayer;MPEGPlayer;Sound Name=Media Player Nameno=MPEGspiller Namede=Medienwied

45、ergabe 文件查看器啟動(dòng)器文件代碼: Desktop Entry Comment = A File Manager Program Exec = filebrowser File = ./apps/Applications/filebrowser Icon = filefind Name = File Manager Namede = Datei Manager Nameno = Filviser Type = Application 錄音機(jī)啟動(dòng)器文件代碼: Desktop Entry Comment=A Voice Recording Program Exec=mediarecorder Icon=Sound1 Type=Application Name=Voice Recorder Comment 后面關(guān)聯(lián)的是對(duì)程序的描述,在 qtopia 中點(diǎn)擊右鍵可以看到;Exec關(guān)聯(lián)的是可執(zhí)行文件的文件名;Icon 關(guān)聯(lián)的是自己選的圖標(biāo)名;N

溫馨提示

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

評(píng)論

0/150

提交評(píng)論