U-boot移植——1.时钟

来源:互联网 发布:淘宝联盟怎么玩 编辑:程序博客网 时间:2024/06/07 21:33

u-boot的作用是
a 硬件初始化:关看门狗,设置时钟,设置SDRAM,设置NAND
FLASH.
b 如果bootlodar比较大,要把他重定位到SDRAM
c 把内核从NAND FLASH读到SDRAM
d 设置要传给内核的参数
e 跳转执行内核

所以说在一个uboot中所需要完成的事件有
1 set the cpu to SVC32 mode
2 turn off the watchingdog
3 mask all IRQs by setting all bits in eht INTMR
4 设置时钟比例
5 设置内存控制器
6 设置栈,调用C函数board_init_f
7 调用函数数组init_sequence里的各个函数
8 重定位代码

所以说当移植u-boot时候,需要做的就是按照上面做的事情,观察u-boot是否做了,从而判断是否正确。

从头看设置模式等都是OK的,当阅读到时钟设置时
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]

endif /* CONFIG_S3C24X0 */

/* * we do sys-critical inits only at reboot, * not when booting from ram! */

ifndef CONFIG_SKIP_LOWLEVEL_INIT

bl  cpu_init_crit

endif

/* Set stackpointer in internal RAM to call board_init_f */
call_board_init_f:
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000
bl board_init_f

这里设置了时钟 为120MHz,然后进行了CPU和单板的初始化

首先我们进入CPU初始化中 然后进入bl lowlevel_init,这里是对SDRAM的初始化在配置寄存器中

“`
SMRDATA:
.word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
.word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
.word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
.word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
.word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
.word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
.word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
.word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
.word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
.word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
.word 0x32
.word 0x30
.word 0x30
然而这么多并看不懂表示什么意思
点REFCNT发现

0 0
原创粉丝点击