久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式課程設(shè)計(jì)報(bào)告

時(shí)間:2019-05-12 13:50:17下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《嵌入式課程設(shè)計(jì)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《嵌入式課程設(shè)計(jì)報(bào)告》。

第一篇:嵌入式課程設(shè)計(jì)報(bào)告

福建工程學(xué)院

《嵌入式系統(tǒng)》課程設(shè)計(jì)

報(bào)告書

題目:

基于S3C2440設(shè)備驅(qū)動(dòng)及其界面設(shè)計(jì)

班級(jí):

姓名:

學(xué)號(hào):

指導(dǎo)老師:

陳靖,張平均,李光煬

目錄

一、設(shè)計(jì)課題...............................................................................................................................4

二、設(shè)計(jì)目的...............................................................................................................................4

三、設(shè)計(jì)任務(wù)及要求...................................................................................................................4

四、設(shè)計(jì)內(nèi)容...............................................................................................................................5

五、操作界面的生成...................................................................................................................7

六、操作界面調(diào)試.......................................................................................................................9

七、設(shè)計(jì)總結(jié).............................................................................................................................10

八、設(shè)計(jì)參考書.........................................................................................................................12

九、附件(程序).....................................................................................................................13

一、設(shè)計(jì)課題

基于S3C2440的設(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)開發(fā)環(huán)境建立和使用;

4.掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法; 5.學(xué)會(huì)查閱有關(guān)專業(yè)資料及設(shè)計(jì)手冊(cè); 6.MiniGUI界面編程。

三、設(shè)計(jì)任務(wù)及要求:

1.掌握嵌入式系統(tǒng)開發(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、編寫設(shè)計(jì)說明書(方案的確定、設(shè)計(jì)環(huán)節(jié)的考慮及必要說明等)及設(shè)備的使用說明;

7、繪制有關(guān)圖紙.四、設(shè)計(jì)內(nèi)容:

1、基礎(chǔ)知識(shí)準(zhǔn)備

1)講解設(shè)計(jì)任務(wù);2)熟悉ubuntu的使用;3)熟悉TQ2440試驗(yàn)系統(tǒng)的使用;4)掌握嵌入式系統(tǒng)開發(fā)環(huán)境建立和使用;

5)掌握嵌入式系統(tǒng)基本驅(qū)動(dòng)、應(yīng)用程序的設(shè)計(jì)調(diào)試和編譯移植方法.2、界面設(shè)計(jì)環(huán)境構(gòu)建:MiniGUI在PC上的安裝、移植

2.1、MiniGUI在pc機(jī)上安裝和運(yùn)行

建立工作目錄:mkdir /minigui-free

cd /minigui-free mkdir /src 復(fù)制源文件包到工作目錄:cp /mnt/hgfs/D/src/* /minigui-free 解壓文件到/minigui-free:

tar zxvf libminigui-1.6.10.tar.gz tar zxvf minigui-res-1.6.10.tar.gz tar zxvf mg-samples-1.6.10.tar.gz

2.2、MiniGUI庫(kù)安裝

(2)將libcross.sh考到minigui的lib庫(kù)的解壓文件夾中(3)將rescross.sh 考到minigui的res資源解壓文件夾中(4)將samplecorss.sh 考到sample例子解壓文件夾中(5)依次運(yùn)行l(wèi)ibcross.sh,rescross.sh,samplecorss.sh(6)到nfsroot的,目錄下,將libreduce.sh考到這個(gè)目錄下,運(yùn)行l(wèi)ibreduce.sh 2.3、安裝qvfb(1)解壓qvfb1.1.tar.gz(2)./configure(3)make(4)make install 2.4、配置MiniGUI.cfg vi /etc/MiniGUI.cfg 修改如下部分為 [system] # GAL engine and default options gal_engine=fbcon

defaultmode=800x480-16bpp # IAL engine ial_engine=fbcon mdev=/dev/mouse mtype=IMPS2 [fbcon] 6

defaultmode=800x480-16bpp [qvfb] defaultmode=800x480-16bpp display=0 1.5運(yùn)行MiniGUI例子程序(1)打開qvfb:qvfb &(2)運(yùn)行helloword:

五、操作界面的生成

1、操作界面面執(zhí)行文件的生成

1).在/minigui-free/mg-samples-1.6.10/src/修改源文件treeview.c 2).再次運(yùn)行samplecorss.sh,生成執(zhí)行文件treeview

2、利用nfs進(jìn)行掛載

1).將本地PC機(jī)的網(wǎng)絡(luò)方式設(shè)置成為橋接

2).查看/etc/exports下可以掛載的目錄

3).啟動(dòng)服務(wù)/etc/init.d/nfs-kernel-server restart 4).查看本機(jī)和ARM上的IP地址,設(shè)置在同一網(wǎng)段,然后ping,使其能夠互通。5).在超級(jí)終端上,進(jìn)行操作

Mount-o nolock,rsize=1024,wsize=1024 本機(jī)IP:/ /mnt

將虛擬機(jī)和ARM進(jìn)行掛載,可以查看到虛擬機(jī)根目錄下的文件。

3、在超級(jí)終端上將需要的文件從虛擬機(jī)上復(fù)制到ARM機(jī)上

1).重新燒寫文件系統(tǒng)鏡像文件

2).掛載成功后,將/mnt/minigui-free/nfsroot/lib/*復(fù)制到/usr/lib/ 3).將/mnt/minigui-free/nfsroot/usr/local/lib/*復(fù)制到/usr/local/lib/ 4).將/mnt/etc/MiniGUI.cfg復(fù)制到/etc/ 8

5).將/mnt/minigui-free/mg-samples-1.6.10/src/*復(fù)制到/usr/minigui/

4、在超級(jí)終端上運(yùn)行執(zhí)行文件

1).進(jìn)入/usr/minigui/運(yùn)行treeview文件 2).可以再操作界面上現(xiàn)實(shí)我們所設(shè)計(jì)的界面

六、操作界面調(diào)試

1、點(diǎn)擊LED1LED2LED3LED4,分別控制四盞led燈的亮暗,調(diào)試界面如下:

2、輸入頻率值,點(diǎn)擊START鍵控制四盞led燈閃爍,調(diào)試界面如下:

七、設(shè)計(jì)總結(jié)

1、設(shè)計(jì)過程中遇到的問題

錯(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用戶登錄。錯(cuò)誤3:

編譯出錯(cuò)未找到j(luò)peg,png等

解決方法:安裝zlib,png,jpeg庫(kù)。

錯(cuò)誤4:

出現(xiàn)符號(hào)未找到等編譯錯(cuò)誤 解決方法:make clean 后在make 錯(cuò)誤5:

在minigui創(chuàng)建和移植的過程中,出現(xiàn)lib庫(kù)編譯不成功的現(xiàn)象,這是由于minigui是基于qt3的,因此需要添加qt3所在路徑至配置文件。錯(cuò)誤:6 在開發(fā)板上添加鼠標(biāo)設(shè)備后,提示視頻采集失敗,這是因?yàn)?etc下的配置文件MiniGUI.cfg中對(duì)外設(shè)控制范圍的控制過大,銀將其修改為與界面統(tǒng)一大小800*480.錯(cuò)誤:7 在執(zhí)行l(wèi)ed燈控制程序之前應(yīng)該首先停止開發(fā)板上原有的流水燈進(jìn)程led-player。錯(cuò)誤:8 運(yùn)行執(zhí)行程序treeview后界面上出現(xiàn)兩個(gè)光標(biāo),此時(shí)應(yīng)該在/etc/init.d下的rcS文件中停用qt3的光標(biāo)。

2、心得體會(huì)

本學(xué)期為期兩周的嵌入式課程設(shè)計(jì)在不知不覺中結(jié)束了,雖說這次課程設(shè)計(jì)時(shí)間不是很長(zhǎng),但是感覺自己收獲頗豐,不僅學(xué)習(xí)到了一些新知識(shí),回顧了以前的一些快要遺忘的知識(shí)點(diǎn),而且使自己的學(xué)習(xí)目標(biāo)更加明確,學(xué)習(xí)方法更加完善,也體會(huì)到軟件開發(fā)的趣味,更加清楚地認(rèn)識(shí)到了自己在軟件開發(fā)及學(xué)習(xí)上的一些不足之處。

兩周的課程設(shè)計(jì),在計(jì)算機(jī)這個(gè)博大深?yuàn)W的領(lǐng)域我感覺自己還有好多東西要學(xué),還有好多的東西不懂!嵌入式軟件開發(fā)應(yīng)用廣泛而且前景很好,目前正處于人才緊缺的關(guān)口,嵌入式技術(shù)在未來能夠得到更加廣泛的應(yīng)用。學(xué)好嵌入式,C語言很重要,所以感覺自己有必要在學(xué)習(xí)、積累一下這方面的知識(shí)。很多東西的學(xué)習(xí)不是一帆風(fēng)順也是比較耗時(shí)的,嵌入式也不例外,要想學(xué)好還必須下大力氣,還必須堅(jiān)持。這次的課程設(shè)計(jì)讓我明確了一點(diǎn):嵌入式開發(fā)對(duì)于提升我們的系統(tǒng)知識(shí)有很大的幫助,尤其是操作系統(tǒng)的知識(shí)。嵌入式

系統(tǒng)開發(fā)對(duì)于我們的知識(shí)面要求非常的廣,且要有一定的深度。這次的課程設(shè)計(jì)因?yàn)槭且粋€(gè)有針對(duì)性的訓(xùn)練,所以記的會(huì)非常牢固。跟平時(shí)上課不太一樣,平時(shí)上完理論課很少有時(shí)間上機(jī)進(jìn)行時(shí)間或者隔幾天才上機(jī)練習(xí),等到上機(jī)時(shí)一些東西可能遺忘了,比較耗費(fèi)時(shí)間。在課上,有老師在前面演示我們感覺看得懂或感覺沒問題,可輪到我們獨(dú)立完成的時(shí)候,因?yàn)閷?shí)際操作的少,其中的問題就來了!我很感謝學(xué)校特別是學(xué)院老師有實(shí)訓(xùn)這樣的安排,把我們這一學(xué)期學(xué)的東西系統(tǒng)的集中的進(jìn)行訓(xùn)練,讓我們深刻明確的體驗(yàn)了一下軟件開發(fā)的流程!還要感謝給我們實(shí)訓(xùn)的楚老師,感覺楚老師能力很強(qiáng),也很有耐心,即使老師講了很多遍的問題,我們不會(huì),老師還是會(huì)走進(jìn)我們給我們耐心的指導(dǎo),還給我們講一些學(xué)習(xí)計(jì)算機(jī)的方法,一些軟件開發(fā)需要注意的細(xì)節(jié),讓我們知道自己在哪方面不足,需要加強(qiáng),也讓我們了解到哪些需要認(rèn)真的學(xué)習(xí),那些是重點(diǎn),不是沒有方向的亂學(xué)一通,什么也學(xué)不好!經(jīng)過這次的實(shí)訓(xùn),我真真確確的感受到了計(jì)算機(jī)在我們生活中工作中的運(yùn)用,這些軟件、程序能讓我們提高工作的效率,更直觀更便捷的切入主題。當(dāng)然,在學(xué)習(xí)的過程中并不是一帆風(fēng)順的,在這之中,因?yàn)橐僮鞯臇|西很多,有時(shí)錯(cuò)一步,后面的結(jié)果就無法顯示,而自己的計(jì)算機(jī)水平還有待提高,根本檢查不出來是哪里出了錯(cuò)!這時(shí)候,老師都會(huì)耐心的過來幫助我!在平時(shí)我們就需要好好的查閱書籍或者上網(wǎng)搜集相關(guān)資料去解決問題。

短短兩周的課程設(shè)計(jì)很快結(jié)束了,我發(fā)現(xiàn)我對(duì)計(jì)算機(jī)這個(gè)專業(yè)、對(duì)嵌入式技術(shù)、對(duì)Linux都有了新的認(rèn)識(shí)。通過這次的實(shí)訓(xùn),我了解到,要真真正正的掌握計(jì)算機(jī)程序還不是一件簡(jiǎn)單容易的事兒,但真正掌握后,它帶給我們的將是無窮的便捷與科技,我喜歡高端便捷的生活。我希望我能做計(jì)算機(jī)這個(gè)萬能機(jī)器人的主人而不是奴隸,我會(huì)努力加油的!感謝學(xué)校,感謝老師給我的幫助,讓我的思想、技能又上了一個(gè)臺(tái)階!感謝!加油!

八、設(shè)計(jì)參考書

1、《嵌入式系統(tǒng)接口設(shè)計(jì)與Linux驅(qū)動(dòng)程序開發(fā)》

2、《ARM9嵌入式LINUX系統(tǒng)構(gòu)建與應(yīng)用》

4、MiniGUI編程手冊(cè)

5、Linux應(yīng)用程序編程

九、附件(程序)

#include

#include

/*包括 MiniGUI 常用的宏以及數(shù)據(jù)類型的定義*/ #include /*包含了全局的和通用的接口函數(shù)以及某些雜項(xiàng)函數(shù)的定義*/ #include

/*包含了

MiniGUI

繪圖函數(shù)的接口定義*/ #include

/*包含了

libminigui 中所有內(nèi)建控件的接口定義*/ #include #include #include

/*包含了許多UNIX系統(tǒng)服務(wù)的函數(shù)原型*/ #include

/*提供對(duì)I/O控制的函數(shù)*/

#define ID_LED1 101

/*定義各個(gè)控件與定時(shí)器的ID號(hào)*/ #define ID_LED2 102 #define ID_LED3 103 #define ID_LED4 104 #define ID_TEXT1 105 #define ID_TEXT2 106 #define ID_START 107 #define ID_STOP 108 #define ID_COMBOBOX 109 #define ID_TIMER 110

static int a,b,c,d=0;

/*定義LED燈的初始值*/ static int fd_led;

/*定義文件描述符*/

HWND hMainWnd;

/*定義主窗口句柄*/

static void draw_circular(HWND hdig,int x,int y,int r,int which)

/*自定義一個(gè)畫圓函數(shù),x、y、r、which分別表示圓心坐標(biāo)、半徑、顏色*/ {

HDC hdc;

/*定義設(shè)備上下文句柄*/ int color;color=((which==0)?PIXEL_green:PIXEL_red);

hdc=BeginPaint(hdig);

/*獲得設(shè)備上下文句柄*/ SetBrushColor(hdc,color);

/*設(shè)置畫刷顏色*/ FillCircle(hdc,x,y,r);

/*調(diào)用園填充函數(shù)*/ EndPaint(hdig,hdc);

/*釋放設(shè)備上下文句柄*/ }

static DLGTEMPLATE DlgInitProgress=

/*定義對(duì)話框模板.用static類型數(shù)據(jù),使該數(shù)據(jù)的定義只在所在文件中有效,以免因?yàn)槊挚臻g污染造成潛在的編譯或連接錯(cuò)誤*/ {

WS_BORDER|WS_CAPTION,/*對(duì)話框風(fēng)格,WS_BORDER創(chuàng)建有邊框的窗口 ,WS_CAPTION創(chuàng)建含標(biāo)題欄的主窗口*/

WS_EX_NONE,/*對(duì)話框擴(kuò)展風(fēng)格,WS_EX_NONE表示無擴(kuò)展風(fēng)格*/

0,0,800,480,/*對(duì)話框位置,左上角坐標(biāo)(0,0),800、480分別為寬和高*/

“MY_LED_CONTROL”,/*對(duì)話框標(biāo)題*/

0,/*對(duì)話框圖標(biāo)*/

0,/*對(duì)話框菜單*/

9,/*對(duì)話框中控件個(gè)數(shù)。這個(gè)必須要匹配*/

NULL,/*pointer to control array*/

0

/*附加值*/ };

static CTRLDATA CtrlInitData[]=

/*控件數(shù)組*/ {

{

“static”,/*控件類型*/

WS_VISIBLE|SS_SIMPLE,/*控件風(fēng)格,WS_VISIBLE創(chuàng)建初始可見的窗口,SS_SIMPLE顯示單行文本*/

100,270,150,40,/*控件位置*/

ID_TEXT1,/*控件ID*/

“Please input frequency”,/*控件內(nèi)容*/

0,/*附加值*/

WS_EX_NONE

/*控件擴(kuò)展風(fēng)格*/

}, { “static”, WS_VISIBLE|SS_SIMPLE, 605,270,150,40, ID_TEXT2, “HZ”, 0, WS_EX_NONE

}, {

“button”, WS_VISIBLE|WS_TABSTOP, 135,160,80,60, ID_LED1, “LED1”, 0, WS_EX_NONE

}, {

“button”, WS_VISIBLE|WS_TABSTOP, 285,160,80,60, ID_LED2, “LED2”, 0, WS_EX_NONE

}, {

“button”, WS_VISIBLE|WS_TABSTOP, 435,160,80,60, ID_LED3, “LED3”, 0,/*WS_TABSTOP支持Tab鍵*/

WS_EX_NONE

}, {

“button”,WS_VISIBLE|WS_TABSTOP,585,160,80,60,ID_LED4,“LED4”,0,WS_EX_NONE

}, {

“button”,WS_VISIBLE|WS_TABSTOP,285,360,80,60,ID_START,“START”,0,WS_EX_NONE

}, {

“button”,WS_VISIBLE|WS_TABSTOP,435,360,80,60,ID_STOP,“STOP”,0,WS_EX_NONE

}, {

CTRL_COMBOBOX,WS_VISIBLE|WS_TABSTOP|CBS_AUTOSPIN|CBS_AUTOLOOP,/*CBS_AUTOSPIN創(chuàng)建旋鈕數(shù)字框,CBS_AUTOLOOP框中的數(shù)字將自動(dòng)循 環(huán)顯示*/

435,270,80,40,ID_COMBOBOX,“0”,/*旋鈕數(shù)字框初始值*/

0,WS_EX_NONE

} };

static int DialogBoxProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)/*對(duì)話框過程函數(shù),用來接收和處理所有發(fā)送到該窗口的消息*/ {

int number;

/*用來存從旋鈕數(shù)字框獲得的數(shù)值*/

static int t=0;

int num;

/*存放定時(shí)時(shí)間*/

switch(message)

{

case MSG_INITDIALOG:

/*用戶在定義自己的對(duì)話框回調(diào)函數(shù)時(shí),需要處理

MSG_INITDIALOG消息,該消息是在MiniGUI根據(jù)對(duì)話框模板建立對(duì)話框以及 控件之后,發(fā)送到對(duì)話框回調(diào)函數(shù)的。*/

SendDlgItemMessage(hWnd, ID_COMBOBOX, CB_SETSPINRANGE, 0, 10000);

/*設(shè)置旋鈕數(shù)字框的最大小值*/

return 1;

case MSG_PAINT:/*重繪消息*/

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

printf(“*************************init draw_circular******************************n”);

case MSG_TIMER:t++;

/*定時(shí)器消息,這里完成LED燈的閃爍*/

if(t%2!=0)

{

ioctl(fd_led, 0,0);

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3);printf(“*************************time red******************************n”);

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

break;

}

else

{

ioctl(fd_led, 1,0);

ioctl(fd_led, 1, 1);

ioctl(fd_led, 1, 2);

ioctl(fd_led, 1, 3);printf(“*************************time green******************************n”);

draw_circular(hWnd,175,90,30,0);

draw_circular(hWnd,325,90,30,0);

draw_circular(hWnd,475,90,30,0);

draw_circular(hWnd,625,90,30,0);

break;

}

case MSG_COMMAND: /*擊鍵消息*/

switch(wParam)

{

case ID_LED1:a++;

/*控制LED燈亮暗*/

if(a%2!=0)

{

ioctl(fd_led,0,0);

draw_circular(hWnd,175,90,30,1);

}

else

{ /

ioctl(fd_led,1,0);

draw_circular(hWnd,175,90,30,0);

}

printf(“******************led1********************************n”);

break;

case ID_LED2:b++;

if(b%2!=0)

{

ioctl(fd_led,0,1);

draw_circular(hWnd,325,90,30,1);

}

else

{

ioctl(fd_led,1,1);

draw_circular(hWnd,325,90,30,0);

}

printf(“*******************led2********************************n”);

break;

case ID_LED3:c++;

if(c%2!=0)

{

ioctl(fd_led,0,2);

draw_circular(hWnd,475,90,30,1);

}

else

{

ioctl(fd_led,1,2);

draw_circular(hWnd,475,90,30,0);

}

printf(“*******************led3********************************n”);

break;

case ID_LED4:d++;

if(d%2!=0)

{

ioctl(fd_led,0,3);

draw_circular(hWnd,625,90,30,1);

printf(“*******************led33********************************n”);

}

else

{

ioctl(fd_led,1,3);

draw_circular(hWnd,625,90,30,0);

}

printf(“*******************led4********************************n”);

break;

case ID_START:printf(“*******************start1*********************n”);

number=SendMessage(GetDlgItem(hWnd,ID_COMBOBOX), CB_GETSPINVALUE, 0, 0);/*獲取旋鈕數(shù)字框的數(shù)值*/

printf(“**********%d*******************n”,number);

printf(“*******************start2*********************n”);

if(number!=0)

{

printf(“*******************start3*********************n”);

num=(int)(1000*(1.0/number));

/*將頻率轉(zhuǎn)換為時(shí)間*/

printf(“*******************start4*********************n”);

}

else

{

printf(“*******************start5*********************n”);

num=1000;

}

printf(“*******************start6*********************n”);

printf(“*******************start7*********************n”);

printf(“*******************start8*********************n”);

SetTimer(hWnd,ID_TIMER,num);/*創(chuàng)建定時(shí)器,時(shí)間為num*10ms*/ printf(“*************************SetTimer OK******************************n”);

SendMessage(hWnd,BM_CLICK,0,0);

/*發(fā)送點(diǎn)擊信息*/ printf(“*************************SendMessage OK******************************n”);

//for(i=0;i++;i<10000)

/*當(dāng)初用for循環(huán)時(shí)無法進(jìn)入循環(huán),也許是因?yàn)橄⒈旧碛醒h(huán)機(jī)制,用for循環(huán)太多也許沖突,所以后來用了定時(shí)器*/

//{

//

printf(“********%d**********n,i”);

//

ioctl(fd_led, 1,0);//

ioctl(fd_led, 1, 1);//

ioctl(fd_led, 1, 2);//

ioctl(fd_led, 1, 3);

//

draw_circular(hWnd,175,90,30,0);

//

draw_circular(hWnd,325,90,30,0);

//

draw_circular(hWnd,475,90,30,0);

//

draw_circular(hWnd,625,90,30,0);

printf(“*******************start9*********************n”);

// usleep(number);

//usleep(num);

//

ioctl(fd_led, 0,0);//

ioctl(fd_led, 0, 1);//

ioctl(fd_led,0, 2);//

ioctl(fd_led, 0, 3);

// draw_circular(hWnd,175,90,30,1);

// draw_circular(hWnd,325,90,30,1);

// draw_circular(hWnd,475,90,30,1);

// draw_circular(hWnd,625,90,30,1);

// printf(“*******************start10*********************n”);

//usleep(number);

//usleep(num);

// }

printf(“*******************start********************************n”);

break;

case ID_STOP:

KillTimer(hWnd,ID_TIMER);/*關(guān)閉定時(shí)器。下面的表示燈滅*/

ioctl(fd_led, 0,0);

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3);

draw_circular(hWnd,175,90,30,1);

draw_circular(hWnd,325,90,30,1);

draw_circular(hWnd,475,90,30,1);

draw_circular(hWnd,625,90,30,1);

printf(“**************stop******************n”);

break;

}

}

return(DefaultDialogProc(hWnd,message,wParam,lParam));

/*對(duì)話框的缺省消息處理由 DefaultDialogProc 函數(shù)完成*/ }

static void InitDialogBox(HWND hWnd){ DlgInitProgress.controls=CtrlInitData;

/*將對(duì)話框模板結(jié)構(gòu)和控件結(jié)構(gòu)數(shù)組關(guān)聯(lián)起來*/ DialogBoxIndirectParam(&DlgInitProgress,hWnd,DialogBoxProc,0L);/*創(chuàng)建對(duì)話框*/

printf(“*************create dialog**********************n”);}

/*****************************************************************

主窗口的過程函數(shù)

static int LedWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){

HDC hdc;

switch(message)

{

case MSG_PAINT:

hdc = BeginPaint(hWnd);

TextOut(hdc, 60, 60, “My leds control!”);

EndPaint(hWnd, hdc);

return 0;

case MSG_CLOSE:

DestroyMainWindow(hWnd);

PostQuitMessage(hWnd);

return 0;

}

return DefaultMainWinProc(hWnd, message, wParam, lParam);

}

*********************************************************************/ int MiniGUIMain(int argc, const char* argv[])

{

// MSG Msg;

// MAINWINCREATE CreateInfo;/*描述主窗口的屬性*/

#ifdef _MGRM_PROCESSES

JoinLayer(NAME_DEF_LAYER , “l(fā)ed” , 0 , 0);

/*選擇PROCESSES模式*/

#endif

printf(“****************into main*********************n”);

fd_led=open(“/dev/GPIO-Control”,0);

/*打開驅(qū)動(dòng)設(shè)備*/

if(fd_led < 0)

{

perror(“open device led”);

exit(1);

}

ioctl(fd_led, 0, 0);

/*初始燈滅*/

ioctl(fd_led, 0, 1);

ioctl(fd_led, 0, 2);

ioctl(fd_led, 0, 3);

InitDialogBox(HWND_DESKTOP);

close(fd_led);/*********************************************************** CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;/窗口風(fēng)格/

CreateInfo.dwExStyle=WS_EX_NONE;

/窗口擴(kuò)展風(fēng)格/

CreateInfo.spCaption=“MY_LED_CONTROL_WIN”;

/窗口標(biāo)題/

CreateInfo.hMenu=0;

/菜單/

CreateInfo.hCursor= GetSystemCursor(0);

/光標(biāo)/

CreateInfo.hIcon=0;

/圖標(biāo)/

CreateInfo.MainWindowProc=LedWinProc;

/設(shè)置主窗口的窗口函數(shù),所用發(fā)往該窗口的消息由該函數(shù)處理/

CreateInfo.lx=0;

/窗口位置/

CreateInfo.ty = 0;

CreateInfo.rx = 240;

CreateInfo.by = 180;

CreateInfo.iBkColor=COLOR_lightwhite;

/設(shè)置背景顏色/

CreateInfo.dwAddData=0;

/附加數(shù)值/

CreateInfo.hHosting=HWND_DESKTOP;

/設(shè)置窗口的托管窗口為桌面窗口/

hMainWnd = CreateMainWindow(&CreateInfo);

/創(chuàng)建主窗口,返回創(chuàng)建窗口的句柄/

if(hMainWnd == HWND_INVALID)

return-1;

ShowWindow(hMainWnd,SW_SHOWNORMAL);

/顯示窗口的顯示方式/

while(GetMessage(&Msg, hMainWnd))/獲取主窗口的句柄,指向MSG結(jié)構(gòu)指針/

{

TranslateMessage(&Msg);

/將擊鍵消息轉(zhuǎn)換為MSG_CHAR消息,然后直接發(fā)送到窗口的過程函數(shù)/

DispatchMessage(&Msg);

/獲取消息的目標(biāo)窗口的窗口過程,然后直接調(diào)用 該窗口過程函數(shù)對(duì)消息進(jìn)行處理/

}

MainWindowThreadCleanup(hMainWnd);/清除主窗口所使用消息隊(duì)列的系統(tǒng)資源/ *****************************************************************************/

return 0;

}

#ifndef _MGRM_PROCESSES #include #endif

第二篇:嵌入式操作系統(tǒng)程課程設(shè)計(jì)報(bào)告

目錄

一、實(shí)習(xí)任務(wù)和目的????????????1

二、實(shí)習(xí)基本要求?????????????1

三、實(shí)習(xí)題目???????????????1

四、實(shí)習(xí)地點(diǎn)???????????????1

五、實(shí)習(xí)內(nèi)容???????????????3

六、實(shí)習(xí)總結(jié)、心得體會(huì)??????????8

七、參考資料???????????????9

0

一、實(shí)習(xí)的任務(wù)和目的:

本次實(shí)習(xí)的目的是在學(xué)生已掌握了嵌入式操作系統(tǒng)的知識(shí)、對(duì)當(dāng)前嵌入式操作系統(tǒng)的主要種類和應(yīng)用領(lǐng)域有較清晰的概念的基礎(chǔ)上,以嵌入式LINUX操作系統(tǒng)教學(xué)內(nèi)容為指導(dǎo),以S3C2410經(jīng)典實(shí)驗(yàn)箱為平臺(tái),使學(xué)生掌握配置、裁剪、移植和維護(hù)嵌入式LINUX操作系統(tǒng)的技能和相關(guān)理論知識(shí),具備一個(gè)初級(jí)嵌入式LINUX系統(tǒng)程序員的綜合技能。

本次實(shí)習(xí)的任務(wù)是通過教師對(duì)嵌入式LINUX的配置、裁剪、移植以及文件系統(tǒng)的移植等內(nèi)容的講解,讓學(xué)生掌握如何搭建嵌入式開發(fā)環(huán)境、嵌入式LINUX系統(tǒng)移植、文件系統(tǒng)移植以及簡(jiǎn)單的驅(qū)動(dòng)程序的開發(fā)。

二、實(shí)習(xí)基本要求:

1、了解嵌入式操作系統(tǒng)技術(shù)前沿、應(yīng)用領(lǐng)域、發(fā)展趨勢(shì)及相關(guān)領(lǐng)域研究成果;

2、熟悉嵌入式操作系統(tǒng)的特點(diǎn)、分類、基本概念;

3、熟悉主流實(shí)時(shí)操作系統(tǒng)。深入了解嵌入式LINUX,包括系統(tǒng)配置、裁剪、移植;

4、熟悉并掌握嵌入式文件系統(tǒng)的建立、移植;

5、以嵌入式處理器器S3C2410為例,掌握嵌入式LINUX驅(qū)動(dòng)程序開發(fā)的一般方法。

三、實(shí)習(xí)題目:

1、復(fù)習(xí)LINUX系統(tǒng)基本操作,常用命令;

2、嵌入式LINU開發(fā)基礎(chǔ)知識(shí);

3、嵌入式LINUX開發(fā)環(huán)境的建立;

4、Bootloader移植;

5、LINUX內(nèi)核的配置、裁剪;

6、LINUX內(nèi)核移植與編譯;

7、建立根文件系統(tǒng);

8、模塊方式驅(qū)動(dòng)程序設(shè)計(jì);

9、中斷、LED驅(qū)動(dòng)程序設(shè)計(jì)。

四、實(shí)習(xí)地點(diǎn):

應(yīng)用技術(shù)學(xué)院五樓四機(jī)房。

五、實(shí)習(xí)內(nèi)容:

第一部分 嵌入式LINU開發(fā)基礎(chǔ)知識(shí): 1.1 嵌入式LINUX簡(jiǎn)介

嵌入式系統(tǒng)的定義為以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng),對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng),它的主要特點(diǎn)是潛入、專用。本次實(shí)訓(xùn)的平臺(tái)是在LINUX下的ubuntu系統(tǒng)上進(jìn)行的。

1.2 嵌入式LINUX開發(fā)平臺(tái)簡(jiǎn)介

本次實(shí)訓(xùn)的需要一臺(tái)主機(jī)及一塊開發(fā)板,它們需要滿足一定的硬件要求,主機(jī)的硬件要求是:有一個(gè)25針的并口接口,它用來連接JTAG連線,有一個(gè)9針的串口接口,支持網(wǎng)絡(luò),至少20GB的硬盤,用到的開發(fā)板是s3c2410,它有如下的部件:64MB SDRAM,1MB NOR Flash,64MB NAND Flash,兩個(gè)網(wǎng)卡,5個(gè)串口(內(nèi)置3個(gè),外擴(kuò)2個(gè)),音頻輸入輸出。2.5寸IDE接口,標(biāo)準(zhǔn)SD/MMC卡座,GPIO按鍵,外接I2C接口的實(shí)時(shí)時(shí)鐘(RTC)芯片。1.3 嵌入式LINUX開發(fā)流程

(1)在主機(jī)上編譯Bootloader,然后通過JTAG燒入單板,(2)在主機(jī)上編譯嵌入式LINUX內(nèi)核,通過Bootloader燒入單板或直接啟動(dòng),(3)在主機(jī)上編譯各類應(yīng)用程序,單板啟動(dòng)內(nèi)核后通過NFS運(yùn)行他們,經(jīng)過驗(yàn)證后再燒入單板。1.4 嵌入式LINUX開發(fā)環(huán)境的建立

開發(fā)環(huán)境的搭建:硬件開發(fā)環(huán)境的搭建很簡(jiǎn)單,將主機(jī)與目標(biāo)板通過JTAG、串口線(接單板上的串口0)、網(wǎng)線(接單板上的網(wǎng)卡0)連接起來,將各類設(shè)備連接到目標(biāo)板上即可,軟件的搭建環(huán)境相對(duì)要復(fù)雜的多,時(shí)間也要得多,首先第一步需要移植U—boot,然后再來燒寫LINUX內(nèi)核,再創(chuàng)建根文件系統(tǒng),最后才可以來寫相應(yīng)的驅(qū)動(dòng)程序來進(jìn)行開發(fā)的!第二部分 嵌入式LINUX系統(tǒng)構(gòu)建:

2.1 Bootloader移植

u-boot是德國(guó)DENX小組的開發(fā)用于多種嵌入式CPU的bootloader程序, u-boot不僅僅支持嵌入式LINUX系統(tǒng)的引導(dǎo),當(dāng)前,它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系統(tǒng)。u-boot除了支持PowerPC系列的處理器外,還能支持MIPS、x86、ARM、NIOS、XScale等諸多常用系列的處理器。移植過程:

在主機(jī)上創(chuàng)建一個(gè)文件夾,把以下四個(gè)已下載的文件復(fù)制到里面,這四個(gè)文件分別為:

u-boot.bin,----LINUX操作系統(tǒng)啟動(dòng)的bootloader;uImage,---LINUX操作系統(tǒng)內(nèi)核;

root.cramfs,----根文件系統(tǒng);yaffs.tar.bz2,----應(yīng)用程序壓縮包。運(yùn)行sjf2410-s命令如下:sjf2410-s /f:u-boot.bin。然后按回車,等待燒寫完成后,設(shè)置開發(fā)板的地址與服務(wù)器的地址,命令如下:設(shè)置本機(jī)服務(wù)器IP地址:(根據(jù)具體主機(jī)環(huán)境更改IP)setenv serverip 192.168.1.113,設(shè)置ARM設(shè)備IP地址:(隨意設(shè)置成與上面主機(jī)同一網(wǎng)段IP即可),setenv ipaddr 192.168.1.199,保存變量設(shè)置:saveenv。

2.2 內(nèi)核裁剪與移植

LINUX本次實(shí)驗(yàn)?zāi)夸浵麓娣胖呀?jīng)修改好的博創(chuàng)經(jīng)典2410平臺(tái)的內(nèi)核源碼包,將該源碼包拷貝到宿主機(jī)LINUX系統(tǒng)中,解壓至本次實(shí)驗(yàn)?zāi)夸?配置編譯生成內(nèi)核uImage文件燒寫到ARM設(shè)備中。在內(nèi)核根目錄下,用命令make menuconfig進(jìn)入配置界面,對(duì)系統(tǒng)進(jìn)行裁剪,如下:

選擇硬件系統(tǒng)

配置LCD驅(qū)動(dòng)

網(wǎng)卡驅(qū)動(dòng)

配置NANF Flash驅(qū)動(dòng)

配置文件系統(tǒng)

然后運(yùn)行 bootm 啟動(dòng)內(nèi)核即可。2.3 創(chuàng)建根文件系統(tǒng)

解壓busybox源碼后,進(jìn)入busybox源代碼目錄,打開Makefile,修改兩個(gè)地方,分別是在Makefile文件中的CROSS_COMPILE=后面添加上arm-LINUX-這一行以及ARCH ?=后面改成arm.然后在busybox根目錄下使用命令make menuconfig進(jìn)入配置界面進(jìn)行配置,如圖:

Busybox截圖

退出后,使用命令make,make install。用shell腳本創(chuàng)建根文件系統(tǒng)的目錄結(jié)構(gòu),并在想要運(yùn)行根文件系統(tǒng)的地方運(yùn)行腳本,需要?jiǎng)?chuàng)建一個(gè)文件夾rootfs,里面包括了一些LINUX下的基本的文件。還需要把busybox源碼目錄下的/etc 的內(nèi)容拷貝到此處創(chuàng)建的文件夾的etc下,修改拷貝過來的profile文件,修改初始化文件inittab和fstab,修改初始化的腳本文件,init.d/rcS,創(chuàng)建一個(gè)空的mdev.conf文件,在掛載根文件系統(tǒng)時(shí)用到,再把本機(jī)上的passwd,shadow,group文件拷貝過來,把busybox默認(rèn)安裝目中的文件全部復(fù)制到這里的rootfs中,會(huì)發(fā)現(xiàn)多了LINUXrc->bin/busybox,這是掛載文件系統(tǒng)需要執(zhí)行的,這時(shí),在rootfs目錄下,使用命令cp-rvf /rootfs/busybox-1.12.2/_install/*./,,到此,就用busybox創(chuàng)建了一個(gè)基本的文件系統(tǒng)。

第三部分 設(shè)備驅(qū)動(dòng)程序設(shè)計(jì):

3.1 模塊方式驅(qū)動(dòng)實(shí)驗(yàn)

在這里,需要有兩個(gè)程序,一個(gè)驅(qū)動(dòng)程序,一個(gè)用戶程序,驅(qū)動(dòng)程序通過用戶程序來調(diào)用,完成基本的讀寫以及注冊(cè)設(shè)備號(hào)等,在本程序中,用戶程序非常簡(jiǎn)單,驅(qū)動(dòng)程序的核心部分是如下代碼所示:

static struct file_operations demo_fops = { owner: THIS_MODULE, write:demo_write, read: demo_read, ioctl: demo_ioctl, open: demo_open, release: };demo_release, 其他的所有程序都是在這個(gè)基礎(chǔ)上延伸出來的。還有一個(gè)注冊(cè)設(shè)備號(hào)的函數(shù)如示:

register_chrdev(0, DEVICE_NAME, &pxa270_fops);假設(shè)本驅(qū)動(dòng)程序的源代碼名字是s3c2410_led.c編譯驅(qū)動(dòng)程序模塊的方法是把驅(qū)動(dòng)程序復(fù)制到內(nèi)核目錄下的drivers/char子目錄下,在drivers/char/Makefile中增加一行:obl-m +=s3c2410_led.o,然后在內(nèi)核根目錄下執(zhí)行make modules.就生成drivers/char/s3c2410_led.ko,再把它復(fù)制到開發(fā)板上,就可以使用insmod s3c2410_led.ko,rmmod s3c2410_led.ko了,此時(shí),就可以執(zhí)行本用戶程序了,結(jié)果如下:

3.2 LED驅(qū)動(dòng)實(shí)驗(yàn)

本實(shí)驗(yàn)的主要目的是寫一個(gè)驅(qū)動(dòng)程序來點(diǎn)亮開發(fā)板上的一顆LED燈。主要的程序核心還是集中在怎么給led燈引腳一個(gè)電平以及用戶程序中ioctl程序的使用。程序的核心代碼如下:

static struct file_operations s3c24xx_leds_fops = {.owner =

THIS_MODULE,.open

=

s3c24xx_leds_open,.ioctl =

s3c24xx_leds_ioctl, };static int s3c24xx_leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){

if(arg > 4){

return-EINVAL;

}

switch(cmd){

case IOCTL_LED_ON:

s3c2410_gpio_setpin(led_table[arg], 0);

return 0;

case IOCTL_LED_OFF:

s3c2410_gpio_setpin(led_table[arg], 1);

return 0;

default:

return-EINVAL;

} } 編譯好模塊后,復(fù)制到開發(fā)板目錄下即可在開發(fā)板下執(zhí)行,點(diǎn)亮led燈。

命令led_test 1 off/on,如此,就可以關(guān)閉或點(diǎn)亮一個(gè)led燈了!3.3 中斷按鍵控制LED實(shí)驗(yàn) 核心代碼如下:

注冊(cè)中斷:request_irq(button_irqs[i].irq, buttons_interrupt, button_irqs[i].flags,button_irqs[i].name,(void *)&press_cnt[i]);注冊(cè)備:register_chrdev(BUTTON_MAJOR, DEVICE_NAME, &s3c24xx_buttons_fops);中斷函數(shù):

static irqreturn_t buttons_interrupt(int irq, void *dev_id){

volatile int *press_cnt =(volatile int *)dev_id;

*press_cnt = *press_cnt + 1;/*

ev_press = 1;

wake_up_interruptible(&button_waitq);

return IRQ_RETVAL(IRQ_HANDLED);} 同理,把它的目標(biāo)文件放到內(nèi)核根目錄下的drivers/char編譯后,把生成的模塊文件復(fù)制開發(fā)板下,即可完成相應(yīng)的任務(wù),通過按鍵可以來控制led燈了,同時(shí),可以通過命令cat /proc/devices, cat /proc/interrupt來查看設(shè)備及中斷的注冊(cè)情況!

六、實(shí)習(xí)總結(jié)、心得體會(huì):

通過為期將近幾周的嵌入式操作系統(tǒng)實(shí)習(xí),我收獲頗深。這次實(shí)習(xí)雖然短,可是收獲很大,感覺平時(shí)上課學(xué)到的東西都沒有這幾天學(xué)到的多。正所謂:“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”。這次實(shí)習(xí)可以形象的概括為:“山重水復(fù)疑無路,柳暗花明又一村”。只有自己經(jīng)歷過才會(huì)真正的懂,書本知識(shí)還遠(yuǎn)遠(yuǎn)不夠!

此次嵌入式操作系統(tǒng)實(shí)習(xí)給我最深的體會(huì)就是:理論+細(xì)心+實(shí)踐才能在實(shí)際 生產(chǎn)中體現(xiàn)所學(xué)知識(shí)的價(jià)值。

在嵌入式行業(yè)發(fā)展如此快速完善的今天,理論與細(xì)心與實(shí)際的完美結(jié)合才能讓自己在專業(yè)領(lǐng)域占有一席之地。在實(shí)習(xí)中,我初步了解了嵌入式處理器S3C2410的工作原理、也加深了對(duì)嵌入式處理器S3C2410的認(rèn)識(shí);也見識(shí)了關(guān)于嵌入式處理器的一些工作方式等。

幾周的嵌入式操作系統(tǒng)實(shí)習(xí)結(jié)束了,做了好幾個(gè)小實(shí)驗(yàn),有成功也有失敗,然而終究還是學(xué)會(huì)了很多東西。在整個(gè)實(shí)習(xí)期間,我體會(huì)到了自己的進(jìn)步,并且從中也體會(huì)到了它的快樂。實(shí)習(xí)也讓我明白了:第一,通過實(shí)踐真正覺得自己可以做些什么了有點(diǎn)存在的小成就感;第二,通過嵌入式操作系統(tǒng)實(shí)習(xí),加強(qiáng)了我們的動(dòng)手實(shí)踐能力和設(shè)計(jì)創(chuàng)新精神。作為信息時(shí)代的大學(xué)生基本的動(dòng)手能力是一切工作和創(chuàng)造的基礎(chǔ)和必要條件。第三,在嵌入式操作系統(tǒng)實(shí)習(xí)的這些日子里,大家的團(tuán)隊(duì)精神得到了很大的加強(qiáng),閉門就會(huì)造車那是不可能的事情。

在為期兩周的實(shí)習(xí)當(dāng)中感觸最深的便是實(shí)踐聯(lián)系理論的重要性,當(dāng)遇到實(shí)際問題時(shí),只要認(rèn)真思考,運(yùn)用所學(xué)的知識(shí),一步一步的去探索,是完全可以解決遇到的一般問題的。本次實(shí)習(xí)的目的主要是:使我們嵌入式操作系統(tǒng)及LINUX相關(guān)操作有一定的感性和理性認(rèn)識(shí),培養(yǎng)和鍛煉我們的實(shí)際動(dòng)手能力。使我們的理論知識(shí)與實(shí)踐充分地結(jié)合,作到不僅具有專業(yè)知識(shí),而且還具有較強(qiáng)的實(shí)踐動(dòng)手能力,能分析問題和解決問題的應(yīng)用型技術(shù)人才,為以后的順利就業(yè)作好準(zhǔn)備。此次實(shí)習(xí)學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,和與人合作共同提高,都受益非淺,今后的制作應(yīng)該更輕松,自己也都能扛的起并高質(zhì)量的完成項(xiàng)目。在此,感謝老師及其他老師的細(xì)心指導(dǎo),也同樣謝謝其他各組同學(xué)的無私幫助!

七、參考資料:

1、雅默著.構(gòu)建嵌入式LINUX系統(tǒng)[M].北京:中國(guó)電力出版社.2004年

2、孫瓊著.嵌入式LINUX應(yīng)用程序開發(fā)詳解[M].北京:人民郵電出版.2003年 3、2410經(jīng)典實(shí)驗(yàn)指導(dǎo)書3.2 北京博創(chuàng)興業(yè)科技有限公司2410經(jīng)典實(shí)驗(yàn)箱配套教材

4、韋東山著.嵌入式LINUX應(yīng)用開發(fā)完全手冊(cè)

北京:人民郵電出版

第三篇:嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告

河南機(jī)電高等專科學(xué)校

嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告

系 部: 電子通信工程系 專 業(yè): 班 級(jí): 學(xué)生姓名: 學(xué) 號(hào):

2012年 06月

嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)任務(wù)書

1.時(shí)間:2012年06月11日~2012年06月15日 2.課程設(shè)計(jì)單位:河南機(jī)電高等專科學(xué)校

3.課程設(shè)計(jì)目的:深入學(xué)習(xí)單片機(jī)編程技巧,熟悉電子產(chǎn)品設(shè)計(jì)制作全過程。能夠利用匯編語言完成十字路口交通燈的設(shè)計(jì)。4.課程設(shè)計(jì)任務(wù):

按交通燈的具體要求來寫

―――-紅色文字為說明,寫報(bào)告時(shí)請(qǐng)先刪除!!

嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告

前言:

×××××××××××××××××××××××××××××××××××××××××××××××-----宋體,小四,不加粗,單倍行距

實(shí)訓(xùn)報(bào)告: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

??????

×××××××××××××××××××××××××××××××

―――-紅色文字為說明,寫報(bào)告時(shí)請(qǐng)先刪除!!

心得體會(huì): ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

??????

××××××××××××××××××××××××××××××××××××××××××××××××××

參考文獻(xiàn):

???以下紅色文字為“參考文獻(xiàn)”的示例,寫報(bào)告時(shí)請(qǐng)先刪除!!填寫上你自己的“參考文獻(xiàn)”

[1] 周小謙,丁功揚(yáng),郭日彩,三峽電力系統(tǒng)的形成和發(fā)展,電網(wǎng)技術(shù)。1998,88(3):p1-3 [2]-----宋體,小五,不加粗,單倍行距

第四篇:北京科技大學(xué) 嵌入式課程設(shè)計(jì)報(bào)告

《嵌入式控制系統(tǒng)》 課程設(shè)計(jì)報(bào)告

學(xué) 院

專業(yè)班級(jí)

學(xué)

號(hào)

指導(dǎo)教師

_

目錄

摘要..............................................................................................................................................4

引言

隨著芯片技術(shù)和電子產(chǎn)品智能化的飛速發(fā)展,嵌入式技術(shù)越來越受到人們的關(guān)注,應(yīng)用領(lǐng)域幾乎遍及所有的電子產(chǎn)品:智能機(jī)器人、網(wǎng)絡(luò)通信、軍用設(shè)備、汽車導(dǎo)航、環(huán)境保護(hù)、智能儀器等等。嵌入式系統(tǒng)不僅融合了計(jì)算機(jī)軟、硬件技術(shù)、通訊技術(shù)和半導(dǎo)體微電子技術(shù),而且針對(duì)實(shí)際應(yīng)用系統(tǒng)要求,將相應(yīng)的計(jì)算機(jī)直接嵌入到應(yīng)用系統(tǒng)中,并可針對(duì)應(yīng)用需求對(duì)軟、硬件進(jìn)行優(yōu)化、裁減。

嵌入式控制系統(tǒng)是一門新興的課程,通過本次課程設(shè)計(jì)可以更好地掌握這門新技術(shù),對(duì)今后的發(fā)展有很大幫助。

開發(fā)方法和流程,熟悉Intel XScale硬件平臺(tái)及其應(yīng)用處理機(jī)的使用方法,熟悉WINCE嵌入式系統(tǒng)的基本原理、概念。

4.設(shè)計(jì)原理 4.1 LED發(fā)光原理

LED(Light Emitting Diode),即發(fā)光二極管。是一種半導(dǎo)體固體發(fā)光器件。它是利用固體半導(dǎo)體置于一個(gè)有引線的架子上,然后四周用環(huán)氧樹脂密封,起到保護(hù)內(nèi)部芯線的作用,所以LED的抗震性能好。

發(fā)光二極管的核心部分是由P型半導(dǎo)體和N型半導(dǎo)體組成的晶片,如圖1,在P型半導(dǎo)體和N型半導(dǎo)體間有一個(gè)過渡層,稱為P-N結(jié)。在某些半導(dǎo)體材料的P-N結(jié)中,注入的少數(shù)載流子與多數(shù)載流子復(fù)合時(shí),會(huì)把多余的能量以光的形式釋放出來,從而把電能直接轉(zhuǎn)換為光能。P-N結(jié)加反向電壓,少數(shù)載流子難以注入,故不發(fā)光。利用注入式電致發(fā)光原理制作的二極管叫發(fā)光二極管,通稱LED。當(dāng)它處于正向工作狀態(tài)時(shí)(即兩端加上正向電壓),電流從LED陽極流向陰極時(shí),半導(dǎo)體晶體就發(fā)出從紫外到紅外不同顏色的光線,光的強(qiáng)弱與電流有關(guān)。

圖1 發(fā)光二極管的核心組成部分

圖3 控件設(shè)計(jì)圖

其中,顯示按鈕是作為數(shù)碼管靜態(tài)顯示的按鈕,如顯示1235; 亮、滅、閃爍這三個(gè)按鍵是通過GPIO控制發(fā)光二極管的狀態(tài); 測(cè)試按鍵是實(shí)現(xiàn)2,4、6、8數(shù)碼管循環(huán)動(dòng)態(tài)顯示的按鈕; 復(fù)位按鍵是實(shí)現(xiàn)中斷次數(shù)清零功能的按鈕; Apply按鍵是啟動(dòng)更改的循環(huán)顯示周期的按鍵。

以上就是整個(gè)課程設(shè)計(jì)的全部控制界面,通過不同的按鈕操作,實(shí)現(xiàn)不同的功能。

5.3基本功能的實(shí)現(xiàn)

windowsCE是一個(gè)界面友好的嵌入式操作系統(tǒng),系統(tǒng)提供了豐富了控件,極大的方便了用戶的開發(fā)。C++是優(yōu)秀的編程語言,在EVC環(huán)境下,編寫的難度大大降低,尤其是界面的處理。由于實(shí)驗(yàn)平臺(tái)提供了相應(yīng)的驅(qū)動(dòng)程序,所以本次實(shí)驗(yàn)并不需要了解其硬件操作,大大縮短了一個(gè)嵌入式應(yīng)用的開發(fā)速度。通過本次嵌入式實(shí)

圖5 LED數(shù)碼管循環(huán)顯示2,4,6,7 6.2 LED數(shù)碼管清零功能實(shí)現(xiàn)結(jié)果

通過控制面板上的操作按鍵,實(shí)現(xiàn)清零功能,當(dāng)按鍵按下去之后,四個(gè)LED數(shù)碼管的顯示數(shù)字全部都會(huì)變?yōu)榱恪R妶D6

6.4 頻率設(shè)置功能實(shí)現(xiàn)結(jié)果

閃爍周期可以通過鍵盤輸入來進(jìn)行設(shè)置,本課程設(shè)計(jì)設(shè)置的為0~9之間,基值為100ms,通過改變閃爍周期來控制2、4、6、8循環(huán)顯示的頻率。見圖8.和圖9.圖8 閃爍周期為5時(shí)的結(jié)果

力,也增強(qiáng)了我們的團(tuán)隊(duì)協(xié)作能力。有什么不懂不明白的地方要及時(shí)請(qǐng)教老師或上網(wǎng)查詢,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒有弄不懂的知識(shí)。

} //{{AFX_DATA_MAP(CLedDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP BEGIN_MESSAGE_MAP(CLedDlg, CDialog)

//{{AFX_MSG_MAP(CLedDlg)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON_ON, OnButtonOn)ON_BN_CLICKED(IDC_BUTTON_OFF, OnButtonOff)ON_BN_CLICKED(IDC_BUTTON_FLASH, OnButtonFlash)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)ON_BN_CLICKED(IDC_BUTTON_RESET, OnButtonReset)ON_BN_CLICKED(IDC_BUTTON_APPLY, OnButtonApply)//}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CLedDlg message handlers

BOOL CLedDlg::OnInitDialog(){

CDialog::OnInitDialog();// Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog

}

void CLedDlg::OnButtonSet(){

//KillTimer(1);m_test=FALSE;UINT val =GetDlgItemInt(IDC_EDIT_NUM,&b,FALSE);memset(data,0,4);if(b){ BOOL b;BYTE data[4];DWORD bytes;// TODO: Add your control notification handler code here m_test=false;m_flash=false;n=0;ntime=0;flashtime=5;SetTimer(1,100,NULL);

return TRUE;// return TRUE unless you set the focus to a control

WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);} void CLedDlg::OnButtonOff(){

}

void CLedDlg::OnButtonFlash(){

}

void CLedDlg::OnTimer(UINT nIDEvent){

// TODO: Add your message handler code here and/or call default

BYTE test[4]={2,4,6,8};BYTE data[4];DWORD bytes;// TODO: Add your control notification handler code here

m_flash=!m_flash;// TODO: Add your control notification handler code here

//KillTimer(1);m_flash=FALSE;m_bValue = TRUE;WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);

} if(ReadFile(m_hDev3,&val,sizeof(val),&bytes,NULL)){

if(val!=oldval){ SetDlgItemInt(IDC_EDIT_INTERRUPT,val,FALSE);oldval=val;

} else {

}

} m_test=FALSE;for(i=0;i<4;i++){ } WriteFile(m_hDev,data,4,&bytes,NULL);data[i]=ledfont[0];TCHAR str[64];wsprintf(str,TEXT(“Error %d”),GetLastError());SetDlgItemText(IDC_EDIT_INTERRUPT,str);CDialog::OnTimer(nIDEvent);CDialog::OnTimer(nIDEvent);void CLedDlg::OnButtonTest()

flashtime=str[0]-'0';

if(flashtime==0)

{

flashtime=1;

} } }

第五篇:嵌入式系統(tǒng)基礎(chǔ)課程設(shè)計(jì)報(bào)告

河南機(jī)電高等專科學(xué)校

《嵌入式系統(tǒng)基礎(chǔ)》 課程設(shè)計(jì)報(bào)告

設(shè)計(jì)題目: 系 部: 電子通信工程系 班 級(jí): 學(xué) 號(hào): 學(xué)生姓名: 成 績(jī):

2012年 05月

《嵌入式系統(tǒng)基礎(chǔ)》課程設(shè)計(jì)任務(wù)書 1.時(shí)間:2012年05月14日~2011年05月25日 2.課程設(shè)計(jì)單位:河南機(jī)電高等專科學(xué)校

3.課程設(shè)計(jì)目的:掌握《嵌入式系統(tǒng)基礎(chǔ)》課程基本概念、基本原理,具有一定的單片機(jī)設(shè)計(jì)能力,能夠利用所學(xué)知識(shí)完成設(shè)計(jì)內(nèi)容,提高實(shí)際動(dòng)手能力。4.課程設(shè)計(jì)任務(wù):

①參考相關(guān)的的書籍、資料,根據(jù)設(shè)計(jì)要求完成原理圖設(shè)計(jì); ②制作電路板并完成調(diào)試; ③繪制軟件流程圖; ④完成軟件設(shè)計(jì)并完成調(diào)試;

⑤作好筆記,對(duì)自己所發(fā)現(xiàn)的疑難問題及時(shí)請(qǐng)教解決; ⑥聯(lián)系自己所學(xué)知識(shí),總結(jié)本次設(shè)計(jì)經(jīng)驗(yàn); ⑦認(rèn)真完成課程設(shè)計(jì)報(bào)告。

5.設(shè)計(jì)要求

根據(jù)所給具體的設(shè)計(jì)要求來寫!

《嵌入式系統(tǒng)基礎(chǔ)》課程設(shè)計(jì)報(bào)告

前言:

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

一、硬件設(shè)計(jì)

1.設(shè)計(jì)思路及原理框圖

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

××××××××××××××××××××××××××××××× 2.采用的芯片功能介紹

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

××××××××××××××××××××××××××××××× 3.原理圖

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

×××××××××××××××××××××××××××××××

二、軟件設(shè)計(jì)

1.設(shè)計(jì)思路

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

××××××××××××××××××××××××××××××× 2.程序流程圖(必須要有)

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× ………………

××××××××××××××××××××××××××××××× 3.具體程序(可選,但流程圖一定要有)

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

×××××××××××××××××××××××××××××××

心得體會(huì): ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

………………

×××××××××××××××××××××××××××××××

參考文獻(xiàn):

[1] 付家才 電子實(shí)驗(yàn)與實(shí)踐.北京:高等教育出版社130-150頁

[2] 李東生、張勇、許四毛 《Protel 99SE電路設(shè)計(jì)技術(shù)入門與應(yīng)用》電子工業(yè)出版社231-300頁

………………

格式要求:

標(biāo)題按照所給模板格式書寫。

正文字體為:中文宋體,西文(字母和數(shù)字):Times New Roman,小四號(hào)字; 段落:兩端對(duì)齊,首行縮進(jìn)2字符,行距固定值20磅,其他設(shè)置為默認(rèn)。

―――-紅色文字為說明,寫報(bào)告時(shí)請(qǐng)先刪除!!

下載嵌入式課程設(shè)計(jì)報(bào)告word格式文檔
下載嵌入式課程設(shè)計(jì)報(bào)告.doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    嵌入式課程設(shè)計(jì)心得體會(huì)

    嵌入式課程設(shè)計(jì)心得體會(huì) 本學(xué)期為期一周的嵌入式課程設(shè)計(jì)在不知不覺中結(jié)束了,雖說這次課程設(shè)計(jì)時(shí)間不是很長(zhǎng),但是感覺自己收獲頗豐,不僅學(xué)習(xí)到了一些新知識(shí),回顧了以前的一些快......

    嵌入式系統(tǒng)課程設(shè)計(jì)

    《嵌入式系統(tǒng)概論》綜合設(shè)計(jì)報(bào)告書 設(shè)計(jì)題目:用鍵盤控制LED顯示不同圖形 中央民族大學(xué) 二零零八年十月三十一日 一、 設(shè)計(jì)目的 了解LED點(diǎn)陣和矩陣鍵盤的工作原理。 二、 設(shè)計(jì)......

    《嵌入式系統(tǒng)》課程設(shè)計(jì)題目

    《嵌入式系統(tǒng)》 課程設(shè)計(jì)題目及要求 設(shè)計(jì)報(bào)告要求: 1. 課題研究意義、現(xiàn)狀及應(yīng)用分析; 2. 課題總體方案設(shè)計(jì)及功能模塊介紹; 3. 系統(tǒng)硬件平臺(tái)及接口設(shè)計(jì); 4. 系統(tǒng)軟件功能設(shè)計(jì),包......

    《嵌入式系統(tǒng)》課程設(shè)計(jì)題目

    《嵌入式系統(tǒng)》 課程設(shè)計(jì)題目及要求 2013年12月24日 設(shè)計(jì)報(bào)告要求: 1. 課題研究意義、現(xiàn)狀及應(yīng)用分析; 2. 課題總體方案設(shè)計(jì)及功能模塊介紹; 3. 系統(tǒng)硬件平臺(tái)及接口設(shè)計(jì); 4. 系......

    嵌入式程序設(shè)計(jì)課程設(shè)計(jì)(五篇)

    課程設(shè)計(jì) 課 程 名嵌入式軟件開發(fā)技術(shù) 題 目 基于嵌入式Linux的溫度監(jiān)測(cè)系統(tǒng)的 設(shè)計(jì)與實(shí)現(xiàn) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式系統(tǒng)方向) 班 級(jí) 13計(jì)算機(jī)嵌入式系統(tǒng)班 學(xué) 號(hào) 學(xué)生......

    嵌入式系統(tǒng)課程設(shè)計(jì)教學(xué)大綱

    嵌入式系統(tǒng)課程設(shè)計(jì)教學(xué)大綱 課程名稱:嵌入式系統(tǒng)A課程(Embedded Systems) 課程編號(hào):1310778236 設(shè)計(jì)時(shí)數(shù):1周 學(xué)分:1 開課單位:信息電子技術(shù)學(xué)院通信工程教研室 適用專業(yè):通信工......

    嵌入式課程設(shè)計(jì) 學(xué)生信息管理系統(tǒng)

    嵌入式課程設(shè)計(jì)報(bào)告冊(cè) 題目:學(xué)生信息管理系統(tǒng) 班級(jí):移動(dòng)三班 輔導(dǎo)老師:邱雅 一、軟件需求分析 1、可行性分析 (1)經(jīng)濟(jì)可行性 ①:目前中國(guó)有越來越多的中小型企業(yè)在蓬勃發(fā)展,而現(xiàn)......

    嵌入式課程設(shè)計(jì)之觸摸屏程序設(shè)計(jì)

    嵌入式課程設(shè)計(jì) 設(shè)計(jì)題目:觸摸屏驅(qū)動(dòng)程序設(shè)計(jì) 班級(jí): 學(xué)號(hào): 姓名: 指導(dǎo)老師: 設(shè)計(jì)時(shí)間:2010年12月25日--12月28日 目錄 第一部分 要求 ................................................

主站蜘蛛池模板: 久久久久亚洲精品天堂| 最新中文字幕av无码不卡| 亚洲中文字幕av一区二区三区| 久久无码人妻丰满熟妇区毛片| 亚洲国产精品久久久久秋霞小说| 极品人妻老师的娇喘呻吟| 太粗太深了太紧太爽了动态图男男| 日日噜噜噜夜夜爽爽狠狠视频| 中文字幕久久久久人妻中出| 日韩久久无码精品不卡一区二区电影| 亚洲综合网国产精品一区| 国产成人无码a在线观看不卡| 国产亚洲欧美精品久久久| 日韩大片在线永久免费观看网站| 国产精品黑色丝袜高跟鞋| 日韩综合亚洲色在线影院| 国产又色又爽又高潮免费视频麻豆| 午夜做受视频试看6次| 天堂一区人妻无码| 国产精品va在线观看无码不卡| 国产av亚洲精品久久久久| 婷婷色婷婷开心五月四房播播| 欧美日韩在线亚洲二区综二| 国产成人精品久久一区二区三区| 欲妇荡岳丰满少妇岳| 奇米精品视频一区二区三区| 成人av专区精品无码国产| 国产精品自在拍在线拍| 无码一区二区波多野结衣播放搜索| 色翁荡息又大又硬又粗视频| 成人区精品一区二区不卡av免费| 青青青青久久精品国产| 国产白丝精品爽爽久久蜜臀| 久久亚洲精品高潮综合色a片| 好日子在线观看视频大全免费动漫| 国产免费久久精品99re丫丫| 国产在线午夜不卡精品影院| 特级aaaaaaaaa毛片免费视频| 肉色欧美久久久久久久免费看| 日韩av无码久久精品免费| 成年女性特黄午夜视频免费看|