基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)_第1頁(yè)
基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)_第2頁(yè)
基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)_第3頁(yè)
基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)_第4頁(yè)
基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、福建工程學(xué)院Fujian University Of Technology嵌入式系統(tǒng)課程設(shè)計(jì)(論文)題目: 基于S3C2410設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì) 班級(jí): 電子0601 姓名: 江虎 學(xué)號(hào): 指導(dǎo)老師: 張平均 李光煬 吳忠強(qiáng) 福建工程學(xué)院電子信息與電氣工程系2010.01.15嵌入式系統(tǒng)課程設(shè)計(jì)一、設(shè)計(jì)課題:基于S3C2410的設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)二、設(shè)計(jì)目的:1、進(jìn)一步鞏固嵌入式系統(tǒng)的基本知識(shí);2、掌握嵌入式應(yīng)用系統(tǒng)的基本結(jié)構(gòu);3、掌握嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境建立和使用;4、掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法;5、學(xué)會(huì)查閱有關(guān)專(zhuān)業(yè)資料及設(shè)計(jì)手冊(cè);6、 MiniGUI界面編程

2、。三、設(shè)計(jì)任務(wù)及要求:1、掌握嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境建立和使用;2、掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法;3、MiniGUI在PC上的安裝、移植4、Linux基本輸入輸出驅(qū)動(dòng)程序設(shè)計(jì)編譯與移植5、基于MiniGUI的基本輸入輸出應(yīng)用編程編譯與移植6、編寫(xiě)設(shè)計(jì)說(shuō)明書(shū)(方案的確定、設(shè)計(jì)環(huán)節(jié)的考慮及必要說(shuō)明等)及設(shè)備的使用說(shuō)明;7、繪制有關(guān)圖紙.四、設(shè)計(jì)內(nèi)容:1、MiniGUI在X86上安裝和運(yùn)行1.1、準(zhǔn)備工作建立工作目錄:mkdir /minigui-free cd /minigui-free mkdir /src復(fù)制源文件到工作目錄:cp /media/disk/src/* .

3、/ cp /mnt/hgfs/linux/src/* /minigui-free解壓文件:tar zxvf libminigui-1.6.10.tar.gztar zxvf minigui-res-1.6.10.tar.gztar zxvf mg-samples-1.6.10.tar.gz1.2、 MiniGUI庫(kù)安裝 進(jìn)入目錄:cd libminigui-1.6.10/ 配置:./configure 在x86上運(yùn)行只需默認(rèn)配置即可,配置完成后即可生成Makefile 編譯:make 成功后即可生成必要的庫(kù)文件等。 安裝:make install 在x86上安裝庫(kù)文件。5. 把libminig

4、ui加入庫(kù)搜索路徑:進(jìn)入/etc/ld.so.conf.d建一個(gè)minigui.conf,寫(xiě)上/usr/local/lib可以使用命令完成:rootfedora7#echo /usr/local/lib /etc/ld.so.conf.d/minigui.conf(如果你使用的不是fedora7可能沒(méi)有/etc/ld.so.conf.d這個(gè)目錄,只有一個(gè)/etc/ld.so.conf,不過(guò)作用是一樣的,在這個(gè)文件末尾加上/usr/local/lib)(4)最后要把系統(tǒng)共享庫(kù)緩存刷新,將libminigui加載上,可以使用命令rootfedora7#ldconfig這個(gè)命令執(zhí)行時(shí)要花十多秒,耐心

5、等待。當(dāng)然不使用刷新命令重啟系統(tǒng)也可以。1.3、MiniGUI資源安裝進(jìn)入目錄:cd minigui-res-1.6.10/安裝:make install必要資源文件的復(fù)制安裝等操作。1.4、MiniGUI例子編譯 進(jìn)入目錄:cd mg-samples-1.6.10/ ./configure 編譯:make編譯src目錄下的例子程序,用于驗(yàn)證MiniGUI是否安裝成功。即可在src目錄下生成可執(zhí)行文件1.5、安裝qvfb 使用qt的qvfb cd qvfb 1.1 ./configure make make installapt-get install qt3-dev-tools-embedd

6、ed1.6、配置MiniGUI.cfgvi /usr/local/etc/MiniGUI.cfg 修改如下部分為system# GAL engine and default optionsgal_engine=qvfbdefaultmode=800x480-16bpp# IAL engineial_engine=qvfbmdev=/dev/input/micemtype=IMPS2fbcondefaultmode=800x480-16bppqvfbdefaultmode=800x480-16bppdisplay=01.6、 運(yùn)行MiniGUI例子程序 打開(kāi)qvfb:qvfb -width 80

7、0 -height 480 & 運(yùn)行helloword:src/helloworld出現(xiàn)此窗口說(shuō)明運(yùn)行成功。 1.7、問(wèn)題錯(cuò)誤1:InitGUI: Can not initialize colors of window element!InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.解決方法:正確配置MiniGUI.cfg文件錯(cuò)誤2:Permission denied解決方法:權(quán)限不夠,使用root用戶(hù)登錄。 錯(cuò)誤3:編譯出錯(cuò)未找到j(luò)peg,png等解決方法:安裝zlib,png,jpeg庫(kù)。 錯(cuò)誤4: 錯(cuò)誤5

8、:出現(xiàn)符號(hào)未找到等編譯錯(cuò)誤解決方法:make clean 后在make2、控制面板界面編程1.建立新的zc.c文件,在makefile.am文檔里添加zc.source=zc.c2.重新命名helloworld.c文件,將程序?qū)戇M(jìn)去,并在/minigui-free/mg-samples-1.6.10目錄下執(zhí)行./configure;再執(zhí)行make命令。選用對(duì)話框方式編程,結(jié)構(gòu)DLGTEMPLATE用來(lái)定義對(duì)話框本身,結(jié)構(gòu)CTRLDATA用來(lái)定義控件。static DLGTEMPLATE DlgYourTaste = WS_BORDER | WS_CAPTION, WS_EX_NONE, 0,

9、0, 720, 480, Contrl, 0, 0, 8, NULL, 0;分別對(duì)對(duì)話框?qū)傩赃M(jìn)行定義。static CTRLDATA CtrlYourTaste = button, WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, B1_X, B_Y, B_W, B_H, IDC_LED1, LED1, 0 ,等等;在此結(jié)構(gòu)中定義控件,其中包括4個(gè)按鈕用來(lái)控制LED,3個(gè)靜態(tài)文本框用來(lái)顯示提示消息,不允許用戶(hù)更改,1個(gè)編輯框用來(lái)輸入頻率。部分代碼省略。 主函數(shù)操作:打開(kāi)設(shè)備獲得文件描述符,函數(shù)連接等。led_fd=open(/dev/

10、led,O_RDONLY);if(led_fd 4) return -EINVAL;status = inb(LED_BASE);if(0 = cmd)status &= (0x1 arg);else if(1 = cmd)status |= (0x1 update_mouse = NULL; input-get_mouse_xy = NULL; input-set_mouse_xy = NULL; input-get_mouse_button = NULL; input-set_mouse_range = NULL; input-update_keyboard = keyboard_upda

11、te; input-get_keyboard_state = keyboard_get_state; input-suspend_keyboard = NULL; input-resume_keyboard = NULL; input-set_leds = NULL; input-wait_event = wait_event;只需實(shí)現(xiàn)keyboard的相關(guān)函數(shù)即可,mouse設(shè)備不需實(shí)現(xiàn)。keyboard_update函數(shù)實(shí)現(xiàn)state NR_KEYS數(shù)組的更新,使之映射為MiniGUI所提供的鍵盤(pán)定義。static int keyboard_update(void)char *statin

12、fo;int status;int key;statinfo=(btn_state & KEY_RELEASED) ? UP:DOWN;status = (btn_state & KEY_RELEASED) ? 0 : 1 ;key=btn_state & KEY_NUM;switch(key)case 0:stateSCANCODE_0=status;break;case 1:stateSCANCODE_1=status;break;case 2:stateSCANCODE_2=status;break;case 3:stateSCANCODE_3=status;break;case 4:s

13、tateSCANCODE_4=status;break;return NR_KEYS; key即為去掉按鍵狀態(tài)信息的鍵值。SCANCODE_x為系統(tǒng)提供的鍵值,status為狀態(tài)信息。通過(guò)switch實(shí)現(xiàn)數(shù)組的更新。static const char * keyboard_get_state(void)return (char *)state;直接返回?cái)?shù)組地址。wait_event函數(shù)是輸入引擎的核心,使用select系統(tǒng)調(diào)用檢查是否有可讀取的數(shù)據(jù),當(dāng)可用是讀取(e0)。Init2410Input是IAL的入口函數(shù)實(shí)現(xiàn)設(shè)備文件的打開(kāi)和input結(jié)構(gòu)的初始化,還有一些必要的初始化。Term241

14、0Input函數(shù)實(shí)現(xiàn)設(shè)備文件關(guān)閉和資源釋放等。5、MiniGUI在ARM開(kāi)發(fā)板上運(yùn)行5.1、MiniGUI庫(kù)安裝 進(jìn)入目錄:cd libminigui-1.6.10/ 配置:首先make clean,去除x86上的目標(biāo)文件修改configure.in 啟用SMDK IAL的編譯選項(xiàng)build_smdk2410_ial_engine=yes./configure -host=arm-linux -enable-pngsupport=no -enable-gifsupport=no -prefix=/minigui-free/nfsroot 編譯:make 成功后即可生成必要的庫(kù)文件等。 安裝:m

15、ake install 在/minigui-free/nfsroot上安裝庫(kù)文件。5.2、MiniGUI資源安裝 進(jìn)入目錄:cd minigui-res-1.6.10/ 配置:修改config.linuxTOPDIR=/minigui-free/nfsroot 安裝:make install 在/minigui-free/nfsroot上安裝資源文件。5.3、MiniGUI界面程序編譯 進(jìn)入目錄:cd mg-samples-1.6.10/ 復(fù)制界面程序到src目錄下可替換其中的一個(gè)例子程序或在src目錄下修改Makefile.am添加源文件。 配置:首先make clean 然后./confi

16、gure -build=i686-pc-linux-gnu -host=arm-linux -prefix=/minigui-free/nfsroot/ LDFLAGS=-L/minigui-free/nfsroot/lib CPPFLAGS=-I/minigui-free/nfsroot/include CFLAGS=-I/minigui-free/nfsroot/include 編譯 :makesrc目錄下生成可執(zhí)行文件,使用file edit 出現(xiàn)ARM字樣,即說(shuō)明可運(yùn)行于arm處理器上5.4、界面程序運(yùn)行拷貝交叉編譯后的庫(kù)文件,資源文件,配置文件,和可執(zhí)行程序到arm開(kāi)發(fā)板上,并修改配

17、置文件。然后運(yùn)行程序。根據(jù)出現(xiàn)的文件反復(fù)修改和調(diào)試。五、設(shè)計(jì)總結(jié): 雖然只有短短的2周時(shí)間,但是經(jīng)過(guò)我們的努力,還是順利完成了老師布置的實(shí)習(xí)任務(wù)。過(guò)程中進(jìn)行中還是遇到了許多的問(wèn)題,通過(guò)老師,同學(xué),網(wǎng)絡(luò)的幫助,最終解決了一個(gè)個(gè)的問(wèn)題,因此收獲也是蠻多的?;叵肫饛膶?duì)MiniGUI的懵懂,到學(xué)會(huì)設(shè)計(jì)簡(jiǎn)單的應(yīng)用程序是何等的開(kāi)心。俗話說(shuō):技不壓身。多學(xué)一些知識(shí)總是對(duì)自己的發(fā)展有幫助的。 對(duì)于這個(gè)嵌入式的開(kāi)發(fā)流程,軟件開(kāi)發(fā)方法,我們都有了切實(shí)的感受,不再是理論課上那干癟癟的論述了。在軟件編譯過(guò)程中最為棘手的問(wèn)題,我覺(jué)得就是鏈接庫(kù)的問(wèn)題,每一個(gè)都有相當(dāng)復(fù)雜的依賴(lài)關(guān)系,由于我們對(duì)嵌入式開(kāi)發(fā)的經(jīng)驗(yàn)不足,有時(shí)候很難能知道庫(kù)依賴(lài)于那個(gè)軟件中,比較常用的辦法是下載安裝與名稱(chēng)相關(guān)的軟件,如lib*庫(kù)等等。即可解決大部分在軟件編譯中,出現(xiàn)的錯(cuò)誤。對(duì)于配置,也是一個(gè)非常容易出錯(cuò)的地方,不同的軟件配置是不一樣的,常提高查看幫助文件來(lái)解決,雖然是英文,但一般大家都能看的懂,只有肯往下看一般都會(huì)有收獲的。網(wǎng)絡(luò)上提供的信息,由于與我們開(kāi)發(fā)環(huán)境的不同,軟件版本的不同等

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論