對于初學者,只需要一臺安裝有linux操作系統(比如Ubuntu)的PC即可,或者在windows下安裝一個虛擬機軟件(Vmware),虛擬一個Linux系統的主機,但是我建議還是安裝真機,這樣會迫使你必須在Linux環境下做任何事情,能讓你更快的熟悉Linux操作系統。
那么當我們進入進階階段的學習時,需要在硬件設備上跑程序的時候,那我們就需要繼續搭建交叉開發環境了。交叉開發模式即編譯和運行不在同一臺主機上,在PC機上編輯、編譯,在目標機(開發板或者產品)上運行程序。

在主機上開發完程序,通常使用nfs網絡掛載或者tftp將目標代碼通過網線下載到目標板進行驗證,但是,像我們當前項目的驅動開發,驅動都是集成在內核中的,所以每次都是在Ubuntu上將整個內核代碼進行編譯,然后通過usb將整個內核鏡像產物進行燒寫。
gcc(GNU C Compiler),大名鼎鼎的GNU的C/C++/Obj-C編譯器
gcc一般Linux系統自帶,不用自己安裝,下面簡單說下gcc編譯的過程,GCC的編譯流程分為四個步驟:
- 預處理(Pre-Processing):gcc -E hello.c -o hello.i
- 編譯(Compiling):gcc -E hello.c -o hello.i
- 匯編(Assembling):gcc -c hello.s -o hello.o
- 鏈接(Linking):gcc hello.o -o hello
鏈接時有時候會加如下參數:
- -I: 指定頭文件的路徑
- -L: 指定庫的路徑
安裝交叉編譯工具鏈
當我們初學的時候僅僅在Linux主機下編譯運行我們的程序,gcc就夠了,但是如果交叉運行時,就必須安裝交叉編譯工具鏈,交叉編譯工具鏈可以自己制作,但是我還是建議大家通過以下方式安裝:
- 在~目錄下創建一個文件夾

- 下載交叉編譯工具鏈gcc-4.6.4.tar.xz(根據你需要的版本下載)cp到toolchain目錄下進行解壓

- 添加環境變量
修改配置文件/etc/bash.bashrc,在最后一行添加:
export PATH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin/
- 重啟配置文件
source /etc/bash.bashrc
- 工具鏈測試
arm-none-linux-gnueabi-gcc -v、
如果可以看到版本號,說明安裝配置成功。
tftp服務器的安裝及配置
tftp是用來下載遠程文件的最簡單網絡協議,基于UDP來實現的,嵌入式linux的tftp開發環境包括兩個方面:
一是linux服務器端的tftp-server支持,二是嵌入式目標系統的tftp-client支持。因為u-boot(bootloader的一種)本身內置支持tftp-client,所以嵌入式目標系統端就不用配置了。
- 修改文件(/etc/default/tftpd-hapa),開啟tftp服務
sudo vi /etc/default/tftpd-hpa
改為:

-l:以standalone/listen 模式啟動TFTP服務,而不是從inetd啟動 ,standalone/listen模式是一次啟動,運行期間一直駐留在內存中,優點是反應快,缺點是損耗了一定的系統資源,通常用于對實時性要求較高的地方,inetd啟動方式相反,只在外部發出連接請求時才調用tftp進程,不占用系統資源。
-c:可創建新文件,默認情況下,TFTP只允許覆蓋原有文件,不能創建新文件。
-s:改變TFTP啟動的根目錄,加了-s之后,客戶端端在使用TFTP時,不再需要輸入指定的目錄。
- 重啟tftp服務器
sudo service tftpd-hpa restart
- 創建/tftpboot目錄(在根目錄下創建),并修改權限
sudo mkdir tftpbootsudo chmod 777 tftpboot
- 登錄本機進行測試
tftp localhost //登錄tftp > get xxx //xxx為你想要從服務器(/tftpboot目錄)下載的文件tftp > put xxx //xxx為你想要往服務器(/tftpboot目錄)發送的文件tftp > q //q表示退出
如果采用燒寫整個Linux kernel鏡像的方法,通常使用usb將主機和目標板連接,然后根據不同的芯片廠商提供的燒寫工具進行燒寫,比如高通芯片使用Qfile工具進行燒寫。