<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>

利用U-Boot實(shí)現uClinux向S3C44B0的移植

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

1 引言

本文引用地址:http://dyxdggzs.com/article/171659.htm

是Samsung公司推出的一款為手持設備或其他通用設備開(kāi)發(fā)的32位處理器,它基于A(yíng)RM7TDMI核,沒(méi)有內存管理單元(MMU)。在采用無(wú)MMU的微處理器的嵌入式系統中廣泛采用的就是系統,作為linux的衍生系統,其具有支持多任務(wù)、內核精簡(jiǎn)、高效穩定和源代碼開(kāi)放的優(yōu)點(diǎn)。系統的基本過(guò)程包括:獲取較新版本的linux-2.6.9內核源碼,根據目標平臺對源碼中與硬件平臺相關(guān)部分進(jìn)行修改,添加必要的外設驅動(dòng)程序,對系統進(jìn)行針對目標平臺的交叉編譯,生成的內核映像文件的下載調試等。

2 硬件環(huán)境介紹

硬件平臺以為核心,采用的外部晶振頻率為6MHZ,內核主頻最高可達到66MHZ,平臺以2MB的AMD29LV160DB做 rom,其地址空間為0~1fffff,以HY57V1620HG sdram做內存,地址空間為0c000000~0c7fffff,共8MB,以RTL8019as作為網(wǎng)絡(luò )控制芯片,接在的Bank5 上,通過(guò)JTAG與PC機的并口連接支持在線(xiàn)調試與程序燒寫(xiě)。

48.jpg
圖1 硬件平臺框圖

3

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

交叉編譯是運行在某機器(宿主機)上的編譯器編譯某個(gè)源程序生成在另一臺機器(目標機)上運行的目標代碼的過(guò)程。本文的交叉編譯環(huán)境建立如下:在PC機上安裝Linux操作系統做為我們的宿主機,版本為Fedore Core 5,從http : // www. .org/上下載交叉編譯工具鏈arm-elf-tools20040427并安裝在Linux 宿主機上,這樣就建立了uClinux-arm的交叉編譯環(huán)境。

3.2 -1.1.2的

Bootloader是系統加電后運行的第一段代碼,在一個(gè)基于A(yíng)RM的嵌入式系統中,系統上電或復位時(shí)通常都從地址0X00000000處開(kāi)始執行,而這個(gè)地址處通常就是系統的bootloader,通過(guò)這段程序可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環(huán)境調整到一個(gè)合適的狀態(tài),以便為最終的調用操作系統內核準備好正確的環(huán)境。

本文中bootloader采用對進(jìn)行移植來(lái)的。的全稱(chēng)是Universal Boot Loader,是德國DENX小組開(kāi)發(fā)的用于多種嵌入式CPU的Bootloader引導程序, 支持PowPC、ARM、MIPS、M68K等多種處理器平臺,支持Linux、VxWorks、NetBSD等多種嵌入式操作系統,主要用來(lái)開(kāi)發(fā)嵌入式系統初始化代碼bootloader,其易于裁剪和調試,尊循GPL (通用公共許可) 公約,完全開(kāi)放源代碼??梢詮膆ttp://sourceforge.net/projects/u-boot得到它多個(gè)版本的源碼,本文是以u- boot-1.1.2為例進(jìn)行移植的。

在移植前可以通過(guò)查看doc文檔了解U-Boot源碼的主要結構,在眾多的目錄中與移植相關(guān)的主要是board、cpu、drivers等幾個(gè)目錄。移植的基本過(guò)程如下:

(1) 查找以S3C44B0處理器為核心的硬件平臺,此目的是為了簡(jiǎn)化移植難度;

在board/下運行 find -exec grep -l 44B0 {} 找到/dave/B2/B2.c,由此我們知道dave公司的B2平臺是以S3C44B0處理器為核心的,所以移植可以參考B2平臺進(jìn)行;

(2) 建立我們目標平臺的目錄lanlan,把B2板的文件拷到建立的目錄中,但需要修改文件的名稱(chēng);

(3) 修改新建目錄中的文件的名稱(chēng),將文件中所有的B2都改成lanlan;

(4) 在include/configs/添加目標平臺的配置文件lanlan.h;此文件可以參考B2.h建立;

(5) 修改總目錄下的Makefile文件,添加目標板的編譯信息;

這個(gè)過(guò)程完成后可以在u-boot/目錄下依次運行make lanlan_config ; make進(jìn)行編譯,編譯完成后如果能生成u-boot.bin等文件,則說(shuō)明前面的過(guò)程無(wú)誤,如果出現錯誤,則需要根據錯誤信息進(jìn)行相關(guān)修改;

(6) 修改硬件相關(guān)的文件,在cpu/中有S3C44B0的目錄,說(shuō)明U-Boot已經(jīng)提供了對S3C44B0的支持,我們只是需要修改部分文件使其適合我們的目標平臺,主要修改的是cpu/下start.S 和serial.c,include/configs/下的lanlan.h中關(guān)于cpu的頻率、串口波特率、PLLCON寄存器、flash和 sdram的大小、基地址和網(wǎng)絡(luò )控制芯片的基地址等內容,確定修改正確后運行make lanlan_config;make命令,編譯生成的u-boot.bin就是我們需要的引導程序;

(7) 通過(guò)JTAG將生成的u-boot.bin燒寫(xiě)到目標平臺的0x0地址,配置Linux下的minicom或者Windows下的超級終端,注意配置的串口及串口波特率要與U-Boot中設置的一樣,按復位鍵或上電重啟目標平臺后可以從minicom或超級終端看到U-Boot在系統中運行了。

通過(guò)以上步驟,完成了U-Boot移植的主要工作。


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

評論


相關(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>