<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(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)之前,先準(zhǔn)備好移植所需要的軟件包,主要包括:交叉編譯所需的編譯工具包、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)核之前,首先要對編譯選項(xiàng)進(jìn)行配置。為了配置過程的直觀性,一般選擇“make menuconfig”命令,進(jìn)入uCLinux v3.1.0 Configuration 界面,主要是設(shè)置嵌入式處理器的型號以及操作系統(tǒng)的版本,然后選擇Default all settings 后進(jìn)行編譯即可。交叉編譯工作一次由以下命令完成:

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

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

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

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

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

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

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

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

            建立 uCLinux 超級終端,設(shè)置波特率為115200、8 位數(shù)據(jù)位、1 位停止位、無奇偶校驗(yàn)位、無流控制。命名為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)是一種將遠(yuǎn)程主機(jī)上的分區(qū)(目錄)經(jīng)網(wǎng)絡(luò)掛載到本地系統(tǒng)的一種機(jī)制,通過對網(wǎng)絡(luò)文件系統(tǒng)的支持,用戶可以在本地系統(tǒng)上像操作本地分區(qū)一樣來對遠(yuǎn)程主機(jī)的共享分區(qū)(目錄)進(jìn)行操作。因此,通過建立NFS,把Linux 宿主機(jī)上的特定分區(qū)共享到待調(diào)試的目標(biāo)板上,就可以直接在目標(biāo)板上操作Linux 宿主機(jī)的特定分區(qū),同時可以在線對程序進(jìn)行調(diào)試和修改,大大方便了軟件的開發(fā)。故NFS 是嵌入式Linux 開發(fā)的一個重要組成部分,下面詳細(xì)說明如何建立NFS 輔助開發(fā)環(huán)境。

            2.2.1 宿主機(jī)端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.*的計(jì)算機(jī)以讀寫的權(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 就會激活守護(hù)進(jìn)程,然后開始*client 端的請求:

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

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

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

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

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

            # ls /mnt

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

            2.2.2 目標(biāo)板端NFS 客戶端的配置

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

            /> mkdir /mnt/nfs //建立宿主機(jī)輸出共享目錄的掛載點(diǎn)

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

            /> cd /mnt/nfs

            /> ls

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



          關(guān)鍵詞: ARM

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();