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

下載本文檔

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

文檔簡介

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

2、。將硬件平臺和宿主PC機(jī)通過串口線和網(wǎng)線連接好后,在宿主PC機(jī)上安裝開發(fā)工具軟件,建立交叉編譯調(diào)試環(huán)境并進(jìn)行配置。利用已經(jīng)建立好的ARM-Linux的開發(fā)庫及編譯器,編寫hello.c和Makefile文件。學(xué)習(xí)在Linux下的編程和編譯過程,以及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地址時,需將其地址與開發(fā)平臺的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)。對

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

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

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

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

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

8、個運(yùn)行系統(tǒng)的環(huán)境,一個調(diào)試環(huán)境。這里采用GDB的遠(yuǎn)程調(diào)試功能遠(yuǎn)程調(diào)試一般由主機(jī)和目標(biāo)機(jī)通過串口或網(wǎng)絡(luò)連接而成。GDB里面嵌有串口通信協(xié)議。在目標(biāo)機(jī)上需要實現(xiàn)一個stub文件,這個文件里面需要提供串口連接的協(xié)議和傳送數(shù)據(jù)信息的方法。調(diào)試的一般步驟將兩臺機(jī)器用串口連接起來將需要調(diào)試的程序下載到目標(biāo)機(jī)在主機(jī)啟動GDB,讀入需要調(dià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í)行一個指令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文件,它有幾個主要部分 CC 指明編譯器 EXEC 表示編譯后生成的執(zhí)行文件名稱 OBJS 目標(biāo)文件列表 CFLAGS 編譯參數(shù) LDFLAGS 連接參數(shù) all: 編譯主入口 clean: 清除編譯結(jié)果注意:“$(CC) $(LDFLAGS) -o $ $(OBJS)”和“-rm -f $(EXEC) *.elf *.gdb *.o”前空白由一個Tab制表符生成,不能

11、單純由空格來代替。 20編譯應(yīng)用程序在上面的步驟完成后,我們將hello.c和Makefile文件放在同一目錄下,運(yùn)行make來編譯程序了。如程序進(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)行,查看運(yùn)行結(jié)果是否正確

12、。在C程序main函數(shù)中,接收用戶輸入(用戶任意輸入9個整數(shù)),然后在main中調(diào)用使用ARM匯編編寫的函數(shù)(單獨存儲成一個文件,在該函數(shù)中完成對這9個整數(shù)的排序功能),然后再在C程序main函數(shù)中輸出這9個排好順序的整數(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通過NFS調(diào)試程序前面配置開發(fā)環(huán)境時已在宿主PC上啟動了NFS服務(wù),并設(shè)置好了共享目錄,可以在終端中輸入minicom,建立開發(fā)板與宿主PC機(jī)之間的通訊了。 /mnt/yaffs mount t nfs o nolock 6:/arm2410

14、s /host注意:IP地址需要根據(jù)宿主PC的實際情況修改成功掛接宿主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ā)板沒有重啟,就能一直保持連接。這樣可以反復(fù) 修改、編譯、調(diào)試,不需要下載到開發(fā)板24通過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 -啟動ftp服務(wù)打開FTP軟件gFTP,輸入地址11,用戶名:root,密碼:無。連接進(jìn)入,上傳編譯好的程序hello到/var文件夾下,運(yùn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論