Part Number:UCD3138A
Tool/software: Code Composer Studio
Hi,
When bootloader, after excuting Zero_Out_Integrity_Word function to clear the checksum. the pFunc_Ptr is set to an illegal location 0x70000 to reset as below. However, the 0x70000 is the location of DPWM2.
Will it cause bootloader failure if I use DPWM2? When I use DPWM2, it clears checksum and seems reset once but does not enter into the ROM and this causes bootloader failure. If I do not use DPWM2, it can
bootloader successfully. Or if I set pFunc_Ptr to 0xF0000 other than 0x70000 to reset or use SysRegs.SYSECR.bit.RESET = 2 after clear the checksum to reset, it also bootloaders successfully.
can you explain it? Thanks.
case 12: // clear integrity word.
{
{
register Uint32 * pu32Program_Index = (Uint32 *) 0x19000; //store destination address for program
register Uint32 * pu32Source_Index = (Uint32 *)Zero_Out_Integrity_Word; //Set source address of PFLASH;
{
{
register Uint32 * pu32Program_Index = (Uint32 *) 0x19000; //store destination address for program
register Uint32 * pu32Source_Index = (Uint32 *)Zero_Out_Integrity_Word; //Set source address of PFLASH;
register Uint32 u32Counter;
for(u32Counter=0; u32Counter < 500; u32Counter++) //Copy program from PFLASH to RAM
{
*(pu32Program_Index++)=*(pu32Source_Index++);
}
}
{
register tpFunc_Ptr pFunc_Ptr;
pFunc_Ptr=(tpFunc_Ptr)0x19000; //Set function to 0x19000
pFunc_Ptr();
pFunc_Ptr=(tpFunc_Ptr)0x70000; //Set function to illegal location
pFunc_Ptr(); //force reset
{
*(pu32Program_Index++)=*(pu32Source_Index++);
}
}
{
register tpFunc_Ptr pFunc_Ptr;
pFunc_Ptr=(tpFunc_Ptr)0x19000; //Set function to 0x19000
pFunc_Ptr();
pFunc_Ptr=(tpFunc_Ptr)0x70000; //Set function to illegal location
pFunc_Ptr(); //force reset
} //execute erase checksum
return;
}
}