74 lines
2.8 KiB
Plaintext
74 lines
2.8 KiB
Plaintext
|
|
*** Variables ***
|
||
|
|
${UART} sysbus.cpu.uartSemihosting
|
||
|
|
|
||
|
|
*** Keywords ***
|
||
|
|
Create Machine
|
||
|
|
Execute Command using sysbus
|
||
|
|
Execute Command mach create
|
||
|
|
Execute Command machine LoadPlatformDescription @platforms/cpus/xtensa-sample-controller.repl
|
||
|
|
|
||
|
|
Load Opcodes To Memory
|
||
|
|
# MOVI at0, 0x400
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x00 0x0000A402
|
||
|
|
# L32I at1, at0, 0x0
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x03 0x00002012
|
||
|
|
# L32I at2, at0, 0x1 (load from at0 + 4)
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x06 0x00012022
|
||
|
|
# BEQZ at2, 0x12
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x09 0x00005216
|
||
|
|
# QUOU at3, at1, at2 (integer division)
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x0c 0x00C23120
|
||
|
|
# J 0x15
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x0f 0x00000086
|
||
|
|
# MOVI at3, 0x0
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x12 0x0000A032
|
||
|
|
# J 0x15
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x15 0xFFFFFF06
|
||
|
|
|
||
|
|
*** Test Cases ***
|
||
|
|
Test Division
|
||
|
|
${NUMERATOR}= Set Variable 0x10
|
||
|
|
${DENOMINATOR}= Set Variable 0x02
|
||
|
|
${EXPECTED_RES}= Evaluate str(0 if ${DENOMINATOR} == 0 else ${NUMERATOR} // ${DENOMINATOR})
|
||
|
|
|
||
|
|
Create Machine
|
||
|
|
Execute Command machine LoadPlatformDescriptionFromString 'opmem: Memory.MappedMemory @ sysbus 0x0 { size: 0x30000 }'
|
||
|
|
Execute Command cpu PC 0x0
|
||
|
|
Load Opcodes To Memory
|
||
|
|
|
||
|
|
# Load operands of the operation
|
||
|
|
# in this example it will calculate:
|
||
|
|
# 0x10 / 0x02
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x400 ${NUMERATOR}
|
||
|
|
Execute Command sysbus WriteDoubleWord 0x404 ${DENOMINATOR}
|
||
|
|
|
||
|
|
Execute Command cpu Step
|
||
|
|
PC Should Be Equal 0x3
|
||
|
|
Register Should Be Equal 1 0x400
|
||
|
|
|
||
|
|
Execute Command cpu Step
|
||
|
|
PC Should Be Equal 0x6
|
||
|
|
Register Should Be Equal 2 ${NUMERATOR}
|
||
|
|
|
||
|
|
Execute Command cpu Step
|
||
|
|
PC Should Be Equal 0x9
|
||
|
|
Register Should Be Equal 3 ${DENOMINATOR}
|
||
|
|
|
||
|
|
Execute Command cpu Step 3
|
||
|
|
|
||
|
|
PC Should Be Equal 0x15
|
||
|
|
Register Should Be Equal 4 ${EXPECTED_RES}
|
||
|
|
|
||
|
|
|
||
|
|
Test Zephyr hello_world sample
|
||
|
|
Create Machine
|
||
|
|
Execute Command sysbus LoadELF @https://dl.antmicro.com/projects/renode/xtensa-sample-controller-zephyr-hello-world.elf-s_293544-4be60f8a3891e70c30e1e8a471df4ad12ab08144
|
||
|
|
Execute Command cpu PC 0x50000000
|
||
|
|
|
||
|
|
Create Terminal Tester ${UART}
|
||
|
|
|
||
|
|
Start Emulation
|
||
|
|
|
||
|
|
Wait For Line On Uart Booting Zephyr OS
|
||
|
|
Wait For Line On Uart Hello World! qemu_xtensa
|