移植U-Boot2009-01到阳初S3C2440超值版支持NAND启动,.doc
文本预览下载声明
移植U-Boot2009-01到阳初S3C2440超值版支持NAND启动,支持YAFFS文件系统
参考《移植U-Boot-2008.10到友善之臂mini2440hgateway_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t hgateway NULL s3c24x0
hgateway为我的目标板名字。注意第二行前面有一个TAB,这是Makefile的语法规定的命令前面必须有个TAB。5个参数顺序分别为:CPU架构(ARCH);CPU类型(CPU);开发板型号(BOARD);开发者/经销商(VENDER);片上系统(SOC)。
在《移植U-Boot-2008.10到友善之臂mini2440#include status_led.h
……
bl coloured_LED_init
bl red_LED_on
……
#if defined(CONFIG_AT91RM9200DK) || defined(CONFIG_AT91RM9200EK)
/*
* relocate exception table
*/
ldr r0, =_start
ldr r1, =0x0
mov r2, #16
copyex:
subs r2, r2, #1
ldr r3, [r0], #4
str r3, [r1], #4
bne copyex
#endif
修改为对S3C2440的支持
#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)改为
#if defined (CONFIG_S3C2440)
删除关于2400的部分
# if defined(CONFIG_S3C2400)
# define pWTCON 0# define INTMSK 0/* Interupt-Controller base addresses */
# define CLKDIVN 0/* clock divisor register */
#else
增加S3C2440的时钟控制寄存器
# define CAMDIVN 0x4C000018
//CAMDIVN 2440增加了摄像头,CAMDIVN将影响到CLKDIVN
# define MPLLCON 0x4C000004 //MPLLCON register
# define UPLLCON 0x4C000008 //UPLLCON register
去掉宏# if defined(CONFIG_S3C2410)并修改子中断屏蔽控制寄存器的值
ldr r1, =0x7ff
ldr r0, =INTSUBMSK
str r1, [r0]
改为
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
增加PLL的初始化,对于S3C2440来说,只有当PLL初始化以后CPU才能按照设定的时钟进行工作,即使全部用初始值也必须重新写一次PLL。
//初始化时钟,晶振为12MHz,主频为405MHz
//locktime用来在正常运行时更改时钟的时候保护时钟
ldr r0,=LOCKTIME
mov r1,#0xffffff
str r1,[r0]
//清除摄像头分频寄存器值
ldr r0,=CAMDIVN
mov r1,#0
str r1,[r0]
修改时钟分频为1:4:8
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
改为
ldr r0, =CLKDIVN
mov r1, #5
str r1, [r0]
在其后增加对UPLL和MPLL的初始设置
//在2440的手册中写着若HDIVN不为0,则需要下面几句
mrc p15, 0, r1, c1, c0, 0 @ read ctrl register
orr r1, r1, #0xc0000000 @ Asynchronous
mcr p15, 0, r1, c1, c0, 0 @ write ctrl register
//USB时钟48MHz (5612)+(24)+(2)
ldr r0, =UPLLCON
ldr r1, =0 str r1, [r0]
//arm920t为5级流水线,延迟几个周期,使指令生效
nop
nop
nop
nop
nop
nop
nop
nop
//写MPLL使pll生效,405MHz,(12712)+(24)+(1)
ldr r0, =MPLLC
显示全部