This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Rewriting Nand flash in DM355 dev kit problems

Hi,

I am using CSS and a JTAG emulator (XDS560) to rewrite the nand flash program in my DM355 eval kit. I am following the procedure outlined in the Document  SPRUFG0. But when I restart the dev kit with the console open, I don't see any intiation sequence and I know the serial cable and the port are working. I have noticed that while reprogramming the Flash, CCS gives me messages about bad blocks in the memory. Any suggestion for this?

Thanks.

  • In general the sequence should work, though this is not the latest software release for the DM355, if you are just getting started you may want to consider DVSDK 2.0.

    Could you post the messages that CCS outputs?

    Having bad blocks is not necessarily a bad thing, but rather something that is expected with modern NAND devices, so it is quite possible that the messages you are seeing are normal.

  • Hi Bernie,

    Thank you so much for the response That is the version I used. So the problem is still there. Here are the CSS outputs. Please let me know if you have additional sugestions. Thanks,

    Jorge

    Started Nand programming in non-compatibility mode
    NANDInit() Successful

       Nand Detected:  Manufacturers ID:  0x2C
                       Device ID:         0xD3
                       page size:         2048 bytes
                       block size:        64 pages per block
                       address cycles:    5

    Enter the number of blocks to erase and test (default is 4096)
    4096
    Enter the UBL File Name
    C:\DM355Config\new_exec\ublDM355-nand.bin
    Setting block number 429 bad
     NANDEraseBlock fails on block 429
     NANDReadPage fails on block 429
    Block 429 is a bad block (device 0)
    Setting block number 429 bad
     NANDEraseBlock fails on block 429
     NANDReadPage fails on block 429
    Block 429 is a bad block (device 1)
    Setting block number 568 bad
     NANDEraseBlock fails on block 568
     NANDReadPage fails on block 568
    Block 568 is a bad block (device 0)
    Setting block number 568 bad
     NANDEraseBlock fails on block 568
     NANDReadPage fails on block 568
    Block 568 is a bad block (device 1)
    Setting block number 1534 bad
     NANDEraseBlock fails on block 1534
     NANDReadPage fails on block 1534
    Block 1534 is a bad block (device 0)
    Setting block number 1534 bad
     NANDEraseBlock fails on block 1534
     NANDReadPage fails on block 1534
    Block 1534 is a bad block (device 1)
    Setting block number 2857 bad
     NANDEraseBlock fails on block 2857
     NANDReadPage fails on block 2857
    Block 2857 is a bad block (device 0)
    Setting block number 2857 bad
     NANDEraseBlock fails on block 2857
     NANDReadPage fails on block 2857
    Block 2857 is a bad block (device 1)

    UBL: Number of pages: 7
    UBL Descriptor copy starts now
     BlockNum: 1

    Writing data to block 1, page 0...
    UBL descriptor is successfully programmed, BlockNum : 1
    UBL code copy starts now

    Writing data to block 1, page 1...
    Writing data to block 1, page 2...
    Writing data to block 1, page 3...
    Writing data to block 1, page 4...
    Writing data to block 1, page 5...
    Writing data to block 1, page 6...
    Writing data to block 1, page 7...
    UBL code programming is completed

    Enter the UBOOT File Name
    C:\DM355Config\new_exec\u-boot-1.2.0-dm355.bin
    U-Boot: Number of pages: 68
    U-Boot Descriptor copy starts now
     BlockNum: 8
     NANDWriteBlock done on block 8
    UBOOT descriptor is successfully programmed ,BlockNum : 8

    UBOOT programming starts now pages 68, blockNum 9

    Writing data to block 10, page 0...
    Writing data to block 10, page 1...
    Writing data to block 10, page 2...
    Writing data to block 10, page 3...
    Writing data to block 10, page 4...
    Writing data to block 10, page 5...
    Writing data to block 10, page 6...
    Writing data to block 10, page 7...
    Writing data to block 10, page 8...
    Writing data to block 10, page 9...
    Writing data to block 10, page 10...
    Writing data to block 10, page 11...
    Writing data to block 10, page 12...
    Writing data to block 10, page 13...
    Writing data to block 10, page 14...
    Writing data to block 10, page 15...
    Writing data to block 10, page 16...
    Writing data to block 10, page 17...
    Writing data to block 10, page 18...
    Writing data to block 10, page 19...
    Writing data to block 10, page 20...
    Writing data to block 10, page 21...
    Writing data to block 10, page 22...
    Writing data to block 10, page 23...
    Writing data to block 10, page 24...
    Writing data to block 10, page 25...
    Writing data to block 10, page 26...
    Writing data to block 10, page 27...
    Writing data to block 10, page 28...
    Writing data to block 10, page 29...
    Writing data to block 10, page 30...
    Writing data to block 10, page 31...
    Writing data to block 10, page 32...
    Writing data to block 10, page 33...
    Writing data to block 10, page 34...
    Writing data to block 10, page 35...
    Writing data to block 10, page 36...
    Writing data to block 10, page 37...
    Writing data to block 10, page 38...
    Writing data to block 10, page 39...
    Writing data to block 10, page 40...
    Writing data to block 10, page 41...
    Writing data to block 10, page 42...
    Writing data to block 10, page 43...
    Writing data to block 10, page 44...
    Writing data to block 10, page 45...
    Writing data to block 10, page 46...
    Writing data to block 10, page 47...
    Writing data to block 10, page 48...
    Writing data to block 10, page 49...
    Writing data to block 10, page 50...
    Writing data to block 10, page 51...
    Writing data to block 10, page 52...
    Writing data to block 10, page 53...
    Writing data to block 10, page 54...
    Writing data to block 10, page 55...
    Writing data to block 10, page 56...
    Writing data to block 10, page 57...
    Writing data to block 10, page 58...
    Writing data to block 10, page 59...
    Writing data to block 10, page 60...
    Writing data to block 10, page 61...
    Writing data to block 10, page 62...
    Writing data to block 10, page 63...
    Writing data to block 11, page 0...
    Writing data to block 11, page 1...
    Writing data to block 11, page 2...
    Writing data to block 11, page 3...
    UBOOT programming is completed
     NAND flash programming is completed

  • An alternative way to do this would be to use the serial flash utility described in the following wiki article

    http://wiki.davincidsp.com/index.php/Serial_Boot_and_Flash_Loading_Utility

    I actually found using this utility pretty straight forward (no JTAG needed).

  • It looks like the programming completed successfully, the writer should be checking the values it writes to verify integrity, so if there was a write failure you would generally know. One possibility is that the UBL binary is corrupted somehow, I assume you got the file from \dvsdk_2_00_00_22\PSP_02_00_00_140\bin\dm355?

    As Juan suggests it may also be worth trying out the serial boot utility, those are particularly popular due to not needing JTAG and have been known to work well.

  • Does the DM365 work differently from the DM355 in this aspect?  I need some pointers on how to make my 365 EVM a standalone board that can boot by itself and run say the encodedecode demo with fixed parameters (-y 2 -p) for now (something like the factory standalone demo but now with something that happens as I do not have 720p video to feed it)?  Currently I am running this demo after struggling for a second stint to get tftp going but am not sure still how to sync the kernels as my attempt to update the kernel to nand flash stopped at a point with it "stressing" about the kernels out of sync.  Any pointers where to ge help would be great!

    Thanks

    Hijn