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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > μClinux在S3C4510B上的移植

          μClinux在S3C4510B上的移植

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

          內(nèi)核的編譯和

          作為操作系統(tǒng)的核心,μ內(nèi)核負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動程序、文件系統(tǒng)和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的各種性能。μ內(nèi)核采用模塊化的組織結(jié)構(gòu),通過增減內(nèi)核模塊的方式來增減系統(tǒng)的功能。

          內(nèi)核配置,在產(chǎn)品列表中選擇Samsung/4510B。在庫的選擇上選uC-libc。

          (2)makedep

          尋找依存關(guān)系。

          (3)makeclean

          清除以前構(gòu)造內(nèi)核時生成的所有目標(biāo)文件、模塊文件和一些臨時文件。

          (4)makelib_only

          編譯庫文件。

          (5)makeuser_only

          編譯用戶應(yīng)用程序文件。

          (6)makeromfs

          生成romfs文件系統(tǒng)。

          (7)makeimage

          (8)make

          通過各個目錄的makefile文件進(jìn)行,會在各目錄下生成一大堆目標(biāo)文件。

          上述步驟完成后,就完成了對μClinux源碼的編譯工作。我們可以在/μClinuxSamsung/images目錄下看到2個內(nèi)核文件:image.ram和image.rom。

          其中iamge.rom可以直接燒寫入Flash存儲器中,當(dāng)系統(tǒng)復(fù)位或上電時,內(nèi)核自解壓到SDRAM運(yùn)行。Image.ram可以通過SDT載入到SDRAM中直接運(yùn)行。

          μCLinux的內(nèi)核有2種可選的運(yùn)行方式:可以在Flash上直接運(yùn)行,也可以加載到RAM中運(yùn)行。

          Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映像文件燒到Flash上,系統(tǒng)啟動時從Flash的某個地址開始逐句執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)采用的方法。

          內(nèi)核加載RAM方式:把內(nèi)核的壓縮文件存放在Flash上,系統(tǒng)啟動時讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行,這種方式相對復(fù)雜一些,但是運(yùn)行速度可能更快。同時這也是標(biāo)準(zhǔn)Linux系統(tǒng)采用的啟動方式。

          6應(yīng)用程序在μClinux上的開發(fā)

          下面將介紹如何把一個應(yīng)用程序(例如examplec)添加到μClinux上的過程。

          首先進(jìn)入μClinux-Samsung/user目錄并建立一個自己的子目錄,如myproject。將examplec復(fù)制到myproject目錄下,并編寫相應(yīng)的makefile文件。接著進(jìn)入user目錄,增加一行語句到該目錄下的makefile文件:

          dir_$(CONFIG_USER_MAAPP_LEDNXY)+=myapp

          切換到目錄μClinuxSamsung/config下,打開configin這個文件,并在最后增加類似下面的語句:

          mainmenu_optionnext_comment

          comment'MyApplication'

          bool'example'CONFIG_USER_MYPROJECT_

          EXAMPLE

          comment'MyApplication

          endmenu

          此后,在編譯內(nèi)核的makemenuconfig時就可以在CustomizeVendor/UserSetting(NEW)這一項(xiàng)的子菜單中選中自己的應(yīng)用程序example,然后按第5節(jié)中相同的辦法進(jìn)行編譯即可。

          但是,如果我們每修改一次應(yīng)用程序,就要把他加入到內(nèi)核中重新編譯,顯然效率太低,也不可行。那么有什么方法來節(jié)省調(diào)試時間呢?

          在上面的章節(jié)中曾提到Bootloader可以擔(dān)當(dāng)與主機(jī)端通信的任務(wù),在這里我們就可以通過他把應(yīng)用程序快速下載到目標(biāo)板上。

          首先通過elf2flt這個工具交叉編譯example.c生成在μClinux下的可執(zhí)行文件example(flat格式),命令如下:

          arm-elf-gcc-Wall-o2-wl,elf2flt-oexampleexample.c

          接著將宿主機(jī)與目標(biāo)板通過串口線連接,并在宿主機(jī)上啟動一個超級終端,例如minicom,選擇好一個COM口(通常是串口1),設(shè)置波特率為19200,8個數(shù)據(jù)位、1個停止位,無校驗(yàn)。然后選擇傳輸協(xié)議Zmodom,最后選定需要傳輸?shù)奈募xample并發(fā)送。傳輸結(jié)束后可以通過超級終端在目標(biāo)板的目錄中發(fā)現(xiàn)example,這說明傳輸成功。

          在目標(biāo)板上將example加上x屬性(可執(zhí)行屬性),然后輸入命令/example就可以運(yùn)行此程序了。顯然,通過這種方法可以很方便快捷的調(diào)試應(yīng)用程序,等調(diào)試結(jié)束,再把他加入到內(nèi)核中一起編譯即可。

          7結(jié)語

          討論了如何將μClinux到ARM7體系微處理器上的基本流程,同時也簡要的介紹了Bootloader以及應(yīng)用程序的加載和調(diào)試方法。在不同的宿主機(jī)和目標(biāo)板環(huán)境下,具體過程中可能會出現(xiàn)各種不同的錯誤或問題,可以充分利用GCC這個強(qiáng)大的工具,根據(jù)他的錯誤提示來一步步的進(jìn)行修正,最終成功的移植μClinux。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 移植 S3C4510B Clinux

          評論


          相關(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); })();