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

當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]1.引言嵌入式GUI指在嵌入式系統(tǒng)中為特定的硬件設(shè)備或者環(huán)境而設(shè)計的圖形用戶界面系統(tǒng)。它極大地方便了非專業(yè)用戶的使用,人們不再需要死記硬背大量的命令,而可以通過窗口、菜單方便地操作。在實際應(yīng)用中,嵌入式GUI

1.引言

嵌入式GUI指在嵌入式系統(tǒng)中為特定的硬件設(shè)備或者環(huán)境而設(shè)計的圖形用戶界面系統(tǒng)。它極大地方便了非專業(yè)用戶的使用,人們不再需要死記硬背大量的命令,而可以通過窗口、菜單方便地操作。在實際應(yīng)用中,嵌入式GUI應(yīng)滿足輕型、占用資源少、高性能、高可靠性、可配置等基本要求。

Linux作為一種可裁減的操作系統(tǒng),兼容多種主流CPU且支持所有的文件系統(tǒng)和網(wǎng)絡(luò)服務(wù),并具備源代碼公開、易于定制、穩(wěn)定、功能強大和易開發(fā)等優(yōu)點,是發(fā)展未來嵌入式設(shè)備的絕佳資源。

2.Linux在嵌入式系統(tǒng)上的實現(xiàn)

2.1系統(tǒng)引導(dǎo)

系統(tǒng)上電或者復(fù)位后,將對系統(tǒng)硬件設(shè)備進行自檢,無錯誤則將硬盤0磁道的第一個扇區(qū),即MBR中的BootLoader調(diào)至內(nèi)存0x07C00處,并將控制權(quán)交給BootLoader[1]。BootLoader通常是一段匯編代碼,存放在MBR中,作用是將系統(tǒng)啟動代碼讀到內(nèi)存中。目前可選用的引導(dǎo)工具主要有GRUB和LILO,這里我們選用主流的GRUB,由于選用的存儲介質(zhì)是CF卡,格式化CF卡后建立GRUB安裝目錄,按照提示安裝GRUB后,在 /etc目錄下新建grub.conf文件,內(nèi)容如下:

default=0

timeout=5

title Linux-2.4.34

root (hd0,0)

kernel /boot/vmlinuz-2.4.34 ro root=/dev/hdc1

其中root (hd0,0)指定了/boot所在的分區(qū),kernel一行用來指定Linux的內(nèi)核,及/所在的分區(qū)。

2.2內(nèi)核配置、編譯及裁減

內(nèi)核是Linux操作系統(tǒng)的核心,它負責(zé)管理系統(tǒng)進程和進程調(diào)度等大小事務(wù),決定著系統(tǒng)的性能和穩(wěn)定性,其它應(yīng)用程序都必須通過它才可以使用系統(tǒng)資源,獲取系統(tǒng)服務(wù)。由于嵌入式硬件資源的限制,我們需要對Linux內(nèi)核進行定制,精簡出符合實際需要的最小內(nèi)核文件。

首先在www.kernel.org上獲取相應(yīng)的內(nèi)核包,解壓后進行配置,然后根據(jù)目標(biāo)板的硬件特點和實際需求配置內(nèi)核的編譯選項。這里我們選用基于X86 架構(gòu)的PC104主板,為了減低不必要的復(fù)雜性,內(nèi)核中取消kernel module支持,將有關(guān)CPU類型、內(nèi)存管理、doc驅(qū)動、ext2文件系統(tǒng)支持、串口支持等常用功能編譯進內(nèi)核,SCSI、Floppy之類的外設(shè)在我們的嵌入式系統(tǒng)中沒有使用,編譯時可去掉。這樣實際編譯出的內(nèi)核只有 747.6KB?;静襟E如下[2]:

#cd /usr/src/linux //內(nèi)核包所在目錄,這里下載的內(nèi)核包版本是2.4.34

#make mrproper //確保源代碼目錄下沒有不正確的.o文件以及文件的相互倚賴關(guān)系

#make menuconfig //圖形界面下編譯選項配置

#make dep //確保關(guān)鍵文件在正確位置

#make clean //確保所有有關(guān)文件都處于最新版本狀態(tài)

#make bzImage //編譯內(nèi)核

#cp /usr/src/linux/arch/i386/bzImage /mnt/cf/boot //將內(nèi)核文件拷貝至boot

2.3根文件系統(tǒng)實現(xiàn)

Linux 的根文件系統(tǒng)以樹的結(jié)構(gòu)方式組織,主要由配置文件、設(shè)備文件、Linux基本命令、基本C語言庫組成。后兩者是主要的,也是占空間最大的,用 Busybox和uClibc的組合夠建這兩部分內(nèi)容,可以大大節(jié)省空間。根據(jù)根文件系統(tǒng)的基本結(jié)構(gòu),我們建立各個對應(yīng)的目錄:

#mkdir proc dev bin boot boot/grub etc src lib //由于是單用戶系統(tǒng),刪除了root、home、sbin目錄

#cp –r /dev/null /dev/mem … /mnt/cf/dev //拷貝所需設(shè)備文件

最后需要在etc目錄下建立幾個配置文件,分別是/etc/inittab、/etc/init.d/rcS、/etc/fstab,限于篇幅,僅介紹inittab文件,內(nèi)容如下[4]:

:: sysinit: /etc/init.s/rcS //指定初始化文件

:: askfirst: /bin/sh //啟動時執(zhí)行的shell

:: respawn: /bin/getty 38400 ttyS0 //打開一個串口,波特率為38400

:: restart: /bin/init //重啟時執(zhí)行進程init

:: ctrlaltdel: /bin/reboot //捕捉特定按鍵動作

:: shutdown: /bin/umount –a –r //關(guān)機時動作,卸載所有文件系統(tǒng)

3.嵌入式GUI研究

3.1基于嵌入式Linux的GUI系統(tǒng)底層實現(xiàn)基礎(chǔ)

一個能夠兼容多硬件平臺的嵌入式GUI系統(tǒng),應(yīng)至少抽象出兩類設(shè)備:基于圖形顯示設(shè)備(如VGA卡)的圖形抽象層 GAL(Graphic Abstract Layer)和基于輸入設(shè)備(如鍵盤,觸摸屏等)的輸入抽象層 IAL(Input Abstract Layer)[3]。抽象層的概念類似Linux內(nèi)核虛擬文件系統(tǒng)的概念,它定義了一組不依賴于任何特殊硬件的抽象接口,所有頂層的圖形操作和輸入處理都建立在抽象接口上,而用于實現(xiàn)該抽象接口的底層代碼稱為“圖形引擎”或“輸入引擎”,類似操作系統(tǒng)中的驅(qū)動程序,這實際是一種面向?qū)ο蟮某绦蚪Y(jié)構(gòu)。利用該抽象接口,嵌入式GUI可以非常方便的移植到其他POSIX系統(tǒng)上,只需要根據(jù)抽象層接口實現(xiàn)新的引擎即可。

3.2嵌入式GUI基本性能需求

嵌入式GUI應(yīng)在基于操作系統(tǒng)的基礎(chǔ)上,為用戶提供豐富的圖形編程接口,使其能夠方便快速的編制界面友好的應(yīng)用程序。

GUI模塊的性能指標(biāo)為單位時間實例化個數(shù),如下所列:

基本圖形繪制速度,即點、線、框、塊、圓、弧、橢圓等圖形單元繪制速度。在顯示設(shè)備可見范圍內(nèi)任意位置產(chǎn)生隨機大小的基本圖形。量化指標(biāo)為單位時間內(nèi)繪制的個數(shù),并以較長測試時間中取得的單位時間平均值為準(zhǔn)。

窗口創(chuàng)建速度。在顯示設(shè)備可見范圍內(nèi)任意位置創(chuàng)建隨機大小的窗口。量化指標(biāo)為單位時間內(nèi)成功創(chuàng)建及繪制完畢的窗口個數(shù),并以較長測試時間中取單位時間平均值為準(zhǔn)。

控件創(chuàng)建速度。在顯示設(shè)備可見范圍內(nèi)任意位置創(chuàng)建隨機大小、包含隨機內(nèi)容的窗口。量化指標(biāo)為單位時間內(nèi)成功創(chuàng)建及繪制完畢的控件個數(shù),并以較長測試時間中取單位時間平均值為準(zhǔn)。

事件驅(qū)動機制反應(yīng)速度。針對窗口及不同控件的典型事件及耗時事件,測試其完成時間。窗口及控件的大小、復(fù)雜程度隨機產(chǎn)生。量化指標(biāo)為單位時間內(nèi)成功處理完畢的事件數(shù),并以較長測試時間中取單位時間平均值為準(zhǔn)。

3.3輸入引擎移植

在基于Linux的嵌入式系統(tǒng)中,輸入設(shè)備可能只有觸摸屏和為數(shù)不多的按鍵,相對圖形引擎來說,輸入設(shè)備的處理沒有統(tǒng)一接口,在此情況下,提供一個抽象的輸入層,顯得尤為重要。

這里我們參考MiniGUI,并結(jié)合實際工程機械控制系統(tǒng)來實現(xiàn)輸入引擎的移植工作。MiniGUI簡單可分為三層,最頂層為API,即編程接口;中間層是 MiniGUI的核心層,其中包括了窗口系統(tǒng)必不可少的各個模塊,如消息事件處理模塊、圖形設(shè)備接口等;而最底層則是GAL和IAL。

該實際工程機械控制系統(tǒng)擬采用觸摸屏作為主要的輸入設(shè)備,需要編寫自己的輸入引擎。首先定義一個結(jié)構(gòu)體用來從觸摸屏設(shè)備(/dev/ts)中接受數(shù)據(jù),結(jié)構(gòu)體定義如下:

typedef struct

{

unsigned short b; //觸摸屏狀態(tài)(是否被點擊)

unsigned short x; //觸摸屏x坐標(biāo)

unsigned short y; //觸摸屏y坐標(biāo)

unsigned short pad; //32位填充域,無實際意義

} POS;

接下來定義輸入引擎的初始化函數(shù),該函數(shù)打開觸摸屏設(shè)備文件:/dev/ts,類似PC上的/dev/psaux設(shè)備。在成功打開設(shè)備文件后,該函數(shù)通過 mouse_getxy和mouse_getbutton等函數(shù)將獲得的狀態(tài)信息通過INPUT結(jié)構(gòu)體傳遞給GUI應(yīng)用程序。

BOOl InitPADInput (INPUT*input,const char*mdev,const char*mtype)

{

ts = open(“/dev/ts”, O_RDONLY);

if (ts<0) {

fprintf (stderr, “PAD:Can not open touch screen! ”);

return FALSE;

}

……

input->get_mouse_xy=mouse_getxy;

input->get_mouse_button=mouse_getbutton;

……

}

static void mouse_getxy(int* x, int* y)

{

*x=mousex;

*y=mousey;

}

static int mouse_getbutton(void)

{

return pos.b;

}

最后通過wait_event函數(shù)調(diào)用select系統(tǒng)調(diào)用,當(dāng)select系統(tǒng)調(diào)用返回值大于0時,該函數(shù)檢查是否有可讀的數(shù)據(jù)等待讀取,如果是,則從該文件描述符中讀取觸摸屏數(shù)據(jù)。

限于篇幅原因,這里只列出了其中輸入引擎的移植代碼中較為關(guān)鍵的部分。代碼編寫完成后,還需要在“/src/ial/ial.c”中添加自定義的輸入引擎的入口項。

static INPUT inputs [] =

{ ……

#ifdef _PC104_IAL

{"pc104", InitYKInput, TermYKInput},

#endif

……

}

4.結(jié)束語

本文具體介紹了Linux作為嵌入式操作系統(tǒng)的實現(xiàn)方法,結(jié)合嵌入式GUI技術(shù),在PC104主板上利用Linux創(chuàng)建了一個擁有用戶界面的微型操作系統(tǒng),并通過對抽象層接口及相關(guān)技術(shù)的分析,自定義輸入引擎,實現(xiàn)了設(shè)備的可定制,在實際工程機械項目中有較大的實用價值和市場前景。

創(chuàng)新點:利用Linux在嵌入式主板上搭建了一個微型操作系統(tǒng),在此基礎(chǔ)上實現(xiàn)了針對觸摸屏的輸入引擎的移植

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

中國深圳2025年8月26日 /美通社/ -- 2025年8月26日,中集車輛(301039.SZ)召開2025年中期業(yè)績說明會。2025年上半年,中集車輛穩(wěn)健前行,實現(xiàn)營收97.5億元,毛利達14.6億元,加速演化成星...

關(guān)鍵字: 電動 EV 新能源 供應(yīng)鏈

基于ABB機器人生產(chǎn)線 ,設(shè)計了一種西門子PLC自保護智能控制系統(tǒng) 。該系統(tǒng)采用HK-FKGD40無線手持報警器 , 受機器人擠壓時人員通過該報警器便可觸發(fā)機器人智能判斷 、自動回退運動實現(xiàn)自我解救 , 同時系統(tǒng)發(fā)出聲光...

關(guān)鍵字: 無線手持報警器 自保護;智能 PLC ABB機器人 觸摸屏

在科技飛速發(fā)展的當(dāng)下,智能設(shè)備已深度融入人們的生活與工作。其中,PDA(Personal Digital Assistant,個人數(shù)字助理)作為一款集信息輸入、存儲、管理和傳遞于一體,且具備辦公、娛樂、移動通信等多種功能...

關(guān)鍵字: 智能設(shè)備 觸摸屏 微控制器

上海2025年7月28日 /美通社/ -- 為期四天的2025國際低空經(jīng)濟博覽會于7月26日圓滿落幕。作為聚焦低空經(jīng)濟全產(chǎn)業(yè)鏈為核心的國際性展會,本屆博覽會以"啟航低空經(jīng)濟,賦能千行百業(yè)"為主題,吸引...

關(guān)鍵字: EV 無人機 飛機 飛行器

上海2025年7月25日 /美通社/ -- 昨日,在首屆上海國際低空經(jīng)濟博覽會現(xiàn)場,昂際智航與翊飛航空科技正式簽署ES1000型號鐵鳥及101工程實驗樣機飛控電子集成和試飛支持合同。此次采購合同簽署標(biāo)志著雙方自2024年...

關(guān)鍵字: 運輸機 飛控系統(tǒng) EV ST

以 AI 為核心的智能汽車平臺將加速向軟件定義出行的轉(zhuǎn)型進程 德國埃朗根 2025年6月25日 /美通社/ -- Elektrobit 今日宣布與全球領(lǐng)先的電子制造商之一——鴻??萍技瘓F(富士康)...

關(guān)鍵字: 汽車 軟件定義 OS EV

蘇州 2025年5月27日 /美通社/ -- 5月24日-26日,第26屆全國醫(yī)院建設(shè)大會暨國際醫(yī)院建設(shè)、裝備及管理展覽會(CHCC 2025)在武漢舉行。藝卓(EIZO)攜手術(shù)室視覺顯示解決方案參展,以科技...

關(guān)鍵字: HC 醫(yī)學(xué)影像 IO 觸摸屏

5月19日消息,據(jù)日經(jīng)中文報道,日產(chǎn)汽車5月9日發(fā)布消息稱,將放棄在日本國內(nèi)建設(shè)該公司首座純電動汽車(EV)電池工廠的計劃。由于業(yè)績不佳,日產(chǎn)認為很難進行巨額投資。

關(guān)鍵字: EV 新能源

隨著手工釀造的普及和復(fù)雜程度的不斷提高,許多釀酒師——尤其是小規(guī)?;颡毩⒌尼劸茙煛匀灰揽渴止し椒▉碛涗浐透欔P(guān)鍵數(shù)據(jù),如溫度、pH值、體積和比重。這些讀數(shù)通常使用手動儀器,記錄在紙上或分散在電子表格和文檔中,沒有集中...

關(guān)鍵字: 觸摸屏 物聯(lián)網(wǎng) DS18B20 傳感器

-CleverTap收購rehook.ai,加強人工智能驅(qū)動的促銷和客戶留存能力 整合rehook.ai的創(chuàng)新促銷引擎,統(tǒng)一分析、互動和促銷,促進人工智能驅(qū)動的營銷活動和客戶留存 舊金山和印度孟買2025年4月16日...

關(guān)鍵字: EV AI 智能驅(qū)動 人工智能
關(guān)閉