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.

OMAP 5912 boot ROM with soft reset

I know this isn't the proper forum but I saw most 5912 questions posted in here and couldn't find any place else more suitable.

I am using the OMAP 5912 and when using the TI boot ROM we are unable to recover from an unexpected/watchdog reset. We are able to do a soft reset using the following method:

#define ARM_RSTCT1       0xFFFECE10

    (*(short *) ARM_RSTCT1) = 4;    /* Sofware reset:  DSP */

    (*(short *) ARM_RSTCT1) = 1;    /* Sofware reset:  MPU */

However before actually resetting the cores we must write this data to the beginning of internal RAM starting at address 0x20000000:
        0xEA000005,
        0xEA000004,
        0xEA000003,
        0xEA000002,
        0xEA000001,
        0xEA000002,
        0xEAFFFFFF,
        0xE51FF004,
        0x000001E8,
        0xE51FF004,
        0x000001A0,
        0xD16AE8D4,
        0x00000001,
        0xEED8C601,
        0xEC87D8FB,
        0x2E30BD72,
        0x67C79570,
        0x3B8067B2,
        0xD214BD51,
        0xEAC62707,
        0xB78E364A,
        0xD652DF98,
        0xB7078DD1,
        0x8CA8BCDC,
        0x19609183,
        0x000001FF,
        0x00004501
When looking at this data in CCS as disassembly it is a vector table with jumps to 0x000001E8 and 0x000001A0 plus some additional data. To get this data originally we halted the processor after the TI boot ROM exits and before our code starts and copied the block above from internal RAM at the 0x20000000 address. My question is why does the boot ROM behave differently on a hard reset vs a soft reset? If I zero out the first few hundred bytes of internal RAM before performing a soft reset we are not able to come back up into our production code and I would imagine that the internal RAM is zero'd out on a cold start. When connecting on CCS after a reset without writing the above data it looks as though the processor was continually looping through the boot ROM code. The only thing I can imagine that is happening is that the boot ROM is doing some check to see whether or not it is coming up out of a software reset or from a cold powerup and in the soft reset case checking that some values are in internal RAM already. The work around to this of course is to write this data on powerup to the beginning of internal RAM so that way if there is an unexpected reset the boot ROM will successfully run and exit launching into our production code, but before doing this I would feel alot more comfortable if there was a good explanation for the observed behavior. If anymore details are needed they can be provided. I appreciate your time and input.

  • An update which may simplify finding what is causing the issue. I can clear out internal RAM completely by writing 0's to the 16k. The boot ROM will not exit after a soft reset. 

    If I clear out the internal RAM and then write a 0x00000001 to memory address 0x20000030 before reset the TI boot ROM is able to complete and the unit powers up as normal. Does anyone at TI have the source available to look at the boot ROM code and see why this matters? I am using an OMAP5912ZZG to be more specific.