NXP社의 MK22FXXX 시리즈의 IAR에서 Read/Write Protection 방법
/* startup_MKxxxxxx.s 에서 Protection 과 관련된 설정 변경 필요부분 */
__FlashConfig
DCD 0xFFFFFFFF
DCD 0xFFFFFFFF
DCD 0xFFFFFFFF
DCD 0xFFFFFFFE <= FSEC의 설정이 필요합니다.(올려 놓은 부분은 기본 설정 부분)
__FlashConfig_End
MK22F 시리즈에서 Read/Write Protection 값은 0x400 ~ 0x40f까지의 설정에 의해서 결정되게 되는데
Backdoor Key(0x400 ~ 0x407)와 FSEC(0x40C), FOPT(0x40D), FEPROT(0x40E), FDPROT(0x40F), FPROT0-3(0x408 ~ 0x40B) 키 값을 가르키고 실제 가장 중요한 설정인 FSEC은 0x40C의 값에 의해서 결정되게 됩니다.
FSEC(하단 PDF URL 참조)
7, 6 => KEYEN
5, 4 => MEEN
3, 2 => FSLACC
1, 0 => SEC(10을 제외한 모든 설정이 SECURE 설정)
--enable_config_wirte 하는 이유는 유저가 실수로 0x400 ~ 0x40f까지 실수로 설정한 후 라이팅하여 더이상 사용하지 못하는 경우를 없애기 위해 만들어 놓은 듯 싶습니다.(하단 URL 참조)
icf 파일에서 Flash Config 관련 부분
define symbol FlashConfig_start__ = 0x00000400;
define symbol FlashConfig_end__ = 0x0000040f;
define region FlashConfig_region = mem:[from FlashConfig_start__ to FlashConfig_end__];
place in FlashConfig_region { section FlashConfig };
https://community.nxp.com/thread/311660
https://www.nxp.com/docs/en/application-note/AN4507.pdf