Files
simulation_core/tests/unit-tests/stm32f4-erase.robot

67 lines
3.2 KiB
Plaintext

*** Keywords ***
Create Machine
Execute Command using sysbus
Execute Command mach create
Execute Command machine LoadPlatformDescription @platforms/boards/stm32f4_discovery-kit.repl
Unlock Control Register
Execute Command sysbus WriteDoubleWord 0x40023c04 0x45670123
Execute Command sysbus WriteDoubleWord 0x40023c04 0xcdef89ab
*** Test Cases ***
Should Ignore Erase When MER And SER Are Reset
Create Machine
Create Log Tester 3
Execute Command sysbus WriteDoubleWord 0x08000000 0xdeadbeef
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000
Should Be True """${read_result}""".strip() == "0xDEADBEEF"
Unlock Control Register
Execute Command sysbus WriteDoubleWord 0x40023c10 0x00010000 ## Try to perform erase with both SER and MER unset
Wait For Log Entry Tried to erase flash, but MER and SER are reset. This should be forbidden, ignoring...
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000 ## Should ignore erase attempt
Should Be True """${read_result}""".strip() == "0xDEADBEEF"
Should Perform Mass Erase
Create Machine
Execute Command sysbus WriteDoubleWord 0x08000000 0xdeadbeef
Execute Command sysbus WriteDoubleWord 0x080E0000 0xcafebabe
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000
Should Be True """${read_result}""".strip() == "0xDEADBEEF"
${read_result} = Execute Command sysbus ReadDoubleWord 0x080E0000
Should Be True """${read_result}""".strip() == "0xCAFEBABE"
Unlock Control Register
Execute Command sysbus WriteDoubleWord 0x40023c10 0x00010004 ## Set MER and try to perform mass erase
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000
Should Be True """${read_result}""".strip() == "0xFFFFFFFF"
${read_result} = Execute Command sysbus ReadDoubleWord 0x080E0000
Should Be True """${read_result}""".strip() == "0xFFFFFFFF"
Should Perform Sector Erase
Create Machine
Execute Command sysbus WriteDoubleWord 0x08000000 0xdeadbeef
Execute Command sysbus WriteDoubleWord 0x080E0000 0xcafebabe
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000
Should Be True """${read_result}""".strip() == "0xDEADBEEF"
${read_result} = Execute Command sysbus ReadDoubleWord 0x080E0000
Should Be True """${read_result}""".strip() == "0xCAFEBABE"
Unlock Control Register
Execute Command sysbus WriteDoubleWord 0x40023c10 0x0001005a ## Set SER and SNB to sector 11, and try to perform sector erase
${read_result} = Execute Command sysbus ReadDoubleWord 0x08000000
Should Be True """${read_result}""".strip() == "0xDEADBEEF"
${read_result} = Execute Command sysbus ReadDoubleWord 0x080E0000
Should Be True """${read_result}""".strip() == "0xFFFFFFFF"