嵌入式系統(tǒng)北京航空航天大學(xué)Experiment1_第1頁(yè)
嵌入式系統(tǒng)北京航空航天大學(xué)Experiment1_第2頁(yè)
嵌入式系統(tǒng)北京航空航天大學(xué)Experiment1_第3頁(yè)
嵌入式系統(tǒng)北京航空航天大學(xué)Experiment1_第4頁(yè)
嵌入式系統(tǒng)北京航空航天大學(xué)Experiment1_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式LINUX開發(fā)環(huán)境的建立鄒 琪嵌入式系統(tǒng)課程實(shí)驗(yàn)一1實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容開發(fā)環(huán)境配置開發(fā)工具介紹編寫程序和Makefile編譯、下載調(diào)試2實(shí)驗(yàn)?zāi)康慕榻B一般的嵌入式開發(fā)流程,并介紹開發(fā)流程中使用的軟件和硬件的安裝來(lái)建立開發(fā)環(huán)境,通過(guò)此實(shí)驗(yàn)了解和熟悉嵌入式的軟硬件平臺(tái)。熟悉Linux開發(fā)環(huán)境,學(xué)會(huì)基于S3C2410的Linux開發(fā)環(huán)境的配置和使用。使用Linux的arm4l-unknown-linux-gcc編譯,使用基于NFS方式的下載調(diào)試,了解嵌入式開發(fā)的基本過(guò)程。3實(shí)驗(yàn)內(nèi)容本次實(shí)驗(yàn)硬件平臺(tái)使用UP-NetARM2410-S實(shí)驗(yàn)箱,宿主PC機(jī)上使用REDHAT Linux 9.0操作系統(tǒng)環(huán)境

2、。將硬件平臺(tái)和宿主PC機(jī)通過(guò)串口線和網(wǎng)線連接好后,在宿主PC機(jī)上安裝開發(fā)工具軟件,建立交叉編譯調(diào)試環(huán)境并進(jìn)行配置。利用已經(jīng)建立好的ARM-Linux的開發(fā)庫(kù)及編譯器,編寫hello.c和Makefile文件。學(xué)習(xí)在Linux下的編程和編譯過(guò)程,以及ARM開發(fā)板的使用和開發(fā)環(huán)境的設(shè)置。下載已經(jīng)編譯好的文件到目標(biāo)開發(fā)板上運(yùn)行。4開發(fā)環(huán)境配置(1)在宿主機(jī)Linux環(huán)境下配置網(wǎng)絡(luò),包括IP地址、NFS服務(wù)、防火墻。設(shè)置宿主機(jī)IP地址時(shí),需將其地址與開發(fā)平臺(tái)的IP地址設(shè)置在同一網(wǎng)段內(nèi)。這里,將PC的IP設(shè)為21。5開發(fā)環(huán)境配置(2)雙擊設(shè)備eth0,進(jìn)入以太網(wǎng)設(shè)置界面,可以設(shè)置地址、子網(wǎng)掩碼和網(wǎng)關(guān)。對(duì)

3、REDHAT9.0,它默認(rèn)打開了防火墻,外來(lái)IP無(wú)法用NFS mount訪問(wèn)它,此因要在安全級(jí)別設(shè)置中關(guān)閉它。6開發(fā)環(huán)境配置(3)在系統(tǒng)設(shè)置菜單中選擇服務(wù)器設(shè)置菜單,再選中服務(wù)菜單,將iptables服務(wù)去掉,選中NFS。點(diǎn)擊系統(tǒng)設(shè)置-服務(wù)器設(shè)置-NFS服務(wù)器,出現(xiàn)如下界面,在目錄中填入共享目錄的路徑和主機(jī)地址。7一些常規(guī)選項(xiàng)設(shè)置,保留默認(rèn)值。在用戶訪問(wèn)中,設(shè)置將遠(yuǎn)程用戶當(dāng)作根用戶時(shí),對(duì)于操作比較方便,但安全性較差。配置NFS完成后,可以測(cè)試是否成功。在宿主機(jī)下自己mount自己 mount 0:/arm2410s /mnt其中0是主機(jī)IP,然后到/mnt/ 目錄下看是否可以列出對(duì)應(yīng)arm24

4、10s目錄下的所有文件和目錄,如可以則說(shuō)明mount成功,NFS配置成功。8MINICOM的配置1.在Xwindows界面下新建終端,在終端的命令提示符后輸入minicom,回車,就能看到minicom的啟動(dòng)畫面。若是在字符界面下,直接輸入minicom即可。92.minicom啟動(dòng)后,先按Ctrl+A鍵,再按Z鍵(非連續(xù)按),進(jìn)入主配置界面。按O進(jìn)入配置界面。按上下選擇Serial port setup,進(jìn)入端口設(shè)置界面。103. 如上圖進(jìn)行參數(shù)配置,選好后按ESC鍵退出,選擇Save setup as df1保存退出,以后只要啟動(dòng)minicom就是該配置,無(wú)需再做改動(dòng)。114. 配置完成后

5、,用串口線連接好PC機(jī)和2410-s實(shí)驗(yàn)箱,打開電源,即可在minicom上看到啟動(dòng)信息,并可以執(zhí)行操作控制。12開發(fā)工具軟件的安裝將開發(fā)板附帶光盤插入光驅(qū),在光驅(qū)所在目錄/mnt/cdrom中運(yùn)行安裝腳本。 cd /mnt/cdrom ./install.sh安裝腳本程序?qū)⒆詣?dòng)建立/arm2410s目錄,并將所有開發(fā)軟件包安裝到/arm2410s目錄下,同時(shí)自動(dòng)配置編譯環(huán)境,建立合適的符號(hào)連接。注意:安裝完成后看一下主編譯器Armv4l-unknown-linux-gcc是否在/opt/host/armv4l/bin/,如果不是這個(gè)路徑,請(qǐng)使用vi修改/root/.bash_profile文

6、件中PATH變量為PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/,存盤以后執(zhí)行:source/root/.bash_profile,則以后armv4l-unknown-linux-gcc會(huì)自動(dòng)搜索到,可以在終端上輸入arm,然后按tab鍵,會(huì)自動(dòng)顯示armv4l-unknown-linux-13Linux開發(fā)套件GCC 編譯器Binutils 是一組開發(fā)工具,包括連接器,匯編器和其他用于目標(biāo)文件和檔案的工具。 Make 使用GNU 的make工具能夠比較容易的構(gòu)建一個(gè)工程,整個(gè)工程的編譯只需要一個(gè)命令就可以完成編譯、連接以至于最后的執(zhí)行。不過(guò)這需要編寫Ma

7、kefile文件。GDB 負(fù)責(zé)程序調(diào)試Glibc 標(biāo)準(zhǔn)C庫(kù),數(shù)學(xué)庫(kù),以及板級(jí)程序庫(kù)集成開發(fā)環(huán)境14GCC選項(xiàng)g:在可執(zhí)行文件中輸出調(diào)試信息,通常是為調(diào)試器gdb所用On:代碼優(yōu)化,n隨著系統(tǒng)的不同而不同Idir:指定頭文件搜索目錄gcc foo.c I/home/zou/include o fooLdir:指定在目錄中需要搜索的庫(kù)(動(dòng)態(tài)庫(kù).so 和靜態(tài)庫(kù).a)gcc foo.c L/home/zou/lib lfoo o foostatic:鏈接時(shí)使用靜態(tài)鏈接elf2flt:將可執(zhí)行文件頭轉(zhuǎn)換為flt平板格式c:只預(yù)處理,編譯和匯編生產(chǎn)obj文件15調(diào)試工具GDB調(diào)試嵌入式Linux系統(tǒng)需要一

8、個(gè)運(yùn)行系統(tǒng)的環(huán)境,一個(gè)調(diào)試環(huán)境。這里采用GDB的遠(yuǎn)程調(diào)試功能遠(yuǎn)程調(diào)試一般由主機(jī)和目標(biāo)機(jī)通過(guò)串口或網(wǎng)絡(luò)連接而成。GDB里面嵌有串口通信協(xié)議。在目標(biāo)機(jī)上需要實(shí)現(xiàn)一個(gè)stub文件,這個(gè)文件里面需要提供串口連接的協(xié)議和傳送數(shù)據(jù)信息的方法。調(diào)試的一般步驟將兩臺(tái)機(jī)器用串口連接起來(lái)將需要調(diào)試的程序下載到目標(biāo)機(jī)在主機(jī)啟動(dòng)GDB,讀入需要調(diào)試的程序的符號(hào)表和程序代碼使用target remote命名建立和遠(yuǎn)程主機(jī)的連接然后就象使用一般的GDB一樣進(jìn)行程序的調(diào)試了16GDB調(diào)試程序Host gdb myprogramGdbtarget remote /dev/ttys0Gdbload /程序運(yùn)行至mainGdb

9、display foo /目標(biāo)在main()處停止 gdb stepi /目標(biāo)執(zhí)行一個(gè)指令Gdbquit /退出調(diào)試17HelloWorld程序在Linux下用文本編輯器(vi、gedit等)hello.c的源代碼如下: #include int main(void) printf (Hello world, Linux programming!n); return 0;18編寫Makefile文件(1)CC = armv4l-unknown-linux-gcc EXEC = helloOBJS = hello.o CFLAGS +=LDFLAGS += -staticall: $(EXEC)

10、$(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS)clean:-rm -f $(EXEC) *.elf *.gdb *.o19編寫Makefile文件(2)以上是本例用到的Makefile文件,它有幾個(gè)主要部分 CC 指明編譯器 EXEC 表示編譯后生成的執(zhí)行文件名稱 OBJS 目標(biāo)文件列表 CFLAGS 編譯參數(shù) LDFLAGS 連接參數(shù) all: 編譯主入口 clean: 清除編譯結(jié)果注意:“$(CC) $(LDFLAGS) -o $ $(OBJS)”和“-rm -f $(EXEC) *.elf *.gdb *.o”前空白由一個(gè)Tab制表符生成,不能

11、單純由空格來(lái)代替。 20編譯應(yīng)用程序在上面的步驟完成后,我們將hello.c和Makefile文件放在同一目錄下,運(yùn)行make來(lái)編譯程序了。如程序進(jìn)行了修改,重新編譯則運(yùn)行make clean,然后再make。若不用Makefile,直接用gcc編譯也行 armv4l-unknown-linux-gcc hello.c o hello注意:編譯、修改程序都是在宿主機(jī)(本地PC機(jī))上進(jìn)行,不能在MINICOM下進(jìn)行。21編譯應(yīng)用程序編寫數(shù)組排序程序在Linux下編寫匯編程序和C程序,然后編譯連接成ARM可運(yùn)行的二進(jìn)制文件,最后把該二進(jìn)制文件下載到目標(biāo)機(jī)(教學(xué)試驗(yàn)平臺(tái))上運(yùn)行,查看運(yùn)行結(jié)果是否正確

12、。在C程序main函數(shù)中,接收用戶輸入(用戶任意輸入9個(gè)整數(shù)),然后在main中調(diào)用使用ARM匯編編寫的函數(shù)(單獨(dú)存儲(chǔ)成一個(gè)文件,在該函數(shù)中完成對(duì)這9個(gè)整數(shù)的排序功能),然后再在C程序main函數(shù)中輸出這9個(gè)排好順序的整數(shù)。22編譯應(yīng)用程序編寫數(shù)組排序程序#include int main()int i=0;int num=0;int *array=NULL;while(num 0)break;if(NULL = (array = (int *)malloc(num*sizeof(int) printf(malloc failed!n);exit(-1);printf(please enter

13、 the elements:n);for(i = 0; inum; i+)printf(n%d:t, i);scanf(%d, array+i);select(array, num);printf(=nthe result is:n);for(i = 0; inum; i+)printf(%d:t%dn, i, *(array+i);return 0;23通過(guò)NFS調(diào)試程序前面配置開發(fā)環(huán)境時(shí)已在宿主PC上啟動(dòng)了NFS服務(wù),并設(shè)置好了共享目錄,可以在終端中輸入minicom,建立開發(fā)板與宿主PC機(jī)之間的通訊了。 /mnt/yaffs mount t nfs o nolock 6:/arm2410

14、s /host注意:IP地址需要根據(jù)宿主PC的實(shí)際情況修改成功掛接宿主PC的arm2410s目錄(假定編寫了hello.c和Makefile都在此目錄下)后,在開發(fā)板上進(jìn)入/host目錄便相應(yīng)進(jìn)入宿主PC的/arm2410s目錄。在/host目錄下運(yùn)行編譯好的hello程序 /host./hello 可以看到結(jié)果 Hello world, Linux programming!注意:開發(fā)板掛接宿主機(jī)目錄只需掛接一次,只要開發(fā)板沒(méi)有重啟,就能一直保持連接。這樣可以反復(fù) 修改、編譯、調(diào)試,不需要下載到開發(fā)板24通過(guò)FTP上傳應(yīng)用程序用交叉網(wǎng)線連接好開發(fā)板的NIC-1網(wǎng)口和PC機(jī)的網(wǎng)口,在宿主機(jī)下打開終端輸入minicom,建立開發(fā)板與宿主PC機(jī)之間的通訊,配置開發(fā)板的IP和宿主機(jī)在同一網(wǎng)段。 /mnt/yaffsifconfig -查看IP /mnt/yaffsifconfig eth0 11 -配置eth0的IP /mnt/yaffsinetd -啟動(dòng)ftp服務(wù)打開FTP軟件gFTP,輸入地址11,用戶名:root,密碼:無(wú)。連接進(jìn)入,上傳編譯好的程序hello到/var文件夾下,運(yùn)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論