日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]Microwindows在基于單片機(jī)嵌入式系統(tǒng)中的移植

   引言

    

    microwindows是由gregory haerr組織的一個(gè)開(kāi)放源碼項(xiàng)目,是嵌入式系統(tǒng)中廣泛應(yīng)用的一種圖形用戶接口(gui),該項(xiàng)目的目標(biāo)是在嵌入式linux平臺(tái)上提供與普通個(gè)人電腦類(lèi)似的圖形用戶界面。作為x_windows的替代品,microwindows提供了和x_windows類(lèi)似的功能,但是卻占用很少的內(nèi)存,根據(jù)用戶的配置,microwindows占用的內(nèi)存資源只有100kb~600kb左右。microwindows的核心是基于顯示設(shè)備接口的,可移植性較強(qiáng),其本身提供了多種嵌入式系統(tǒng)常見(jiàn)的顯示設(shè)備驅(qū)動(dòng)程序。目前新版本的microwindows已經(jīng)內(nèi)建了framebuffer,因此可以不局限于linux的開(kāi)發(fā)平臺(tái),在ecos、freebsd、minix等操作系統(tǒng)上都可以運(yùn)行。在基于linux的開(kāi)發(fā)平臺(tái)上,可以使用framebuffer機(jī)制直接讀寫(xiě)顯存,也可以調(diào)用svgalib庫(kù)。在基于linux的framebuffer機(jī)制中,microwindows支持每像素1位、2位、4位、8位、16位、32位的色彩/灰度,并通過(guò)調(diào)色板技術(shù)將rgb格式的顏色空間轉(zhuǎn)換為目標(biāo)機(jī)上的顏色進(jìn)行顯示。microwindows系統(tǒng)可以圖形方式支持在主機(jī)平臺(tái)上的仿真目標(biāo)平臺(tái)開(kāi)發(fā),因此microwindows應(yīng)用程序就可以直接在臺(tái)式機(jī)上進(jìn)行編寫(xiě)和開(kāi)發(fā),通過(guò)交叉編譯就可在目標(biāo)平臺(tái)上運(yùn)行。

    本文論述了在基于s3c44b0x的嵌入式開(kāi)發(fā)平臺(tái)上,移植了?clinux操作系統(tǒng),并通過(guò)修改內(nèi)核、編寫(xiě)framebuffer幀緩沖設(shè)備驅(qū)動(dòng)程序,使?clinux內(nèi)核能夠支持幀緩沖設(shè)備,在此基礎(chǔ)上移植microwindows的方法與過(guò)程。

    microwindows的體系結(jié)構(gòu)

    針對(duì)嵌入式系統(tǒng)的特性,microwindows采用了層次化結(jié)構(gòu),每一層完成特定的功能,如圖1所示。

       

圖1 microwindows體系結(jié)構(gòu)

    設(shè)備驅(qū)動(dòng)層

    設(shè)備驅(qū)動(dòng)程序的接口函數(shù)定義在device.h中,其中包括了屏幕驅(qū)動(dòng)程序、鼠標(biāo)驅(qū)動(dòng)程序和鍵盤(pán)驅(qū)動(dòng)程序。圖形引擎層提供的與設(shè)備無(wú)關(guān)的圖形引擎例程通過(guò)調(diào)用設(shè)備驅(qū)動(dòng)程序跟硬件設(shè)備交互,這就保證了當(dāng)平臺(tái)硬件設(shè)備發(fā)生變化的時(shí)候,只需要改寫(xiě)相應(yīng)的驅(qū)動(dòng)程序即可,無(wú)需修改上層代碼。microwindows 提供基于linux2.2.x內(nèi)核的幀緩沖設(shè)備驅(qū)動(dòng)程序,通過(guò)/dev/fb0 設(shè)備文件,利用mmap()系統(tǒng)調(diào)用將顯示緩存映射至系統(tǒng)內(nèi)存中。[!--empirenews.page--]

    圖形引擎層

    microwindows系統(tǒng)中的核心函數(shù)是在圖形引擎層通過(guò)調(diào)用下層硬件設(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)的。這些函數(shù)對(duì)屏幕、鼠標(biāo)、鍵盤(pán)等驅(qū)動(dòng)程序進(jìn)行了封裝,為api提供了服務(wù),用戶調(diào)用最上層提供的編程接口,而不需要直接調(diào)用引擎層的例程。在microwindows的源代碼中,核心的例程包括:

    devdraw.c: 主要的圖形繪制操作,描畫(huà)和填充、圓、多邊形、文本與位圖的顯示,顏色轉(zhuǎn)換相關(guān)的代碼;

    devclip.c: 剪裁操作;

    devmouse.c:處理鼠標(biāo)操作的信息;

    devkbd.c: 處理鍵盤(pán)操作的信息;

    devpalx.c: 與調(diào)色板相關(guān)的代碼;

    devimage.c: 實(shí)現(xiàn)對(duì)gif、bmp、jpeg、ppm 等格式圖形的顯示操作;

    fongt_xxxx.c: 對(duì)不同字體的顯示操作

    api

    microwindows提供了兩種類(lèi)型的api,以便更好地適應(yīng)在不同平臺(tái)上應(yīng)用程序的移植。一種是與win32/win ce 基本兼容的api,支持大多數(shù)的圖形操作,它的api是基于消息機(jī)制的。另一種是采用x體系的nano-x api,它是client/server模式的,在客戶端的api函數(shù)以nx……( )命名,在服務(wù)端的api函數(shù)以gr……( )命名。

    具體實(shí)現(xiàn)

    下面具體論述microwindows在pc機(jī)和s3c44b0x開(kāi)發(fā)板上的實(shí)現(xiàn)。首先,需要下載相應(yīng)的安裝包,本文下載的是0.90版本的microwindows和相應(yīng)的字庫(kù)文件。同時(shí),由于microwindows需要使用freetype庫(kù)函數(shù)產(chǎn)生truetype字體,因此還需要下載安裝freetype,這里使用的的是1.3.1版本的freetype。

    pc機(jī)上實(shí)現(xiàn)

    解壓縮相關(guān)的安裝包,安裝freetype之后,就可以開(kāi)始運(yùn)行microwindows。在解壓縮目錄中輸入命令:./xconfigure,就會(huì)出現(xiàn)相應(yīng)的配置菜單,由于是在pc機(jī)上運(yùn)行,應(yīng)根據(jù)具體的參數(shù)配置microwindows。具體的參數(shù)配置如下:

    (1) 點(diǎn)擊compiling option ,進(jìn)入編譯選項(xiàng)。在隨后彈出的子窗口中選中optimize,點(diǎn)擊ok 返回即可。

    (2) 點(diǎn)擊platform,進(jìn)入開(kāi)發(fā)平臺(tái)選項(xiàng)。由于是在pc機(jī)上運(yùn)行,選擇“linux(native)”選項(xiàng)。在其后的“option”選項(xiàng)中,按如下配置:“screen driver”選項(xiàng)中,由于是在pc機(jī)上運(yùn)行,選擇“x11”;在“mouse driver”鼠標(biāo)選項(xiàng)中,選擇“gpm mouse”;在“keyboard driver”鍵盤(pán)選項(xiàng)中,選擇“tty”。

    (3) 點(diǎn)擊“libraries to compile”,進(jìn)入鏈接庫(kù)配置選項(xiàng)。其中有nanox庫(kù)和microwindows 庫(kù),在“nanox”的“option”選項(xiàng)中,選擇“link app into server”和“compile demos”選項(xiàng)。

    關(guān)于其他的參數(shù)配置,包括字庫(kù)、文件格式支持等應(yīng)根據(jù)具體的情況進(jìn)行配置。至此,microwindows在pc機(jī)上運(yùn)行的配置工作已經(jīng)完成,存盤(pán)退出,屏幕顯示配置成功。輸入命令:make,完成編譯工作。當(dāng)編譯完成后,在src的bin目錄下有很多演示程序,一些是基于nano—x api 的,一些是基于win32 api 的,運(yùn)行即可。

    以上簡(jiǎn)單論述了microwindows在pc機(jī)上運(yùn)行的方法與過(guò)程,pc機(jī)上的運(yùn)行過(guò)程相對(duì)簡(jiǎn)單,只需要按照實(shí)際情況進(jìn)行配置,編譯即可。

    嵌入式開(kāi)發(fā)板上的實(shí)現(xiàn)

    下面論述microwindows在以s3c44b0x為主控芯片的嵌入式開(kāi)發(fā)板中運(yùn)行的步驟與方法。首先需要建立交叉編譯開(kāi)發(fā)環(huán)境,這里建立的編譯器是arm-elf-gcc,匯編器是arm-elf-as,鏈接器為arm-elf-ld和庫(kù)管理器arm-elf-ar。接著,移植相應(yīng)的?clinux,關(guān)于此類(lèi)的文章已經(jīng)較多,在此就不贅述了。最后,在clinux內(nèi)核中將s3c44b0x的幀緩沖設(shè)備驅(qū)動(dòng)打開(kāi),并需要建立/dev/fb0設(shè)備節(jié)點(diǎn),關(guān)于s3c44b0x的幀緩沖設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)已另文發(fā)表。至此,已經(jīng)做好microwindows移植的基礎(chǔ)工作,下面具體論述實(shí)現(xiàn)的步驟與方法。[!--empirenews.page--]

    在microwindows的配置過(guò)程中,可以利用./xconfigure命令進(jìn)入菜單配置界面,當(dāng)然也可以通過(guò)直接修改配置文件“src/config”對(duì)microwindows進(jìn)行配置。這里采用的是后者,其中幾個(gè)比較關(guān)鍵的選項(xiàng)包括體系結(jié)構(gòu)、交叉編譯器、每像素位數(shù)、幀緩沖等,具體的配置參數(shù)如下:

    (1) 關(guān)于體系結(jié)構(gòu)和編譯器選項(xiàng)

    [ 相關(guān)貼圖 ]

    

    (2) 每像素位數(shù)screen_pixtype= mwpf_truecolor332 對(duì)于s3c44b0x,在彩色模式下,1個(gè)字節(jié)8位(3位紅色、3位綠色、2位藍(lán)色)的圖像數(shù)據(jù)對(duì)應(yīng)一個(gè)像素點(diǎn),即像素點(diǎn)字節(jié)在存儲(chǔ)器中保存的格式為332位。因此在設(shè)定microwindows的每像素位數(shù)時(shí)將其格式設(shè)置為332,根據(jù)頭文件的定義設(shè)定為mwpf_true color332。

    (3) 幀緩沖設(shè)備由于是在嵌入式開(kāi)發(fā)平臺(tái)上運(yùn)行,有別于在pc機(jī)上,此時(shí)microwindows應(yīng)該是基于幀緩沖驅(qū)動(dòng),即需要調(diào)用/dev/fb0設(shè)備,因此參數(shù)的配置應(yīng)該為:

     還有其他某些相關(guān)的配置參數(shù),應(yīng)根據(jù)實(shí)際情況進(jìn)行配置。至此,完成了對(duì)microwindows的配置工作,下面需要根據(jù)?clinux的特性,對(duì)microwindows的源代碼進(jìn)行相應(yīng)修改。具體需要修改的地方包括三個(gè)方面:

    在打開(kāi)幀緩沖設(shè)備時(shí),需要調(diào)用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize)函數(shù),將屏幕緩沖區(qū)映射到用戶地址空間。在基于pc機(jī)開(kāi)發(fā)時(shí),由于在linux系統(tǒng)下,參數(shù)flags默認(rèn)為map_shared,即對(duì)映射區(qū)域的寫(xiě)入數(shù)據(jù)會(huì)復(fù)制回文件內(nèi),而且允許其他映射該文件的進(jìn)程共享。由于?clinux是沒(méi)有mmu(內(nèi)存管理單元)的,因此參數(shù)flags應(yīng)為map_fixed ,即如果參數(shù)start所指的地址無(wú)法成功建立映射時(shí),則放棄映射,不對(duì)地址做修正。因此,應(yīng)該修改文件/src/drivers/scr_fb.c,將mmap()函數(shù)中的flags參數(shù)改為map_fixed。

    如果此時(shí)直接編譯經(jīng)過(guò)配置和修改源代碼的microwindows,會(huì)提示出現(xiàn)“undefined reference to ‘_ _ctor_list’”和“undefined reference to ‘_ _dtor_list’”的錯(cuò)誤。這是由于原來(lái)在libgcc中是有_ _ctor_list和_ _dtor_list參數(shù)定義的,但在?clinux的交叉編譯鏈中,該符號(hào)被刪掉。在elf2flt的link script中提供了這兩個(gè)符號(hào)的定義,使用clinux的交叉編譯鏈編譯可執(zhí)行程序就必須用-elf2flt選項(xiàng)。因此應(yīng)在編譯的選項(xiàng)里加上“-elf2flt”,修改的文件包括demos文件夾下各個(gè)相關(guān)文件夾的makefile文件。

    由于clinux缺少mmu硬件的支持,無(wú)法實(shí)現(xiàn)fork( )函數(shù),而只能使用vfork( )函數(shù),因此在含有fork( )函數(shù)的文件中應(yīng)加入相應(yīng)的條件編譯指令,用vfork( )來(lái)代替fork( )。

    以上3個(gè)修改是比較重要,至此已完成了整個(gè)microwindows在s3c44b0x嵌入式開(kāi)發(fā)板中的移植,編譯即可。最后,將編譯好的演示程序復(fù)制到clinux內(nèi)核中,再編譯內(nèi)核,將編譯好的內(nèi)核映像文件下載至ram中,即可運(yùn)行演示。

    結(jié)語(yǔ)

    本文主要論述了microwindows的體系結(jié)構(gòu),并且介紹了在pc機(jī)上和基于s3c44b0x的嵌入式開(kāi)發(fā)板上運(yùn)行的步驟和方法,指出了在開(kāi)發(fā)過(guò)程應(yīng)該注意的問(wèn)題。下面就可以利用相應(yīng)的開(kāi)發(fā)工具開(kāi)發(fā)microwindows的應(yīng)用程序,從而實(shí)現(xiàn)相應(yīng)的功能。
 

 

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

Lua RTOS 是一個(gè)實(shí)時(shí)操作系統(tǒng),設(shè)計(jì)在嵌入式系統(tǒng)上運(yùn)行,對(duì) FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺(tái),并可以輕松移植到其他32位...

關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱(chēng)作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時(shí)雙向通信,是嵌入式系統(tǒng)必不可少的d...

關(guān)鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)

亙喜生物科技集團(tuán)宣布正在中國(guó)開(kāi)展的、旨在全面評(píng)估GC007g治療復(fù)發(fā)/難治性急性B淋巴細(xì)胞白血病效果的1/2期注冊(cè)性臨床試驗(yàn)順利進(jìn)入2期研究階段,首例入組患者已給藥。GC007g是亙喜生物旗下的一款靶向CD19的供者來(lái)源...

關(guān)鍵字: 移植 CD

Flash Memory 是一種非易失性的存儲(chǔ)器。在嵌入式系統(tǒng)中通常用于存放系統(tǒng)、應(yīng)用和數(shù)據(jù)等。在 PC 系統(tǒng)中,則主要用在固態(tài)硬盤(pán)以及主板 BIOS 中。

關(guān)鍵字: Flash 存儲(chǔ)器 嵌入式系統(tǒng)

近年來(lái),隨著計(jì)算機(jī)技術(shù)及集成電路技術(shù)的發(fā)展,嵌入式技術(shù)日漸普及,在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子等領(lǐng)域發(fā)揮著越來(lái)越重要的作用。嵌入式系統(tǒng)無(wú)疑成為當(dāng)前最熱門(mén)最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。?嵌入式系統(tǒng)一般由嵌入式微處理器、外...

關(guān)鍵字: 嵌入式 嵌入式系統(tǒng) 計(jì)算機(jī)

北京2022年9月9日 /美通社/ -- 諾誠(chéng)健華(香港聯(lián)交所代碼:09969)今天宣布,tafasitamab (Minjuvi®)聯(lián)合來(lái)那度胺治療不適合自體干細(xì)胞移植 (ASCT) 條件的復(fù)發(fā)/難治彌漫性大B...

關(guān)鍵字: VI NJU BSP 移植

深圳2022年8月26日 /美通社/ -- 8月17日 – 深圳,AMD Xilinx舉辦為期一天的線下技術(shù)日活動(dòng),在AMD Xilinx主辦下宜鼎國(guó)際作為合作伙伴的身份被邀...

關(guān)鍵字: AMD Xilinx AGENT 嵌入式系統(tǒng)

單向散列算法,又稱(chēng)hash哈希函數(shù),Hash函數(shù)(也稱(chēng)雜湊算法)就是把任意長(zhǎng)的輸入消息串變化成固定長(zhǎng)的輸出串的一種函數(shù),該過(guò)程是不可逆的。Hash函數(shù)可用于數(shù)字簽名、消息的完整性檢測(cè)、消息起源的認(rèn)證檢測(cè)等。較為常用的方法...

關(guān)鍵字: 嵌入式算法 嵌入式系統(tǒng)

蘇州2022年8月19日 /美通社/ -- 近日,華中科技大學(xué)同濟(jì)醫(yī)學(xué)院附屬協(xié)和醫(yī)院心外科董念國(guó)教授團(tuán)隊(duì)運(yùn)用與心擎醫(yī)療聯(lián)合研發(fā)的短中期體外全磁懸浮心室輔助裝置MoyoAssist®,成功救治三例危重的終...

關(guān)鍵字: 磁懸浮 移植 IC 靜脈

上海2022年8月17日 /美通社/ -- 2022年8月16日,聚焦于基因和細(xì)胞治療的上海邦耀生物科技有限公司(以下簡(jiǎn)稱(chēng)"邦耀生物")宣布,其...

關(guān)鍵字: CD 移植 BSP ISP

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉