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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux內核在S3C2410上移植的研究

          Linux內核在S3C2410上移植的研究

          作者: 時間:2012-07-17 來源:網(wǎng)絡 收藏

          摘要:以到嵌入式系統(tǒng)的技術為目的,描述了-2.4.18.-rm7-pxal處理器目標板上的方法。詳細介紹了方法與步驟,并說明了如何搭建移植環(huán)境。結果表明,該方法簡單實用,達到了預定目標。
          關鍵詞:嵌入式系統(tǒng);Linux;;移植

          嵌入式系統(tǒng)就是以應用為中心,以計算機技術為基礎的軟、硬件可裁剪,適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(tǒng)。Linux操作系統(tǒng)是一種性能優(yōu)良、源碼公開且被廣泛應用的免費操作系統(tǒng),由于其體積小,可裁減,運行速度高等優(yōu)點,因此可以作為嵌入式操作系統(tǒng)和非實時操作系統(tǒng)的典范。EL-ARM-830+型教學實驗系統(tǒng)是一種綜合的教學實驗系統(tǒng),該系統(tǒng)采用了ARM92 0T核,32位微處理器,實現(xiàn)了多模塊的應用實驗。在實驗板上有豐富的外圍擴展資源,可以完成ARM的基礎實驗、算法實驗和數(shù)據(jù)通信實驗、以太網(wǎng)實驗。

          1 Linux的實驗環(huán)境搭建
          1.1 Redhat9.0操作系統(tǒng)的安裝
          安裝Redhat9.0前,先把串口配置好,這是建立Linux系統(tǒng)和試驗箱之間的串口通信。配置完以后在啟動Linux系統(tǒng)時點擊全屏,這樣做的目的是讓Linux系統(tǒng)占取網(wǎng)絡資源。點擊VM→setting在彈出的窗口點擊左下角的Add按鈕,此時選擇serial Port,依次點擊“下一步”,直到配置完串口。
          1.2 配置NFS網(wǎng)絡文件系統(tǒng)
          首先在Linux主機的終端上執(zhí)行setup,彈出菜單界面后,選中Firewall configuration,回車,進入系統(tǒng)服務選項菜單,選擇no firew all關閉防火墻(如果安裝了防火墻),按空格鍵就會選中,然后退出。但是,setup里面會照樣顯示防火墻設置是high的,這個可以不必理會。之后選中System services,回車,進入系統(tǒng)服務選項菜單,在其中選中[*]nfs,然后按F12鍵退出,再選擇方向鍵,退出setup界面,返回到命令提示符下。利用編輯器打開/etc/exports文件(輸入命令vi/etc/exports),按A進入文本輸入模式,將這個默認的空文件修改為只有如下一行內容:
          /(rw)
          /home/nfs
          然后,保存退出(按ESC鍵進入命令模式,輸入:進入到最后行模式,輸入wq!保存退出),之后改變目錄到/etc/rc.d/init.d/下(輸入命令cd/etc/rc.d/init.d/),執(zhí)行如下命令:
          ./nfs start
          終端內輸出:
          Starting NFS services:[確定]
          Starting NFS quotas:[確定]
          Starting NFS daemon:[確定]
          Starting NFS mountd:[確定]
          (1)安裝交叉編譯器。打開Linux系統(tǒng)下的終端,在里面輸入命令cd/linuette/RPMS/改變目錄到/linuette/RPMS下,輸入如下命令:
          #rpm-UVh*.rpm
          等待系統(tǒng)安裝,如果所有的RPMS內的文件全部正確安裝,將會在根目錄下的/opt文件夾內生成一個host文件夾,交叉編譯庫就在該目錄下,到此交叉編譯環(huán)境就搭建好了。
          (2)用交叉網(wǎng)線連接主機和實驗系統(tǒng)。在Linux的開始菜單里啟動終端,在終端[root@localhost root]#minicom-s回車,按S鍵選擇Seri al Port setup回車,彈出串行口設置界面,按A鍵編輯Serial Device:/dev/ttys0回車;按E鍵,再按I鍵,回車,選擇為Bps/Par/Bit s:115200 8N1回車;按F鍵,選擇Hardware Flow Control:No。設置完后回車,然后用上下選擇鍵,選中Modem and dialing,將Initstri ng,Reset string,Hang-up string設置為空,再選中Save setup as df1這一項,回車,保存為默認的配置,下次進入minicom時就不用再設置了。用上下選擇鍵選中Exit回車退出設置,進入minicom。
          (3)Linux系統(tǒng)下網(wǎng)絡設置。點擊左下角的小紅帽,選擇系統(tǒng)設置一網(wǎng)絡,然后雙擊設備eth0的藍色區(qū)域,進入以太網(wǎng)設置界面,在靜態(tài)設置IP地址欄下面輸入與宿主機一個網(wǎng)段的IP地址、網(wǎng)關及子網(wǎng)掩碼,確定后激活網(wǎng)絡設備。
          (4)Ping通主機和實驗系統(tǒng)。在minicom下,給系統(tǒng)上電,系統(tǒng)正常起來后,利用ifconfig eth0 xxx.xxx.xxx.xxx來改變實驗系統(tǒng)的IP地址,讓該地址的前三段和主機的前三段一致,最后的一段,可以選擇與主機不重復的小于255的任意值。利用mount命令,掛載主機的nfs系統(tǒng)下的共享目錄。
          利用命令chmod 777/home/nfs改變/home/nfs文件夾的屬性,讓其變?yōu)榭勺x可寫,輸入mount-onolock 192.168.0.1:/home/n fs/mnt/yaffs回車,即可完成把主機上的/home/nfs下的文件掛載到實驗系統(tǒng)的/mnt/yaffs目錄下。

          2 BootLoder引導程序的移植
          在嵌入式系統(tǒng)中,BootLoader的作用與PC機上的BIOS類似,通過.BootlLoader可以完成對系統(tǒng)板上的主要部件如CPU,SDRAM,F(xiàn)LASH、串行口等進行初始化,也可以下載文件到系統(tǒng)板上,對FLASH進行擦除與編程。當運行操作系統(tǒng)時,它會在操作系統(tǒng)運行之前運行,通過它,可以分配內存空間的映射,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)準備好正確的環(huán)境。因此,正確建立Linux移植的前提條件是具備一個與Linux配套、易于使用的Boot Loader,它能夠正確完成硬件系統(tǒng)的初始化和Linux的引導。
          系統(tǒng)使用的BootLoader是VIVI。VIVI是CPU加電后運行的第一段程序,其基本功能是初始化硬件設備,建立內存空問的映射圖,從而為調用嵌入式Linux內核做好準備。為能夠實現(xiàn)正確引導Linux系統(tǒng)的運行,以及當編譯完內核后,快速下載內核和文件系統(tǒng),VIVI首先通過串口下載內核和文件系統(tǒng),當系統(tǒng)正常運行起來后,網(wǎng)絡驅動正常運行后,VIVI就通過網(wǎng)口下載內核和文件系統(tǒng)。同時,它也具有功能較為完善的命令集,對系統(tǒng)的軟硬件資源進行合理的配置與管理。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();