u-boot版本:1.1.6
交叉編譯器:3.3.2
開發板:友善之臂mini2440
開發板配置:soc s3c2440 、網絡卡 dm9000 、 nor flash am29lv160db (2m) 、nand flash (256m) 、sdram (64m)
以原始檔已存在的 smdk2410專案為基礎進行移植工作
1.移植準備工作
2.修改頂層makefile
1).開啟 /makefile ,找到smdk2410板配置選項:
smdk2410_config : unconfig
@$(mkconfig) $(@:_config=) arm arm920t smdk2410 null s3c24x0
各項引數意義:
arm: cpu架構
arm920t:cpu型號
smdk2410:開發板名稱
null: 開發者
s3c24x0: 片上系統
模擬此項新增配置選項:
mini2440_config : unconfig
@$(mkconfig) $(@:_config=) arm arm920t mini2440 null s3c24x0
3.建立主**
1).找到 /board/smdk2410 目錄,將此目錄複製為 /board/mini2440 ,開啟mini2440目錄,將smdk2410.c檔案重新命名為mini2440.c。開啟同目錄下makefile檔案,修改**
變更前: cobjs := smdk2410.o flash.o
變更後: cobjs := mini2440.o flash.o
2).建立開發板配置標頭檔案。將 /include/configs/smdk2410.h 複製為 /include/configs/mini2440.h ,開啟此檔案,新增
#define config_s3c2440 1 /* in a samsung s3c2440 soc */
4.修改cpu頻率設定
#define fclk_speed 1
#if fclk_speed==0 /* fout = 203mhz, fin = 12mhz for audio */
#define m_mdiv 0xc3
#define m_pdiv 0x4
#define m_sdiv 0x1
#elif fclk_speed==1 /* fout = 202.8mhz */
#define m_mdiv 0xa1
#define m_pdiv 0x3
#define m_sdiv 0x1
#endif
#define usb_clock 1
#if usb_clock==0
#define u_m_mdiv 0xa1
#define u_m_pdiv 0x3
#define u_m_sdiv 0x1
#elif usb_clock==1
#define u_m_mdiv 0x48
#define u_m_pdiv 0x3
#define u_m_sdiv 0x2
#endif
#endif
然後修改board_init函式
int board_init (void)
3).串列埠初始化時需要獲取系統時鐘,這裡修改 /cpu/arm920t/s3c24x0/speed.c ,
get_pllclk() 中
return((config_sys_clk_freq * m) / (p << s));
改為return((config_sys_clk_freq * m * 2) / (p << s));
u boot1 1 6的移植 網絡卡支援
注 藍色為修改部分!driver dm9000x.c中修改 inteth init bd t bd hj end www.embedsky.net printf mac 02x 02x 02x 02x 02x 02x n bd bi enetaddr 0 bd bi enetaddr 1 bd bi...
UBOOT 1 1 6 錯誤集合
1.1.6的u boot老掉牙了,用版本高的編譯器編譯會出現莫名其妙的問題 實際是我不懂 usr local arm 4.4.3 bin lib gcc arm none linux gnueabi 4.4.3 libgcc.a udivsi3.o in function aeabi uidiv o...
U Boot 1 1 6的編譯過程
從頂層makefile說起 92行 mkconfig srctree mkconfig其中的mkconfig是乙個shell指令碼,srctree預設值為u boot的頂層目錄。117行 include objtree include config.mkinclude config.mk由92行的指...