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

Am335x boot问题请教

大家好:

我现在的需求是:产品通过SD烧录或升级code到Nand中,reset后从Nand启动,无OS。查看了网站资料

http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#SPI

http://processors.wiki.ti.com/index.php/AM335X_StarterWare_Booting_And_Flashing#Booting_Via_NAND

根据网站资料了解,想分两步走:

一:先分别实现并了解SD和Nand的启动。SD card 启动,需要MLO和app;Nand启动,借助CCS例程NAND_Flashing_Tool将Nand_boot和code写入Nand中。

二:先从SD启动,执行app,app的功能是将Nand_boot和code写入Nand中,然后reset,设置。这样自己修改并生成app才行。

不知第二步的想法是否可行?

 

目前的状态是卡在第一步,生成的app无法正确执行,详细步骤如下:

1.通过CCS编译boot(eMMC)例程生成boot_ti.bin,改名为MLO

2.导入gpio例程,编译生成gpio_ti.bin,改名为app。

使用SD-Format工具将两个文件copy到SD中,reset,串口打印信息如下:

CCCCCCCCStarterWare AM335x Boot Loader

Copying application image from MMC/SD card to RAM

……………………………………..

Jumping to StarterWare Application…

但是app并没有执行,因为led始终是off的。(CCS debug gpi0.out可以正常执行,LED闪烁)

通过打印的信息来看,MLO已执行且copy app完成,然后PC指针跳转,应该到DDR中执行app,不知问题出在哪里?

xx_ti.bin文件是否需要特殊处理?我查看其Header.Add=0x80000_0000 没错啊!

哪位大侠指点一下,谢谢!

 

Gary Wu:

1,ccs编译的是时候应该选择MMCSD吧

2.  你是在什么平台上实验的?是自己的硬件板还是EVM?

如果是自己的硬件板,有无在bootloader的程序中修改针对板子的相关配置,如DDR3,PLL?

STONE:

回复 Gary Wu:

谢谢Gary的回复。

1.选的是MMCSD

2.板子是Devikit8600,随板资料里的bootloader+gpio_ti.bin通过SD卡boot正常。所以bootloader里的DDR,PLL等没有问题。

我只是把gpio_ti.bin文件的来源改了,改成我自己导入staerware的例程后,重新编译所得到的binary下的xx_ti.bin文件,然后就出现了上述问题。

所以问题应该集中在xx_ti.bin文件。

想请问:

xx_ti.bin文件直接通过CCS编译生成,然后拿来boot的使用方法是否正确?如若可以CCS的设置有哪些?

谢谢!

 

Gary Wu:

回复 STONE:

 

xx_ti.bin文件直接通过CCS编译生成,然后拿来boot的使用方法是否正确?

答:正确,将其更名为app即可。

 

请问starterware用的是什么版本?是其开发板里自带的吗?

 

STONE:

回复 Gary Wu:

开发板自带的是06版的starterware。我有试过以下动作(均使用开发板自带的MLO):

1. 将06版本的gpio例程导入CCS编译后生成的xx_ti.bin文件,改名后,SD boot也不行。

2. 将自己使用的 01_01版本的gpio例程导入CCS编译后的xx_ti.bin,改名后,SD boot同样不行。

但是开发板资料中自带的gpio_ti.bin文件是可以的,所以说MLO应该没有问题。于是就开始怀疑app生成方法问题。

按说app应该是跟平台没关系的啊,不知为何CCS编译后的xx_ti.bin不行?

Jian Zhou:

回复 STONE:

MLO可以正常启动,但是APP不行?

你有按照TI wiki的guide整个完整烧写过SD卡吗?

STONE:

回复 Jian Zhou:

更新内容如下:

在app添加串口打印信息,以便在boot时看到底有没有跳入执行。如下:

int main()

{

UARTPuts("\r\nStone test…\r\n", -1);//添加此行

 

GPIO1ModuleClkConfig();

GPIOModuleEnable(GPIO_INSTANCE_ADDRESS);

GPIOModuleReset(GPIO_INSTANCE_ADDRESS);

GPIODirModeSet(SOC_GPIO_1_REGS,26,0); //0:output;1:input

while(1)

    {

       GPIOPinWrite(GPIO_INSTANCE_ADDRESS,26,GPIO_PIN_HIGH);

        Delay(0x3FFFF);

        GPIOPinWrite(GPIO_INSTANCE_ADDRESS,26,GPIO_PIN_LOW);

        Delay(0x3FFFF);

    }

}

然后SD boot时发现串口打印信息正确,但是后面的gpio没有动作。之前一直认为没有跳入执行,但现在来看问题出在gpio为何没有动作?

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