Unable to "Disable Watchdog" for F2812 target

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View

I am trying to develop an application to perform Flash operations for
F2812 target with Parallel Port using Commandline mode.

When i use the SDFlash Utilty (SDFlash.exe) directly, there were no issues
in performing Flash operations for F2812 target using Parallel Port.

But my application is unable to Disable the Watchdog, and i get the Error
: "Failed to Disable the Watchdog". I guess it has something to do with not
executing EALLOW and EDIS before the protected regiters are accessed.

The following below is the code snippet for Disable watchdog :-

BOOL Disable_WD()
    BOOL      Success;
    MEM_TADDR Addr;
    TREG_16   Data;
    /* Enable WD override */
    //*0x7029 = *0x7029 | 0x0068;
    //*0x7025 = 0x0055;
    //*0x7025 = 0x00AA;
    Addr = 0x7029;
    Success = T28x->ReadMemory(  Addr, M_DATA, &Data, 1 );
    if( Success == FALSE )
     return( FALSE );
    Data |= 0x0068;
    Success = T28x->WriteMemory(  Addr, M_DATA, &Data, 1 );
    if( Success == FALSE )
     return( FALSE );
    Addr = 0x7025;
    Data = 0x0055;
    Success = T28x->WriteMemory(  Addr, M_DATA, &Data, 1 );
    if( Success == FALSE )
     return( FALSE );
    Data = 0x00AA;
    Success = T28x->WriteMemory(  Addr, M_DATA, &Data, 1 );
    return( Success );

The following piece of code does not seem to disable the watchdog in F2812
during a cold restart (Power OFF and Power ON). The function
"T28x->ReadMemory" returns FALSE as it is unable to read the address

But once the SDFlash utlity was used to Erase, Program and Verify the DSC,
the above code does seem to disable the watchdog. That is, when i use my
commandline mode application, for the second time after the SDFlash
Utility, this disabling of watchdog works.

Waiting for response from anyone.

Thanks & Regards,

Re: Unable to "Disable Watchdog" for F2812 target
wrote in comp.arch.embedded:

Quoted text here. Click to load it

If you KNOW that your code is missing a required EALLOW, why don't you
add it?

Quoted text here. Click to load it

Whose idea was it to make a C++ member function to read a value from a
memory address?  How could it possible fail?  What's the matter with
the code that was commented out?  Or even better, using the macros and
headers supplied with Code Composer Studio, that would have compiled
to the same object code and been much more legible?

Maybe you'd better skip the 2812 and go to the 300MHz Delfino parts if
you're generating this kind of bloat.

Quoted text here. Click to load it

What exactly is in this stupid function that it can tell it fails
READING from a memory address?  Since it does not know what the
address is supposed to contain, how does it know what it read is

Does it do something really dumb like reading the address more than
once and comparing the contents to see if they are equal?  There may
be a good reason to do this, but almost never when reading
memory-mapped hardware registers.

Or is it the write function that fails?  Does it do something equally
inappropriate like try to read back what it just wrote?  Again, that's
usually not a good idea when dealing with memory-mapped hardware.

I don't have TI documentation for the 2812 here, it's at work, and I
don't remember what is at address 0x7029 or what is supposed to happen
when you or in those three bits.  But the rest of the function,
writing 0x55 and then 0xAA to the same address, is almost certainly
resetting the watchdog, and probably starting it again if it was
actually stopped.

Have you read the data sheet for the watchdog timer on the 2812?

Quoted text here. Click to load it

How do you know that the function is returning the right value?  How
does it decide FALSE or not FALSE?

Jack Klein http://JK-Technology.Com
FAQs for
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline