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 // 下面2410 2440 的寄存器地址是一致的
# 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 芯片手册,INTSUBMSK 11 位可用,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移植第二步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值