flash_status_flags --- This example is used to observe the staust register of FMC > For generating the wrong behavior, directly control the registers of FMC It observes 4-cases > + Normal case with CMD end > + Wrong address (over range of device) > + Miss unlock sector of flash > + Use wrong auth-key to operate flash ## Log Use serial port with baudrate 115200, 8bit, no parity check. ``` 16:17:42 Observe the error status of FMC with wrong behavior ## Case: CMD end flag @ target address: x00004000 ======= FMC Regs ==== FLASH->CMD = xA5A50123 FLASH->ISR = x00000000 FLASH->AR = x00004000 FLASH->DR = xFFFFFFFF FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000001, CMD_END= 1, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 0 @ target address: x00200800 ======= FMC Regs ==== FLASH->CMD = xA5EC0123 FLASH->ISR = x00000000 FLASH->AR = x00200800 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000001, CMD_END= 1, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 0 ## Case: Address error flag @ target address: x00008200 ======= FMC Regs ==== FLASH->CMD = xA5A50123 FLASH->ISR = x00000008 FLASH->AR = x00000200 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000008, CMD_END= 0, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 1 @ target address: x00202200 ======= FMC Regs ==== FLASH->CMD = xA5EC0123 FLASH->ISR = x00000008 FLASH->AR = x00202200 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000008, CMD_END= 0, KEY_ERR= 0, ACC_ERR=0, ADDR_ERR= 1 ## Case: Access error flag @ target address: x00004000 ======= FMC Regs ==== FLASH->CMD = xA5A50023 FLASH->ISR = x00000000 FLASH->AR = x00004000 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000004, CMD_END= 0, KEY_ERR= 0, ACC_ERR=1, ADDR_ERR= 0 ## Case: Key error flag @ target address: x00004000 ======= FMC Regs ==== FLASH->CMD = xA5EC0123 FLASH->ISR = x00000000 FLASH->AR = x00004000 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000002, CMD_END= 0, KEY_ERR= 1, ACC_ERR=0, ADDR_ERR= 0 @ target address: x00200800 ======= FMC Regs ==== FLASH->CMD = xA5A50123 FLASH->ISR = x00000000 FLASH->AR = x00200800 FLASH->DR = x11223344 FLASH->ACM = x00000000 FLASH->DIV = x00000030 --- After FMC idle ---- FLASH->ISR: 0x00000002, CMD_END= 0, KEY_ERR= 1, ACC_ERR=0, ADDR_ERR= 0 ```