一、嵌入式LINUX開發環境的建立

 1.vmware+Ubuntu的安裝

      要進行嵌入式linux的開發首先要按照好一個主機開發環境,因爲嵌入式linux下的大部分開發工作都是在pc中開發的。如果你的機器足夠好,那麼建議首先在Windows下安裝一個虛擬機軟件vmware,畢竟Windows下可用的工具比較多,再在vmware基礎上安裝一個桌面版本的Linux系統。這裏使用的是vmware-7.0和Ubuntu-9.10,這2個軟件都可以在網上下載到。安裝過程比較冗長,這裏不一一說明,可以參見開發板的附錄。

    不過在進行下面的開發的時候會發現默認下Ubuntu缺少很多需要用到的軟件包,這要根據自己的實際情況使用Ubuntu的apt命令在線安裝這些軟件包。

2.建立tftp服務器。
在嵌入式linux開發過程中需要使用tftp方式從Linux主機下載文件到板子中,因此需要在主機linux系統中安裝tftp服務器。
Ubuntu-9.10中安裝tftp服務器的方法如下:

註明:在非ROOT用戶下輸入命令要達到ROOT用戶的效果   需要在命令前加上sudo

2.1 安裝程序
通過軟件管理安裝 tftp tftpd,前者是客戶端,後者是服務程序。系統根據依賴會選上openbsd-inetd。在Ubuntu的終端下輸入命令如下:
sudo apt-get install tftp tftpd
2.2 在根目錄/目錄下建一個tftpboot, 把屬性改成777
cd /
sudo mkdir tftpboot
sudo chmod 777 tftpboot
2.3 修改存放目錄
sudo vi /etc/inetd.conf
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
2.4sudo /etc/init.d/openbsd-inetd restart
sudo in.tftpd -l /tftpboot
2.5 測試tftp服務器
在/tftpboot文件夾下新建立一個文件
cd /tftpboot
touch test
進入另外一個文件夾
tftp 127.0.0.1
tftp> get test
是不是工作正常了呢?
現在把你編譯好的內核文件拷貝到/tftpboot下面,就可以使用u-boot的tftp命令加栽內核到目標板內存了

 


3 建立nfs服務器
在嵌入式linux開發的時候,常常需要使用nfs以方便程序的調試。使用nfs,用戶可以將板子要用到的根文件系統放在主機目錄下,開發板則通過以太網掛載到這個目錄並將這個目錄下的文件作爲根文件系統的內容,這樣用戶的程序更新後不比重新燒寫板子的根文件系統便能被重新使用,這點能夠大大加快程序的調試。

Ubuntu下安裝nfs服務器的步驟如下:
3.1進行NFS服務器端與客戶端的安裝:
sudo apt-get install nfs-kernel-server nfs-common portmap
安裝客戶端的作用是可以在本機進行NFS服務的測試。
3.2配置portmap
兩種方法任選一種就可以:
(1):sudo emacs /etc/default/portmap
去掉 -i 127.0.0.1
(2)sudo dpkg-reconfigure portmap
運行後選擇“否” 另外很重要的一點,要用sysv-rc-conf (而不是chkconfig)工具查看一下當前nfs和portmap的狀態,若是off,則用sudo sysv-rc-conf portmap on 或sudo sysv-rc-conf nfs-kernel-server on打開
3.3配置掛載目錄和權限
emacs /etc/exports
我的配置如下:
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync) hostname2(ro,sync) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt) # /srv/nfs4/homes gss/krb5i(rw,sync) # /nfsboot *(rw,sync) 解釋一下:
#後面的都是解釋
/nfsboot是NFS的共享目錄,*表示任何IP都可以共享這個目錄,你可以改爲受限的IP,rw表示的是權限,sync是默認的。
3.4更新exports文件
只要你更改了/etc/exports, 你不可以通過sudo exportfs -r 來更新 這個文件

3.5重啓NFS服務
sudo /etc/init.d/nfs-kernel-server restart 重啓nfs服務
3.6進行測試
嘗試一下掛載本地磁盤(我的linux系統IP爲202.198.137.18,將/home/nfsboot掛載到/mnt) $ sudo mount 202.198.137.18:/nfsboot /mnt 運行 $ df 看看結果 $ sudo umount /mnt
3.7使用nfs調試程序
A.將板子用的根文件系統,如下面說到的qtopia.tar.gz、android.tar.gz解壓縮到nfs共享目錄下,並使用修改權限:
sudo cp qtopia.tar.gz /nfsboot
cd /nfsboot
sudo tar –zxvf qtopia.tar.gz
sudo chmod –R 777 *
B.在uboot下修改linux內核的啓動參數爲:
setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=192.168.1.178:/nfsboot ip=192.168.1.20:192.168.1.178:192.168.1.1:255.255.255.0::eth0:on fbcon=rotate:1
運行saveenv保存參數。其中,192.168.1.178是nfs主機端ip,192.168.1.20是板子ip,/nfsboot就是共享目錄。
C.重啓內核,最後階段內核會到服務器端掛載共享目錄的內容作爲根文件系統。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章