新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于LPC2210的嵌入式Linux開發(fā)平臺構(gòu)建

基于LPC2210的嵌入式Linux開發(fā)平臺構(gòu)建

作者: 時間:2010-11-15 來源:網(wǎng)絡(luò) 收藏

  2.1 uCLinux 操作系統(tǒng)的移植

  在開始移植操作系統(tǒng)之前,先準備好移植所需要的軟件包,主要包括:交叉編譯所需的編譯工具包、uCLinux 源碼包、完整的bootloader 程序及根文件系統(tǒng)。上述二種工具包都有眾多版本,本文分別選擇的是uCLinux-dist-20040408.tar.gz、arm-elf-tools-20040427.sh。整個移植工作分為三步:建立交叉編譯環(huán)境;編譯配置內(nèi)核;bootloader 及根文件系統(tǒng)的移植。

  2.1.1 建立交叉編譯環(huán)境

  將工具包 arm-elf-tools-20040427.sh 拷貝到目錄/usr/src 下,為其增加可執(zhí)行權(quán)限(#chmod755 arm-elf-tools-20040427.sh);然后安裝arm-elf-gcc(# ./ arm-elf-tools-20040427.sh),安裝完畢后查看/usr/local/bin 目錄下是否存在arm-elf-gcc 等文件,如存在,表明交叉編譯器安裝成功;最后是添加交叉編譯的路徑,這一步在安裝過程會自動執(zhí)行和保存,并在下次啟動之后仍然有效(#export PATH=$PATH:/usr/local/arm-elf/bin)。至此,交叉編譯環(huán)境已經(jīng)建立完畢。

  2.1.2 交叉編譯uCLinux 內(nèi)核

  在交叉編譯內(nèi)核之前,首先要對編譯選項進行配置。為了配置過程的直觀性,一般選擇“make menuconfig”命令,進入uCLinux v3.1.0 Configuration 界面,主要是設(shè)置嵌入式處理器的型號以及操作系統(tǒng)的版本,然后選擇Default all settings 后進行編譯即可。交叉編譯工作一次由以下命令完成:

  #cd /usr/src/uCLinux-dist // uCLinux-dist 為uCLinux 源代碼所在目錄

  #make distclean // 清除上一次編譯所產(chǎn)生的輔助文件和目標文件

  #make menuconfig // 通過文本菜單方式配置uCLinux

  #make dep // 建立源代碼文件的依賴關(guān)系

  #make //編譯內(nèi)核

  編譯結(jié)束之后會在 uCLinux 安裝目錄下建立romfs 和images 兩個目錄。其中romfs 為romfs 文件系統(tǒng)的臨時存放目錄;images 為生成的目標代碼目錄,其中romfs.img 為romfs文件系統(tǒng)的映像文件,image.bin 為文件系統(tǒng)和內(nèi)核代碼的目標文件。

  2.1.3 bootloader 及根文件系統(tǒng)的移植

  通過 RS-232 串口將完整的bootloader 程序下載到目標板的NOR Flash 中。主要工作是在WinXP 下設(shè)置超級終端,波特率38400、8 位數(shù)據(jù)位、1 位停止位、無奇偶校驗位、無流控制。通過運行下載程序,可以將bootloader 下載到NOR Flash 中。

  建立 uCLinux 超級終端,設(shè)置波特率為115200、8 位數(shù)據(jù)位、1 位停止位、無奇偶校驗位、無流控制。命名為uCLinux。然后啟動開發(fā)板,在超級終端中也即嵌入式開發(fā)板的“顯示器”中,可以看到bootloader 的啟動界面,通過FlashFXP 軟件可以將目錄bin、boot、etc下的文件下載到開發(fā)板。

  2.1.4 uCLinux 的啟動

  通過 bootloader 轉(zhuǎn)載和引導(dǎo)剛剛生成的內(nèi)核和文件系統(tǒng)。bootloader 引導(dǎo)內(nèi)核的方式是:將內(nèi)核影像文件和根文件系統(tǒng)下載至PSRAM 中直接啟動,而不是從NAND Flash 中讀入PSRAM,這種方法不需要燒寫Flash。如圖3 是uCLinux 操作系統(tǒng)啟動后的界面。



圖3 uCLinux 操作系統(tǒng)的啟動界面

  2.2 NFS 輔助開發(fā)環(huán)境的建立

  網(wǎng)絡(luò)文件系統(tǒng)(NFS,Network File System)是一種將遠程主機上的分區(qū)(目錄)經(jīng)網(wǎng)絡(luò)掛載到本地系統(tǒng)的一種機制,通過對網(wǎng)絡(luò)文件系統(tǒng)的支持,用戶可以在本地系統(tǒng)上像操作本地分區(qū)一樣來對遠程主機的共享分區(qū)(目錄)進行操作。因此,通過建立NFS,把Linux 宿主機上的特定分區(qū)共享到待調(diào)試的目標板上,就可以直接在目標板上操作Linux 宿主機的特定分區(qū),同時可以在線對程序進行調(diào)試和修改,大大方便了軟件的開發(fā)。故NFS 是嵌入式Linux 開發(fā)的一個重要組成部分,下面詳細說明如何建立NFS 輔助開發(fā)環(huán)境。

  2.2.1 宿主機端NFS 服務(wù)器的配置

  以 root 身份登錄Linux 服務(wù)器,編輯/etc 目錄下的共享目錄配置文件exports,指定共享目錄及權(quán)限等。

  執(zhí)行如下命令編輯文件 /etc/exports:

  #vi /etc/exports

  在該文件中添加如下內(nèi)容:

  /home/work 192.168.0.* (rw, sync, no_root_squash)

  然后保存退出。

  添加的內(nèi)容表示允許 IP 地址范圍在192.168.0.*的計算機以讀寫的權(quán)限來訪問/home/work 目錄。

  其中,/home/work 也稱為服務(wù)器輸出共享目錄;rw 讀寫權(quán)限;sync 數(shù)據(jù)同步寫入內(nèi)存和硬盤;no_root_squash 為NFS 服務(wù)器共享目錄用戶的屬性,如果用戶是root,那么對于這個共享目錄來說就具有root 權(quán)限。

  接著執(zhí)行如下命令,以啟動端口映射:

  #/etc/rc.d/init.d/portmap start

  最后執(zhí)行如下命令啟動 NFS 服務(wù),此時NFS 就會激活守護進程,然后開始*client 端的請求:

  #/etc/rc.d/init.d/nfs start

  在 NFS 服務(wù)器啟動后,還需檢查Linux 服務(wù)器的防火墻等設(shè)置(一般需要關(guān)閉防火墻服務(wù)),確保沒有屏蔽掉NFS 使用的端口和允許通信的主機,主要是檢查Linux 服務(wù)器iptables,ipchains 等選項的設(shè)置,以及/etc/hosts.deny,/etc/hosts.allow 等文件。

  到此,宿主機端 NFS 服務(wù)器配置完成。

  最后在宿主機上進行 NFS 服務(wù)器的回環(huán)測試,驗證共享目錄是否能夠被訪問。在宿主機上運行如下命令:

  # mount –t nfs –o nolock 192.168.0.10:/home/work /mnt

  # ls /mnt

  命令將宿主機的 NFS 輸出共享目錄掛載到/mnt 目錄下,因此如果NFS 配置正確的話,應(yīng)該可以在/mnt 目錄下看到/home/work 共享目錄的內(nèi)容。

  2.2.2 目標板端NFS 客戶端的配置

  在宿主機端的設(shè)置成功之后,還需要對客戶端進行相關(guān)的設(shè)置。在目標板系統(tǒng)的命令行下,執(zhí)行如下命令來進行NFS 共享目錄的掛載:

  /> mkdir /mnt/nfs //建立宿主機輸出共享目錄的掛載點

  /> mount –t nfs –o nolock 192.168.0.10:/home/work /mnt/nfs

  /> cd /mnt/nfs

  /> ls

  此時,目標板終端所顯示的內(nèi)容即為宿主機的輸出目錄的內(nèi)容,即宿主機的輸出目錄/home/work 通過NFS 映射到了嵌入式目標板的/mnt/nfs 目錄。由于Linux 默認下不啟動NFS,每次宿主機進入Linux 之后都要重新完成NFS 的啟動和掛載,比較麻煩??梢詫⒁陨系拿顚懭胨拗鳈C的腳本文件/etc/rc.d/rc.local 中,宿主機啟動時會執(zhí)行此文件。



關(guān)鍵詞: ARM

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉