呼,打了真久,終於完成了!本來是想將嵌入式系統的開發設定,一步一步地寫在網誌上的,不過....還是等我有空吧!(其實是太混了!)
以下的方式,是屬於開發中的較常用的模式,利用NFS 掛載根檔案系統。
=====================================
嵌入式系統開發環境設置
一、安裝套件:minicom、nfs-kernel-server
sudo apt-get install minicom
sudo apt-get install nfs-kernel-server
二、Minicom 設置
輸入指令$ minicom -s
接著,便會進入minicom設置畫面。
1.請選擇第三個“序列埠設定”、按“A”,然後 用刪除鍵刪除到底,之後輸入“/dev/ttyS0”,完成後按“Enter“鍵
(註:ttyS0這個部分視個人的主機上的port 而定,我是以USB 轉 RS232 port,故我所使用的為/dev/ttyUSB0”)
2.在相同畫面下按“F”,取消硬體Flow控制。
接著,按“Enter”鍵離開,之後選擇“儲存設定為dfl”,接著便可離開minicom 設定畫面。
三、NFS 設定
設定exports檔
輸入指令$ sudo nano /etc/exports
exports檔是設定你的本機對NFS的組態設定,而我所用的是將嵌入式平台透過NFS從本機端掛在根檔案系統(root File System),因此在exports檔的最下面我是設定為:
/data/target *(rw,no_root_squash,no_all_squash,sync)
將本機端下的 /data/target 資料夾設為根檔案系統的目錄資料夾。
設定完成後,以“Ctrl” + “ o ” 寫入,“Ctrl” + “ x ” 離開。
四、安裝toolchain
將光碟上的toolchain-edk6446-v3.2.sh 複製到本機上的/opt資料夾下
接著,輸入指令來安裝$ sudo ./toolchain-edk6446-v3.2.sh
安裝完成之後,在 /opt資料夾下,便會產生 arm-unknown-linux-gnueabi/ 的資料夾
接著,設定環境變數。設定環境變數的方法很多,可以用setenv、export …等指令來設定,也可以寫入/root/.bashrc、/etc/profile、/etc/environment…等。我是設定在/etc/environment中。
指令$ sudo nano /etc/environment
檔案開啟後,輸入內容:
在PATH的地方,新增
PATH="/opt/arm-unknown-linux-gnueabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
完成後,儲檔離開
接著強制讓環境變數啟動,輸入指令
$ source /etc/environment
接著,你可以測試一下是否設定完成,在cmd模式下,輸入 arm- 然後利用 [Tab]鍵的指令補全功能來看是否有 arm-unknown-linux-gnueabi- 這一系列的編譯指令可以用。
arm-unknown-linux-gnueabi-addr2line arm-unknown-linux-gnueabi-gcov
arm-unknown-linux-gnueabi-ar arm-unknown-linux-gnueabi-ld
arm-unknown-linux-gnueabi-as arm-unknown-linux-gnueabi-nm
arm-unknown-linux-gnueabi-c++ arm-unknown-linux-gnueabi-objcopy
arm-unknown-linux-gnueabi-c++filt arm-unknown-linux-gnueabi-objdump
arm-unknown-linux-gnueabi-cpp arm-unknown-linux-gnueabi-ranlib
arm-unknown-linux-gnueabi-g++ arm-unknown-linux-gnueabi-readelf
arm-unknown-linux-gnueabi-gcc arm-unknown-linux-gnueabi-size
arm-unknown-linux-gnueabi-gcc-4.1.2 arm-unknown-linux-gnueabi-strings
arm-unknown-linux-gnueabi-gccbug arm-unknown-linux-gnueabi-strip
基本上,會有上面那些指令的出現,如果出現就代表OK了!
五、安裝File System
光碟上有提供一個開發版的根檔案系統的 .sh檔,真貼心!這部分主要是用於開發版利用 NFS掛載本機端的根檔案系統所需設置的。
先建立檔案的目錄:
指令$ mkdir -p /data
之後,將光碟上的rootfs-edk6446-v3.2.sh檔案複製到剛剛所建的資料夾下,之後,就可以來夾裝它了!
指令$ sudo ./rootfs-edk6446-v3.2.sh
安裝完成之後,便會出現一個 /target 資料夾。
六、連線測試
將RJ45網路線、RS232線連接完成,接上電源後就會自動開機了(因為它沒有開關= =)
1啟動本機端的NFS服務。
指令$ /etc/init.d/nfs-kernel-server start
2進入minicom 模式。
指令$ minicom
這時候,按下開發版上的reset 鍵,讓系統重置。之後會跑出數字倒數畫面,在這個狀態下按下任何一個按鍵,便可進入 bootloader 下,開發板用的是 u-boot。因為要設定以NFS掛載,所以必須先進入u-boot設定環境變數。
3設定u-boot環境變數。
進入u-boot後,打上
setenv bootargs noinitrd ip=192.168.1.200 root=/dev/nfs rw nfsroot=192.168.1.100:/data/target,nolock console=ttyS0,115200n8 mem=120M
之接按Enter。
將設定的環境變數,寫入Flash中。
指令$ saveenv
註:設定啟動的環境變數。上面可以知道它是從192.168.1.100主機下掛載根檔案系統。因此,主機端的 IP也必須和此設定一樣!
4 設定本機端IP
上述的步驟完成之後,利用ifconfig 指令,設定網卡 IP
指令$ sudo ifconfig eth0 192.168.1.100
完成網卡設定之後,再次按下開發版的重置鍵,沒有問題的話,就可以開機成功了!開機成功的話,就可以看到登入畫面了。
註:若在開機時畫面卡在掛載根檔案系統時,請開另一個command line ,去看網卡的ip是否跑掉,若設定跑掉,則必須再做一次網卡的設定。