U-Boot-2009-03移植笔记(点亮第一展灯)
2013-05-29 14:19
239 查看
在U-Boot-2009-03移植笔记的最后,我们找到了U-boot的启动代码在cpu/arm920t/start.S中,这是一段汇编代码,我们的移植工作从这里开始。
我们定位到reset标签
上面的注释很明白,设置CPU工作模式,不需要修改。
接下来,我们关掉看门狗,并关闭中断
我这里直接略过了原有U-boot的宏定义,因为我们只需要支持一款芯片即可,注意第14行,这是因为S3C2440于S3C2410中断控制器不同而修改的,具体原理请参见S3C2440的datasheet。在上面的代码里,我们完成了两件事情,关看门狗,关中断,接下来我们继续看代码,到了这里:
子过程cpu_init_crit主要工作就是关闭Cache,并且调用lowlevel_init,我们要注意的是lowlevel_init,这里放了初始化SDRAM的代码。
这个low_levelinit位于board/xinna2440/lowlevel_init.S文件中,这里会初始化好你的内存(xinna2440用的是两片16位的SDRAM并联组成32位的SDRAM),我们需要针对不同的芯片,连接方式修改以下这个文件中的寄存器配置。
然后还有很重要的一点,你需要修改board/xinna2440/u-boot.lds文件,将lowlevel_init这段代码放在整个u-boot.bin的前4k代码中,所以我们需要这样修改
我们定位到reset标签
reset: /* *setthecputoSVC32mode */ mrsr0,cpsr bicr0,r0,#0x1f orrr0,r0,#0xd3 msrcpsr,r0
上面的注释很明白,设置CPU工作模式,不需要修改。
接下来,我们关掉看门狗,并关闭中断
ldrr0,=pWTCON movr1,#0x0 strr1,[r0] /* *maskallIRQsbysettingallbitsintheINTMR-default */ movr1,#0xffffffff ldrr0,=INTMSK strr1,[r0] /*modifybyxinna*/ ldrr1,=0x7fff ldrr0,=INTSUBMSK strr1,[r0]
我这里直接略过了原有U-boot的宏定义,因为我们只需要支持一款芯片即可,注意第14行,这是因为S3C2440于S3C2410中断控制器不同而修改的,具体原理请参见S3C2440的datasheet。在上面的代码里,我们完成了两件事情,关看门狗,关中断,接下来我们继续看代码,到了这里:
/* *wedosys-criticalinitsonlyatreboot, *notwhenbootingfromram! */ #ifndefCONFIG_SKIP_LOWLEVEL_INIT blcpu_init_crit #endif
子过程cpu_init_crit主要工作就是关闭Cache,并且调用lowlevel_init,我们要注意的是lowlevel_init,这里放了初始化SDRAM的代码。
这个low_levelinit位于board/xinna2440/lowlevel_init.S文件中,这里会初始化好你的内存(xinna2440用的是两片16位的SDRAM并联组成32位的SDRAM),我们需要针对不同的芯片,连接方式修改以下这个文件中的寄存器配置。
然后还有很重要的一点,你需要修改board/xinna2440/u-boot.lds文件,将lowlevel_init这段代码放在整个u-boot.bin的前4k代码中,所以我们需要这样修改
.=0x00000000; .=ALIGN(4); .text: { cpu/arm920t/start.o(.text) board/xinna2440/lowlevel_init.o(.text) *(.text) }
然后我们在start.S的blcpu_init_crit后面增加以下代码,点亮第一盏灯。
ldrr4,=0x56000010 ldrr5,=(1<<10) strr5,[r4] ldrr4,=0x56000014 ldrr5,=~(1<<5) strr5,[r4] loo: bloo
通过openjtag烧到nandflash上,第一盏LED灯被点亮。
相关文章推荐
- U-Boot-2009-03移植笔记(点亮第一展灯)
- U-Boot-2009-03移植笔记(第二阶段移植准备)
- U-Boot-2009-03移植笔记(从Nandflash启动一)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(目录:持续更新)
- U-Boot-2009-03移植笔记(调试篇)
- U-Boot-2009-03移植笔记(从Nandflash启动二)
- U-Boot-2009-03移植笔记(第二阶段:时钟!)
- U-Boot-2009-03移植笔记(移植准备)
- U-Boot-2009-03移植笔记(移植准备)
- u-boot-2012.04.01移植笔记——时钟、SDRAM、UART
- u-boot-2012.04.01移植笔记——支持NAND启动
- u-boot-2009.08移植笔记三,平台TQ2440 .
- AM335x(TQ335x)学习笔记——u-boot-2014.10移植
- 【TINY4412】U-BOOT移植笔记:(1)移植前准备
- 【TINY4412】U-BOOT移植笔记:(11)LED驱动
- u-boot-2009.08移植笔记四,平台TQ2440 .
- TQ2440 学习笔记—— 28、移植U-Boot【U-Boot 的配置过程】
- TQ2440 学习笔记—— 32、移植U-Boot【U-Boot 的移植】
- 【TINY4412】U-BOOT移植笔记:(12)BEEP驱动