2.7 KiB
2.7 KiB
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