| ********************************** Variables ********************************** |
| |
| ${URI} @https://dl.antmicro.com/projects/renode |
| |
| ${MEM_PROTECT_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_mem_protect_fvp_baser_aemv8r_aarch32.elf-s_1588116-5e9567fdd71944d758098fb6078c399703fb8135 |
| ${PROTECTION_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_protection_fvp_baser_aemv8r_aarch32.elf-s_523044-d3f20216e74913fa258d21404c83282f27d7749b |
| ${STACKPROT_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_stackprot_fvp_baser_aemv8r_aarch32.elf-s_1305768-fc659d9da17b27a39236a6fbb914fdad83103409 |
| ${USERSPACE_BINARY} ${URI}/zephyr_tests_kernel_mem_protect_userspace_fvp_baser_aemv8r_aarch32.elf-s_1418592-34442d722b26aa21e9c62b9dc31db2fba9871837 |
| |
| ${UART} sysbus.uart0 |
| |
| ${NON_DEFAULT_REGION_COUNT} 24 |
| |
| *********************************** Keywords ********************************** |
| Initialize Emulation |
| [Arguments] ${binary} ${region_count}=None |
| |
| Execute Command mach create |
| |
| IF ${region_count} != None |
| ${mpu_regions_string}= Catenate SEPARATOR=\n |
| ... """ |
| ... using "platforms/cpus/cortex-r52.repl" |
| ... |
| ... cpu: |
| ... ${SPACE*4}mpuRegionsCount: ${region_count} |
| ... """ |
| Execute Command machine LoadPlatformDescriptionFromString ${mpu_regions_string} |
| ELSE |
| Execute Command machine LoadPlatformDescription @platforms/cpus/cortex-r52.repl |
| END |
| |
| Execute Command sysbus LoadELF ${binary} |
| Set Default Uart Timeout 1 |
| Create Terminal Tester ${UART} |
| |
| Run Test |
| [Arguments] ${bin} ${region_count}=None |
| Initialize Emulation ${bin} ${region_count} |
| Wait For Line On Uart TESTSUITE [a-z_]+ succeeded treatAsRegex=true |
| |
| Expect Mpu Regions Count |
| [Arguments] ${expected_count} |
| ${reg_value}= Execute Command sysbus.cpu GetSystemRegisterValue "MPUIR" |
| ${regions_count}= Evaluate int(${reg_value}) >> 8 |
| |
| Should Be Equal As Integers ${regions_count} ${expected_count} |
| |
| ********************************** Test Cases ********************************* |
| Should have correct default configuration |
| Initialize Emulation ${PROTECTION_BINARY} |
| Expect Mpu Regions Count 16 |
| |
| Should pass the protection test |
| Run Test ${PROTECTION_BINARY} |
| |
| Should pass the mem_protect test |
| Run Test ${MEM_PROTECT_BINARY} |
| |
| Should pass the userspace test |
| Run Test ${USERSPACE_BINARY} |
| |
| Should pass the stackprotect test |
| Run Test ${STACKPROT_BINARY} |
| |
| # For Cortex-R Zephyr retrieves count of MPU regions in runtime. |
| # The same binary can be used for various regions counts. |
| Should respect the configured number of regions with more regions |
| Initialize Emulation ${PROTECTION_BINARY} ${NON_DEFAULT_REGION_COUNT} |
| Expect Mpu Regions Count ${NON_DEFAULT_REGION_COUNT} |
| |
| Should pass the protection test with more regions |
| Run Test ${PROTECTION_BINARY} ${NON_DEFAULT_REGION_COUNT} |
| |
| Should pass the mem_protect test with more regions |
| Run Test ${MEM_PROTECT_BINARY} ${NON_DEFAULT_REGION_COUNT} |
| |
| Should pass the userspace test with more regions |
| Run Test ${USERSPACE_BINARY} ${NON_DEFAULT_REGION_COUNT} |
| |
| Should pass the stackprotect test with more regions |
| Run Test ${STACKPROT_BINARY} ${NON_DEFAULT_REGION_COUNT} |