在進行移植之前,要檢查一下目標機(這裡指6410開發板)與宿主機之間的接線問題,即串口線、網線是否正確連接,目標機的電源是否插好!在接線問題解決後,才能保證交叉編譯正常進行!
個人理解,移植的主要思想是在宿主機上新建一個網絡文件系統,將該網絡文件掛載到目標機上,通過建立共享網絡文件系統來實現在目標機的終端控制運行在宿主機上交叉編譯後的執行文件(如果涉及到庫時,還需要交叉編譯庫,將交叉編譯後生成的庫通過共享網絡文件系統,利用網絡傳輸庫文件到目標機中).
個人認為,在進行移植時,需要做兩個部分的准備:宿主機准備、目標機准備!
一、宿主機准備
1.新建一個目錄作為宿主機與目標機之間的共享網絡文件系統
在PC機下再打開一個終端然後在/usr/(或其他)目錄下“mkdir tty”命令來建立新目錄tty,將該目錄tty作為下面掛載的文件系統對象,也就是將tty目錄作為宿主機與目標機之間的共享網絡文件系統。
2.檢查並修改PC機的IP地址、子網掩碼(最好要關閉防火牆)
將PC機的IP地址修改為和目標機的IP(192.168.1.199為固定IP)的前三位(192.168.1.*)保持一致,子網掩碼也要修改為(255.255.255.0),可以選擇使用這個命令"ifconfig eth0 192.168.1.20 netmask 255.255.255.0"(eth0 為網卡設備)通過終端來快速修改!防火牆可以通過“setup”命令來查詢是否關閉!使用ping命令來檢查目標機與宿主機之間的網絡是否正常接通!
3.修改端口配置文件
進入到/etc目錄下對exports文件進行內容的修改,修改為下面內容:
/usr/tty 192.168.1.199(rw,sync)
4.啟動nfs(網絡文件系統)服務,並進行網絡檢查!
接著"service nfs start"啟動nfs服務,開始進行端口配置檢查(如果exports文件修改有問題,這時會出現錯誤提示),然後在PC機與開發板網絡連通後,開始進行掛載。
二、目標機准備
掛載時,是在開發板內yaff目錄下掛載的。
5.掛載共享網絡文件系統
宿主機(這裡指PC機)進入linux系統桌面後,打開終端。在終端輸入"minicom"命令後,進入開發板內yaff目錄下。執行“mountnfs PC機IP:/usr/tty /mnt/nfs”命令(這裡是"mountnfs 192.168.1.20:/usr/tty /mnt/nfs"),來實現掛載(有時候會遇到一些問題,下面有我總結的解決問題的方法)!
在掛載成功後在宿主機的終端下,只需要移動自己需要移植的交叉編譯後的執行文件和一些與程序有關的其他文件(如交叉編譯後的庫、圖片等)到自己掛載的那個目錄下,在目標機的終端進入mnt/nfs/目錄裡進行查看共享的文件或目錄!
下面簡單說一下在掛載共享網絡文件系統時,遇到問題後一些解決辦法,希望能夠幫你解除煩惱:
1)在掛載時,顯示網絡不可達時,要檢查一下網線和IP地址,網線插上或IP改為靜態IP後,再重新掛載即可。
2)在掛載時,顯示端口不被允許時,重啟一下開發板,再重新掛載即可。
3)在掛載時,顯示掛載失敗,此時要重啟一下nfs服務器,一般會解決問題。
舉例說明:
移植一個helloworld程序,在開發板上顯示hello world!
m.c文件內容:
#include<stdio.h>
int main( )
{
printf("hello ,word!");
return 0;
}
在PC機終端交叉編譯:
arm-linux-gcc m.c -o e
在arm機上執行 ./e
本文沒有做關於交叉編譯方面的詳細分析,在上面的宿主機准備中,有時候需要修改minicom配置文件,以後再詳解!關於交叉編譯問題,以後解析!謝謝支持!如果有錯誤,請明確地指出錯誤之處,在收到並確定後我會及時糾正錯誤。