Files

111 lines
4.8 KiB
Plaintext
Raw Permalink Normal View History

*** 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