О програмировании NVM битов в SAM7S. IAR. Команда AT91C_MC_FCMD_SET_SECURITY работает, установка GPNVM0 нет. Правда установку AT91C_MC_FCMD_SET_SECURITY прочитать нельзя - сразу отрубается JTAG. При записи GPNVM0 и GPNVM1 в MC_FSR вместо 3 записывается 8. Что-то может быть не прожевал?
Код :
#define AT91C_MC_FSR_MVM ((u32) 0x03 << 8)
//*---------------------------------------------------------- ------------------
__ramfunc void AT91F_NVM_SetBODEn (void)
{
int TnmNVM=0;
AT91PS_MC ptMC = AT91C_BASE_MC;
//* Write the Set NVM Bit command
ptMC->MC_FCR = (AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_SET_GP_NVM | (AT91C_MC_PAGEN & (3 << 8));
//* Wait the end of command
AT91F_Flash_Ready();
}
//*----------------------------------------------------------------------------
//*---------------------------------------------------------- ------------------
__ramfunc void AT91F_NVM_SetSecuritiBit (void)
{
ptMC->MC_FCR = AT91C_MC_CORRECT_KEY | AT91C_MC_FCMD_SET_SECURITY ;
AT91F_Flash_Ready();
}
//*----------------------------------------------------------------------------
__ramfunc int AT91F_GetSecuriti_Status(void)
{
return (AT91C_BASE_MC->MC_FSR & AT91C_MC_SECURITY);
}
//*---------------------------------------------------------- ------------------
__ramfunc int AT91F_GetGPNVM_Status(void)
{
return (AT91C_BASE_MC->MC_FSR & AT91C_MC_FSR_MVM);
}
//*----------------------------------------------------------------------------
void EnableBOD(void)
{
while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY)) ;
AT91C_BASE_MC->MC_FMR = ((AT91C_MC_FMCN)&(200 <<16)) | AT91C_MC_FWS_3FWS ;
while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY)) ;
if(!AT91F_GetGPNVM_Status())
{
AT91F_NVM_SetBODEn();
}
if(!AT91F_GetSecuriti_Status())
{
#ifdef TEST_RELEARE
AT91F_NVM_SetSecuritiBit();
#endif
}
while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY)) ;
AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS ;
while (!(AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY)) ;
}
//*----------------------------------------------------------------------
-
- Ставлю их через JTAG скриптом C-SPY Сергей Борщ(1738 знак., 28.02.2008 14:57)