天天看點

嵌入式Linux程式設計--我的第一次艱難跋涉

其實從很早我就想深入學習Linux,但時間有限,并且Linux門檻挺高,不是很容易上手。最近由于隧道項目中用到嵌入式Linux(Arm CPU上的Linux),并且提供硬體的機關針對Linux的程式設計收費很高,并且時間很長,是以猶豫再三,決定開始深入學習Linux,并在學習過程中完成預定的任務。

沒有想到,在嵌入式Linux上運作一個最簡單的“Hello Liunx”程式就費了很大的周折,不過功夫不負有心人,經過幾天的艱難跋涉,總算成功了,下面我把我的曆程說一下,給後來人有個參考。

要想在嵌入式Linux運作程式,需要有下面幾個問題解決:

1、需要一個基于Arm的gcc交叉編譯器;

2、需要Windows與VPC上的Linux進行互動,以便交換檔案;

3、嵌入式Linux系統需要和VPC上的Linux系統或Windows系統進行互動,以便互動檔案;

嵌入式Linux程式設計--我的第一次艱難跋涉

第一個問題,相對比較容易解決,直接和中間廠商要來了cross-2.95.3.tar.bz2 安裝包,這是一款基于Arm平台上的交叉編輯器。直接解壓到任意目錄即可。

第二個問題,有些棘手,查了若幹資料,終于找到可行的辦法。

1、在Windows XP建一個共享檔案夾,如“share”

2、虛拟機運作起來後,在Linux指令行方式輸入:smbmount //ip位址或計算機名/共享檔案夾名 挂載點

3、Ok,連接配接成功。

第三個問題,原想着很容易,卻沒有想到是最難的,中間廠商的辦法如下:

采用目标闆挂載NFS目錄的方式進行開發

主機:NFS伺服器

1、修改配置檔案etc/exports,如

/nfs/rootfs 192.168.0.X(rw,sync,no_root_squash)  //具體含義略

2、配置其為所有使用者可讀,chmod 644 /etc/exports

3、讓NFS伺服器重新載入 etc/exports, /etc/init.d/nfs reload

4、檢查防火牆,不要屏蔽相應端口

目标闆:核心需要支援NFS

  Enable:

     File Systems à

        Network File Systems à

          NFS file system support

          Provide NFSv3 client support           

配置完後,重新編譯核心

目标闆啟動後,mount –t nfs 192.168.0.Y:/nfs/rootfs/mnt –o nolock

按上面一步步做了,目标闆提示RPC什麼錯誤之類,上網查資料,用Servers指令開啟服務,很可惜,目标闆不支援Servers指令。

最後發現目标闆支援FTP伺服器,總數找到一個救命稻草,不過很可惜,使用者密碼未知,問了中間廠商,使用者和密碼仍然錯誤,最後打了n次電話,告訴可以在目标闆上添加新使用者,然後再登入FTP。

很恐怖的是,書本上教的useradd竟然沒有,後來檢視目标闆bin上的檔案,原來是adduser指令,添加上使用者,果然可以登入了。不過linux上的FTP用戶端不好使,Windows自帶的也不行,隻好下了個FlashFXP軟體,還可以。

嵌入式Linux程式設計--我的第一次艱難跋涉

在虛拟機的Liunx系統編寫如下程式:

#include <stdio.h>

int main(int argc,char **argv)

{

   printf("hello linux/n");

}           

編寫Makefile檔案

all:tt

tt: test.c

       /usr/local/arm/2.95.3/bin/arm-linux-gcc -o  tt test.c

clean:

       -rm -rf tt           

在指令行運作Make指令,生成tt檔案

把tt檔案通過FTP用戶端拷貝到目标闆上。

開始直接輸入[root@()]$tt 沒有反應,查資料,發現原來要這樣(如下),為什麼?暫時不知道!

[root@()]$ ./tt  ,竟然有錯誤提示,提示内容如下:-sh:./tt:Permission denied

上網查資料說是權限不夠,需要運作如下指令:chmode 777 tt

運作後,竟然告訴我,沒有這個指令,最後發現原來是 chmod(看來指令的名稱都被中間廠商修改了)。

運作chmod 777 tt 後,在去運作 ./tt  ^^#$^#$@ OK ---成功了!

嵌入式Linux程式設計--我的第一次艱難跋涉

後記:linux的使用習慣與windows有很大的差別,linux聯網需要激活網卡才能工作,運作檔案需要 ./XXX格式,并且有權限的使用者才能執行,類似的小問題,對一個linux菜鳥來說,真是一個又一個的攔路虎,不過到現在總算接近門檻了,對我來說,後面的路還很長,困難才剛剛開始 … … :-(

繼續閱讀