Running GDB testsuite with OpenOCD GDB stub
PREREQUISITES:
Download and setup bare-metal gcc:
export PATH=/home/omair/work/tools/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-elf/bin:$PATH
STEP 1: Checkout sources, configure and build OpenOCD
git clone --depth 1 git://git.code.sf.net/p/openocd/code openocd-src cd openocd-src/ ./bootstrap ./configure make -j8
STEP 2: Checkout sources, configure and build GDB
git clone --depth 1 git://sourceware.org/git/binutils-gdb.git
For arm-none-eabi:
mkdir gdb-build/arm-none-eabi cd gdb-build/arm-none-eabi ../../binutils-gdb/configure --target=arm-none-eabi --with-expat --disable-nls --disable-sim --disable-install-libbfd make -j8 all-gdb
For aarch64-none-elf:
mkdir gdb-build/aarch64-none-elf cd gdb-build/aarch64-none-elf ../../binutils-gdb/configure --target=aarch64-none-elf --with-expat --disable-nls --disable-sim --disable-install-libbfd make -j8 all-gdb
STEP 3: Checkout sources, configure and build NewLib
git clone --depth 1 git://sourceware.org/git/newlib-cygwin.git
For arm-none-eabi:
mkdir -p build/aarch64-elf ../../newlib-cygwin/configure --target=aarch64-elf --prefix=$(pwd)/../../install
For aarch64-none-elf:
mkdir -p build/aarch64-elf ../../newlib-cygwin/configure --target=aarch64-elf --prefix=$(pwd)/../../install
make -j8 make install
STEP 4: BASH Script to fake GDB Connection
Create a file openocd.sh and write following lines in it.
#!/bin/bash sleep 5 echo "Listening on :3333"
Make it executable:
chmod +x openocd.sh
Your gdb board file specifies this script as gdb stub executable. This will fake a connection to gdb stub while we ll actually connection to openocd spawned above.
STEP 5: Download OpenOCD board configuration files and start openOCD
In case your board files are not already available in OpenOCD board files or you want to make some changes to the available board files. Create a folder in your working directory and copy your OpenOCD board configuration files in that folder.
Custom OpenOCD Board Configurations:
Spawn OpenOCD with Beagle Bone Black via FlysWatter2 JTAG:
cd openocd-src ./src/openocd -s tcl/ -f interface/ftdi/flyswatter2.cfg -f board/ti_beaglebone_black.cfg -c init -c "reset init"
Spawn OpenOCD with Leemaker Hikey Board via BusBlaster v4 JTAG:
cd openocd-src ./src/openocd -s tcl/ -f interface/ftdi/dp_busblaster.cfg -f board/lemaker_hikey.cfg
STEP 6: Setup GDB Testsuite and Start Testing
mkdir -p gdb_board_files/boards cd gdb_board_files touch site.exp cd boards
Copy board files for Hikey Board and Beagle Bone Black to this directory
export DEJAGNU=$(pwd)/gdb_board_files/site.exp
GDB Board files
Run GDB Testsuite on Hikey Board with following command:
make check RUNTESTFLAGS="--target_board=openocd-hikey"
Run GDB Testsuite on Beagle Bone Black with following command:
make check RUNTESTFLAGS="--target_board=openocd-bbb"