From 59c6c15c1db846ff593432b8ba2b1bf368a6329b Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Sat, 9 Mar 2019 17:51:33 +0100 Subject: [PATCH] Add container for openocd and gdb --- docker/raspi3-gdb/Dockerfile | 48 +++++++++++++++++++++++++ docker/raspi3-gdb/auto | 1 + docker/raspi3-openocd/Dockerfile | 60 ++++++++++++++++++++++++++++++++ docker/raspi3-openocd/rpi3.cfg | 48 +++++++++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 docker/raspi3-gdb/Dockerfile create mode 100644 docker/raspi3-gdb/auto create mode 100644 docker/raspi3-openocd/Dockerfile create mode 100644 docker/raspi3-openocd/rpi3.cfg diff --git a/docker/raspi3-gdb/Dockerfile b/docker/raspi3-gdb/Dockerfile new file mode 100644 index 00000000..f66681d9 --- /dev/null +++ b/docker/raspi3-gdb/Dockerfile @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# +# ============================================================================= +# +# MIT License +# +# Copyright (c) 2019 Andre Richter +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# ============================================================================= +FROM ubuntu:18.04 + +LABEL maintainer="The Cortex-A team , Andre Richter " + +RUN set -ex; \ + tempPkgs=' \ + ca-certificates \ + wget \ + '; \ + apt-get update; \ + apt-get install -q -y --no-install-recommends \ + $tempPkgs \ + gdb-multiarch \ + ; \ + wget -P ~ git.io/.gdbinit; \ + apt-get purge -y --auto-remove $tempPkgs; \ + apt-get autoremove -q -y; \ + apt-get clean -q -y; \ + rm -rf /var/lib/apt/lists/* + +COPY auto /root/.gdbinit.d/auto diff --git a/docker/raspi3-gdb/auto b/docker/raspi3-gdb/auto new file mode 100644 index 00000000..39ec7e85 --- /dev/null +++ b/docker/raspi3-gdb/auto @@ -0,0 +1 @@ +dashboard -layout assembly expressions history memory registers source stack \ No newline at end of file diff --git a/docker/raspi3-openocd/Dockerfile b/docker/raspi3-openocd/Dockerfile new file mode 100644 index 00000000..16dbe1f1 --- /dev/null +++ b/docker/raspi3-openocd/Dockerfile @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# +# ============================================================================= +# +# MIT License +# +# Copyright (c) 2019 Andre Richter +# Copyright (c) 2019 Nao Taco +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# ============================================================================= +FROM ubuntu:18.04 + +LABEL maintainer="The Cortex-A team , Andre Richter " + +RUN set -ex; \ + tempPkgs=' \ + automake \ + build-essential \ + ca-certificates \ + git \ + libtool \ + pkg-config \ + '; \ + apt-get update; \ + apt-get install -q -y --no-install-recommends \ + $tempPkgs \ + libusb-1.0.0-dev \ + ; \ + git clone --depth 1 https://git.code.sf.net/p/openocd/code openocd; \ + cd openocd; \ + ./bootstrap; \ + ./configure --enable-ftdi; \ + make; \ + make install; \ + apt-get purge -y --auto-remove $tempPkgs; \ + apt-get autoremove -q -y; \ + apt-get clean -q -y; \ + rm -rf /var/lib/apt/lists/* + +COPY rpi3.cfg /openocd/ + +ENTRYPOINT ["openocd", "-f", "/openocd/tcl/interface/ftdi/olimex-arm-usb-tiny-h.cfg", "-f", "/openocd/rpi3.cfg"] diff --git a/docker/raspi3-openocd/rpi3.cfg b/docker/raspi3-openocd/rpi3.cfg new file mode 100644 index 00000000..e8976e92 --- /dev/null +++ b/docker/raspi3-openocd/rpi3.cfg @@ -0,0 +1,48 @@ +# Script from +# https://www.suse.com/c/debugging-raspberry-pi-3-with-jtag/ + +transport select jtag + +# we need to enable srst even though we don't connect it +reset_config trst_and_srst + +adapter_khz 1000 +jtag_ntrst_delay 500 + +if { [info exists CHIPNAME] } { + set _CHIPNAME $CHIPNAME +} else { + set _CHIPNAME rpi3 +} + +# +# Main DAP +# +if { [info exists DAP_TAPID] } { + set _DAP_TAPID $DAP_TAPID +} else { + set _DAP_TAPID 0x4ba00477 +} + +jtag newtap $_CHIPNAME tap -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -enable +dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.tap + +set _TARGETNAME $_CHIPNAME.core +set _CTINAME $_CHIPNAME.cti + +set DBGBASE {0x80010000 0x80012000 0x80014000 0x80016000} +set CTIBASE {0x80018000 0x80019000 0x8001a000 0x8001b000} +set _cores 4 + +for { set _core 0 } { $_core < $_cores } { incr _core } { + + cti create $_CTINAME.$_core -dap $_CHIPNAME.dap -ap-num 0 \ + -ctibase [lindex $CTIBASE $_core] + + target create $_TARGETNAME$_core aarch64 \ + -dap $_CHIPNAME.dap -coreid $_core \ + -dbgbase [lindex $DBGBASE $_core] -cti $_CTINAME.$_core + + $_TARGETNAME$_core configure -event reset-assert-post "aarch64 dbginit" + $_TARGETNAME$_core configure -event gdb-attach { halt } +}