我使用的是AM335X芯片,祼机跑,现在想从SPI FALSH启动,可是无法启动,以下是我的操作步骤:
1)设置启动方式 SYSBOOT[4..0] 为11000 即启动顺序为:SPI0 MMC0 USB0 UART0
2)下载BOOT到SPI FLASH。
3)断电后无法看到BOOT启动的现象。
测试:1)关于启动顺序:当我把BOOT下载到FLASH中时,断电后,就不能够从SD卡正确启动。当我把FLASH短接(造成FLASH异常)后,就能够从SD卡正常启动。所以启动顺序设置应该是正确的。
2)程序:我将FLASH里面的数据全部擦除后,MLO能够正常引导app,能够跑起来,所以程序应该也是没有问题的。
3)下载方式:使用官方提供的SPI_FLASH_TOOL程序(去掉EEPROM部分,能够正常下载)下载BOOT到SPI FLASH,仍然无法启动。
4)SPI_FLASH_TOOL程序提供四种SPI FLASH,我将我使用的FLASH的有关信息添加到winbond_spi_flash_table里面去,下载成功,仍然无法启动。但是手头上没有这个程序提供的四种FLASH。
问题:1)是不是我下载FLASH的方式是否有问题,即我下载的是带有封装的数据,即前8个数据分别4字节的文件大小和4字节的加载地址。如:48 D7 00 0000 04 2F 40
2)是不是从SPI启动只支持SPI_FLASH_TOOL中指定的四种FLASH,而其它的不支持。
3)贴上用SPI_FLASH_TOOL下载boot时console打印信息(将boot文件直接放到SPI_FLASH_TOOL工程中的Debug文件下),请帮忙看下,谢谢。
[CortxA8] Welcome to CCS SPI Flash Utility [CortxA8] AM335X part detected. SF: Got idcode c8 40 15 [CortxA8] Checking if Winbond flash writer can be used.. [CortxA8] SF: Detected W25Q16 with page size 256, total 2097152 bytes [CortxA8] Flash page size: 256 bytes [CortxA8] Flash sector size: 4096 bytes [CortxA8] Starting SPIWriter. [CortxA8] Enter the File Name boot [CortxA8] Enter the Offset in bytes (in HEX) 0x00 [CortxA8] Erasing flash at byte offset: 0, byte length: 57344 [CortxA8] SE: cmd = { 0x20 0x000000 } [CortxA8] SE: cmd = { 0x20 0x001000 } [CortxA8] SE: cmd = { 0x20 0x002000 } [CortxA8] SE: cmd = { 0x20 0x003000 } [CortxA8] SE: cmd = { 0x20 0x004000 } [CortxA8] SE: cmd = { 0x20 0x005000 } [CortxA8] SE: cmd = { 0x20 0x006000 } [CortxA8] SE: cmd = { 0x20 0x007000 } [CortxA8] SE: cmd = { 0x20 0x008000 } [CortxA8] SE: cmd = { 0x20 0x009000 } [CortxA8] SE: cmd = { 0x20 0x00a000 } [CortxA8] SE: cmd = { 0x20 0x00b000 } [CortxA8] SE: cmd = { 0x20 0x00c000 } [CortxA8] SE: cmd = { 0x20 0x00d000 } [CortxA8] SF: Winbond: Successfully erased 57344 bytes @ 0xe000 [CortxA8] Writing flash at page offset: 0, number of pages: 216 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xe00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xf00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x000f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x1f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x001f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x2f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x002f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x3f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x003f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x4f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x004f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x5f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x005f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x6f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x006f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x7f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x007f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x8f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x008f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9a00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009a00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9b00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009b00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9c00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009c00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9d00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009d00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9e00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009e00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0x9f00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x009f00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xa900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00a900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xaa00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00aa00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xab00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ab00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xac00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ac00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xad00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ad00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xae00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ae00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xaf00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00af00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xb900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00b900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xba00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ba00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xbb00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00bb00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xbc00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00bc00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xbd00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00bd00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xbe00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00be00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xbf00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00bf00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc800 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c800 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xc900 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00c900 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xca00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ca00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xcb00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00cb00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xcc00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00cc00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xcd00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00cd00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xce00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00ce00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xcf00 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00cf00 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd000 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d000 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd100 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d100 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd200 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d200 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd300 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d300 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd400 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d400 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd500 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d500 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd600 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d600 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd700 [CortxA8] PP: 0x40305f70 => cmd = { 0x02 0x00d700 } chunk_len = 256 [CortxA8] SF: Winbond: Successfully programmed 256 bytes @ 0xd800 [CortxA8] Verifying... [CortxA8] Verifying... [CortxA8] Success.
Steven Liu1:
你编译出来的bootloader,就是你烧写的MLO是基于Starterware编译的吧,编译的时候配置是用SPI booting的配置编译的吗?我这边有不少客户用的就是Winbond的flash,没有遇到什么问题。
afsa af a:
回复 Steven Liu1:
你好,是的。烧写的Boot是MLO,是基于Starterware编译的。就是按照官方提供的Demo示例进行编译的。下载完后就是启动不起来。
Steven Liu1:
回复 afsa af a:
我的意思是说,你有设置编译的启动模式选择吗,如果想用SPI启动的话,首先,你必须要基于这个目录下面的bootloader
C:\ti\AM335X_StarterWare_02_00_01_01\build\armv7a\cgt_ccs\am335x\evmAM335x\bootloader
同时选择模式的时候在build configuration中需要选择Set Active -> Debug_SPI or RELEASE_SPI
Jian Zhou:
回复 Steven Liu1:
请问你是按照哪个demo程序编译的?是GPEVM么?
afsa af a:
回复 Jian Zhou:
你好,谢谢你的回复。是AM335X_StarterWare_02_00_00_07里面的Demo进行编译的。
afsa af a:
回复 Steven Liu1:
谢谢你的回复。是的,我选择是DEBUG_SPI进行编译的。
afsa af a:
回复 Jian Zhou:
问题已得到解决,是工程配制的问题,造成前8字节中地址出现异常。
谢谢回复。