We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I'm having trouble with the "Flash signature generation" on the LPC1788.
First off the LPC178x_7x.h header file does not have the Flash signature generation structure or define macro.
I added the following to my code:
/*------------- Flash Signature Generation ----------------------*/ typedef struct { uint32_t RESERVED1[8]; __IO uint32_t FMSSTART; __IO uint32_t FMSSTOP; uint32_t RESERVED2; __IO uint32_t FMSW0; __IO uint32_t FMSW1; __IO uint32_t FMSW2; __IO uint32_t FMSW3; uint32_t RESERVED3[1001]; __IO uint32_t FMSTAT; __IO uint32_t FMSTATCLR; } FLASHSIG_TypeDef; //#define LPC_FLASHSIG_BASE (LPC_APB1_BASE + 0x04000) #define LPC_FMC ((FLASHSIG_TypeDef *) 0x00200000 )
The problem I have is I get a hardfault when I access the FMSSTOP register.
Basically this is my code:
void CalcSignature() { /* align flash address to refer the flash word in the array */ uint32_t startAddr = 0x40000; uint32_t length = 0x3FFFF; startAddr = (startAddr >> 4) & 0x0001ffff; length = ((startAddr + length) >> 4) & 0x0001ffff; /* write start address of the flash contents to the register*/ LPC_FMC->FMSSTART = startAddr; LPC_FMC->FMSTATCLR |= (1 << 2); // clear the SIG done /* write stop address of the flash contents to the register, start generating the signature*/ length |= ( 1 << 17); LPC_FMC->FMSSTOP = length; //HARD FAULT HERE!!!!!!!!!!!!!!!!! while((LPC_FMC->FMSTAT & (1 << 2)) == 0); }
Anybody have any ideas or see what I'm doing wrong?
Thanks.
Marc