<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è) > 嵌入式系統 > 設計應用 > uboot在2440上的移植

uboot在2440上的移植

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏
Bootloard代碼是芯片復位后進(jìn)入操作系統之前執行的一段代碼,主要用于完成由硬件啟動(dòng)到操作系統啟動(dòng)的過(guò)渡,從而為操作系統提供基本的運行環(huán)境,如初始化CPU、堆棧、儲存器系統等。由于Bootloard代碼與CPU芯片的內核結構、具體型號、應用系統的配置及使用的操作系統等因素有關(guān),其功能類(lèi)似與PC機的BIOS。因此不可能有通用的Bootloard,開(kāi)發(fā)時(shí)應根據具體的配置進(jìn)行移植。

為什么我們要用U-BOOT?顯然可以將操作系統直接燒入flash中執行,但從軟件的升級和程序修補來(lái)說(shuō)則是不可少的。

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

U-BOOT 目錄結構分析:

1. board:開(kāi)發(fā)板相關(guān)目錄
2. common:通用的命令函數

3. cpu:特定CPU架構相關(guān)目錄,如arm920t
4. doc:uboot的開(kāi)發(fā)、使用文檔

5. drivers:uboot支持的設備驅動(dòng)程序,比如串口,nandflash,網(wǎng)卡
6. fs: 支持的文件系統,Uboot現在支持cramfs、fat、fdos、jffs2和registerfs。

7. include:頭文件和開(kāi)發(fā)板配置文件,configs目錄下是開(kāi)發(fā)板的配置文件
8. lib_xxxx: 與體系結構相關(guān)的庫文件。如與ARM相關(guān)的庫放在lib_arm中。

9. lib_generic:通用的庫函數

10. net:各種網(wǎng)絡(luò )協(xié)議,TFTP協(xié)議、NFS協(xié)議等。

11. tools:uboot自帶的工具

U-BOOT的啟動(dòng)分為兩個(gè)階段

第一階段:1)設置CPU工作模式

2)關(guān)看門(mén)狗

3)設置系統時(shí)鐘

4)關(guān)MMU,CACHE

5)為第二階段準備RAM空間(borad/smdk2410/lowlevel_init.s)

6)設置堆棧

7)跳到第二階段C入口點(diǎn)(lib_arm/board.c)

第二階段:1)start_armboot函數
init_sequence:
初始化CPU,設置系統時(shí)鐘,初始化定時(shí)器,初始化環(huán)境參數,初始化串口控制臺,檢測內存映射
2)flash_init: 初始化NORFLASH
3)env_relocate: 初始化環(huán)境變量
4)初始化系統外圍設備
5)最后調用main_loop (command/main.c)(下載模式和啟動(dòng)模式在這里)

U-BOOT沒(méi)有圖形配置界面,我們只有通過(guò)手動(dòng)修改文件來(lái)配置

1)移植過(guò)程要用交叉編譯器(我用的arm_linux_gcc_3.3.2)

2)指定環(huán)境變量 vi /etc/profile 指定路徑,把不用的注釋掉,然后保存退出

3)source /etc/profile 使其生效 ,然后可以查看版本arm-linux-gcc -v 看是不是現在使用的版本

4)vi cpu/arm920t/config.mk 注釋掉軟浮點(diǎn) 因為我們使用的硬浮點(diǎn)編譯PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8
# -msoft-float /*注釋掉*/

5)修改

在smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

加上

TX2440_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t TX2440 NULL s3c24x0

各項的意思如下:
arm: CPU的架構(ARCH)
arm920t: CPU的類(lèi)型(CPU),其對應于cpu/arm920t子目錄。
TX2440: 開(kāi)發(fā)板的型號(BOARD),對應于board/TX2440目錄。
NULL: 開(kāi)發(fā)者/或經(jīng)銷(xiāo)商(vender)。
s3c24x0: 片上系統(SOC)。

在第128行:

ifeq ($(ARCH),arm)

CROSS_COMPILE = arm-linux- 指定交叉編譯器,(http://xgc94418297.blog.163.com/blog/static/112966040200952971543686/)

6)把smdk2410 改為T(mén)X2440(任意改,只要統一就行)mv smdk2410 TX2440

7)刪除board下的其他目錄,只留TX2440 方法:mv TX2440 ../ 移動(dòng)到上層

rm -rf * //刪除所在層所有目錄

mv ../TX2440 ./ //把上層的TX2440移動(dòng)到該層

8)到這里就可以測試是否編譯成功了

make TX2440_config

出現 Configuring for TX2440 board..... 表示編譯成功

9)配置SDRAM(在lowlevel_Init.s中修改BANK和刷新頻率)

10)在TX2440.C中修改時(shí)鐘代碼。

可在include/configs/TX2440.h中

#define CFG_PROMPT 后面修改你自己喜歡的命令提示符。



關(guān)鍵詞: uboot2440移

評論


技術(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>