OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64:...
Transcript of OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64:...
![Page 1: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/1.jpg)
OpenOCD support for AArch64 targets
Omair Javaid
![Page 2: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/2.jpg)
● An introduction of JTAG/SWD based hardware debugging● An introduction of OpenOCD and its architecture● What Linaro has been doing with OpenOCD● Work in progress and future plans
Introduction
![Page 3: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/3.jpg)
● Development Hardware○ Runs software to be debugged - Firmware, Bootloaders, Kernel, User apps etc.○ Provides a hardware debugging interface like JTAG or SWD○ JTAG/SWD interface allows use of run-control and other debug facilities provided by the core.
JTAG/SWD Debugging - Introduction
Debug AdapterDevelopment Hardware
Debug & Trace Logic
Core Logic
JTAG Host Computer (Linux / Win / Mac)
OpenOCDParallel
GDB
GDB RSPSWD
Ethernet
USBJTAG
Signaling
SWD Signaling
Com
munication
Interface
![Page 4: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/4.jpg)
● Debug Adapter or Probe○ Communicates with hardware board by using JTAG/SWD signaling○ Communicates with host computer using USB, Ethernet etc○ May host a on-board JTAG/SWD driver and a gdb stub
JTAG/SWD Debugging - Introduction (cont…)
Debug AdapterDevelopment Hardware
Debug & Trace Logic
Core Logic
JTAG Host Computer (Linux / Win / Mac)
OpenOCDParallel
GDB
GDB RSPSWD
Ethernet
USBJTAG
Signaling
SWD Signaling
Com
munication
Interface
![Page 5: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/5.jpg)
● Host Computer - Runs debug tools like GDB○ GDB communicates with debug adapter directly over ethernet using RSP protocol or using
OpenOCD
● OpenOCD - Interface between debug adapter and GDB
JTAG/SWD Debugging - Introduction (cont…)
Debug AdapterDevelopment Hardware
Debug & Trace Logic
Core Logic
JTAG Host Computer (Linux / Win / Mac)
OpenOCDParallel
GDB
GDB RSPSWD
Ethernet
USBJTAG
Signaling
SWD Signaling
Com
munication
Interface
![Page 6: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/6.jpg)
OpenOCD Architecture - Introduction● User Interface
○ GDB connected OpenOCD GDB stub○ Telnet client
● Target Interface○ Debug probes via drivers or libraries
● Target Management○ Halt/Resume, Step, Break etc○ Memory and Register access○ Cache and MMU management○ Flash Programming○ JTAG/SWD configuration
GDB Server Telnet Server
Target Abstraction (target.h)
Target Specific code
JTAG Abstraction (jtag.h)
JTAG DriversWiggler, ZY1000,
FT2232 ...
Target Board
TCL Scripting Interface
OpenOCD Architecture
Flash Programming
![Page 7: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/7.jpg)
OpenOCD Architecture - Introduction (cont…)● TCL Scripting Interface
○ Describe new targets variant boards○ Describe new debug interfaces○ Perform scripted initialization○ Event based command operation○ Accessible via GDB monitor commands
GDB Server Telnet Server
Target Abstraction (target.h)
Target Specific code
JTAG Abstraction (jtag.h)
JTAG DriversWiggler, ZY1000,
FT2232 ...
Target Board
TCL Scripting Interface
OpenOCD Architecture
Flash Programming
![Page 8: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/8.jpg)
Linaro’s OpenOCD Efforts● Architecture Specific
○ Verify Arm v7-a support○ Verify Arm v8-a support○ Verify Arm v7-m support○ Compare Arm v7-a and Arm v8-a
● Board specific○ Verify Hikey 96 Board○ Verify Nitrogen 96 Board
● GDB Integration○ GDB testsuite using OpenOCD stub○ GDB testsuite results comparison
■ Arm v7-a vs Arm v8-a (AArch64 Mode)
■ Arm v7-a vs Arm v8-a (AArch32 Mode)
HiKey 96 BoardBeaglebone Black
Nitrogen 96 BoardRaspberry Pi 3
![Page 9: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/9.jpg)
Linaro’s OpenOCD Efforts (cont…)● Hardware Configurations
○ AArch64:■ Bus Blaster v4 + Hikey Board
○ AArch32■ Bus Blaster v4 + Raspberry Pi 3
○ Arm v7-A (Cortex A)■ Flyswatter2 + BeagleBone Black
○ CMSIS-DAP■ Nitrogen Board
FT2232
USB to JTAG
USB to UART
Bus Blaster V4 Flyswatter2
LIBUSBJTAGInterface
![Page 10: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/10.jpg)
● Upstream Contributions○ OpenOCD Generic
■ Fix load + run failure bug in GDB■ Make OpenOCD generate target xml with architecture defined data types
○ Arm v8-A■ Read/Write of AArch64 SIMD-Floating-point registers■ Read/Write of AArch32 SIMD-Floating-point registers
○ Arm v7-A■ Read/Write of VFP v3 Neon SIMD-Floating-point registers
Linaro’s OpenOCD Efforts (cont…)
D0
D1
D0
D1Q0
S0S1S2S3
V0
Armv7/AArch32 VFP S0-S31
Arm VFPv2D0-D15
Armv7/AArch32 VFPv3 or Adv SIMD
D0-D31
Armv7/AArch32Advanced SIMD
Q0-Q15
AArch64 SIMD or Floating-point
V0-V31
![Page 11: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/11.jpg)
Linaro’s OpenOCD Efforts (cont…)● In-Progress Contributions
○ OpenOCD Arm and AArch64 Semihosting■ Verify Arm semihosting support with NewLib plus OpenOCD■ Add support for AArch64 semihosting in OpenOCD■ Fix Bugs in Arm support
Semi Hosting I/O Interface
Target Hardware
ApplicationI/O
JTAG / SWD
Console I/O
File I/O
Debugger
OpenOCDHardware
DebugInterface
![Page 12: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/12.jpg)
Future Wish List ● Arm v8-M support● LLDB and OpenOCD● Improvements in OpenOCD GDB stub● Fix bugs and improve stability● Improve OpenOCD testing
![Page 13: OpenOCD support for AArch64 targetsaarch64.me/public/documents/cpu/arm/HKG18_403__OpenOCD...AArch64: Bus Blaster v4 + Hikey Board AArch32 Bus Blaster v4 + Raspberry Pi 3 Arm v7-A (Cortex](https://reader035.fdocuments.in/reader035/viewer/2022071512/61319a381ecc51586944d6ab/html5/thumbnails/13.jpg)
Thank You
#HKG18HKG18 keynotes and videos on: connect.linaro.orgFor further information: www.linaro.org