PROBLEM:
Oops. I was changing the MVPro4.01 kernel/modules/TI binaries on my DM6467 to MVPro5.0. I used the prep-hdd script and binaries from DVSDK 2.00 to update the hard-drive in one big step. Then, I used tftp to get the new kernel from my host, and was able to boot it from memory. It was working – everything was great.
So, I needed to write it to the NAND flash. Since the U-Boot example commands did not include information for the DM6467 with 128MB nand flash, I typed ‘nand erase’, hoping to get some information about what parameters are expected by that command so I could check them against the examples given. Oops – that erased the whole flash, including U-Boot.
Right now my board boots to a BOOTPSP prompt after failing to boot from NAND. Is there any way to quickly re-flash U-Boot?
WHAT I HAVE TRIED:
Using the directions shown at: http://tiexpressdsp.com/index.php/Serial_Boot_and_Flash_Loading_Utility
I got the latest Serial Flasher Host utility .tar.gz from SourceForge, and I have the ubl_dm646x_297.bin and u-boot-1.2.0-dm6467.bin files from the LSP 2.00 release. The SourceForge download also included a ubl_dm646x_nand.bin binary.
With the BM dipswitches set to 0001, I ran the sfh_DM646x.exe Serial Flasher Host utility, and everything seemed OK. (See output below). I changed the BM dipswitches back to 0111 (SPI boot) and I get the same error as if the entire NAND was erased, which is:
Booting PSP Boot LoaderStarting NAND CopyNAND Boot failed. Starting UART
BOOTPSP
But, the output of the Serial Flasher Host utility suggested a successful burn:
-----------------------------------------------------
TI Serial Flasher Host Program for DM646x
(C) 2009, Texas Instruments, Inc.
Ver. 1.50
-----------------------------------------------------
Platform is Windows.
Flashing NAND with ubl_dm646x_297.bin and u-boot-1.2.0-dm6467.bin.
Attempting to connect to device COM1...
Press any key to end this program at any time.
Waiting for the DM646x...
BOOTME commmand received. Returning ACK and header...
ACK command sent. Waiting for BEGIN command...
Target: BOOTMEWaiting for the DM646x...
BOOTME commmand received. Returning ACK and header...
ACK command sent. Waiting for BEGIN command...
Target: BEGIN
BEGIN commmand received. Sending CRC table...
100% [ ]
CRC table sent....Waiting for DONE...
DONE received. Sending the UBL...
100% [ ]
UBL sent....
DONE received. UBL was accepted.
UBL transmitted successfully.
Waiting for SFT on the DM646x...
Target: Starting UART Boot...
Target: BOOTUBL
BOOTUBL commmand received. Returning CMD and command...
CMD value sent. Waiting for DONE...
Target: DONE
DONE received. Command was accepted.
Sending the UBL image
Waiting for SENDIMG sequence...
SENDIMG received. Returning ACK and header for image data...
ACK command sent. Waiting for BEGIN command...
BEGIN commmand received.
100% [ ]
Image data sent...
Waiting for DONE...
DONE received. All bytes of image data received...
Target: Writing UBL to NAND flash
Target: Unprotecting blocks 0x00000001 through 0x00000005.
Target: Number of blocks needed for header and data: 0x0x00000001
Target: Attempting to start in block number 0x0x00000001.
Target: Erasing block 0x00000001 through 0x00000001.
Target: Writing header and image data to Block 0x00000001, Page 0x00000000
Target: Erasing block 0x00000002 through 0x00000002.
Target: Writing header and image data to Block 0x00000002, Page 0x00000000
Target: Erasing block 0x00000003 through 0x00000003.
Target: Writing header and image data to Block 0x00000003, Page 0x00000000
Target: Erasing block 0x00000004 through 0x00000004.
Target: Writing header and image data to Block 0x00000004, Page 0x00000000
Target: Erasing block 0x00000005 through 0x00000005.
Target: Writing header and image data to Block 0x00000005, Page 0x00000000
Target: Protecting the entire NAND flash.
Target: DONE
Sending the Application image
Waiting for SENDIMG sequence...
SENDIMG received. Returning ACK and header for image data...
ACK command sent. Waiting for BEGIN command...
BEGIN commmand received.
100% [ ]
Image data sent...
Waiting for DONE...
DONE received. All bytes of image data received...
Target: Writing APP to NAND flash
Target: Unprotecting blocks 0x00000006 through 0x00000032.
Target: Number of blocks needed for header and data: 0x0x00000002
Target: Attempting to start in block number 0x0x00000006.
Target: Erasing block 0x00000006 through 0x00000007.
Target: Writing header and image data to Block 0x00000006, Page 0x00000000
Target: Erasing block 0x00000008 through 0x00000009.
Target: Writing header and image data to Block 0x00000008, Page 0x00000000
Target: Erasing block 0x0000000A through 0x0000000B.
Target: Writing header and image data to Block 0x0000000A, Page 0x00000000
Target: Erasing block 0x0000000C through 0x0000000D.
Target: Writing header and image data to Block 0x0000000C, Page 0x00000000
Target: Erasing block 0x0000000E through 0x0000000F.
Target: Writing header and image data to Block 0x0000000E, Page 0x00000000
Target: Erasing block 0x00000010 through 0x00000011.
Target: Writing header and image data to Block 0x00000010, Page 0x00000000
Target: Erasing block 0x00000012 through 0x00000013.
Target: Writing header and image data to Block 0x00000012, Page 0x00000000
Target: Erasing block 0x00000014 through 0x00000015.
Target: Writing header and image data to Block 0x00000014, Page 0x00000000
Target: Erasing block 0x00000016 through 0x00000017.
Target: Writing header and image data to Block 0x00000016, Page 0x00000000
Target: Erasing block 0x00000018 through 0x00000019.
Target: Writing header and image data to Block 0x00000018, Page 0x00000000
Target: Erasing block 0x0000001A through 0x0000001B.
Target: Writing header and image data to Block 0x0000001A, Page 0x00000000
Target: Erasing block 0x0000001C through 0x0000001D.
Target: Writing header and image data to Block 0x0000001C, Page 0x00000000
Target: Erasing block 0x0000001E through 0x0000001F.
Target: Writing header and image data to Block 0x0000001E, Page 0x00000000
Target: Erasing block 0x00000020 through 0x00000021.
Target: Writing header and image data to Block 0x00000020, Page 0x00000000
Target: Erasing block 0x00000022 through 0x00000023.
Target: Writing header and image data to Block 0x00000022, Page 0x00000000
Target: Erasing block 0x00000024 through 0x00000025.
Target: Writing header and image data to Block 0x00000024, Page 0x00000000
Target: Erasing block 0x00000026 through 0x00000027.
Target: Writing header and image data to Block 0x00000026, Page 0x00000000
Target: Erasing block 0x00000028 through 0x00000029.
Target: Writing header and image data to Block 0x00000028, Page 0x00000000
Target: Erasing block 0x0000002A through 0x0000002B.
Target: Writing header and image data to Block 0x0000002A, Page 0x00000000
Target: Erasing block 0x0000002C through 0x0000002D.
Target: Writing header and image data to Block 0x0000002C, Page 0x00000000
Target: Erasing block 0x0000002E through 0x0000002F.
Target: Writing header and image data to Block 0x0000002E, Page 0x00000000
Target: Erasing block 0x00000030 through 0x00000031.
Target: Writing header and image data to Block 0x00000030, Page 0x00000000
Target: Protecting the entire NAND flash.
Target: DONE
Target: DONEOperation completed successfully.
I tried several different command lines for the sfh utility, with the same results:
sfh_DM646x.exe –nandflash ubl_dm646x_297.bin u-boot-1.2.0-dm6467.bin (Using the .bins from the LSP release)
sfh_DM646x.exe –nandflash ubl_dm646x_nand.bin u-boot-1.2.0-dm6467.bin (Using the UBL bin from sourceforge)
sfh_DM646x.exe –nandflash –UBLStartAddr 0x0100 APPStartAddr 0x8108000 APPStartAddr 0x81080000 ubl_dm646x_297.bin u-boot-1.2.0-dm6467.bin (forcing the start and load addresses to the ones specified as the typical defaults in the wiki)
Do you see anything obvious that I am doing wrong?
I am beginning to suspect that either the ubl or U-boot bins are corrupt. I see that at least one other person is having the same problem: http://e2e.ti.com/forums/p/7826/30761.aspx
Best regards,
EricR