Microwindows在基于單片機(jī)嵌入式系統(tǒng)中的移植
在microwindows的配置過程中,可以利用./xconfigure命令進(jìn)入菜單配置界面,當(dāng)然也可以通過直接修改配置文件“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è)備由于是在嵌入式開發(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è)方面:
在打開幀緩沖設(shè)備時(shí),需要調(diào)用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize)函數(shù),將屏幕緩沖區(qū)映射到用戶地址空間。在基于pc機(jī)開發(fā)時(shí),由于在linux系統(tǒng)下,參數(shù)flags默認(rèn)為map_shared,即對(duì)映射區(qū)域的寫入數(shù)據(jù)會(huì)復(fù)制回文件內(nèi),而且允許其他映射該文件的進(jìn)程共享。由于?clinux是沒有mmu(內(nèi)存管理單元)的,因此參數(shù)flags應(yīng)為map_fixed ,即如果參數(shù)start所指的地址無法成功建立映射時(shí),則放棄映射,不對(duì)地址做修正。因此,應(yīng)該修改文件/src/drivers/scr_fb.c,將mmap()函數(shù)中的flags參數(shù)改為map_fixed。
如果此時(shí)直接編譯經(jīng)過配置和修改源代碼的microwindows,會(huì)提示出現(xiàn)“undefined reference to ‘_ _ctor_list’”和“undefined reference to ‘_ _dtor_list’”的錯(cuò)誤。這是由于原來在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硬件的支持,無法實(shí)現(xiàn)fork( )函數(shù),而只能使用vfork( )函數(shù),因此在含有fork( )函數(shù)的文件中應(yīng)加入相應(yīng)的條件編譯指令,用vfork( )來代替fork( )。
以上3個(gè)修改是比較重要,至此已完成了整個(gè)microwindows在s3c44b0x嵌入式開發(fā)板中的移植,編譯即可。最后,將編譯好的演示程序復(fù)制到clinux內(nèi)核中,再編譯內(nèi)核,將編譯好的內(nèi)核映像文件下載至ram中,即可運(yùn)行演示。
結(jié)語
本文主要論述了microwindows的體系結(jié)構(gòu),并且介紹了在pc機(jī)上和基于s3c44b0x的嵌入式開發(fā)板上運(yùn)行的步驟和方法,指出了在開發(fā)過程應(yīng)該注意的問題。下面就可以利用相應(yīng)的開發(fā)工具開發(fā)microwindows的應(yīng)用程序,從而實(shí)現(xiàn)相應(yīng)的功能。
評(píng)論