1. 交叉編譯工具鏈arm-none-linux-gnueabi-的安裝
由於用的是ZLG的iMX257開發板,交叉編譯工具鏈使用的是ZLG提供的,並非自己親自編譯的。下面是開發板配套文檔中的安裝過程。
在“Ubuntu 64-bit 12.04 for EasyARM-iMX257.iso”基礎上安裝的 Linux 系統已經默認安裝了開發 EasyARM-iMX257 所需的交叉編譯工具鏈,用戶無需再執行安裝,如果用戶的
Linux 系統上未安裝這個工具鏈,則可以按照以下步驟進行安裝:
1)安裝 32 位的兼容庫和 libncurses5-dev 庫
在安裝交叉編譯工具之前需要先安裝 32 位的兼容庫和 libncurses5-dev 庫,安裝 32 兼容庫需要從 ubuntu 的源庫中下載,所以需要在 Linux 主機系統聯網的條件下,通過終端使用如下命令安裝:
vmuser@Linux-host ~$sudo apt-get install ia32-libs
若 Linux 主機系統沒有安裝 32 位兼容庫,在使用交叉編譯工具的時候可能會出現錯誤:
-bash: ./arm-none-linux-gnueabi-gcc: 沒有那個文件或目錄
在終端中使用如下命令則可以安裝 libncurses5-dev 庫。
vmuser@Linux-host ~$sudo apt-get install libncurses5-dev
如果沒有安裝此庫,在使用 make menucofig 時出現如下所示的錯誤:
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1
make: *** [menuconfig] 錯誤 2
2)安裝交叉編譯工具鏈
將光盤資料中的“freescale-zlg.tar.bz2”文件通過 U 盤的方式拷貝到 Linux 主機的“/tmp”目錄下,然后執行如下命令進行解壓安裝交叉編譯工具鏈:
vmuser@Linux-host ~$ cd /tmp
vmuser@Linux-host /tmp$ sudo tar -jxvf freescale-zlg.tar.bz2 -C /opt/
vmuser@Linux-host /tmp$ # 輸入 vmuser 用戶的密碼“vmuser”
執行完解壓命令后,交叉編譯工具鏈將被安裝到“/opt/freescale”目錄下。交叉編譯器的具體目錄是“/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin”,為了方便使用,還需將該路徑添加到 PATH 環境變量中,其方法為:修改“/etc/profile”文件,具體操作方法如下:
在終端中輸入如下指令
vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示輸入密碼,則輸入“vmuser”
用 vi 編輯器打開“/etc/profile”文件后,在文件末尾增加如下一行內容:
export PATH=$PATH:/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin
文件修改並保存后,再在終端中輸入如下指令,更新環境變量,使設置生效,如圖4.54所示。
vmuser@Linux-host ~$ source /etc/profile
在終端輸入arm-none-linux-gnueabi-並按TAB鍵,如果能夠看到很多arm-none-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確。
3.測試工具鏈
在“~/EasyAMR-iMX257”目錄下創建一個hello文件夾,並在該文件夾下創建hello.c文件(創建方法為:右鍵該目錄下空白處,在彈出的右鍵菜單中選擇“創建新文檔”,再在子菜
單下選擇“空白文檔”,然后將創建的空白文檔重命名為hello.c),然后右擊hello.c文件,選擇“使用文本編輯器打開”菜單打開hello.c文件,然后輸入如程序清單4.1所示內容。
程序清單4.1 Hello 程序清單
#include
int main(void)
{
int i;
for (i=0; i<5; i++) {
printf("Hello %d!\n", i);
}
return 0;
}
輸入完程序代碼后保存並關閉 hello.c 文件,然后按“Ctrl+Alt+T”啟動終端,輸入以下命令對 hello.c 進行編譯並查看編譯后生成文件的屬性:
vmuser@Linux-host ~$ cd /home/vmuser/EasyARM-iMX257/hello #瀏覽到程序文件所在目錄
vmuser@Linux-host ~/EasyARM-iMX257/hello$ arm-none-linux-gnueabi-gcc hello.c -o hello #編譯 hello.c 文件
vmuser@Linux-host ~/EasyARM-iMX257/hello$ file hello #查看編譯生成的 hello 文件屬性
hello.c文件編譯后將輸出hello文件,終端執行命令及輸出文件如圖4.56所示。
通過終端命令運行的結果可知,hello 文件是 ARM 格式的可執行文件,說明arm-none-linux-gnueabi-工具鏈已經可以正常使用了。
下面可以嘗試通過前面學習到的 NFS 掛載方法,將 hello 文件放到 EasyARM-iMX257上面去運行,其基本操作驟如下:
3) 給目標板接上調試串口線及網線,並打開串口終端監聽串口數據,然后再給目標系統上電。
4) 目標系統(Linux 系統)上電后,通過串口終端登錄目標系統(用戶名為“root” ,無須輸入密碼),並設置目標系統的 IP 為 192.168.12.124(建議與 Linux 主機位於同一
網段,並能互相 ping 通,否則可能導致 NFS 掛載失敗),並測試目標系統與 Linux主機的網絡是否暢通。
root@EasyARM-iMX257 ~# ifconfig eth0 192.168.12.124
root@EasyARM-iMX257 ~# ping 192.168.12.123
5)目標系統與 Linux 主機網絡暢通后,通過發送如下命令可將主機的 NFS 共享目錄“EasyARM-iMX257”掛載到目標系統的/mnt 目錄下:
root@EasyARM-iMX257 ~# mount -t nfs 192.168.12.123:/home/vmuser/EasyARM-iMX257 /mnt -o nolock
6)NFS 掛載成功后,通過“cd”命令瀏覽到 hello 文件所在目錄,通過“./hello”命令運行 hello文件,具體命令如下:
root@EasyARM-iMX257 ~# cd /mnt/hello
root@EasyARM-iMX257 /mnt/hello# ./hello
hello程序運行后,將通過串口終端打印五行字符,測試結果如圖4.57所示。