6.console_init_f
在環境變數裡對串列埠進行註冊。
7.display_options
至此將顯示uboot的版本號,也是在console中顯示的第一行,根據makefile自動獲取的新版本號,所以無需修改
8.checkboard 修改硬體板卡版本號,做一些io初始化。因為乙太網efc1管腳復位即為第一功能,所以注釋掉iopin_initialize()的初始化。
typedef struct gpio512x gpio512x_t;
注意gpio_initialize()關於對板子gpio的初始化的修改。此處先不做修改。
9.uboot並沒有用到i2c以及spi所以不對其做修改。
10.init_func_ram
主要完成對sdram的初始化,由於此次改為ddr2的mt47h64m16lfck-3,256m,工作時鐘為200mhz,主要修改cpu/mpc512x/fixed_sdram.c初始化時序
對於mpc5125 ddr模組沒有做出調整,因此不用對其進行重對映;對於ddr控制器優先順序採用預設設定;
修改sdram容量的定義atdboard_v2.h
#define config_sys_ddr_size 256
根據晶元手冊的初始化順序在fixed_sdram.c中新增對sdram初始化結構體
u32 mt47h64m16_init_seq =
以及對ddr控制器配置暫存器的以下定義
#ifdef config_atdboard_v2
#define config_sys_mddrc_sys_cfg 0xea804a00
#define config_sys_mddrc_time_cfg0 0x00003c2d
#define config_sys_mddrc_time_cfg1 0x68ec1189
#define config_sys_mddrc_time_cfg2 0x35310864
/* mddrc sys cfg and timing cfg0 registers */
#define mddrc_sys_cfg_en 0xf0000000
#define mddrc_sys_cfg_cmd_mask 0x10000000
#define mddrc_refresh_zero_mask 0x0000ffff
#endif
定義初始化自定義的命令
#ifdef config_atdboard_v2
#define config_sys_ddrcmd_emr_en_dll 0x01010000
#define config_sys_ddrcmd_mr_rst_dll 0x01000100
#define config_sys_ddrcmd_mr_init_dev_op 0x01000432
#define config_sys_ddrcmd_emr_ocd_def 0x01010400
#define config_sys_ddrcmd_emr_ocd_exit 0x01010000
#define config_sys_ddrcmd_emr2 0x01020000
#define config_sys_ddrcmd_emr3 0x01030000
#endif
至此初始化對sdram初始化完畢,接下來對環境變數進行分配空間,儲存系統引數,無需更改,跳轉到relocate_code處進行copymyself.
在start.s中可以看出這部分沒有變化,所以跳轉到記憶體中去執行
board_init_r:
1.flash_init:
使用lpc匯流排無需對相應暫存器進行設定,只需對位址直接進行讀寫。採用了cfi標準介面協議對flash初始化,獲得容量大小,其讀寫操作分析不再贅述。
2.env_relocate ()重定位環境變數指標
3.getenv_ipaddr 在環境變數中獲得ip位址,interrupt_init()初始化decrementer定時器中斷
5.eth_initialize()乙太網初始化,mpc5125有兩個乙太網控制器,fec1與mpc5121e的相同,暫存器不變,phy晶元不變
6.main_loop
移植總結:
本次移植主要對處理器的memory map、psc串列埠、ddr2 sdram以及gpio進行了移植,最麻煩的地方就是memory map,需要細心的與晶元手冊暫存器對照,寫錯乙個就會影響到之後所有的模組,移植的正確性,需要在除錯中驗證。
uboot移植 uboot啟動回顧
一 uboot啟動的第一階段start.s 路徑uboot cpu s5pc11x start.s 1 include 標頭檔案包含,config.件原始碼中不存 在,配置後自動生成 路徑 include linux config.h 2 include 標頭檔案包含,version.件原始碼中不存...
u boot移植詳解 初識u boot
u boot是一種普遍用於嵌入式系統中的bootloader。bootloader是基於特定硬體平台來實現的,因此幾乎不可能為所有的嵌入式系統建立乙個通用的bootloader,不同的處理器架構都有不同的bootloader,bootloader不但依賴於cpu的體系結構,還依賴於嵌入式系統板級裝置...
uboot移植記錄
首先是uboot移植記錄系列。這系列文章適合於uboot移植的初學者,這裡基於常見的開發平台s3c2410。若需要移植uboot到乙個全新開發板,則需要參考更多的資料並對uboot有更深入的了解。本人對此也有所鑽研,也有個較牛的同事專門做這這個的,呵呵 若感興趣的朋友大家可以一起 因此關於新平台ub...