您好!
我有一个在调试中运行良好的系统--一个在 L3 OCMC RAM 中运行的次级引导加载程序和一个在外部 DRAM 中运行的应用程序。 但我无法在加电时使次级引导加载程序从 SPI 闪存中运行。
SYSBOOT[4:0]设置为11001b、因此 ROM 引导加载程序引导序列应为 SPI0->MMC0->EMAC1->UART0。
当闪存为空时、我看到 ROM 引导加载程序执行 4个短 SPI 突发(大概每个为512字节页) 、然后停止。 当使用我的 SBL 代码对闪存进行编程时、会有更长的 SPI 突发(大约44ms)、这将是在 SBL 中读取的合理时间、因为它的大小为38860字节。
但是,它显然不执行。 我唯一可以告诉它的方法是在当前版本的 SBL 中,它将 在完成系统初始化后一直闪烁一个 LED --并且没有 LED 活动。
闪存中的前几个字节如下,从地址0开始,并布局为32位大端字。 。
00 00 97 D4 40 30 00 E5 9F F0 18 E5 1F F0 08 E5 9F F0 18 等
将这个展开一个位、您可以看到标头后跟一个相当正常的外观 ARM IRQ_Vector/instruction 序列:
0x000097D4
0x40300000
0xE59FF018
0xE51FF008
0xE59FF018
0xE51FF008
0xE51FF008
0xE51FF008
0xE51FF008
0xE51FF008
0x40300050
0x00000000
0x40300049
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x4030004F
0xE7FE7FE
0xE7FE7FE
0xE7FE7FE
0xE59F002C
0xEE0C0F10
0xEE113F50
0xE383360F
0xEE013F50
0xE3A03000
0xE3A00101
0xEEE80A10
0xEE073F95
0xE59FA00C
0xE1A0E00F
0xE12FFF1A
0xE24FF008
等等
将在地址0x40300000处的底部 L3 OCMC RAM 加载 SBL。 它不超过0x4030B800的可用限制、如 TRM 的初始化一章中所示。
TRM 还声称您可以使用0x402F0400和0x40300000之间的 SRAM 区域、但我无法在该区域成功链接和调试。 然而 ,这目前并不是一个主要问题。
有人能看到这里有什么问题吗? 我一定会做错事、但我根本看不到。 我曾尝试返回小端字节序以查看代码的正文、但这也不起作用!
我的设置如下:
定制 PCB
AM3352BZCZ30
CCS 版本:6.1.2.00015
BIOS_6_45_01_29
PDK_AM335x_1_0_3
GNU v4.0.3 (Linaro)
Win 7 64位
谢谢、
GerryL