stellaris: flash protection updates, minor fixes
Bugfix the read side of flash protection: - read the right register(s)! - handle more than 64K - record the results in the right places - don't display garbage. Partially bugfix the write side: - use 2KB lock regions instead of 1KB pages (!) - validate input range - don't try to _remove_ protection (it's write-once) - #define values we'll need to commit writes. - ... still doesn't handle pages over 64KB mark, or commit writes And minor cleanup and fixes: - get rid of some forward decls - properly locate a doxygen comment - fix some bad indentation - remove superfluous #include - add a new part ID (many are still missing) - make the downloaded algorithm code be read-only Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
@@ -39,7 +39,6 @@ struct stellaris_flash_bank
|
||||
|
||||
/* nv memory bits */
|
||||
uint16_t num_lockbits;
|
||||
uint32_t lockbits;
|
||||
|
||||
/* main clock status */
|
||||
uint32_t rcc;
|
||||
@@ -67,8 +66,14 @@ struct stellaris_flash_bank
|
||||
#define PLLCFG 0x064
|
||||
#define RCC2 0x070
|
||||
|
||||
/* "legacy" flash memory protection registers (64KB max) */
|
||||
#define FMPRE 0x130
|
||||
#define FMPPE 0x134
|
||||
|
||||
/* new flash memory protection registers (for more than 64KB) */
|
||||
#define FMPRE0 0x200 /* PRE1 = PRE0 + 4, etc */
|
||||
#define FMPPE0 0x400 /* PPE1 = PPE0 + 4, etc */
|
||||
|
||||
#define USECRL 0x140
|
||||
|
||||
#define FLASH_CONTROL_BASE 0x400FD000
|
||||
@@ -94,4 +99,8 @@ struct stellaris_flash_bank
|
||||
|
||||
/* STELLARIS constants */
|
||||
|
||||
/* values to write in FMA to commit write-"once" values */
|
||||
#define FLASH_FMA_PRE(x) (2 * (x)) /* for FMPPREx */
|
||||
#define FLASH_FMA_PPE(x) (2 * (x) + 1) /* for FMPPPEx */
|
||||
|
||||
#endif /* STELLARIS_H */
|
||||
|
||||
Reference in New Issue
Block a user