您的位置:首页 > 其它

三星uboot-1.1.6源码分析——lowlevel_init.S (4)

2012-06-15 17:26 633 查看
三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)的链接地址

三星uboot-1.1.6源码分析——lowlevel_init.S (2)——时钟配置的链接地址

三星uboot-1.1.6源码分析——lowlevel_init.S
(3)---串口的链接地址


上一篇主要是串口部分,这篇接着分析lowlevel_init.S的源码。

#if defined(CONFIG_NAND) 我们定义了#defineCONFIG_NAND

/* simple init for NAND */

bl nand_asm_init

#endif

nand_asm_init 源码如下:

/*

* Nand Interface Init for SMDK6400

*/

nand_asm_init:

ldr r0, =ELFIN_NAND_BASE ----- 寄存器基地址

ldr r1, [r0, #NFCONF_OFFSET]

orr r1, r1, #0x70

orr r1, r1, #0x7700

str r1, [r0, #NFCONF_OFFSET] -----看下面这些图,就明白是干什么的了:







ldr r1, [r0, #NFCONT_OFFSET]

orr r1, r1, #0x03

str r1, [r0, #NFCONT_OFFSET]------也看图:





movpc, lr -----返回

接着看:

bl mem_ctrl_asm_init ---- 这个的源码在cpu_init.S (cpu\s3c64xx\s3c6410)文件中,我以前分析过,主要是和DRAM有关的初始化,这里就不分析了。

继续接着看:

#if 1

ldr r0, =(ELFIN_CLOCK_POWER_BASE+RST_STAT_OFFSET)

ldr r1, [r0]

bic r1, r1, #0xfffffff7

cmp r1, #0x8

beq wakeup_reset -----主要和寄存器RST_STAT有关,看下面:





#endif

#if 1

wakeup_reset: 相等是跳转到这里

/*Clear wakeup status register*/

ldr r0, =(ELFIN_CLOCK_POWER_BASE+WAKEUP_STAT_OFFSET)

ldr r1, [r0]

str r1, [r0]





/*LED test*/

ldr r0, =ELFIN_GPIO_BASE

ldr r1, =0x3000

str r1, [r0, #GPNDAT_OFFSET]

/*Load return address and jump to kernel*/ 没用到

ldr r0, =(ELFIN_CLOCK_POWER_BASE+INF_REG0_OFFSET)

ldr r1, [r0]/* r1 = physical address of s3c6400_cpu_resume function*/

mov pc, r1/*Jump to kernel (sleep-s3c6400.S)*/ 没有这个文件

nop

nop

#endif

到这里有关lowlevel_init.S 文件的内容就都说完了,主要是有关开发板的一些配置,因为是汇编,所以看起来有点烦,不过,也挺简单的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: