Сергей Борщ (28.02.2008 14:57, просмотров: 150) ответил =vvv= на О програмировании NVM битов в SAM7S. IAR. Команда AT91C_MC_FCMD_SET_SECURITY работает, установка GPNVM0 нет.
Ставлю их через JTAG скриптом C-SPY ExecUserPreload()
{
Reset();
Remap_FLASH();
__writeMemory32(0xD3,0x98,"Register"); // CPSR = SVC mode, ARM, IRQ, FIQ disabled
SetGPNVM(0); // Enable BOD
SetGPNVM(1); // Enable BOD Reset
}
SetGPNVM(bit)
{
__var tmp;
__message " -------- GPNVM bit ", bit, " programming ---------- ";
tmp = __readMemory32(0xFFFFFF68, "Memory"); // MC_FSR
if(!(tmp & ( 1 << (8 + bit) ))) // if GPNVM0 not set
{
__writeMemory32( 0
| ((4032000 * 36 / 3 / 1000000) << 16) // MCK cycles in 1 us
| (1 << 8) // 1 FWS
| (1 << 7) // no erase before prog
,0xFFFFFF60, "Memory"); // MC_FMR
__writeMemory32( 0
| (0x5A << 24) // key
| (bit << 8) // bit number
| 0x0000000B // SET GPNVM command
,0xFFFFFF64, "Memory"); // MC_FCR
do
{
tmp = __readMemory32(0xFFFFFF68, "Memory");
}
while (! (tmp & (1 << 0)) ); // wait untli FRDY
if(tmp & (3 << 2))
__message " !!!!!!! GPNVM bit ", bit, " programming error !!!!!!!!!";
else
__message " GPNVM bit ", bit, " programmed ";
}
else
{
__message " GPNVM bit ", bit, " alredy set ";
}
}