Lin Feng1,
I didn't see this post until after I responded to your previous one.
I see that the fix for this bug was made by the following code which runs at config time:
/*
* ======== module$static$init ========
*/
function module$static$init(mod, params)
{
...
/* On C66 devices there is only one common set of Lock registers */
if ((Program.cpu.deviceName.match(/TCI66/)) ||
(Program.cpu.deviceName.match(/C66/)) ||
(Program.cpu.deviceName.match(/Kepler/))) {
MemoryProtect.pmcCtrl.mpLck = $addr(0x0184AD00);
MemoryProtect.dmcCtrl.mpLck = $addr(0x0184AD00);
MemoryProtect.umcCtrl.mpLck = $addr(0x0184AD00);
}
...
I think you may be able to get the benefits of the fix by adding similar code to your configuration (*.cfg) file. Can you try adding the following into your application's config file?
var MemoryProtect = xdc.useModule('ti.sysbios.family.c64p.MemoryProtect');
MemoryProtect.pmcCtrl.mpLck = $addr(0x0184AD00);
MemoryProtect.dmcCtrl.mpLck = $addr(0x0184AD00);
MemoryProtect.umcCtrl.mpLck = $addr(0x0184AD00);
If this does not work, another option is to modify the MemoryProtect.xs script in your BIOS 6.32 install to contain the code listed above (i.e. the $static$init() function), just as the bug was fixed. But, this means you will be building against a modified version of BIOS, which may not be OK for you.
Steve