You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
#endif<br />
/* default FCLK is 120 MHz ! */<br />
ldr r0, =CLKDIVN<br />
mov r1, #3<br />
str r1, [r0]<br />
/* END stuff after relocation */<br />
ldr pc, _start_armboot<br />
_start_armboot: .word start_armboot<br />
上面已经注释掉的代码,此处忽略。<br />
只看最后的那两行,意思也很简单,那就是将地址为_start_armboot中的内容,即<br />
start_armboot,赋值给PC,即调用start_armboot函数。<br />
至此,汇编语言的start.S的整个工作,就完成了。<br />
而start_armboot函数,在C文件中:<br />
u-boot-1.1.6_20100601\opt\EmbedSky\u-boot-1.1.6\board\EmbedSky\EmbedSky.c<br />
中:<br />
void start_armboot (void)<br />
{<br />
}<br />
...<br />
这就是传说中的,调用第二层次,即C语言级别的初始化了,去初始化各个设备了。<br />
其中包括了CPU,内存等,以及串口,正常初始化后,就可以从串口看到uboot的打印信息了。<br />
/*<br />
*********************************************************************<br />
****<br />
*<br />
* CPU_init_critical registers<br />
*<br />
* setup important registers<br />
* setup memory timing<br />
*<br />
*********************************************************************<br />
****<br />
*/<br />
#ifndef CONFIG_SKIP_LOWLEVEL_INIT<br />
cpu_init_crit: