![《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū)_第1頁(yè)](http://file4.renrendoc.com/view11/M03/36/09/wKhkGWWP0emAJxBtAAHORZd_Z24046.jpg)
![《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū)_第2頁(yè)](http://file4.renrendoc.com/view11/M03/36/09/wKhkGWWP0emAJxBtAAHORZd_Z240462.jpg)
![《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū)_第3頁(yè)](http://file4.renrendoc.com/view11/M03/36/09/wKhkGWWP0emAJxBtAAHORZd_Z240463.jpg)
![《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū)_第4頁(yè)](http://file4.renrendoc.com/view11/M03/36/09/wKhkGWWP0emAJxBtAAHORZd_Z240464.jpg)
![《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū)_第5頁(yè)](http://file4.renrendoc.com/view11/M03/36/09/wKhkGWWP0emAJxBtAAHORZd_Z240465.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《嵌入式系統(tǒng)》實(shí)驗(yàn)報(bào)告指導(dǎo)書(shū).試驗(yàn)一熟識(shí)嵌入式LINUX開(kāi)發(fā)環(huán)境
1、試驗(yàn)?zāi)康?/p>
熟識(shí)UP-TECHPXA270-S的開(kāi)發(fā)環(huán)境。學(xué)會(huì)WINDOWS環(huán)境與嵌入式Linu環(huán)境共享資源的基本方法。
2、試驗(yàn)內(nèi)容
學(xué)習(xí)UP-TECHPXA270-S系統(tǒng)的使用、XP和虛擬機(jī)之間傳送文件方法以及UP-TECHPXA270-S和虛擬機(jī)之間共享名目的建立方法。
3、預(yù)備學(xué)問(wèn)
了解UP-TECHPXA270-S的基本結(jié)構(gòu)和配置,Linux基本學(xué)問(wèn)。
4、試驗(yàn)設(shè)備
硬件:UP-TECHPXA270-S開(kāi)發(fā)板、PC機(jī)(內(nèi)存500M以上)。
軟件:PC機(jī)操作系統(tǒng)RADHANDLINUX9+MIMI+RAMLINUX操作系統(tǒng)
5、試驗(yàn)步驟
(1)、在虛擬機(jī)下練習(xí)Linux常用命令。(留意以下操作只能在#,也就是root文件夾下運(yùn)行,不然會(huì)導(dǎo)致系統(tǒng)不能啟動(dòng))
a.學(xué)習(xí)命令通過(guò)“man***”和“***--help”得到的命令使用方法。
b.學(xué)習(xí)并把握如下命令:
ls,cd,pwd,cat,more,less,mkdir,rmdir,rm,mv,cp,tar,ifconfig
(2)、XP與虛擬機(jī)之間傳送文件(Samba服務(wù)器建立、網(wǎng)絡(luò)設(shè)置、文件傳送);(3)、了解系統(tǒng)資源和連線;
(4)、開(kāi)發(fā)板與虛擬機(jī)之間共享名目建立(設(shè)置NFS、開(kāi)發(fā)板IP設(shè)置、名目掛載),掛載文件;
(5)vi(vim)的使用
(6)輸入qt,啟動(dòng)桌面,按CTRL+C退出
6、試驗(yàn)報(bào)告要求
(1)、XP和虛擬機(jī)之間傳送文件步驟;
虛擬機(jī)共享XP文件:
選擇虛擬機(jī)設(shè)置,設(shè)置要共享的文件
啟動(dòng)Linux
進(jìn)入/mnt/hgfs即可看到共享文件夾
服務(wù)器設(shè)置——samba服務(wù)器(設(shè)置需要共享的名目)
XP共享虛擬機(jī)文件:
服務(wù)器設(shè)置——samba服務(wù)器(設(shè)置需要共享的名目)
確保網(wǎng)絡(luò)的PING通(即在同一局域網(wǎng)):
1.虛擬機(jī)的19
34(RH9)
2.XP的為25
3.在XP下點(diǎn)擊開(kāi)頭-》運(yùn)行(\\34)
4.用戶名bc密碼123456
以上實(shí)現(xiàn)了Linux虛擬機(jī)(RH9)和XP的文件的共享
(2)、開(kāi)發(fā)板與虛擬機(jī)之間建立共享名目以及文件掛載步驟;
1.服務(wù)器設(shè)置——nfs服務(wù)器(設(shè)置需要共享的名目)
2.設(shè)置開(kāi)發(fā)板的ip地址:ifconfigeth0
3.在試驗(yàn)箱終端里輸入mount-tnfs-onolock192.168.1.
234:/up-techpxa270/exp/mnt/nfs
4./mnt/nfs即為共享名目
(3)、請(qǐng)畫(huà)出虛擬機(jī)、PC機(jī)和ARM試驗(yàn)箱之間的硬件連接圖;
(4)、在Linux中怎樣配置網(wǎng)絡(luò);
系統(tǒng)設(shè)置->網(wǎng)絡(luò),在新的選項(xiàng)卡中
(5)、試驗(yàn)中遇到的問(wèn)題與解決過(guò)程。
第一個(gè)試驗(yàn)相對(duì)簡(jiǎn)潔些就是熟識(shí)試驗(yàn)環(huán)境,然后練習(xí)了文件掛載,學(xué)會(huì)了開(kāi)發(fā)板和虛擬機(jī)之間傳送文件的方法。掛載時(shí)我覺(jué)得難點(diǎn)是簡(jiǎn)單忽視IP的配置,若兩者IP不在同一局域網(wǎng),則掛載不勝利。最終是練習(xí)VI編輯器的使用,VI編輯器在上學(xué)期學(xué)過(guò),這次只是重新熟識(shí)下。
試驗(yàn)二嵌入式LINUX系統(tǒng)的編程
1、試驗(yàn)?zāi)康?/p>
熟識(shí)UP-TECHPXA270-S下Linux的開(kāi)發(fā)環(huán)境,了解GNU/make工具的工作原理。學(xué)會(huì)使用makefile管理項(xiàng)目,學(xué)會(huì)編寫(xiě)一個(gè)Makefile文件。熟識(shí)arm-linux-gcc交叉編譯的使用,了解嵌入式開(kāi)發(fā)的基本過(guò)程。
2、試驗(yàn)內(nèi)容
新建一個(gè)名目,編寫(xiě)幾個(gè)源文件,使用makefile管理項(xiàng)目。學(xué)習(xí)在linux下的編程和編譯過(guò)程,以及UP-TECHPXA270-S開(kāi)發(fā)板開(kāi)發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到UP-TECHPXA270-S開(kāi)發(fā)板中運(yùn)行。
3、預(yù)備學(xué)問(wèn)
C語(yǔ)言的基礎(chǔ)學(xué)問(wèn)、程序調(diào)試的基礎(chǔ)學(xué)問(wèn)和方法,LINUX的基本操作。
4、試驗(yàn)設(shè)備及工具(包括軟件調(diào)試工具)
硬件:UP-TECHPXA270-S嵌入式開(kāi)發(fā)板、PC機(jī)Pentumn500以上,硬盤(pán)10G以上。
軟件:PC機(jī)操作系統(tǒng)REDHATLINUX9.0+MINI+ARM-LINUX開(kāi)發(fā)環(huán)境
5、試驗(yàn)步驟
(1)、建立工作名目
(2)、編寫(xiě)程序源代碼
(3)、編寫(xiě)makefile文件
(4)、編譯應(yīng)用程序
(5)、下載調(diào)試
(6)、寫(xiě)一個(gè)簡(jiǎn)潔的工程,并輸出自己的姓名和學(xué)號(hào),利用Makefile管理工程,并寫(xiě)出Makefile文件,進(jìn)行調(diào)試。
6、試驗(yàn)報(bào)告要求
(1)、寫(xiě)清每步試驗(yàn)步驟的詳細(xì)操作內(nèi)容。
1.建立工作名目:
先掛載:服務(wù)器設(shè)置——nfs服務(wù)器(設(shè)置需要共享的名目)
設(shè)置開(kāi)發(fā)板的ip地址:ifconfigeth0
在試驗(yàn)箱終端里輸入
mount-tnfs-onolock192.168.1.234:/up-techpxa270/exp/mnt/nfs/mnt/nfs即為共享名目
在/mnt/nfs下建立自己的名目:mkdircz
2.編寫(xiě)程序源代碼
使用VI編輯器在工作名目寫(xiě)入源代碼
3.編寫(xiě)makefile文件
使用vimakefile命令來(lái)編寫(xiě)makefile文件
4.編譯應(yīng)用程序
使用編譯命令:make–fmakefile來(lái)編譯程序
5.下載調(diào)試
在宿主PC上啟動(dòng)NFS服務(wù)并設(shè)置共享名目。就可進(jìn)行兩者通信了。
6.寫(xiě)一個(gè)簡(jiǎn)潔的工程,并輸出自己的姓名和學(xué)號(hào),利用Makefile管理工程,并寫(xiě)出Makefile文件,進(jìn)行調(diào)試。
(2)、簡(jiǎn)述Makefile文件的規(guī)章。
Makefile文件Makefile一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)名目中,makefile定義了一系列的規(guī)章來(lái)指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更簡(jiǎn)單的功能操作,由于makefile就像一個(gè)Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。
makefile是一個(gè)make的規(guī)章描述腳本文件,包括四種類型行:目標(biāo)行、命令行、宏定義行和make偽指令行(如“include”)。makefile文件中解釋以“#”開(kāi)頭。當(dāng)一行寫(xiě)不下時(shí),可以用續(xù)行符“\”轉(zhuǎn)入下一行。
(3)、簡(jiǎn)述調(diào)試狀況。
先是*.h和*.c文件的編寫(xiě),最終是makefile文件編寫(xiě)。寫(xiě)好makefile文件amake后,用命令:make–famake進(jìn)行編譯,但是始終提示一個(gè)錯(cuò)誤,說(shuō)是amake文件第6行出錯(cuò),然后使用viamake命令進(jìn)行amake文件修改,但還是出錯(cuò),花了半個(gè)多小時(shí)都沒(méi)勝利,后來(lái)重新編寫(xiě)amake文件才得以編譯勝利。我猜想是第一次寫(xiě)amake文件時(shí),加入了不能識(shí)別的字符。
試驗(yàn)三串行端口程序設(shè)計(jì)
1、試驗(yàn)?zāi)康?/p>
了解在Linux環(huán)境下串行程序設(shè)計(jì)的基本方法;
把握終端的主要屬性及設(shè)置方法;熟識(shí)終端IO函數(shù)的使用;完成串口的收發(fā)處理。
2、試驗(yàn)內(nèi)容
讀懂程序源代碼,學(xué)習(xí)終端IO函數(shù)tcgetattr(),tcsetattr(),tcflush()的使用方法,學(xué)習(xí)將多線程編程應(yīng)用到串口的接收和發(fā)送程序設(shè)計(jì)中。
3、預(yù)備學(xué)問(wèn)
有C語(yǔ)言基礎(chǔ);把握Makefile的編寫(xiě)和使用;把握Linux下的程序編譯與交叉編譯過(guò)程
4、試驗(yàn)設(shè)備及工具
硬件:UP-TECHPXA270-S嵌入式開(kāi)發(fā)板、PC機(jī)Pentumn500以上,硬盤(pán)10G以上。軟件:PC機(jī)操作系統(tǒng)REDHATLINUX9.0+MINI+ARM-LINUX開(kāi)發(fā)環(huán)境
5、試驗(yàn)步驟
(1)、將E盤(pán)下的03_tty復(fù)制到D:\PXA270\Share下;將虛擬機(jī)的共享打開(kāi);
(2)、主機(jī)A的虛擬機(jī)添加串口,主機(jī)A的1與試驗(yàn)箱ttyS1相連,試驗(yàn)箱ttyS0與另一臺(tái)PC機(jī)B相連;
(3)、將每臺(tái)虛擬機(jī)linux的/up-techpxa270/exp/basic/03_tty刪除,將兩臺(tái)主機(jī)的D:\PXA270\Share\03_tty復(fù)制到虛擬機(jī)linux下的/up-techpxa270/exp/basic下;
(4)、進(jìn)入/up-techpxa270/exp/basic/03_tty名目,使用vi編輯器或其他編輯器閱讀理解serial_rcv和serial_send的源代碼。
(5)、分別編譯serial_rcv和serial_send下的源文件生成可執(zhí)行文件。
(6)、自主選擇作為發(fā)送端或接收端,并修改相應(yīng)的代碼。
(7)、掛載PC機(jī)B的/up-techpxa270/exp到開(kāi)發(fā)板的/mnt/nfs。
(8)、在開(kāi)發(fā)板和PC機(jī)Alinux下運(yùn)行可執(zhí)行程序,一個(gè)發(fā)送數(shù)據(jù),一個(gè)接收數(shù)據(jù)。
(9)、修改程序,使發(fā)送端發(fā)送一個(gè)特定字符給接收端,且發(fā)送端回顯一個(gè)字符或一句話。
6、試驗(yàn)報(bào)告要求
(1)、寫(xiě)清每步試驗(yàn)步驟的詳細(xì)操作內(nèi)容。
1.將E盤(pán)下的03_tty復(fù)制到D:\PXA270\Share下;將虛擬機(jī)的共享打開(kāi):打開(kāi)虛擬機(jī),選擇redhat的設(shè)置,在“選項(xiàng)”的選項(xiàng)卡下打開(kāi)虛擬機(jī)共享
2.主機(jī)A的虛擬機(jī)添加串口,主機(jī)A的1與試驗(yàn)箱ttyS1相連,試驗(yàn)箱ttyS0與另一臺(tái)PC機(jī)B相連;
3.將每臺(tái)虛擬機(jī)linux的/up-techpxa270/exp/basic/03_tty刪除,分
別將兩臺(tái)主機(jī)的D:\PXA270\Share\03_tty復(fù)制到虛擬機(jī)linux下的/up-techpxa270/exp/basic下;
4.進(jìn)入/up-techpxa270/exp/basic/03_tty名目,使用vi編輯器或其他編輯器閱讀理解serial_rcv和serial_send的源代碼。
5.分別編譯serial_rcv和serial_send下的源文件生成可執(zhí)行文件。使用make命令在linux平臺(tái)編譯
6.自主選擇作為發(fā)送端或接收端,并修改相應(yīng)的代碼。
7.掛載PC機(jī)B的/up-techpxa270/exp到開(kāi)發(fā)板的/mnt/nfs。
服務(wù)器設(shè)置——nfs服務(wù)器(設(shè)置需要共享的名目),設(shè)置開(kāi)發(fā)板的ip地址:ifconfigeth0,在試驗(yàn)箱終端里輸入mount-tnfs-onolock192.168.1.234:/up-techpxa270/exp/mnt/nfs,/mnt/nfs即為共享名目
8.在開(kāi)發(fā)板和PC機(jī)Alinux下運(yùn)行可執(zhí)行程序,一個(gè)發(fā)送數(shù)據(jù),一個(gè)接收數(shù)據(jù)。
運(yùn)行程序:./serial
9.修改程序,使發(fā)送端發(fā)送一個(gè)特定字符給接收端,且發(fā)送端回顯一個(gè)字符或一句話。
while(1)
{
*serial_buf=getchar();
if(getchar()==’a’){
printf(“helloworld!\n”);}
write(serial_fd,serial_buf,1);
}
(2)、232串行通訊的數(shù)據(jù)格式是什么?
(3)、串行通訊最少需要幾根線,分別如何連接?
最少需要3根線,分別是RXD(接收數(shù)據(jù))、TXD(發(fā)送數(shù)據(jù))、GND(信號(hào)地)。AB的地線相連,A的RXD接B的TXD,B的RXD接A的TXD。
(4)、分析Makefile文件。
CROSS=arm-linux-//交叉編譯
CC=$(CROSS)gcc//GCC交叉編譯器
CPP=$(CROSS)g++//G++交叉編譯
INSTALL=install
BIN=/usr/local/bin
WARNINGS=-Os-Wall-Wstrict-prototypes-Wmissing-prototypes-Wshadow
-Wpointer-arith-Wcast-qual-Winline-I.
CFLAGS=-O2$(WARNINGS)
MATH_LIB=-lm
LIBS=$(MATH_LIB)–lpthread//引用庫(kù)文件
OBJ=serial.omain.o
TARGET=serial//目標(biāo)文件
all:$(TARGET)$(OBJ)
//下面一層層開(kāi)頭編譯
#Applications:
serial:$(OBJ)
$(CC)$(CFLAGS)-o$(TARGET)$(OBJ)$(LIBS)
main.o:main.c
$(CC)$(CFLAGS)-c-o$@$pthread.txt,然后再用catpthread.txt查看文件內(nèi)容,結(jié)合程序分析結(jié)果;
(5)加入一個(gè)新的線程用于處理鍵盤(pán)輸入,并在按特定字符時(shí)終止全部線程。
6、試驗(yàn)報(bào)告要求
(1)寫(xiě)清每步試驗(yàn)步驟及詳細(xì)操作內(nèi)容;
1.進(jìn)入exp/basic/02_pthread名目,使用VI命令即可打開(kāi)源代碼進(jìn)行閱讀
2.運(yùn)行make產(chǎn)生pthread可執(zhí)行文件
3.掛載:服務(wù)器設(shè)置——nfs服務(wù)器(設(shè)置需要共享的名目),設(shè)置開(kāi)發(fā)板的ip地址:ifconfigeth0,在試驗(yàn)箱終端里輸入mount-tnfs-onolock192.168.1.234:/up-techpxa270/exp/mnt/nfs,/mnt/nfs即為共享名目
4.進(jìn)入/mnt/exp/basic/02_pthread名目,運(yùn)行./pthread,觀看運(yùn)行結(jié)果的正確性,若顯示結(jié)果太快,可以用以下命令輸出顯示結(jié)果到pthread.txt文件./pthread>pthread.txt,然后再用catpthread.txt查看文件內(nèi)容,結(jié)合程序分析結(jié)果;
最終的結(jié)果:
put-->998
put-->999
producerstopped!
993-->get
994-->get
995-->get
996-->get
997-->get
998-->get
999-->get
consumerstopped!
5.加入一個(gè)新的線程用于處理鍵盤(pán)輸入,并在按特定字符時(shí)終止全部線程。voidlistener(void*data)
{
if(getch()=’q’){
pthread_cancel(id1);
pthread_cancel(id2);}
pthread_exit(0);
}
(2)寫(xiě)出程序pthread.c的分析;
#include
#include
#include
#include"pthread.h"
#defineBUFFER_SIZE16
/*設(shè)置一個(gè)整數(shù)的圓形緩沖區(qū)*/
structprodcons{
intbuffer;/*緩沖區(qū)數(shù)組*/
pthread_mutex_tlock;/*互斥鎖*/
intreadpos,writepos;/*讀寫(xiě)的位置*/
pthread_cond_tnotempty;/*緩沖區(qū)非空信號(hào)pthread_cond_tnotfull;/*緩沖區(qū)非滿信號(hào)*/
};
/*--------------------------------------------------------*/
/*初始化緩沖區(qū)*/
voidinit(structprodcons*b)
{
pthread_mutex_init(/*初始化后處于解鎖狀態(tài)*/
pthread_cond_init(/*指針為空時(shí)默認(rèn)狀態(tài)*/pthread_cond_init(
b->readpos=0;
b->writepos=0;
}
/*--------------------------------------------------------*/
/*向緩沖區(qū)中寫(xiě)入一個(gè)整數(shù)*/
voidput(structprodcons*b,intdata)
{
pthread_mutex_lock(
/*等待緩沖區(qū)非滿*/
while((b->writepos+1)%BUFFER_SIZE==b->printf("waitfornotfull\n");
pthread_cond_wait(
}
/*寫(xiě)數(shù)據(jù)并且指針前移*/
b->buffer=data;
b->writepos++;
if(b->writepos>=BUFFER_SIZE)b->writepos=/*設(shè)置緩沖區(qū)非空信號(hào)*/pthread_cond_signal(
pthread_mutex_unlock(
}
/*--------------------------------------------------------*/
/*從緩沖區(qū)中讀出一個(gè)整數(shù)*/
intget(structprodcons*b)
{
intdata;
pthread_mutex_lock(
/*等待緩沖區(qū)非空*/
while(b->writepos==b->readpos){
printf("waitfornotempty\n");
pthread_cond_wait(
}
/*讀數(shù)據(jù)并且指針前移*/
data=b->buffer;
b->readpos++;
if(b->readpos>=BUFFER_SIZE)b->readpos=0;
/*設(shè)置緩沖區(qū)非滿信號(hào)*/
pthread_cond_signal(
pthread_mutex_unlock(
returndata;
}
/*--------------------------------------------------------*/
#defineOVER(-1)
structprodconsbuffer;
/*--------------------------------------------------------*/
void*producer(void*data)/*生產(chǎn)者進(jìn)程函數(shù)*/
{
intn;
for(n=0;n%d\n",n);
put(
}
put(
printf("producerstopped!\n");
returnNULL;
}
/*--------------------------------------------------------*/void*consumer(void*data)/*消費(fèi)者進(jìn)程函數(shù)*/
{
intd;
while(1){
d=get(
if(d==OVER)break;
printf("%d-->get\n",d);
}
printf("consumerstopped!\n");
returnNULL;
}
/*--------------------------------------------------------*/intmain(void)
{
pthread_tth_a,th_b;
void*retval;/*存儲(chǔ)被等待線程的返回值*/
init(
pthread_create(
pthread_create(
/*等待生產(chǎn)者和消費(fèi)者結(jié)束*/
pthread_join(th_a,
pthread_join(th_b,
return0;
}
(3)寫(xiě)出修改后的代碼并加以說(shuō)明;
voidlistener(void*data)
{
if(getch()=’q’){
pthread_cancel(id1);
pthread_cancel(id2);}
pthread_exit(0);
}
在main函數(shù)中:
intmain(void)
{
pthread_tth_a,th_b,th_a;
void*retval;
init(
pthread_create(
pthread_create(
pthread_create(
/*等待生產(chǎn)者和消費(fèi)者結(jié)束*/
pthread_join(th_a,
pthread_join(th_b,
pthread_join(th_c,
return0;
}
(4)試驗(yàn)中遇到的問(wèn)題與解決過(guò)程?
試驗(yàn)時(shí)先是看懂代碼,其中有許多函數(shù)都沒(méi)見(jiàn)過(guò),更沒(méi)用過(guò),先是網(wǎng)上查資料,看API文檔,逐一的看懂函數(shù)。然后是整體思路的理解,消費(fèi)者怎么工作,生產(chǎn)者怎么工作,他們是怎么互斥的。然后是改正代碼實(shí)現(xiàn):加入一個(gè)新的線程用于處理鍵盤(pán)輸入,并在按“q“時(shí)終止全部線程。開(kāi)頭為了接收按鍵用了但是linux下沒(méi)有這個(gè)庫(kù)函數(shù),問(wèn)了其他同學(xué),才發(fā)覺(jué)自己將問(wèn)題想簡(jiǎn)單了,直接用getch()即可,然后經(jīng)過(guò)調(diào)試就完成了試驗(yàn)任務(wù)。
試驗(yàn)五內(nèi)核驅(qū)動(dòng)設(shè)計(jì)入門(mén)-模塊方式驅(qū)動(dòng)試驗(yàn)
1、試驗(yàn)?zāi)康?/p>
學(xué)習(xí)在LINUX下進(jìn)行驅(qū)動(dòng)設(shè)計(jì)的原理;把握使用模塊方式進(jìn)行驅(qū)動(dòng)開(kāi)發(fā)調(diào)試的過(guò)程。
2、試驗(yàn)內(nèi)容
在PC機(jī)上編寫(xiě)簡(jiǎn)潔的虛擬硬件驅(qū)動(dòng)程序并進(jìn)行調(diào)試,試驗(yàn)驅(qū)動(dòng)的各個(gè)接口函數(shù)的實(shí)現(xiàn),分析并理解驅(qū)動(dòng)與應(yīng)用程序的交互過(guò)程。
3、預(yù)備學(xué)問(wèn)
有C語(yǔ)言基礎(chǔ);
把握Makefile的編寫(xiě)和使用;
把握Linux下的程序編譯與交叉編譯過(guò)程。
有驅(qū)動(dòng)開(kāi)發(fā)的基本學(xué)問(wèn)。
4、試驗(yàn)設(shè)備及工具
硬件:PC機(jī)pentumn500以上,硬盤(pán)40G以上,內(nèi)存大于128M。
軟件:PC機(jī)操作系統(tǒng)REDHATLINUX9.0+MINI+AMRLINUX開(kāi)發(fā)環(huán)境
5、試驗(yàn)步驟
(1)仔細(xì)閱讀試驗(yàn)原理,理解驅(qū)動(dòng)的體系結(jié)構(gòu)
(2)熟識(shí)程序源代碼及Makefile
(/up-techpxa270/exp/drivers/01_moddriver)
(3)編譯程序
(4)程序掛載
(5)驅(qū)動(dòng)調(diào)試插入模塊insmodhello.ko
(6)刪除模塊rmmodhello.ko
(7)分析demo.c
我們可以直接使用cat/dev/demo調(diào)用驅(qū)動(dòng)的read函數(shù),測(cè)試讀過(guò)程。
6、試驗(yàn)報(bào)告要求
(1)、寫(xiě)清每步試驗(yàn)步驟的詳細(xì)操作內(nèi)容。
1.仔細(xì)閱讀試驗(yàn)原理,理解驅(qū)動(dòng)的體系結(jié)構(gòu)
2.進(jìn)入/up-techpxa270/exp/drivers/01_moddriver名目,使用vi命令打開(kāi)源代碼和Makefile
3.使用make命令編譯程序
4.程序掛載:
服務(wù)器設(shè)置——nfs服務(wù)器(設(shè)置需要共享的名目),設(shè)置開(kāi)發(fā)板的ip地址:ifconfigeth0,在試驗(yàn)箱終端里輸入mount-tnfs-onolock192.168.1.234:/up-techpxa270/exp/mnt/nfs,/mnt/nfs即為共享名目
5.插入模塊:命令insmodhello.ko
6.刪除模塊:命令rmmodhello.ko
7.分析demo.c:使用vi打開(kāi)demo.c文件,并對(duì)比試驗(yàn)指導(dǎo)書(shū)分析各個(gè)函數(shù)的功能。
(2)、模塊與應(yīng)用程序的區(qū)分?
1.應(yīng)用程序是從頭到尾執(zhí)行單個(gè)任務(wù);模塊卻只是預(yù)先注冊(cè)自己以便服務(wù)于將來(lái)的某個(gè)懇求,其中,函數(shù)init_module(模塊的入口)的任務(wù)是為以后調(diào)用模塊函數(shù)預(yù)先做預(yù)備,函數(shù)cleanup_module(模塊的其次入口)是在模塊卸載時(shí)調(diào)用。
2.應(yīng)用程序可以調(diào)用它未定義的函數(shù),由于在連接過(guò)程能夠解析外部引用從而使用適當(dāng)?shù)暮瘮?shù)庫(kù);模塊僅僅被連接到內(nèi)核,因此它僅能調(diào)用有內(nèi)核導(dǎo)出的函數(shù)(如printk),而沒(méi)有任何可連接的庫(kù)。
3.應(yīng)用程序開(kāi)發(fā)過(guò)程中的段錯(cuò)誤是無(wú)害的,并且總是可以使用調(diào)試器跟蹤到源代碼中的問(wèn)題所在;內(nèi)核模塊的一個(gè)錯(cuò)誤即使不對(duì)整個(gè)系統(tǒng)是致命的,也至少會(huì)對(duì)當(dāng)前進(jìn)程造成致命錯(cuò)誤。
4.應(yīng)用程序運(yùn)行于用戶空間,處理器禁止其對(duì)硬件的直接訪問(wèn)以及對(duì)內(nèi)存的未授權(quán)訪問(wèn);內(nèi)核模塊運(yùn)行于內(nèi)核空間,可以進(jìn)行全部操作。
5.應(yīng)用程序一般不必?fù)?dān)憂發(fā)生其他狀況而轉(zhuǎn)變它的運(yùn)行環(huán)境;內(nèi)核模塊編程則必需考慮并發(fā)問(wèn)題的處理。
(3)、編譯、調(diào)試狀況。
編譯后,插入模塊:insmodhello.ko,可在開(kāi)發(fā)板上顯示helloworld!
刪除模塊:rmmodhello.ko,刪除模版時(shí)也會(huì)顯示一句話。
試驗(yàn)六Qt/E應(yīng)用程序設(shè)計(jì)
1、試驗(yàn)?zāi)康?/p>
1.了解在Linux下安裝Qt以及Qt/Embedded的基本步驟;
2.學(xué)會(huì)在嵌入式設(shè)備上Qt/E平臺(tái)下使用Virtualframebuffer顯示程序結(jié)果;
2、試驗(yàn)內(nèi)容
1.在Linux下編譯和使用Qt/E平臺(tái);
2.在Qt/E平臺(tái)下編譯和運(yùn)行一個(gè)程序使用Virtualframebuffer顯示運(yùn)行結(jié)果;并且運(yùn)行結(jié)果可以在試驗(yàn)箱上顯示。
3、預(yù)備學(xué)問(wèn)
1.熟識(shí)使用C++語(yǔ)言程序設(shè)計(jì);
2.把握Linux下常用編輯器的使用;
3.把握Linux下程序編譯;
4.熟識(shí)Qt程序設(shè)計(jì);
4、試驗(yàn)室設(shè)備和工具
硬件:PC機(jī)Pentumn500以上,硬盤(pán)10G以上。
軟件:PC機(jī)操作系統(tǒng)REDHATLINUX9.0+MINI+ARM-LINUX開(kāi)發(fā)環(huán)境
5、試驗(yàn)步驟
(1)解壓安裝包并設(shè)置環(huán)境變量
(2)編譯Qt/Embedded
(3)查看運(yùn)行結(jié)果
(4)在開(kāi)發(fā)板上看運(yùn)行結(jié)果
6、試驗(yàn)報(bào)告要求
(1)、寫(xiě)出詳細(xì)試驗(yàn)流程及操作內(nèi)容
1.解壓安裝包并設(shè)置環(huán)境變量
安裝Tmake
cd~/pxa270Qt
tar–xzftmake-1.13.tar.gz
exportTMAKEDIR=$PWD/tmake-1.13
安裝Qt2.3.2
cd~/pxa270Qt
tar–xzfqt-x11-2.3.2.tar.gz
exportQT2DIR=$PWD/qt-2.3.2
安裝Qt/Embedded
cd~/pxa270Qt
tar–xzfqt-embedded-2.3.10-free.tar.exportQTEDIR=$PWD/qt-2.3.10
2.編譯Qt/Embedded
BuildQt2.3.2
cd$QT2DIR
exportTMAKEPATH=$TMAKEDIR/lib/linux-g++
exportQTDIR=$QT2DIR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代保安公司在辦公環(huán)境中的服務(wù)模式創(chuàng)新
- 班級(jí)文化的傳承與學(xué)校歷史發(fā)展
- 電商平臺(tái)的創(chuàng)新與業(yè)務(wù)拓展案例探討
- 電子商務(wù)平臺(tái)的法律風(fēng)險(xiǎn)及維權(quán)途徑
- 現(xiàn)代企業(yè)營(yíng)銷策略中的內(nèi)容營(yíng)銷技巧
- 生物科技在綠色農(nóng)業(yè)中的實(shí)踐與探索
- 杭州浙江杭州電子科技大學(xué)信息技術(shù)中心招聘工作人員(勞務(wù)派遣)筆試歷年參考題庫(kù)附帶答案詳解
- 環(huán)境心理學(xué)在提升睡眠質(zhì)量中的應(yīng)用
- 數(shù)據(jù)庫(kù)安全防護(hù)考核試卷
- 城市排水系統(tǒng)運(yùn)維管理考核試卷
- ## 外事領(lǐng)域意識(shí)形態(tài)工作預(yù)案
- CJJ 169-2012城鎮(zhèn)道路路面設(shè)計(jì)規(guī)范
- 第八單元金屬和金屬材料單元復(fù)習(xí)題-2023-2024學(xué)年九年級(jí)化學(xué)人教版下冊(cè)
- 鋼鐵是怎樣煉成的保爾成長(zhǎng)史
- 精神科護(hù)理技能5.3出走行為的防范與護(hù)理
- 煤礦機(jī)電運(yùn)輸培訓(xùn)課件
- 采購(gòu)管理學(xué)教學(xué)課件
- 《供應(yīng)商質(zhì)量會(huì)議》課件
- 江蘇省科技企業(yè)孵化器孵化能力評(píng)價(jià)研究的中期報(bào)告
- 供應(yīng)商審核培訓(xùn)教程
- 酒精性肝硬化伴食管胃底靜脈曲張破裂出血的護(hù)理查房
評(píng)論
0/150
提交評(píng)論