嵌入式系統實驗指導書 熟悉嵌入式Linux開發環境

2022-04-29 02:33:02 字數 2601 閱讀 5420

linux虛擬機器ip:192.168.0.12

windows主機ip:192.168.0.45

目標機(實驗箱)ip:192.168.0.121

[root@arm /]# cd /home

[root@zxt home]# mkdir hello

[root@zxt home]# cd hello

在 linux 下的文字編輯器有許多,常用的是 vi 和xwindow介面下的 gedit 等,我們在開發過程中推薦使用 vi,使用者需要學習 vi 的操作方法,請參考相關書籍中的關於 vi 的操作指南。 kdevelope、anjuta 軟體的介面與 vc6.0 類似,使用它們對於熟悉 windows環境下開發的使用者更容易上手。

實際的 源**較簡單,如下:

#include <>

main()

我們可以是用下面的命令來編寫 的源**, 進入 hello 目錄使用vi 命令來編輯**:

[root@arm hello]# vi

按「i」或者「a」進入編輯模式,將上面的**錄入進去,完成後按 esc 鍵進入命令狀態,再用命令「:wq」儲存並退出。這樣我們便在當前目錄下建立了乙個名為 的檔案。

要使上面的 程式能夠執行,我們必須要編寫乙個 makefile 檔案,makefile 檔案定義了一系列的規則,它指明了哪些檔案需要編譯,哪些檔案需要先編譯,哪些檔案需要重新編譯等等更為複雜的命令。使用它帶來的好處就是自動編譯,你只需要敲乙個「make」命令整個工程就可以實現自動編譯,當然我們本次實驗只有乙個檔案,它還不能體現出使用 makefile的優越性,但當工程比較大檔案比較多時,不使用 makefile幾乎是不可能的。

下面我們介紹本次實驗用到的 makefile 檔案。

cc= armv4l-unknown-linux-gcc

exec = hello

cflags +=

all: $(exec)

$(exec):

cc) $(cflags) -o $(exec) $(exec).c

clean:

rm -f $(exec) *.o

下面我們來簡單介紹這個 makefile檔案的幾個主要部分:

cc指明編譯器

exec表示編譯後生成的執行檔名稱

objs目標檔案列表

cflags編譯引數

ldflags 連線引數

all編譯主入口

clean清除編譯結果

注意: 「$(cc) $(cflags) -o $(exec) $(exec).c」和「rm -f $(exec) *.

o」前空白由乙個 tab製表符生成,不能單純由空格來代替。

與上面編寫 的過程類似,用 vi 來建立乙個 makefile檔案並將**錄入其中

[root@arm hello]# vi makefile

在上面的步驟完成後,我們就可以在hello 目錄下執行「make」來編譯我們的程式了。如果

進行了修改,重新編譯則執行:

[root@arm hello]# make clean

[root@arm hello]# make

注意:編譯、修改程式都是在宿主機(本地linux虛擬機器)上進行,不能在「超級終端」下進行。

armv4l-unknown-linux-gcc是嵌入式linux編譯器,生成的可執行檔案只能在實驗箱上執行。

gcc是redhat linux9.0編譯器,生成的可執行檔案只在linux9.0下執行。

gcc –o hello //hello為可執行檔名 –o為編譯引數

在linux虛擬機器上啟動nfs服務,並設定好共享的目錄(已設定,自動啟動),具體配置請參照嵌入式 linux環境開發環境的建立。在建立好 nfs 共享目錄以後,我們就可以進入「超級終端」中建立開發板與linux虛擬機器之間的nfs檔案系統掛載。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.12:/arm2410cl /var

注意: ip位址需要根據宿主 pc機的實際情況修改(已經設定,無需修改)

成功掛接宿主機的 arm2410cl 目錄後,在開發板上進入/host 目錄便相應進入宿主機的/arm2410cl 目錄,我們已經給出了編輯好的 和 makefile 檔案,它們在/arm2410cl/exp/basic/01_hello 目錄下。使用者可以直接在宿主 pc上編譯生成可執行檔案,並通過上面的命令掛載到開發板上,執行程式察看結果。

如果不想使用實驗箱提供的原始碼的話,可以再建立乙個 nfs 共享資料夾(已經建立)。如/home,在home目錄下建立hello目錄,然後編寫自己的和makefile,並且使用make工具編譯生成目標檔案hello。

通過「超級終端」把linux虛擬機器上的/home掛載到開發板的/var上。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.12:/home /var

再進入/host目錄執行剛剛編譯好的 hello 程式,檢視執行結果。

[~] cd /hello

[/host] ./hello

hello world!

1.makefile是如何工作的?其中的巨集定義分別是什麼意思?

嵌入式系統原理實驗指導書

嵌入式系統原理 實驗指導書 1實驗平台 3 1.1硬體平台 3 1.2軟體平台 6 2 實驗部分 8 實驗一 熟悉嵌入式系統開發平台 8 實驗二 linux常用命令實驗 11 實驗三 linu c語言程式設計 16 實驗四 建立交叉編譯環境 19 實驗五 linux基本應用程式實驗 24 tq244...

嵌入式實驗

1 實驗目的 1 學會qt e在arm裝置上的移植方法與步驟 2 學習qt中訊號與槽的程式設計 3 掌握qt e在arm裝置上的常用輸入輸出裝置移植方法。2 實驗內容 1 移植qt e到up arm2410cl上 2 在qt e中新增觸控螢幕滑鼠等裝置支援 3 在qt designer下編寫程式,a...

嵌入式 實驗三

嵌入式處理器實驗 指導書 掌握pcb檔案的新建和pcb基本設定 介紹如如何新建pcb檔案以及載入封裝圖。通過實驗聯絡,掌握實驗內容。1.實驗三新建pcb檔案以及pcb基本設定 2.實驗目的 掌握pcb檔案的新建以及pcb基本設定 3.實驗要求 通過實驗,達到實驗目的。4.實驗原理及內容 在prote...