在start.s中bl cpu_init_crit跳转到lowlevel_init.s,lowlevel_init.s中又bl s_init去完成pll,memory的初始化工作,可是在board/ti/ks2_evm中找不到s_init函数。
是不是k2hk在设计uboot的时候就定义了CONFIG_SKIP_LOWLEVEL_INIT,所以没有执行bl cpu_init_crit,这样的话pll,DDR等第一部分硬件的初始化在哪里完成。
有没有对应于tci6638的uboot启动的详细文档。
如果要修改DDR的配置的话应该在哪个文件下修改。
麻烦各位工程师帮忙解答一下,感谢了。
Andy Yin1:
参考附件关于U-BOOT的修改,包括DDR PLL等。
dingli zeng:
回复 Andy Yin1:
谢谢您,另外我还想问一下,为什么找不到与k2hk对应的s_init函数呢。在board/ti/ks2_evm/文件夹下修改的pll,DDR等在哪里被调用。谢谢了
dingli zeng:
回复 Andy Yin1:
还有人能帮忙解答一下吗?k2 uboot的启动过程,对应函数怎么跳转,自己分析了一下,觉得还是没有理清楚
dingli zeng:
回复 dingli zeng:
求解答
dingli zeng:
回复 dingli zeng:
分析了代码发现在spl阶段没有配置DDR3,而是在第二阶段才配置,这样的话,是否是第一和第二阶段都在片内SDRAM运行,而不是第一阶段完成简单初始化后,将第二部分代码放在DDR3中运行?
Andy Yin1:
回复 dingli zeng:
uboot执行大致流程 reset(arch\arm\cpu\armv7\start.S)=>_main (arch\arm\lib\crt0.S) => board_init_f (arch\arm\lib\board.c) => board_init_r (arch\arm\lib\board.c)
初始化调用函数在数组init_sequence中定义,这个数组在board_init_f 被依次调用执行,其中包括调用dram_init进行DDR的初始化,dram_init见board\ti\ks2_evm\board_k2hk.c.
dingli zeng:
回复 Andy Yin1:
谢谢您了,您说的是uboot stage2部分完成的初始化工作,但是在stage1(SPL)阶段,soc会将flash中前16k搬移到片内SDRAM运行,完成一些简单的初始化,它虽然与stage2运行流程一样,但是执行board_init_f,board_init_r却完全不同,在不同的路径下。start.s=>crt0.s=>board_init_f(arch/arm/lib/spl.c)=>board_init_r(common/spl/spl.c)=>spl_board_init中完成了pll和串口的初始化。我想问的是:stage1完成简单初始化后,他将stage2引导到哪里运行?是片内的SDRAM还是片外的DDR3?如果是片外的DDR3的话,它应该在stage1就对DDR3进行初始化才能搬移stage2到DDR3上运行
Andy Yin1:
回复 dingli zeng:
真正的uboot初始是在MSMC上执行,board_init_f初始DDR后,会将uboot copy到DDR,之后board_init_r是在DDR执行。
dingli zeng:
回复 Andy Yin1:
感谢您,board_init_f初始化DDR后,是通过start.s里的relocation_code将uboot搬移到DDR的吗?
Andy Yin1:
回复 dingli zeng:
是的。