TI中文支持网
TI专业的中文技术问题搜集分享网站

请教从NAND Boot的问题

        我在TDMSEVM6678LE开发套件上试验从NAND启动自己的APP时,遇到了点问题,还请各位大牛能够点播一下。谢谢!

        我写了一个简单的LED亮灯的APP,通过Nand_Writer烧写到NAND Flash中。通过观察LED是否循环点亮以及串口是否有数据抛出来确认IBL是否成功引导了NAND中的APP。

        在我的LED亮灯的APP的cmd文件中,所有数据均存放在L2SRAM或者MSMCSRAM中,IBL能够成功引导NAND中的APP。

        但是,当我的CMD文件如下编写时,IBL却无法启动NAND中的APP。似乎是一旦有数据放在外部的RAM中,APP就无法正常启动。

MEMORY
{
L1PSRAM (RWX) : org = 0x0E00000, len = 0x7FFF
L1DSRAM (RWX) : org = 0x0F00000, len = 0x7FFF
L2SRAM (RWX) : org = 0x0800000, len = 0x400000
MSMCSRAM (RWX) : org = 0xc000000, len = 0x200000
DDR3 (RWX) : org = 0x80000000,len = 0x10000000
}

SECTIONS
{
.csl_vect > MSMCSRAM
.text > MSMCSRAM
GROUP (NEAR_DP)
{
.neardata
.rodata
.bss
} load > MSMCSRAM
.stack > DDR3
.cinit > MSMCSRAM
.cio > MSMCSRAM
.const > MSMCSRAM
.data > MSMCSRAM
.switch > MSMCSRAM
.sysmem > DDR3
.far > MSMCSRAM
.testMem > MSMCSRAM
.fardata > MSMCSRAM
platform_lib > MSMCSRAM
}

Bruce Yang:

是不是你的APP里面没有对DDR3初始化呀

user1789404:

回复 Bruce Yang:

我是通过IBL去引导NAND中的APP,IBL从串口中送出了下面的信息:

IBL version: 1.0.0.16IBL: PLL and DDR Initialization CompleteIBL Result code 00IBL: Booting from NAND

是否这样已经对DDR3进行初始化了?我NAND中的APP确实没有去初始化DDR3,主要我考虑我APP的栈是在DDR3里面的,所以要初始化DDR3必然要是在运行我的APP之前就已经初始化好了,我这样的思路对吗?

Bruce Yang:

回复 user1789404:

我这里试了一下,cmd中的段使用ddr3没有问题,应该是你的ibl没有配置好。

user1789404:

回复 Bruce Yang:

        我定位了问题,并且已经能够成功从NAND中启动,但是我不知道这样处理是否会有问题和隐患。

        我通过在线调试,跟踪进去,当我的栈或其他数据存放在DDR3内时,运行platform_init(&init_flags, &init_config)中这条语句status = SetDDR3PllConfig();后,程序会出现异常,我怀疑是原先已经对DDR3进行了初始化,当再次运行 SetDDR3PllConfig()函数后,导致DDR3内的数据出错从而令程序异常。

         由于调用的platform_init()函数是在ti.platform.evm6678l.ae66库中,我在库的源码中将status = SetDDR3PllConfig();改为status = CSL_SOK;,直接返回OK,重新编译了库文件。并且重新编译了引用这个库的APP,烧写到NAND中,能够正常从NAND启动了。

        但是,不知道这样修改会不会有什么隐患。

赞(0)
未经允许不得转载:TI中文支持网 » 请教从NAND Boot的问题
分享到: 更多 (0)