u-boot移植五部曲之第二步

1、stage1階段硬件初始化
1)、在include/configs/gec2440.h頭文件中添加CONFIG_S3C2440宏(紅色一行)
#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
#define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2440 SoC */
2)、修改cpu/arm920t/start.S:
在start_code函數中:
修改
bl coloured_LED_init
bl red_LED_on
如下
//這兩行是AT91RM9200DK開發板的LED初始化和控制函數,註釋
//bl coloured_LED_init
//bl red_LED_on
添加下面的代碼,以取代上面功能:
#if defined(CONFIG_S3C2440) //區別與其他開發板
#define GPBCON 0x56000010
#define GPBDAT 0x56000014
#define GPBUP 0x56000018
ldr r0,=GPBUP
ldr r1,=0xff
str r1,[r0]
ldr r0,=GPBCON
ldr r1,=0x557ff
str r1,[r0]
ldr r0,=GPBDAT
ldr r1,=0x7df
str r1,[r0]
#endif
2、修改時鐘
因爲S3C2410與S3C2440的時鐘及Nand、SDRAM等配置不同,故接下來需要進行修改相關配置、推薦下:Linux教學平臺
(1)、修改cpu/arm920t/start.S:
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
/* turn off the watchdog */
# if defined(CONFIG_S3C2400)
# define pWTCON 0x15300000
# define INTMSK 0x14400008 /* Interupt-Controller base addresses */
# define CLKDIVN 0x14800014 /* clock divisor register */
#else //下面24102440的寄存器地址是一致的
# define pWTCON 0x53000000
# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014 /* clock divisor register */
# endif
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]
/*
* mask all IRQs by setting all bits in the INTMR - default
*/
mov r1, #0xffffffff
ldr r0, =INTMSK
str r1, [r0]
# if defined(CONFIG_S3C2410)
ldr r1, =0x7ff //0x3ff,根據2410芯片手冊,INTSUBMSK11位可用,vivi也是0x7ff u-boot則是0x3ff,不過芯片復位後所有中斷都被屏蔽,故這無影響
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
# if defined(CONFIG_S3C2440) //添加s3c2440的中斷禁止部分
ldr r1, =0x7fff //根據2440芯片手冊,INTSUBMSK寄存器有15位可用
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
# if defined(CONFIG_S3C2440) //添加s3c2440的時鐘部分
#define MPLLCON 0x4C000004 //系統主頻配置寄存器基地址
#define UPLLCON 0x4C000008 //USB時鐘頻率配置寄存器基地址
ldr r0, =CLKDIVN //設置分頻係數FCLK:HCLKCLK = 1:4:8
mov r1, #5
str r1, [r0]
ldr r0, =MPLLCON //設置系統主頻爲405MHz
ldr r1, =0x7F021 //這個值參考芯片手冊“PLL VALUE SELECTION TABLE”部分
str r1, [r0]
ldr r0, =UPLLCON //設置USB時鐘頻率爲48MHz
ldr r1, =0x38022 //這個值參考芯片手冊“PLL VALUE SELECTION TABLE”部分
str r1, [r0]
# else //其他開發板的時鐘部分,這裏就不用管了,我們現在是做2440的
/* FCLK:HCLKCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
# endif
#endif /* CONFIG_S3C2400 || CONFIG_S3C2410 || CONFIG_S3C2440 */

01.jpg(27.11 KB, 下載次數: 0)

Linux教學平臺之u-boot第二步

Linux教學平臺之u-boot第二步

02.jpg(24.14 KB, 下載次數: 0)

Linux教學平臺之u-boot移植第二步

Linux教學平臺之u-boot移植第二步
發佈了1 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章