<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > μClinux在S3C4510B上的移植

μClinux在S3C4510B上的移植

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

內核的編譯和

作為操作系統的核心,μ內核負責管理系統的進(jìn)程、內存、設備驅動(dòng)程序、文件系統和網(wǎng)絡(luò )系統,決定著(zhù)系統的各種性能。μ內核采用模塊化的組織結構,通過(guò)增減內核模塊的方式來(lái)增減系統的功能。

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

(2)makedep

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

(3)makeclean

清除以前構造內核時(shí)生成的所有目標文件、模塊文件和一些臨時(shí)文件。

(4)makelib_only

編譯庫文件。

(5)makeuser_only

編譯用戶(hù)應用程序文件。

(6)makeromfs

生成romfs文件系統。

(7)makeimage

(8)make

通過(guò)各個(gè)目錄的makefile文件進(jìn)行,會(huì )在各目錄下生成一大堆目標文件。

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

其中iamge.rom可以直接燒寫(xiě)入Flash存儲器中,當系統復位或上電時(shí),內核自解壓到SDRAM運行。Image.ram可以通過(guò)SDT載入到SDRAM中直接運行。

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

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

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

6應用程序在μClinux上的開(kāi)發(fā)

下面將介紹如何把一個(gè)應用程序(例如examplec)添加到μClinux上的過(guò)程。

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

dir_$(CONFIG_USER_MAAPP_LEDNXY)+=myapp

切換到目錄μClinuxSamsung/config下,打開(kāi)configin這個(gè)文件,并在最后增加類(lèi)似下面的語(yǔ)句:

mainmenu_optionnext_comment

comment'MyApplication'

bool'example'CONFIG_USER_MYPROJECT_

EXAMPLE

comment'MyApplication

endmenu

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

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

在上面的章節中曾提到Bootloader可以擔當與主機端通信的任務(wù),在這里我們就可以通過(guò)他把應用程序快速下載到目標板上。

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

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

接著(zhù)將宿主機與目標板通過(guò)串口線(xiàn)連接,并在宿主機上啟動(dòng)一個(gè)超級終端,例如minicom,選擇好一個(gè)COM口(通常是串口1),設置波特率為19200,8個(gè)數據位、1個(gè)停止位,無(wú)校驗。然后選擇傳輸協(xié)議Zmodom,最后選定需要傳輸的文件example并發(fā)送。傳輸結束后可以通過(guò)超級終端在目標板的目錄中發(fā)現example,這說(shuō)明傳輸成功。

在目標板上將example加上x(chóng)屬性(可執行屬性),然后輸入命令/example就可以運行此程序了。顯然,通過(guò)這種方法可以很方便快捷的調試應用程序,等調試結束,再把他加入到內核中一起編譯即可。

7結語(yǔ)

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


上一頁(yè) 1 2 下一頁(yè)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>