仿真平台内核初版 -tlib库 包含<sparc arm riscv powerPC>
This commit is contained in:
123
tests/peripherals/MC3635.robot
Normal file
123
tests/peripherals/MC3635.robot
Normal file
@@ -0,0 +1,123 @@
|
||||
*** Variables ***
|
||||
${UART} sysbus.uart
|
||||
${MC3635} sysbus.ffe.i2cMaster0.mc3635
|
||||
${URI} @https://dl.antmicro.com/projects/renode
|
||||
|
||||
*** Keywords ***
|
||||
Create Machine
|
||||
[Arguments] ${elf}
|
||||
|
||||
Execute Command mach create
|
||||
Execute Command machine LoadPlatformDescription @platforms/boards/eos-s3-quickfeather.repl
|
||||
|
||||
Execute Command sysbus LoadELF ${URI}/${elf}
|
||||
|
||||
Assert Flag
|
||||
[Arguments] ${register} ${position} ${value}
|
||||
${flag} Evaluate str((${register} >> ${position}) & 0x1)
|
||||
Should Be Equal ${flag} ${value}
|
||||
|
||||
Feed Test Data
|
||||
[Arguments] ${peripheral}
|
||||
|
||||
# The test binary sets mode to the continuous sampling on the beggining of configuration,
|
||||
# and some samples are fed before we enter the main loop. Hence we start with a few empty ones.
|
||||
Execute Command ${peripheral} FeedAccelerationSample 0.0 0.0 0.0 5
|
||||
|
||||
# One sample short from 0.5s worth of data
|
||||
FOR ${index} IN RANGE 27
|
||||
${x}= Evaluate -1.0 + ${index} * (2/26) # Linear sweep from -1 to 1 over 27 samples
|
||||
${y}= Evaluate -2.0 + ${index} * (2/26) # Linear sweep from -2 to 0 over 27 samples
|
||||
${z}= Evaluate 2.0 - ${index} * (2/26) # Linear sweep from +2 to 0 over 27 samples
|
||||
Execute Command ${peripheral} FeedAccelerationSample ${x} ${y} ${z}
|
||||
END
|
||||
|
||||
*** Test Cases ***
|
||||
Should Output Data
|
||||
Create Machine quick_feather--mc3635_ssi_ai_app.elf-s_947900-114d2e13b2ceffb6144135e61d1b3c2a499e35c3
|
||||
Create Terminal Tester ${UART}
|
||||
Provides Ready Machine
|
||||
|
||||
Start Emulation
|
||||
|
||||
Wait For Line On Uart X 0,Y 0,Z 0
|
||||
|
||||
Should Work With FeedAccelerationSample
|
||||
Requires Ready Machine
|
||||
|
||||
Feed Test Data ${MC3635}
|
||||
Start Emulation
|
||||
|
||||
Wait For Line On Uart X -8191,Y -16383,Z 16383
|
||||
Wait For Line On Uart X 0,Y -8191,Z 8191
|
||||
Wait For Line On Uart X 8191,Y 0,Z 0
|
||||
|
||||
Should Be Able To Disable Axis
|
||||
Requires Ready Machine
|
||||
|
||||
Execute Command ${MC3635} DefaultAccelerationX 1.0
|
||||
Execute Command ${MC3635} DefaultAccelerationY 1.0
|
||||
Execute Command ${MC3635} DefaultAccelerationZ 1.0
|
||||
Start Emulation
|
||||
|
||||
Wait For Line On Uart X 8191,Y 8191,Z 8191
|
||||
Execute Command ${MC3635} RegisterWrite 0x10 0x45 # Mode CWAKE, Z disabled
|
||||
Wait For Line On Uart X 8191,Y 8191,Z 0
|
||||
Execute Command ${MC3635} RegisterWrite 0x10 0x25 # Mode CWAKE, Y disabled
|
||||
Wait For Line On Uart X 8191,Y 0,Z 8191
|
||||
Execute Command ${MC3635} RegisterWrite 0x10 0x15 # Mode CWAKE, X disabled
|
||||
Wait For Line On Uart X 0,Y 8191,Z 8191
|
||||
|
||||
Should Log Error If Some Of Reserved Bits Have Wrong Value
|
||||
Requires Ready Machine
|
||||
Create Log Tester 1
|
||||
Start Emulation
|
||||
|
||||
Execute Command ${MC3635} RegisterWrite 0x20 0x00
|
||||
Wait For Log Entry Invalid value written to offset 0x20 reserved bits. Allowed values = 0b0000xx01
|
||||
Execute Command ${MC3635} RegisterWrite 0x21 0x00
|
||||
Wait For Log Entry Invalid value written to offset 0x21 reserved bits. Allowed values = 0b1000xx00
|
||||
Execute Command ${MC3635} RegisterWrite 0x22 0x01
|
||||
Wait For Log Entry Invalid value written to offset 0x22 reserved bits. Allowed values = 0b0000xx00
|
||||
|
||||
Should Log Error On Selecting Unimplemented Modes
|
||||
Requires Ready Machine
|
||||
Create Log Tester 1
|
||||
Start Emulation
|
||||
|
||||
Execute Command ${MC3635} RegisterWrite 0x10 0x02 # Mode SNIFF
|
||||
Wait For Log Entry Sniff mode unimplemented. Switching to Standby
|
||||
Execute Command ${MC3635} RegisterWrite 0x10 0x06 # Mode SWAKE
|
||||
Wait For Log Entry Swake mode unimplemented. Switching to Standby
|
||||
|
||||
Should Set Flags
|
||||
# This test relies on the configuration of the emulation and the binary itself.
|
||||
# Any changes require adjusting the `emulation RunFor` arguments
|
||||
|
||||
${NEW_DATA_REG}= Evaluate 0x08
|
||||
${OVR_DATA_REG}= Evaluate 0x01
|
||||
${NEW_DATA_POSITION}= Evaluate 3
|
||||
${OVR_DATA_POSITION}= Evaluate 0
|
||||
|
||||
Requires Ready Machine
|
||||
|
||||
# Run until the peripheral is set to `continuous sampling` but the configuration is not yet completed and no samples are read
|
||||
Execute Command emulation RunFor '0.006'
|
||||
${OVR_DATA}= Execute Command ${MC3635} RegisterRead ${OVR_DATA_REG}
|
||||
${NEW_DATA}= Execute Command ${MC3635} RegisterRead ${NEW_DATA_REG}
|
||||
|
||||
# Assert the flags indicate that samples are being overwritten
|
||||
Assert Flag ${NEW_DATA} ${NEW_DATA_POSITION} 1
|
||||
Assert Flag ${OVR_DATA} ${OVR_DATA_POSITION} 1
|
||||
|
||||
# Read sample and check if flags are adjusted
|
||||
Execute Command ${MC3635} RegisterRead 0x2
|
||||
${OVR_DATA}= Execute Command ${MC3635} RegisterRead ${OVR_DATA_REG}
|
||||
${NEW_DATA}= Execute Command ${MC3635} RegisterRead ${NEW_DATA_REG}
|
||||
Assert Flag ${NEW_DATA} ${NEW_DATA_POSITION} 0
|
||||
Assert Flag ${OVR_DATA} ${OVR_DATA_POSITION} 1
|
||||
|
||||
# Wait for the configuration to end, and then for a few more samples. Then assert that samples are not being overwritten
|
||||
Execute Command emulation RunFor '0.05'
|
||||
${OVR_DATA}= Execute Command ${MC3635} RegisterRead ${OVR_DATA_REG}
|
||||
Assert Flag ${OVR_DATA} ${OVR_DATA_POSITION} 0
|
||||
Reference in New Issue
Block a user