www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]一種嵌入式GUI的研究與應(yīng)用

引 言

隨著半導(dǎo)體技術(shù)和信息技術(shù)的飛速發(fā)展,各式各樣的嵌入式系統(tǒng)產(chǎn)品已經(jīng)滲入到人們生活的每一個(gè)角落。小到手機(jī)、MP3、MP4、數(shù)碼相機(jī)、機(jī)頂盒等產(chǎn)品,大到汽車(chē)、數(shù)控機(jī)床、火箭等產(chǎn)品。嵌入式GUI(Graphical User  Interface)作為嵌入式系統(tǒng)的應(yīng)用軟件,已經(jīng)成為當(dāng)今圖形用戶(hù)界面領(lǐng)域的發(fā)展焦點(diǎn)。[2]

1  GUI 的概述

GUI以一種以圖形化為基礎(chǔ)的用戶(hù)界面,使用統(tǒng)一的圖形操作系統(tǒng),如可移動(dòng)的視窗、選項(xiàng)與鼠標(biāo),作為用戶(hù)與操作系統(tǒng)之間的中介。GUI最重要的優(yōu)勢(shì)在于使用戶(hù)擺脫了在命令行提示符下與操作系統(tǒng)進(jìn)行交互的方式,用戶(hù)可以?xún)H僅通過(guò)鼠標(biāo)點(diǎn)擊來(lái)實(shí)現(xiàn)熟悉程序的操作,而且由于圖表、對(duì)話(huà)框等的引入,使得操作直觀(guān)形象。GUI已成為一種用戶(hù)與計(jì)算機(jī)交互的標(biāo)準(zhǔn)。包括Microsoft的視窗系統(tǒng)、Unix的Motif、Linux的桌面系統(tǒng)GNOME。

在計(jì)算機(jī)硬件平臺(tái)下的GUI模型一般如圖1所示:

uC/GUI是由Micrium公司專(zhuān)門(mén)針對(duì)嵌入式系統(tǒng)開(kāi)發(fā)的一款圖形開(kāi)發(fā)系統(tǒng)。它設(shè)計(jì)用于為任何使用LCD圖形顯示的應(yīng)用提供高效的獨(dú)立于處理器及 LCD 控制器的圖形用戶(hù)接口,它適用單任務(wù)或是多任務(wù)系統(tǒng)環(huán)境, 并適用于任意 LCD 控制器和 CPU 下任何尺寸的真實(shí)顯示或虛擬顯示。

對(duì)于開(kāi)發(fā)uC/GUI圖形應(yīng)用不需要什么目標(biāo)系統(tǒng), 大部分的圖形應(yīng)用開(kāi)發(fā)都可以在模擬器下進(jìn)行; 但是最終的目的是通常還是在目標(biāo)系統(tǒng)上運(yùn)行程序。

目標(biāo)系統(tǒng)(硬件):

[1].CPU(8/16/32/64位)。

[2].必要的RAM和ROM 存儲(chǔ)。

[3].LCD 顯示器(任何類(lèi)型及分辨率的)。

對(duì)于內(nèi)存的需求取決于你選用的 UCGUI 的功能模塊以及你所使用的目標(biāo)系統(tǒng)上的編譯器的效率。 內(nèi)存的占用量無(wú)法估計(jì)準(zhǔn)確的值, 下面就一些的數(shù)值適用于多數(shù)的目標(biāo)系統(tǒng)。
 

注:①小型系統(tǒng)指不包含窗口管理功能,大型系統(tǒng)指包含窗口管理及各種窗體控件功能。

②ROM的需求量隨著應(yīng)用程序中使用的字體數(shù)目而增長(zhǎng)。

2  基于S3C44B0X處理器的嵌入式系統(tǒng)的基本組成

三星公司推出的16/32位RISC處理器S3C44B0X為手持設(shè)備和一般應(yīng)用提供了高性?xún)r(jià)比和高性能的微控制器解決方案。為了降低成本,同時(shí)增強(qiáng)穩(wěn)定性,S3C44B0X提供了豐富的內(nèi)置部件,包括:8KB Cache和 內(nèi)部SRAM,LCD控制器等,其主頻可以達(dá)到66MHz,速度幾乎相當(dāng)于486CPU,而且擴(kuò)展了完整豐富的外圍設(shè)備的接口,圖2是典型的系統(tǒng)的框圖。
 

 圖2   系統(tǒng)框圖

采用三星的S3C44B0X開(kāi)發(fā)通用的嵌入式系統(tǒng),S3C44B0X的運(yùn)行方式通常有兩種:一種是有操作系統(tǒng)的,由于操作系統(tǒng)所占用的空間比較大,所以Flash里面裝的是系統(tǒng)引導(dǎo)程序,通常稱(chēng)為Boot Loader,是在系統(tǒng)復(fù)位后執(zhí)行的第一段代碼,相當(dāng)于PC上的BIOS,完成系統(tǒng)硬件的初始化,包括時(shí)鐘的設(shè)置、存儲(chǔ)區(qū)的映射等,設(shè)置堆棧指針,然后跳轉(zhuǎn)到操作系統(tǒng)內(nèi)核的入口,將系統(tǒng)控制權(quán)交給操作系統(tǒng),在此之后系統(tǒng)的運(yùn)行和Boot Loader 再無(wú)任何關(guān)系。Boot Loader獨(dú)立于操作系統(tǒng),必須由用戶(hù)自己設(shè)計(jì),它的實(shí)現(xiàn)高度依賴(lài)于硬件,包括處理器的體系結(jié)構(gòu)、具體型號(hào)、硬件電路板的設(shè)計(jì)。

另一種是無(wú)操作系統(tǒng)的,系統(tǒng)的初始化以及主程序都是在Flash內(nèi),它與S3C44B0X的Bank0相連,上電復(fù)位后系統(tǒng)使程序從0x00000000開(kāi)始運(yùn)行。

3  利用uC/GUI開(kāi)發(fā)GUI應(yīng)用程序的基本方法

由于uC/GUI提供了源代碼,因此可以很容易地將它移植到各個(gè)平臺(tái)下,使用時(shí),只要將uC/GUI的軟件壓縮包解壓縮到一個(gè)目錄下就可以了。

3.1 uC/GUI的結(jié)構(gòu)

uC/GUI的軟件體系結(jié)構(gòu)如圖3所示。uC/GUI函數(shù)庫(kù)為用戶(hù)的應(yīng)用程序提供GUI接口,包含的函數(shù)有文本、數(shù)值、二維圖形、輸入設(shè)備以及各種窗口對(duì)象。其中,輸入設(shè)備可以是鍵盤(pán)、鼠標(biāo)或觸摸屏;二維圖形包括圖片、直線(xiàn)、多邊形、圓、橢圓、圓弧等;窗口對(duì)象包括按鈕、編輯框、進(jìn)度條、復(fù)選框等。μC/GUI函數(shù)庫(kù)可以通過(guò)GUI_CONf.h文件進(jìn)行配置,配置的內(nèi)容包括是否采用內(nèi)存設(shè)備,是否采用窗口管理器,是否支持操作系統(tǒng)、觸摸屏、以及配置動(dòng)態(tài)內(nèi)存的大小等。
 

圖3  uC/GUI的軟件體系結(jié)構(gòu)

3.2   利用uC/GUI開(kāi)發(fā)應(yīng)用程序的步驟

由于uC/GUI提供了源代碼,在開(kāi)發(fā)應(yīng)用程序時(shí),用戶(hù)可以首先將核心文件、LCD驅(qū)動(dòng)文件和需要的字體文件包含在自己的工程里,然后再根據(jù)實(shí)際的硬件需要,包含內(nèi)存設(shè)備輸入設(shè)備控件和窗口管理部分。

具體可以分為以下幾步:

⑴按照實(shí)際需要,定制自己的uC/GUI開(kāi)發(fā)環(huán)境。其中包括對(duì)上述目錄的篩選,或?qū)δ夸浿形募暮Y選。

⑵指定硬件設(shè)備的地址,編寫(xiě)接口驅(qū)動(dòng)代碼。這里需要修改LCD_Conf.h文件。

⑶編譯、鏈接、調(diào)試示例程序。

⑷修改示例程序并測(cè)試,增加需要的功能。

⑸如果準(zhǔn)備開(kāi)發(fā)多任務(wù)應(yīng)用,則需要修改GUI_MAXTASK和GUI_OS宏,實(shí)現(xiàn)uC/GUI與操作系統(tǒng)的結(jié)合。

⑹編寫(xiě)自己的應(yīng)用程序。

使用uC/GUI開(kāi)發(fā)應(yīng)用程序時(shí),目標(biāo)系統(tǒng)不是必須配備的,因?yàn)閡C/GUI提供了一個(gè)模擬器,用戶(hù)可以在模擬器上面看到應(yīng)用程序的執(zhí)行的結(jié)果。所以,對(duì)于開(kāi)發(fā)環(huán)境,uC/GUI僅要求有一個(gè)符合ANSI標(biāo)準(zhǔn)的“C”語(yǔ)言編譯器。至于C++編譯器,它不是必須的,但是如果用戶(hù)使用C++語(yǔ)言來(lái)編寫(xiě)應(yīng)用程序,那就需要一個(gè)C++編譯器。[1]

因此,在Windows系統(tǒng)下只要安裝了Microsoft Visual C++就可以運(yùn)行uC/GUI的模擬器工程(工程名一般為Simulation.dsw),然后將該工程中的Application文件夾清空,加入自己編寫(xiě)的源文件,編譯鏈接就可以看到運(yùn)行結(jié)果。

3.3應(yīng)用實(shí)例

下圖是用uC/GUI開(kāi)發(fā)應(yīng)用程序的一個(gè)實(shí)例,該程序是顯示汽車(chē)運(yùn)行時(shí)發(fā)動(dòng)機(jī)轉(zhuǎn)速的一個(gè)界面。

圖4 用戶(hù)界面圖

黑色的背景是這個(gè)LCD的窗口區(qū)域,大小為640*480。先利用畫(huà)線(xiàn)函數(shù)繪制基本的弧線(xiàn),再利用填充函數(shù)填充相應(yīng)的背景顏色,最后用一個(gè)分片存儲(chǔ)設(shè)備執(zhí)行一個(gè)指定的繪圖函數(shù),在這種情況下,在一段時(shí)間內(nèi)只有一小部分要更新。

STatic void DemoScale(void)

{

int Cnt;

int tDiff, t0 = GUI_GetTime();

PARAM Param;  /* 繪圖函數(shù)的參數(shù) */

GUI_AUTODEV AutoDev; /* 分片存儲(chǔ)設(shè)備對(duì)象 */

GUI_SetColor(GUI_WHITE); /*設(shè)置顏色*/

GUI_SetFont(&GUI_Font8x16);/*設(shè)置字體*/

GUI_DispStringHCenterAt(“Scale using GUI_AUTODEV-object”, 160, 0);

GUI_AA_EnableHiRes();/* 啟動(dòng)高分辨率用于抗鋸齒 */

GUI_AA_SetFactor(MAG);

GUI_MEMDEV_CreateAuto(&AutoDev); /* 建立 GUI_AUTODEV 對(duì)象 */

/* 顯示在一個(gè)固定時(shí)間上的指針 */

for (Cnt = 0; (tDiff = GUI_GetTime() - t0) < 24000; Cnt++);

{

/* 獲得數(shù)值用于顯示一個(gè)多邊形來(lái)表示指針 */

Param.Angle = GetAngle(tDiff)* DEG2RAD;

GUI_RotatePolygon ( Param.aPoints,

aNeedle,

countof(aNeedle),

Param.Angle);

GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &Draw, &Param);

}

4  結(jié)束語(yǔ)

本文只是簡(jiǎn)單展示了uC/GUI在開(kāi)發(fā)圖形用戶(hù)界面上的應(yīng)用,其巨大的應(yīng)用潛力還有待進(jìn)一步的研究。相信隨著計(jì)算機(jī)滲透到人類(lèi)工作和生活的各個(gè)方面,以嵌入式系統(tǒng)為核心的后PC時(shí)代的到來(lái),uC/GUI的應(yīng)用前景也將更為廣闊。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶(hù)體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉