111 lines
4.8 KiB
Plaintext
111 lines
4.8 KiB
Plaintext
|
|
*** Settings ***
|
||
|
|
Library ${CURDIR}/gdb_library.py
|
||
|
|
|
||
|
|
*** Variables ***
|
||
|
|
${GDB_REMOTE_PORT} 3338
|
||
|
|
|
||
|
|
*** Keywords ***
|
||
|
|
Check And Run Gdb
|
||
|
|
[Arguments] ${name}
|
||
|
|
${res}= Start Gdb ${name}
|
||
|
|
IF '${res}' != 'OK' Fail ${name} not found skipped
|
||
|
|
|
||
|
|
Command Gdb target remote :${GDB_REMOTE_PORT} timeout=10
|
||
|
|
|
||
|
|
Cortex-R52 Should Have Readable Register ${register}
|
||
|
|
Execute Command i @platforms/cpus/cortex-r52.repl
|
||
|
|
|
||
|
|
Execute Command machine StartGdbServer ${GDB_REMOTE_PORT}
|
||
|
|
Check and Run Gdb arm-zephyr-eabi-gdb
|
||
|
|
|
||
|
|
Should Have Register ${register}
|
||
|
|
${register} Should Be Readable
|
||
|
|
|
||
|
|
Cortex-R52 Should Have Read/Writable Register ${register}
|
||
|
|
Cortex-R52 Should Have Readable Register ${register}
|
||
|
|
${register} Should Be Writable
|
||
|
|
|
||
|
|
Cortex-R52 Should Have Readonly Register ${register}
|
||
|
|
Cortex-R52 Should Have Readable Register ${register}
|
||
|
|
|
||
|
|
# Try to write to the register, and verify that its contents remain unchanged.
|
||
|
|
${old_value}= Get Value Of ${register}
|
||
|
|
Set GDB Register Value Of ${register} To 0xdeadbeef
|
||
|
|
${current_value}= Get Value Of ${register}
|
||
|
|
Should Be Equal As Integers ${old_value} ${current_value} Expected register value to remain unchanged (old value was `${old_value}`) but it was changed to `${current_value}`
|
||
|
|
|
||
|
|
Should Have Register ${register}
|
||
|
|
${registers}= Command GDB info all-registers
|
||
|
|
Should Contain ${registers} ${register} Register `${register}` did not show up in `info all-registers` ignore_case=True
|
||
|
|
|
||
|
|
${register} Should Be Readable
|
||
|
|
${expected_value}= Get Value Of ${register}
|
||
|
|
${value}= Get GDB Register Value Of ${register}
|
||
|
|
Should Be Equal As Integers ${value} ${expected_value} Expected register `${register}` to contain `${expected_value}` but it contains `${value}`
|
||
|
|
|
||
|
|
${register} Should Be Writable
|
||
|
|
${current_value}= Get GDB Register Value Of ${register} pad=True
|
||
|
|
${current_hex_chars}= Set Variable ${current_value}[2:]
|
||
|
|
${number_of_hex_chars}= Get Length ${current_hex_chars}
|
||
|
|
IF ${number_of_hex_chars} == 16
|
||
|
|
${new_value}= Set Variable 0xdeadbeef1badb002
|
||
|
|
ELSE
|
||
|
|
${new_value}= Set Variable 0xdeadbeef
|
||
|
|
END
|
||
|
|
Set GDB Register Value Of ${register} To ${new_value}
|
||
|
|
${value}= Get Value Of ${register}
|
||
|
|
Should Be Equal As Integers ${value} ${new_value} Expected register `${register}` to contain `${new_value}` but it contains `${value}`
|
||
|
|
|
||
|
|
Get GDB Register Value Of ${register}
|
||
|
|
[Arguments] ${pad}=False
|
||
|
|
${format}= Set Variable If ${pad}
|
||
|
|
... z # hexadecimal, padded to register width
|
||
|
|
... x # hexadecimal
|
||
|
|
${output}= Command GDB print/${format} $${register}
|
||
|
|
# Output is in the format $1 = 0x3010006
|
||
|
|
${value}= Fetch From Right ${output} =
|
||
|
|
${stripped}= Set Variable ${value.strip()}
|
||
|
|
IF '${stripped}' == 'void'
|
||
|
|
Fail GDB could not fetch value for register ${register}
|
||
|
|
END
|
||
|
|
RETURN ${stripped}
|
||
|
|
|
||
|
|
Set GDB Register Value Of ${register} To ${value}
|
||
|
|
Command GDB set $${register} = ${value}
|
||
|
|
|
||
|
|
Get Value Of ${register}
|
||
|
|
TRY
|
||
|
|
${value}= Execute Command cpu GetSystemRegisterValue "${register}"
|
||
|
|
EXCEPT
|
||
|
|
${value}= Execute Command cpu GetRegister "${register.upper()}"
|
||
|
|
END
|
||
|
|
RETURN ${value}
|
||
|
|
|
||
|
|
*** Test Cases ***
|
||
|
|
Cortex-R52 General Purpose Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Read/Writable Register r5
|
||
|
|
|
||
|
|
Cortex-R52 ID Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Readonly Register ID_DFR0
|
||
|
|
|
||
|
|
Cortex-R52 System Control Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Read/Writable Register HSCTLR
|
||
|
|
|
||
|
|
Cortex-R52 Debug Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Read/Writable Register HDCR
|
||
|
|
|
||
|
|
Cortex-R52 Performance Monitor Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Read/Writable Register PMCR
|
||
|
|
|
||
|
|
Cortex-R52 Implementation-Defined Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Readable Register IMP_CTCMREGIONR
|
||
|
|
|
||
|
|
Cortex-R52 64-Bit Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Read/Writable Register PAR
|
||
|
|
|
||
|
|
Cortex-R52 System Timer Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Readonly Register CNTVCT
|
||
|
|
|
||
|
|
Cortex-R52 GIC Register Should Show Up In GDB
|
||
|
|
Cortex-R52 Should Have Readable Register ICC_BPR0
|