108 lines
2.7 KiB
Markdown
108 lines
2.7 KiB
Markdown
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
|
|
|
|
```
|