得體:漢語詞匯得體:護理品牌, 以下是為大家整理的關于嵌入式課程設計心得體會4篇 , 供大家參考選擇。
嵌入式課程設計心得體會4篇
第一篇: 嵌入式課程設計心得體會
課程設計報告書
課程名稱 嵌入式課程設計
設計題目 圖書館借閱平臺
班 級 102011班
學 號 10201118
學生姓名 黃輝波
第一章 需求分析
1.1 摘要
書籍是人類不可缺少的精神食糧,圖書館借閱平臺是一些單位不可缺少的部分,尤其是對一些學校來說尤為重要,所以圖書館借閱平臺應該能夠為用戶土工充足的信息和快捷的查詢手段,但一直以來人們使用傳統人工的方式管理圖書,期刊,試卷合訂本等,這種管理方式存在著許多缺點,如:效率低,保密性差,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少困難。
隨著人類社會的發展,人類對只是需求也不短增長。在這種形勢下,書籍就漸漸地能夠為人們獲取并增長只是主要途徑,而圖書館就是自然而然地在人們的生活中占據了一定的位置,如何科學地管理圖書館不但關系到讀者求知的方便程度,也關系到圖書館的發展,因此,開發一套圖書管理系統就成不可少了。
本論文主要是針對圖書管理的研究,介紹了系統建立的目的,系統分析,系統結構、系統設計。借閱平臺的建立支持圖書管理人員對圖書各類信息進行快捷、準確、方便的查詢;支持圖書管理人員對圖書的錄入、修改、刪除與統計、查詢。管理員輕而易舉的就能使用該軟件來達到對圖書館內各類圖書信息的管理。
1.2 系統開發目的
通過課程設計使學生進一步加深對課程內容的理解,利用程序設計的基本思想進行程序的開發,進一步掌握變成方法技巧,提高學生用程序的思想來解決實際問題的能力。
1.3 系統目標
設計題目:圖書館借閱平臺
要求:
(1)建立圖書庫,會員庫,可以錄入,刪除,修改
(2)完成借閱,還書操作
(3)可顯示還書期限
(4)可查詢會員借閱情況,書庫借書情況,書庫藏書情況
1.4 系統需求概述
本系統是一套簡單實用的圖書借閱管理工具,該系統針對方便圖書管理的特點,根據學生、書籍有關信息,查找信息設計開發的。其模塊功能完善,界面美觀友好,操作簡便快捷,為學校的圖書信息檔案自動化管理提供了完善的解決方案。主要功能包括:讀者基本信息管理的輸入,修改,查詢;書籍信息的輸入,修改,查詢;借閱信息的輸入,歸還信息的輸入,修該,查詢;管理員信息的輸入,修改,查詢;
1.4 系統功能圖
系統功能結構圖1.1所示
圖1.1 系統功能結構圖
1.5 程序流程圖
圖1.2 數據流程圖
第二章 概念結構設計
2.1 系統各分子系統的數據流圖
圖3.1.1 查詢讀者借閱信息圖
圖2.1 更新學生借閱信息圖
2.2 每個實體所定義的屬性
管理員信息表(管理員賬號,姓名)
圖書信息表(書籍編號,書籍名稱)
學生信息表(學生賬號,姓名)
第三章 系統詳細設計
3.1 管理員登錄模塊
void AdmLogin() //管理員登入界面
{
I32 i,num,number,flag=0;
INT8U Loop;
char account[10],password[10];
account[0]="\0";
password[0]="\0";
number = GUI_WaitKey();
Loop = TRUE;
Frame();
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"管理員登入"CN_end,250,85);
Disp_String (CN_start"賬號:"CN_end,150,145);
Disp_String (CN_start"密碼:"CN_end,150,205);
Disp_String (CN_start"確定"CN_end,260,305);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
do
{
if(flag == 0)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"密碼:"CN_end,150,205);
Disp_String (CN_start"確定"CN_end,260,305);
Set_Color(GUI_WHITE);
Fill_Rect(350,205,450,235);
Set_Color(GUI_RED);
Disp_String (CN_start"賬號:"CN_end,150,145);
Fill_Rect(350,145,450,175);
}else if(flag == 1)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"管理員登入"CN_end,250,85);
Disp_String (CN_start"賬號:"CN_end,150,145);
Disp_String (CN_start"密碼:"CN_end,150,205);
Disp_String (CN_start"確定"CN_end,260,305);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Set_Color(GUI_RED);
Disp_String (CN_start"密碼:"CN_end,150,205);
Fill_Rect(350,205,450,235);
}else if(flag == 2)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"管理員登入"CN_end,250,85);
Disp_String (CN_start"賬號:"CN_end,150,145);
Disp_String (CN_start"密碼:"CN_end,150,205);
Disp_String (CN_start"確定"CN_end,260,305);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Set_Color(GUI_RED);
Disp_String (CN_start"確定"CN_end,260,305);
}else if(flag2)
{
flag=2;
}
Set_Color(GUI_BLACK);
Set_Font (&GUI_Font8x16);
Disp_String(account,350,145);
Disp_String(password,350,205);
Uart_Printf("flag值:%d\n",flag);
Uart_Printf("賬號:%s\n",account);
Uart_Printf("密碼:%s\n",password);
switch (number)
{
case GUI_KEY_UP:
flag--;
number = 2;
Loop = TRUE;
break;
case GUI_KEY_DOWN:
flag++;
number = 2;
Loop = TRUE;
break;
case GUI_KEY_ESCAPE: // 得到退出命令
Loop = FALSE;
break;
case GUI_KEY_ENTER:
if(flag == 0)
{
i=0;
num = GUI_WaitKey();
while(num!=GUI_KEY_ESCAPE)
{
account[i] = num + 48;
account[i+1] = "\0";
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (account,350,145);
Uart_Printf("輸入:%s",account);
num = GUI_WaitKey();
i++;
}
account[i+1]="\0";
Uart_Printf("賬號1:%s\n",account);
}else if(flag == 1)
{
i=0;
num = GUI_WaitKey();
while(num!=GUI_KEY_ESCAPE)
{
password[i] = num + 48;
password[i+1] = "\0";
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (password,350,205);
Uart_Printf("輸入:%s",password);
num = GUI_WaitKey();
i++;
}
password[i+1]="\0";
Uart_Printf("密碼1:%s\n",password);
}else if(flag == 2)
{
if(AdmPass(account,password))
AdmMenu();
}
Loop = TRUE;
number = 2;
break;
default: // 等待主任務發送的鍵值命令
number = GUI_WaitKey();
Loop = TRUE;
break;
}
}while(Loop==TRUE);
}
void Task_4(void *pdata)
{
I32 number,flag=0;
INT8U Loop;
InitInfo();
for(;;)
{
number = GUI_WaitKey();
Loop = TRUE;
do
{
switch (number)
{
case GUI_KEY_NUM3: // 得到開始命令
Frame();
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學生登入"CN_end,320,250);
Disp_String (CN_start"管理員登入"CN_end,320,280);
Loop = FALSE;
number = 0;
break;
case GUI_KEY_UP:
flag=1;
Frame(); //選擇上面的選項
Set_Color(GUI_RED);
Disp_String (CN_start"學生登入"CN_end,320,250);
Set_Color(GUI_BLACK);
Disp_String (CN_start"管理員登入"CN_end,320,280);
Loop = TRUE;
number = 2;
break;
case GUI_KEY_DOWN: //選擇下面的菜單選項
flag=2;
Frame();
Set_Color(GUI_BLACK);
Disp_String (CN_start"學生登入"CN_end,320,250);
Set_Color(GUI_RED);
Disp_String (CN_start"管理員登入"CN_end,320,280);
Loop = TRUE;
number =2;
break;
case GUI_KEY_ENTER:
if(flag==1)
UserLogin();
else
AdmLogin();
Loop = TRUE;
number = 2;
break;
default: // 等待主任務發送的鍵值命令
number = GUI_WaitKey();
Loop = TRUE;
break;
}
}while(Loop == TRUE);
}
}
int AdmPass(char account[10], char password[10]) //管理員登入處理
{
if(account[0] == "1" && password[0] == "1")
return 1;
else
return 0;
}
實現界面:
3.2 管理員菜單模塊
void AdmMenu() //管理員菜單
{
I32 number,flag=0;
INT8U Loop;
number = GUI_WaitKey();
Loop = TRUE;
do
{
if(flag == 0)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
Disp_String (CN_start"歸書"CN_end,250,145);
Disp_String (CN_start"學生管理"CN_end,250,205);
Disp_String (CN_start"書庫管理"CN_end,250,265);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
}else if(flag == 1)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
Disp_String (CN_start"歸書"CN_end,250,145);
Disp_String (CN_start"學生管理"CN_end,250,205);
Disp_String (CN_start"書庫管理"CN_end,250,265);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"歸書"CN_end,250,145);
}else if(flag == 2)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
Disp_String (CN_start"歸書"CN_end,250,145);
Disp_String (CN_start"學生管理"CN_end,250,205);
Disp_String (CN_start"書庫管理"CN_end,250,265);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學生管理"CN_end,250,205);
}else if(flag == 3)
{
Frame();
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
Disp_String (CN_start"歸書"CN_end,250,145);
Disp_String (CN_start"學生管理"CN_end,250,205);
Disp_String (CN_start"書庫管理"CN_end,250,265);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"書庫管理"CN_end,250,265);
}/*else if(flag3)
{
flag = 3;
}*/
switch(number)
{
case GUI_KEY_NUM3:
Frame();
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借書"CN_end,250,85);
Disp_String (CN_start"歸書"CN_end,250,145);
Disp_String (CN_start"學生管理"CN_end,250,205);
Disp_String (CN_start"書庫管理"CN_end,250,265);
Loop = TRUE;
number=0;
break;
case GUI_KEY_UP:
flag--;
if(flag3)
flag=0;
number = 2;
Loop = TRUE;
break;
case GUI_KEY_ENTER:
if(flag == 0)
LendBook();
else if(flag == 1)
BackBook();
else if(flag == 2)
UserManager();
else if(flag == 3)
BookManager();
Loop = TRUE;
number = 2;
break;
case GUI_KEY_ESCAPE: // 得到退出命令
Loop = FALSE;
break;
default: // 等待主任務發送的鍵值命令
number = GUI_WaitKey();
Loop = TRUE;
break;
}
}while(Loop == TRUE);
}
實現界面:
3.3 借書模塊
void LendInfo(char sno[10]) //借書操作
{
I32 i,j,num,number,flag=0;
INT8U Loop;
char bno[10],startTime[10],endTime[10],temp[10];
bno[0]="\0";
startTime[0]="\0";
endTime[0]="\0";
temp[0]=0;
temp[1]="\0";
number = GUI_WaitKey();
Loop = TRUE;
Frame();
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學號:"CN_end,150,85);
Disp_String (CN_start"書號"CN_end,150,145);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Disp_String (CN_start"截止時間"CN_end,150,265);
Disp_String (CN_start"借閱"CN_end,250,325);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Fill_Rect(350,265,450,295);
do
{
if(flag == 0)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學號:"CN_end,150,85);
Disp_String (CN_start"書號"CN_end,150,145);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Disp_String (CN_start"截止時間"CN_end,150,265);
Disp_String (CN_start"借閱"CN_end,250,325);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Fill_Rect(350,265,450,295);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"書號"CN_end,150,145);
Set_Color(GUI_RED);
Fill_Rect(350,145,450,175);
}else if(flag == 1)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學號:"CN_end,150,85);
Disp_String (CN_start"書號"CN_end,150,145);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Disp_String (CN_start"截止時間"CN_end,150,265);
Disp_String (CN_start"借閱"CN_end,250,325);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Fill_Rect(350,265,450,295);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Set_Color(GUI_RED);
Fill_Rect(350,205,450,235);
}else if(flag == 2)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學號:"CN_end,150,85);
Disp_String (CN_start"書號"CN_end,150,145);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Disp_String (CN_start"截止時間"CN_end,150,265);
Disp_String (CN_start"借閱"CN_end,250,325);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Fill_Rect(350,265,450,295);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"截止時間"CN_end,150,265);
Set_Color(GUI_RED);
Fill_Rect(350,265,450,295);
}else if(flag == 3)
{
Set_Color(GUI_BLACK);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"學號:"CN_end,150,85);
Disp_String (CN_start"書號"CN_end,150,145);
Disp_String (CN_start"借閱時間"CN_end,150,205);
Disp_String (CN_start"截止時間"CN_end,150,265);
Disp_String (CN_start"借閱"CN_end,250,325);
Set_Color(GUI_WHITE);
Fill_Rect(350,145,450,175);
Fill_Rect(350,205,450,235);
Fill_Rect(350,265,450,295);
Set_Color(GUI_RED);
Set_Font (&CHINESE_FONT16);
Disp_String (CN_start"借閱"CN_end,250,325);
}
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (bno,350,145);
Disp_String (startTime,350,205);
Disp_String (endTime,350,265);
switch(number)
{
case GUI_KEY_UP:
flag--;
if(flag3)
flag=0;
number = 2;
Loop = TRUE;
break;
case GUI_KEY_ENTER:
if(flag == 0)
{
i=0;
num = GUI_WaitKey();
while(num!=GUI_KEY_ESCAPE)
{
bno[i] = num + 48;
bno[i+1] = "\0";
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (bno,350,145);
Uart_Printf("輸入:%s",bno);
num = GUI_WaitKey();
i++;
}
bno[i+1]="\0";
}else if(flag == 1)
{
i=0;
num = GUI_WaitKey();
while(num!=GUI_KEY_ESCAPE)
{
startTime[i] = num + 48;
startTime[i+1] = "\0";
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (startTime,350,205);
Uart_Printf("輸入:%s",startTime);
num = GUI_WaitKey();
i++;
}
startTime[i+1]="\0";
}else if(flag == 2)
{
i=0;
num = GUI_WaitKey();
while(num!=GUI_KEY_ESCAPE)
{
endTime[i] = num + 48;
endTime[i+1] = "\0";
Set_Color(GUI_YELLOW);
Set_Font (&GUI_Font8x16);
Disp_String (endTime,350,265);
Uart_Printf("輸入:%s",endTime);
num = GUI_WaitKey();
i++;
}
endTime[i+1]="\0";
}else if(flag == 3)
{
for(i=0; i
第二篇: 嵌入式課程設計心得體會
嵌入式實習心得體會
【篇一:嵌入式實驗報告】
中國地質大學(北京)
實 驗 報 告
課程名稱:嵌入式系統實驗名稱:嵌入式 linux socket編程 姓 名:楊森學 號: 1010102115班 級:10101021 指導教師:曾衛華 評 分: 實驗時間: 二零一三年 四月
實驗題目:嵌入式 linux socket編程
一、 實驗目的
通過實驗熟悉linux環境,掌握linux串口和網絡使用程序開發。并且學會串口的設置,串口數據收發處理,阻塞型i/o和非阻塞型i/o,socket套接字,多線程編程基礎,server和client端程序設計,對嵌入式系統有進一步的了解。
二、 實驗內容和步驟
1.4.4.3交叉編譯工具的path已經生效,在任意目錄下能夠執行arm-linux-gcc –v; 2.nfs網絡文件系統的配置:
1打開nfs1175.exe; ○
255.255.255.0);
3掛載:在板子上運行 #mount -t nfs -o nolock 115.25.74.175:/d/share_vm/mnt/nfs ○
4使用 cd /mnt/nfs 進入nfs共享目錄,ls 顯示共享目錄下的文件; ○
3.仔細閱讀提供的代碼server.c和client.c target為服務器,ubuntu為客戶端; 4.交叉編譯server.c、本地編譯client.c(因為用到多線程編程,在編譯語句后面加上-lpthread);
5.在板子上運行server可執行文件:#cd /mnt/nfs #ls -l server 看看前面的字串里面有沒有“x”,
如沒有則表明沒有可執行的權限,需要用命令加入server的執行權限:#chmod 777 server,運行server
代碼 #./server;
6.在ubuntu上運行client程序:#./client 115.25.74.176; 7.觀察服務器端和客戶端的提示信息。
三、 程序流程框圖和源碼
1.
流式套接字工作過程,如圖1所示
圖1 流式套接字工作過程
2.工作過程
以太網
1用戶從串口輸入信息,將串口信息轉發至以太網,在ubuntu上編寫client端程序,將收到的○
網絡數據打印出來;
2用戶從ubuntu中client端輸入信息,client將位信息發送至以太網,嵌入式linux收到以太○
網信息從串口輸出該信息。
3.源碼
更改過的源碼見附錄。
四、 實驗結果
1.掛載成功后串口顯示,如圖2所示
圖2 掛載截圖
2.編譯之后得到的目標代碼,如圖3所示
圖3 目標代碼編譯成功
3.客戶端和服務器連接,如圖4,圖5,圖6所示
圖4 等待連接中
圖5 ubuntu中顯示連接成功
圖6 串口中顯示連接成功
4.結果驗證,如圖7所示
在串口中輸入姓名(yangsen)和班級(10101021),在ubuntu中顯示相應的結果; 在ubuntu中輸入姓名(yangsen)和班級(10101021),在串口中顯示相應的結果。
圖7 驗證通訊結果
五、 實驗體會
本學期的所有實驗均在宿主pc機和at91rm9200目標板上進行。在實驗中,我們先建立硬件實驗平臺,又建立主機軟件開發環境,接著為實驗進行各項配置,最后完成了各個實驗中的多種功能。很重要的一點,前期的硬件、軟件準備必須完整無誤地實現,這是后續的實驗能順利進行的前提。本實驗中,雖然已經給出了串口程序和socket編程的程序,但是需要我們來修改和完善代碼,在原代碼的基礎上實現新的功能。
對于整個學期的學習,我總結了一個學習嵌入式學習的要點,就是動手實踐。剛開始接觸嵌入式linux的時候,感覺非常的麻煩,一直思考為什么既然有了windows,linux為什么還有存在的必要。經過一段時間的學習和了解,我終于了解了開源的重要性以及linux操作系統在科研領域的無可撼動的地位。經過多次的失敗之后,我已經熟練的掌握了linux的入門知識,逐步完成了建立實驗軟件開發平臺,搭建實驗編譯軟件環境,在pc上編輯、編譯一個使用程序,并且在嵌入式系統上運行和調試它的過程,課堂的7個實驗都成功地完成。這其中,自我課外學習和向高手請教是必不可少的。
通過這學期的實驗,我整個實驗讓我了解了一套完整的嵌入式系統簡單的開發的全過程,也讓
【篇二:嵌入式實習報告】
一、嵌入式系統開發和使用概述
在今日,嵌入式arm 技術已經成為了一門比較熱門的學科,無論是在電子類的什么領域,你都可以看到嵌入式arm 的影子。如果你還停留在單片機級別的學習,那么實際上你已經落下時代腳步了,arm 嵌入式技術正以幾何的倍數高速發展,它幾乎滲透到了幾乎你所想到的領域。本章節就是將你領入arm 的學習大門,開始嵌入式開發之旅。以嵌入式計算機為技術核心的嵌入式系統是繼網絡技術之后,又一個it領域新的技術發展方向。由于嵌入式系統具有體積小、性能強、功耗低、可靠性高以及面向行業具體使用等突出特征, 目前已經廣泛地使用于軍事國防、消費電子、信息家電、網絡通信、工業控制等各個領域。嵌入式的廣泛使用可以說是無所不在。
嵌入式微處理器技術的基礎是通用計算機技術。現在許多嵌入式處理器也是從早期的pc 機的使用發展演化過來的,如早期pc 諸如trs-80、appleii 和所用的z80 和6502 處理器,至今仍為低 端的嵌入式使用。在使用中,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優點。嵌入式處理器目前主要有am186/88、386ex、sc-400、power pc、68000、mips、arm 等系列。在早期實際的嵌入式使用中,芯片選擇時往往以某一種微處理器內核為核心,在芯片內部集成必要的
rom/eprom/flash/eeprom、sram、接口總線及總線控制邏輯、定時/計數器、watchdog、i/o、串行口、脈寬調制輸出、a/d、d/a 等各種必要的功能和外設。
二、實習設備
硬件:embest edukit-iv實驗平臺、ulink2仿真器套件、pc機
三、實習目的
1.初步掌握液晶屏的使用及其電路設計方法;掌握s3c2410x處理器的lcd控制器的使用;掌握通過任務調用的方法把液晶顯示函數添加到uc/os-ii中;通過實驗掌握液晶顯示文本及圖形的方法和程序設計。
2.了解s3c2410x處理器uart相關控制寄存器的使用; 熟悉arm處理器系統硬件電路中uart接口的設計方法:掌握arm處理器串行通信的軟件編程方法。
3.掌握有關音頻處理的基礎知識;通過實驗了解iis音頻接口的工作原理;通過實驗掌握對處理器s3c2410x中iis模塊電路的控制方法;通過實驗掌握對常用iis接口音頻芯片的控制方法。
四、實習要求
上顯示相應的學生信息。學生信息包括顯示每個人的照片和姓名系別等,并用鍵控設置學生輸出的順序,輸入學號就顯示那個學生的信息,然后過一段時間就順序循環播放。
通過使用embest edukit-iv實驗板的彩色液晶屏(800*480)進行電路設計,掌握液晶屏作為人機接口界面的設計方法,并編寫任務函數在uc/os-ii系統中實現位圖顯示。在uc/os-ii中建立五個任務tast1和tast2,其中tast1順序熄滅四個led,延遲一會在順序點亮四個led。tast2在lcd屏幕上循環顯示三幅圖片,并打印一些文字信息和背景音樂。過使用embest edukit-iii實驗板的256 色彩色液晶屏(320x240)進行電路設計,掌握液晶屏作為人機接口界面的設計方法,并編寫程序實現:畫出多個矩形框;顯示ascii字符;顯示漢字字符;顯示彩色位圖。
五、實習步驟
1. 準備實驗環境
使用ulink2仿真器連接embest edukit-iv實驗平臺的主板jtag接口;使用embest edukit-iv實驗平臺附帶的交叉串口線,連接實驗平臺主板上的com2和pc機的串口(一般pc只有一個串口,如果有多個請自行選擇,筆記本沒有串口設備的可購買usb轉
串口適配器擴充);使用embest edukit-iv實驗平臺附帶的電源適配器,連接實驗平臺主板上的電源接口。
2. 串口接收設置
在pc機上運行windows自帶的超級終端串口通信程序,或者使用實驗平臺附帶光盤內設置好了的超級終端,設置超級終端:波特率115200、1位停止位、無校驗位、無硬件流控制,或者使用其它串口通信程序。(注:超級終端串口的選擇根據用戶的pc串口硬件不同,請自行選擇,如果pc機只有一個串口,一般是com1)
3. 打開實驗例程
1)打開實驗程序
3)默認打開的工程在源碼編輯窗口會顯示實驗例程的說明文件readme.txt,詳細閱讀并理解實驗內容。
4)工程提供了兩種運行方式:一是下載到sdram中調試運行,二是固化到nor flash中運行。用戶可以在工具欄select target下拉框中選擇在ram中調試運行還是固化flash中運行。下面實驗將介紹下載到sdram中調試運行,所以我們在select target下拉框中選擇uart_test in ram。
5)接下來開始編譯鏈接工程,在菜單欄“projiet”選擇“build target”或者“rebuild all target files”編譯整個工程。
6編譯完成后,在輸出窗口可以看到編譯提示信息,比如
“.sdramuart_test.axf - 0 error(s), 1 warning(s).”,如果顯示“0 error(s)”即表示編譯成功。
7)撥動實驗平臺電源開關,給實驗平臺上電,單擊菜單欄
debug-start/stop debug session項將編譯出來的映像文件下載到sdram中,或者單擊工具欄“”按鈕來下載。
8)下載完成后,單擊菜單欄debug-run項運行程序,或者單擊工具欄“”按鈕來全速運行程序。用戶也可以使用進行單步調試程序。
9)全速運行后,用戶可以在超級終端看到程序運行的信息。
flash-download項將程序固化到norflash中,從實驗平臺的主板拔出jtag線,給實驗平臺重新上電,程序將自動運行。部分程序圖:
串口通信實驗:
iis音頻實驗:
六、實習體會
在嵌入式系統中,除了課本上的基礎知識外,還學會了軟件編程的基本思路,掌握了液晶屏的使用及其電路設計方法;掌握有關音頻處理的基礎知識;掌握液晶顯示文本及圖形的方法和程序設計。
【篇三:嵌入式系統實驗報告】
嵌入式系統設計實驗報告
班 級:
學 號:
姓 名:
成 績:
指導教師:
1. 實驗一
1.1 實驗名稱
博創up-3000實驗臺基本結構及使用方法
1.2 實驗目的
1.學習嵌入式系統開發流程。
2.熟悉up-net3000實驗平臺的核心硬件電路和外設。
3.增加對各個外設的了解,為今后各個接口實驗打下基礎。
1.3 實驗環境
博創up-netarm3000 嵌入式開發平臺
1.4 實驗內容及要求
(1)嵌入式系統開發流程概述
(2)熟悉up-net3000實驗平臺的核心硬件電路和外設
(3)arm jtag的安裝和使用
(4)通過操作系統自帶的通訊軟件超級終端,檢驗各個外設的工作狀態
(5)通過本次課程對各個外設的了解,為今后各個接口實驗打下基礎
1.5 實驗設計和實驗步驟
1.硬件安裝
2.軟件安裝
(1)超級終端:
運行windows 系統下的超級終端(hyperterminal)使用程序,新建一個通信終端;在接下來的對話框中選擇 arm開發平臺實際連接的pc機串口;完成新建超級終端的設置以后,可以選擇超級終端文件菜單中的保存,將當前設置保存為一個特定超級終端到桌面上,以備后用。
(2)jtag 驅動程序的安裝:
執行armjtag目錄下armjtagsetup.exe程序,選擇安裝目錄,安裝 jtag 軟件。
1.6 實驗過程和分析
(1)了解嵌入式系統開發流程
(2)對硬件的安裝
(3)對軟件的安裝
1.7 實驗結果總結
通過本次實驗對嵌入式系統開發流程進行了了解,并且對硬件環境和軟件環境進行了安裝配置,通過本次實驗對以后的接口實驗打了基礎。
1.8 心得體會
通過本次實驗對嵌入式實驗有了初步的了解,對基本開發流程也有了初步的了解。
2. 實驗二
2.1 實驗名稱
ads1.2軟件開發環境使用方法
2.2 實驗目的
熟悉ads1.2開發環境,學會 arm仿真器的使用。使用 ads 編譯、下載、調試并跟蹤一段已有的程序,了解嵌入式開發的基本思想和過程。
2.3 實驗環境
(1)ads1.2開發環境
(2)博創up-netarm3000 嵌入式開發平臺
(3)pc
(4)串口線
2.4 實驗內容及要求
本次實驗使用ads 集成開發環境,新建一個簡單的工程文件,并編譯這個工程文件。學習arm仿真器的使用和開發環境的設置。下載已經編譯好的文件到嵌入式控制器中運行。學會在程序中設置斷點,觀察系統內存和變量,為調試使用程序打下基礎。
2.5 實驗設計和實驗步驟
(1)運行ads1.2開發環境
(2)新建工程文件
(3)編譯工程文件
(4)下載編譯好的文件到嵌入式控制器中運行
2.6 實驗過程和分析
(1)實現hello world!
最終在輸出了hello world
(2)編程實現arm 和計算機之間的串行通訊
實現了串口通信,用arm監視串口,接收到的字符串由arm通過串口發送給超級終端,最終在超級終端上顯示了按下的鍵。學習了串行通訊原理,了解串行通訊控制器,閱讀arm 芯片文檔,掌握arm 的uart相關寄存器的功能,熟悉arm 系統硬件的uart 相關接口。
2.7 實驗結果總結
對ads 1.2開發環境使用和axd debugger使用方法有了初步的了解,基本成功運行了編譯好的工程文件。
2.8 心得體會
學習了ads1.2開發環境的使用方法和調試方法。使用 ads 編譯、下載、調試并跟蹤一段已有的程序,了解了嵌入式開發的基本思想和過程。
3. 實驗三
3.1 實驗名稱
鍵盤控制方法及led驅動設計
3.2 實驗目的
熟悉zlg7289芯片的內部結構,掌握用zlg7289驅動鍵盤和led的方法,掌握arm匯編語言和c語言的編程方法編寫出一段程序,要求能在led上顯示出小鍵盤上按下的4位數字。
3.3 實驗環境
(1)ads1.2開發環境
(2)博創up-netarm3000 嵌入式開發平臺
(3)pc
(4)串口線
3.4 實驗內容及要求
通過zlg7289芯片驅動17鍵的鍵盤和8個共陰極led,將按鍵值在led 上顯示出來。
3.5 實驗設計和實驗步驟
(1)新建工程,將“exp3鍵盤及led 驅動實驗”中的文件添加到工程。
(2)定義zlg7289 寄存器
(3)編寫zlg7289 驅動函數
(4)定義鍵盤映射表
(5)定義鍵值讀取函數
(6)編寫主函數
3.6 實驗過程和分析
(1)定義zlg7289寄存器
#define zlg7289_cs
#define zlg7289_key
#define zlg7289_enable() do{zlg7289sioband=rsbrdr;zlg7289sioctrl=rsiocon; rsiocon=0x31;rsbrdr=0xff;rpdatb=(~zlg7289_cs);}while(0)
#define zlg7289_disable() do{rpdatb|=zlg7289_cs;rsbrdr=zlg7289sioband; rsiocon=zlg7289sioctrl;}while(0)
第三篇: 嵌入式課程設計心得體會
嵌入式實訓心得體會_嵌入式實習心得與感悟
篇一:嵌入式實訓心得體會
8月我參加了學校安排的課題實訓,基地在北京,學院安排我們集體坐火車一同前去,浩浩蕩蕩的隊伍開始出發了。剛來北京的時候,映入眼綿的都是高樓大廈,一直想到的地方終于到了,好多以前的同學聽說我要去北京實訓都很羨慕不已,我自己也隱隱感到自豪。
我參加的課題實訓是嵌入式方向的,開課的內容主要是嵌入式開發方面的,C語言,數據結構,LINUX基本操作,網絡編程,操作系統和匯編語言,這些都是嵌入式不可缺少的。每個專業技能都決定了你以后找工過。我們班分了很多小組,每組都有小組長,小組長直接對我們負責。教課老師很認真,都是從很基礎的開始講;同學們聽課也很認真,由于代碼操作比較多,鍵盤的聲音源源不斷的在響。好久沒有感覺到這種濃重的學習氣氛了,而在這緊張而充實的學習氛圍中我獲益匪淺,感受頗多。
授課過程中老師們也傳授了一些找工作方面的經驗,比如簡介的樣式和寫法,面試中的一些著裝,禮貌用語和技巧,對此基地的老師還精心的為我們安排了一場模擬面試,在其中我們學到了很多有關于面試方面的經驗。
通過這幾個月的實訓我學到了很多,同時也讓我們意識到我們要學的更多。從程序的設計到編寫、畫圖、調試、修改、完善、到最后的實訓報告,每個人都付出了時間和精力去做好自己的任務幫助隊友,所以團隊的合作和隊友之間的相互協助非常重要。通過實訓讓我們更深一步的對自己的專業,對自己的能力,對自己所學的有正確的認識,并且能在以后的學習工作中不斷提高和完善自己。特別是講C語言和進程通信中老師給了我們每個小組的幾個小項目,讓我學到了更多項目經驗,這在學校之前是沒有的。這次實訓也碰到了些問題,比如項目文檔的寫法,代碼的規范,流程圖的畫法,這些都有講究,在老師和同學的幫助下,我不斷的提高了在這些方面的學習。
生活上班主任郭老師和王老師對我們關懷備至,讓我們沒有感覺在外面的那種不適感,同學們也互幫互助,所以生活上大致沒什么問題,這讓我們更好的去學專業。很感謝學校有這樣的實訓安排。
總的來說,這次實訓還是比較成功的,無論是個人動手能力還是團隊協作能力都得到了很好的鍛煉。在實訓過程中老師也交給我們很多簡單實用的技巧。我們也學到了,做好做對一個項目固然重要,同時美觀程度也是必不可少的,無論是從參觀者的角度還是自己看的角度都很重要。
篇二:嵌入式實訓心得體會
學期開始,我們開始學習《嵌入式系統及應用》,由于初次接觸嵌入式系統,感覺蠻難的,所以收獲不是很大,很多的概念都比較模糊,等到學期結束開始做嵌入式課程設計時,真是茫然無從下手,自從拿到設計主題后,我就像熱鍋上的螞蟻,一個字"急"。最后實在沒有辦法,逼著自己去學習,查資料,總算對嵌入式有了淺層理解。
嵌入式系統本身是一個相對模糊的定義,一個手持的Mp3和一個pC104的微型工業控制計算機都可以認為是嵌入式系統。總體來說,嵌入式系統是"用于控制,監視或者輔助操作機器和設備的裝備"。一個典型的桌面Linux系統包括3個主要的軟件層---linux內核、C庫和應用程序代碼。內核是唯一可以完全控制硬件的層,內核驅動程序代表應用程序與硬件之間進行會話。內核之上是C庫,負責把pOSIXApI轉換為內核可以識別的形式,然后調用內核,從應用程序向內核傳遞參數。應用程序依靠驅動內核來完成特定的任務。
在了解了基礎知識之后,我開始進行上機操作,當然,其中遇到很多的難題,很多東西都是第一次接觸,又沒有別人在旁邊指導操作,完全憑借自己去摸索練習。其中的困難可想而知。然而堅持就是勝利,牙一咬眼一閉堅持做下去,而通過本次實驗,我感覺收獲還是蠻多的。可能我對于嵌入式的知識學習的還是不太多,但是這之外的東西收獲頗豐。它讓我學會了如何通過自己的努力去認知一個新事物,更重要的是端正自己的學習態度,只有真正下功夫去學習,才能有收獲,正所謂"一份耕耘,一份收獲。"沒有付出,何談回報呢?再者,通過本次實驗,我也學會了如何去分析問題,如何找出自己設計中的不足,繼而去排除解決問題,這就是一個自我學習的過程。當我們通過實驗去學習理論知識時,自己動手得出的結論,不僅能加深我們對嵌入式的理解,更能加深我們對此的記憶。
當然,在這其中,我也發現自己的許多不足之處,由于學期伊始我沒有好好學習,才落到如此地步,這也可以說是一個教訓吧!我相信在以后的學習工作中,我一定會端正自己的學習態度,一絲不茍的去對待每一件事。只有做好足夠的準備,才能事半功倍!
篇三:嵌入式實訓心得體會
4月10號,為期一個階段的Linux開發基礎培訓課程圓滿結束,回首這些天所留下的點點滴滴,感觸深深,學習上知識點的積累,靈活運用的過程中感受到了Linux操作的快速高效性能,這也是我所追求的效率!
在Unit 1中,徐老師詳細生動的為我們講述了有關Linux的誕生、初成長以及輝煌的發展至今,今后應用范圍則愈來愈廣泛,講解了為Linux這個偉大的OS做出巨大貢獻的一位位出色的、偉大的人物,他們那種學習鉆研的精神、鍥而不舍的信念、勇于把握住難得的機會,從小處著手,踏踏實實的創造出了對人類科技發展做出卓越貢獻的Linux(Unix)系統,他們的種種,都值得我們去深刻反省、刻苦學習、傳承并永遠發展下去。
查看ip地址和重啟網絡服務是我學的第一個命令: ifconfig eth0、ifconfig eth0 IP地址、service network restart。了解到遠程登錄軟件可用xmanager。
secureCRT是我們常用的,安裝好后利用其登錄到了Red hat Linux,需要知道Linux主機的ip 地址。徐老師為我們介紹了重要內容:SHELL,即運行程序的程序,如echo $$SHELL可查看SHELL的環境變量是csh還是bash。指令pwd可查看當前所在路徑,passwd:更改Linux下的密碼,僅限root用戶有此權限,當然我們是利用虛擬機VMware程序來運行Linux OS的,懂得了如何設置虛擬機的網卡設置、暫停、恢復、全屏等。
篇四:嵌入式實訓心得體會
我們學習的課本是嵌入式系統應用教程。我學習的體會是這樣的:
開始時,由于是剛剛入門,對老師說的好多東西很好奇,列如C語言也是新鮮的,不過不太懂什么意思。但是慢慢的,了解深入后讓我有了更深的感觸和體會。在嵌入式的學習過程中,讓我了解了什么是嵌入式系統。它就是以應用為中心,以計算機技術為基礎,軟硬件可定制,適用于不同應用場合,對功能、可靠性、成本、體積、功耗有嚴格要求的計算機系統。他一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統、用戶應用程序四個部分組成,用于實現對其他設備的控制、監視或管理功能。嵌入式系統已經應用于科學研究、工業控制、軍事技術、交通通信、醫療衛生、消費娛樂等領域,人們日常使用的手機、PDA、汽車、智能家電、GPS等均是嵌入式系統的典型代表。
在學習命令的過程中,只要你認真的看著老師操作還有認真聽著他講,你就會發現有些命令的操作還是很簡單的,不過在操作的過程中,有時也會遇到困難,有時你按照書上學習的例子,命令輸入終端時會出現你不想要的結果,也就是錯誤的結果。這是問問旁邊的同學或是懂得的同學就可以解決了。
在對于這部分的學習中,讓我知道了命令對于嵌入式的重要性。它是linux的重要內容,linux中所有的功能都是通過命令執行。在實際應用中,為了減少系統開銷,經常不使用圖形界面,此時,對系統的所有操作都需要以命令方式來執行。在嵌入式系統開發過程中,由于目標機的性能和配置比較低,因此,一般情況下標機僅具有命令窗口而沒有圖形界面,對目標機的所有操作都通過命令來實現。還有的那就是進一步學習與嵌入式系統開發相關的linux的服務,他們的啟動、設置等的操作和應用。而在學習之中,我們主要介紹的是嵌入式系統中開發工程使用的TFTP、Telent和NFS服務。第一個實現的是上機位與下機位之間文件的傳輸、無磁盤網絡設備的啟動等功能;第二個實現的是遠程登錄功能;第三個實現的是網絡文件系統功能。
從以上的內容之中,并不難感受到我們的學習過程是由淺入深的,這對于我們的學習也有了較好的幫助。當然,我們學習的不僅僅是這么幾個內容,其中還有相關的實驗內容。在我們基礎的學習過程之中,我有了這么一點的感受,總的來說就是概念加專業名詞還有介紹加實驗。不過你絕對不能小看那些概念和介紹,它對我們有著很重要的指導作用哦!實驗那就更不用說了,它提高我們的動手能力,在實驗的過程中還能讓你更加理解書中的理念,這就是我學習嵌入式的感受。
學習是可貴的,培訓是精彩的。通過這次可貴而精彩的培訓學習,我們向嵌入式邁進了一步。感嘆與憧憬之余,我想我們只有靠自己的聰明與才智、努力與勤奮去追求我們的美好生活。
篇五:嵌入式實訓心得體會
這學期才接觸嵌入式系統感覺還稱不上入門,我通過學習知道了嵌入式的發展前景很大,各個領域都用到了嵌入式,學好嵌入式不愁沒飯吃。
廣義上講,凡是帶有微處理器的專用軟硬件系統都是嵌入式系統。如各類單片機和DSP系統。從狹義上講,那些使用嵌入式微處理器構成獨立系統,具有自己操作系統,具有特定功能,用于特定場合的專用軟硬件系統稱為嵌入式系統。嵌入式系統由嵌入式硬件與嵌入式軟件組成; 嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設備內部。
理解“嵌入”的概念 主要從三個方面上來理解。
1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內部,比如早期基于X86體系結構下的計算機,CPU只是有運算器和累加器的功能,一切芯片要造外部橋路來擴展實現,象串口之類的都是靠外部的16C550/2的串口控制器芯片實現,而目前的這種串口控制器芯片早已集成到CPU內部,還有PC機有顯卡,而多數嵌入式處理器都帶有LCD控制器,但其種意義上就相當于顯卡。比較高端的ARM類Intel Xscale架構下的IXP網絡處理器CPU內部集成PCI控制器(可配成支持4個PCI從設備或配成自身為CPI從設備);還集成3個NPE網絡處理器引擎,其中兩個對應于兩個MAC地址,可用于網關交換用,而另外一個NPE網絡處理器引擎支持DSL,只要外面再加個PHY芯片即可以實現DSL上網功能。IXP系列最高主頻可以達到1.8G,支持2G內存,1G×10或10G×1的以太網口或Febre channel的光通道。IXP系列應該是目標基于ARM體系統結構下由intel進行整合后成Xscale內核的最高的處理器了。
2、從軟件上前,就是在定制操作系統內核里將應用一并選入,編譯后將內核下載到ROM中。而在定制操作系統內核時所選擇的應用程序組件就是完成了軟件的“嵌入”,比如WinCE在內核定制時,會有相應選擇,其中就是wordpad,PDF,MediaPlay等等選擇,如果我們選擇了,在CE啟動后,就可以在界面中找到這些東西,如果是以前PC上將的windows操作系統,多半的東西都需要我們得新再裝。
3、把軟件內核或應用文件系統等東西燒到嵌入式系統硬件平臺中的ROM中就實現了一個真正的“嵌入”。。
嵌入式系統分為4層,硬件層、驅動層、操作系統層和應用層
1、硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。 硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。
驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。
3、操作系統層,對于操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4、應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及Java方面的編程也是如此的。嵌入式系統中涉及算法的由專業算法的人來處理的,不必歸結到嵌入式系統范疇內。但如果涉及嵌入式系統下面嵌入式數據庫、基于嵌入式系統的網絡編程和基于某此應用層面的協議應用開發(比如基于SIP、H.323、Astrisk)方面又較為復雜,并且有難度了。
通過網上查詢我發現目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬件技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統等),掌握這些新技術的人當然很少。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行指導開發流程。我們軟件系的人學習嵌入式,顯然應偏重于嵌入式軟件,特別是嵌入式操作系統方面。對于搞嵌入式軟件的人,最重要的技術顯然是掌握主流嵌入式微處理器的結構與原理,必須掌握一個嵌入式操作系統,必須熟悉嵌入式軟件開發流程并至少做過一個嵌入式軟件項目。
然而我們都沒有做過一個嵌入式軟件項目,甚至連嵌入式的開發流程我也不清楚,我只了解了使用簡單工具做一個簡單的實驗。只有去專研才能在嵌入式的領域站住腳,只有知道的比別人多才會更有競爭力。通過網上了解,我查詢了嵌入式的入門和所需要的知識,其中C語言尤為重要,不管是做嵌入式軟件還是硬件開發的人員,對C語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用C語言。其次,應該對操作系統有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的;知道了c語言和操作系統之后,再來看看嵌入式系統,我們主要學的是ARM,用的是ARM7, 深入理解ARM不是件容易的事,只有在知道ARM相關知識之后才能稱得上嵌入式已經入門了。 與嵌入式有關的知識我也學了不少就是不能夠綜合在一起運用,組成原理,數據結構,操作系統,C++,這3門與嵌入式密切相關的學科都系統的學了一遍,但由于長時間沒用到都有點忘記了,從網上得知嵌入式的學習與這些書有很大關系之后,我把嵌入式與以前學過的知識結合起來發現嵌入式的實驗中很多都是共通的,我對嵌入式有了初步的理解。
我以為學習嵌入式應該分為2個部分:軟件和硬件。關于硬件方面我接觸到了數字電路教材和模擬電路方面的知識,但由于沒有嵌入式CPU很難親自動手來實現嵌入式的相關理論;嵌入式入門則需要不斷地實驗與分析,我只在實驗課時做幾個與所給的程序相關的小程序來實現一下;而軟件方面則學過C語言,里面通常的語法曾今熟悉過;我通過下列方法來適應C語言在嵌入式中應用:首先重新翻看了下C的教材,看了些常見的語法,接著在編譯器的角度來看待C,編譯原理我剛學過,其中將高級語言與低級語言的翻譯感覺在嵌入式中用到了很多;最后沖硬件的角度來看待C。嵌入式的核心包括嵌入式操作系統,嵌入式軟件開發平臺及工具以及嵌入式應用軟件。這些決定怎樣才能開發一個好的嵌入式系統。 下面談談我了解的嵌入式的相關知識與應用:
首先,嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬件可裁減,適應應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式有如下幾個突出的有點1.系統內核小,2專用性強,3系統精簡4高實時性OS5嵌入式系統的應用程序可以沒有操作系統直接在芯片上運行,6嵌入式系統需要開發工具和環境。
嵌入式系統是近幾年才風靡起來的,但是這個概念并非新近才出現。從20世紀七十年代單片機(最早的單片機是Intel公司的 8048,出現在1976年)的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。經過30年的發展,嵌入式技術已經日趨成熟,在中國嵌入式機一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。
其次,嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。 嵌入式系統是軟硬結合的學科,通常有兩類人會去專研嵌入式:一類是學電子工程、通信工程等偏硬件專業的,另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。我是軟件專業的學習嵌入式,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。嵌入式應用在很多方面,具體的可以分為工業控制,交通管理,信息家電,家庭智能管理系統,POS網絡及電子商務,環境工程與自然,機器人,機電產品方面應用等方面。其中目前在服務領域,如遠程點菜器等已經體現了嵌入式系統的優勢。例外還有很多地方用到了嵌入式系統,最近飛利浦和ARM共同推出32位RISC嵌入式控制器,適用于工業控制,采用最先進的0.18微米CMOS嵌入式閃存處理技術,操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業領域中對最終用戶而言是一套極具成本效益的解決方案。
那么該如何學好嵌入式我覺得應該從以下幾點入手:
首先C語言,這個是毋庸置疑的,不管是做嵌入式軟件還是硬件開發的人員,對C語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至于如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些視頻看也好。很多人會問,C語言要學到怎么樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念后,就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收獲就不是你死看書能得到的。
其次,應該對操作系統有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關系,多看看,結合以后的項目經驗,會有更好的理解的。
還有應該學習下linux或者wince下的編程,這些對以后做應用的編程很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等操作系統,Android是以后發展的趨勢,現在很熱門,Android也是基于linux系統封裝的,所以建議先學習下linux。
還有,應該學習下單片機或者ARM或者MIPS,很多人說我沒有單片機的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過單片機,那最好不過了,以后學習ARM就更簡單了。
最后如果你把以上的知識都有所了解后,就該去閱讀閱讀一些優秀的代碼,比如結合arm芯片手冊學習去學習下UBOOT的源代碼,了解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
以上就是我在本學期學習嵌入式后的心得及感想。
猜你感興趣:
1.嵌入式培訓心得體會
2.嵌入式學習心得體會演講稿
3.嵌入式系統學習心得總結
4.嵌入式處理學習心得總結
5.嵌入式開發學習心得感想
第四篇: 嵌入式課程設計心得體會
題目一、交通信號燈控制系統
情景:
1.雙向6車道十字路口,每一路方向上右轉、直行、左轉各有一個車道;
2.每一路口有1組信號控制燈,共4組;每組控制燈有3個燈,分別指示右轉、直行、左轉;每個燈可顯示紅、黃、綠3種顏色,顯示時間可以設置;
3. 行車路線不能交叉,比如東西向車道信號燈顯示直行時,南北向車道信號燈不能顯示直行、右轉和左轉,只能停止;
4.在安全通行條件下,信號燈的顯示控制要以滿足提高交通流量為目標設計;比如東西向車道信號燈顯示左轉時,南北向車道信號燈可顯示右轉;
5.可暫不考慮人行道信號燈的控制。
設計一個控制系統,實現對交通信號燈的控制。具體要求:
1.制定出信號燈顯示控制規則;
2.進行系統總體設計,畫出系統構成框架圖;
3.進行信號燈前端控制子系統的詳細設計;
4.進行信號燈中心控制子系統的詳細設計;
5.設計前端控制子系統和中心控制子系統的通信方式和通信協議;
6.總結整個控制系統的設計,形成文檔,作為課程設計的結果提交。
題目二、銀行叫號調度系統
情景:
1.銀行門口有一個叫號機,在客戶操作下可打印出一個順序號;客戶按照順序號依次到銀行窗口辦理業務;
2.叫號機支持兩類業務:現金業務和非現金業務。辦理現金業務的窗口有3個,辦理非現金業務的窗口有2個,稱為綜合窗口;現金業務窗口只能辦理現金業務,而綜合業務窗口可以辦理現金業務和非現金業務;
3.非現金業務優先級高,綜合業務窗口只有在沒有非現金業務情況下,才能辦理現金業務;
4.銀行工作人員在辦理了一個客戶業務后,按一個呼叫按鈕,由系統安排其下一個辦理業務的順序號;順序號在窗口前的LED屏上顯示的同時進行語音播音,提示客戶前來辦理業務;
設計一個叫號調度系統,實現對辦理銀行業務的排隊和調度。具體要求:
1.制定出業務調度控制規則;
2.進行系統總體設計,畫出系統構成框架圖;
3.進行銀行業務前端排隊子系統的詳細設計;
4.進行銀行業務調度系統的詳細設計;
5.進行業務提示子系統(LED屏顯示、語音提示)的詳細設計;
5.設計調度系統與排隊子系統、提示子系統的通信方式和通信協議;
6.總結整個系統的設計,形成文檔,作為課程設計的結果提交。
其他可選題目:
1、 電梯控制系統
2、 無線抄表系統
3、 公共自行車租賃系統




