scripts: Add support for 'make debug' using Segger JLink on NXP boards
Adds a new debug support script using Segger JLink and configures all NXP boards so they can use it. Tested with Segger JLink GDB server V6.14b and OpenSDA v2.1 firmware. Change-Id: Ia1b297d9c93d21db61379e22f27ae54cda3ad461 Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
This commit is contained in:
parent
8986f33559
commit
c16ad344e9
6 changed files with 90 additions and 1 deletions
|
@ -4,4 +4,6 @@ DEBUG_SCRIPT = openocd.sh
|
|||
OPENOCD_LOAD_CMD = "flash write_image erase ${O}/${KERNEL_BIN_NAME} ${CONFIG_FLASH_BASE_ADDRESS}"
|
||||
OPENOCD_VERIFY_CMD = "verify_image ${O}/${KERNEL_BIN_NAME} ${CONFIG_FLASH_BASE_ADDRESS}"
|
||||
|
||||
export FLASH_SCRIPT OPENOCD_LOAD_CMD OPENOCD_VERIFY_CMD
|
||||
JLINK_DEVICE = MK64FN1M0xxx12
|
||||
|
||||
export FLASH_SCRIPT OPENOCD_LOAD_CMD OPENOCD_VERIFY_CMD JLINK_DEVICE
|
||||
|
|
5
boards/arm/frdm_kl25z/Makefile.board
Normal file
5
boards/arm/frdm_kl25z/Makefile.board
Normal file
|
@ -0,0 +1,5 @@
|
|||
DEBUG_SCRIPT = jlink.sh
|
||||
|
||||
JLINK_DEVICE = MKL25Z128xxx4
|
||||
|
||||
export JLINK_DEVICE
|
5
boards/arm/frdm_kw41z/Makefile.board
Normal file
5
boards/arm/frdm_kw41z/Makefile.board
Normal file
|
@ -0,0 +1,5 @@
|
|||
DEBUG_SCRIPT = jlink.sh
|
||||
|
||||
JLINK_DEVICE = MKW41Z512xxx4
|
||||
|
||||
export JLINK_DEVICE
|
5
boards/arm/hexiwear_k64/Makefile.board
Normal file
5
boards/arm/hexiwear_k64/Makefile.board
Normal file
|
@ -0,0 +1,5 @@
|
|||
DEBUG_SCRIPT = jlink.sh
|
||||
|
||||
JLINK_DEVICE = MK64FN1M0xxx12
|
||||
|
||||
export JLINK_DEVICE
|
5
boards/arm/hexiwear_kw40z/Makefile.board
Normal file
5
boards/arm/hexiwear_kw40z/Makefile.board
Normal file
|
@ -0,0 +1,5 @@
|
|||
DEBUG_SCRIPT = jlink.sh
|
||||
|
||||
JLINK_DEVICE = MKW40Z160xxx4
|
||||
|
||||
export JLINK_DEVICE
|
67
scripts/support/jlink.sh
Executable file
67
scripts/support/jlink.sh
Executable file
|
@ -0,0 +1,67 @@
|
|||
#!/bin/sh
|
||||
|
||||
# This script is loosly based on a script with same purpose provided
|
||||
# by RIOT-OS (https://github.com/RIOT-OS/RIOT)
|
||||
|
||||
JLINK_GDBSERVER=${JLINK_GDBSERVER:-JLinkGDBServer}
|
||||
JLINK_IF=${JLINK_IF:-swd}
|
||||
BIN_NAME=${O}/${KERNEL_BIN_NAME}
|
||||
ELF_NAME=${O}/${KERNEL_ELF_NAME}
|
||||
GDB_PORT=${GDB_PORT:-2331}
|
||||
|
||||
test_config() {
|
||||
if ! which ${JLINK_GDBSERVER} >/dev/null 2>&1; then
|
||||
echo "Error: Unable to locate JLink GDB server: ${JLINK_GDBSERVER}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_bin() {
|
||||
if [ ! -f "${BIN_NAME}" ]; then
|
||||
echo "Error: Unable to locate image binary: ${BIN_NAME}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
do_debug() {
|
||||
do_debugserver 1 &
|
||||
|
||||
# connect to the GDB server
|
||||
${GDB} ${TUI} ${ELF_NAME} \
|
||||
-ex "target remote :${GDB_PORT}" \
|
||||
-ex 'monitor halt' \
|
||||
-ex 'load' \
|
||||
-ex 'monitor reset'
|
||||
}
|
||||
|
||||
do_debugserver() {
|
||||
test_config
|
||||
|
||||
# Calling with an arg will result in setsid being used, which will prevent
|
||||
# Ctrl-C in GDB from killing the server. The server automatically exits
|
||||
# when the remote GDB disconnects.
|
||||
if [ -n "$1" ]; then
|
||||
SETSID=/usr/bin/setsid
|
||||
else
|
||||
SETSID=
|
||||
fi
|
||||
|
||||
echo "JLink GDB server running on port ${GDB_PORT}"
|
||||
${SETSID} ${JLINK_GDBSERVER} \
|
||||
-port ${GDB_PORT} \
|
||||
-if ${JLINK_IF} \
|
||||
-device ${JLINK_DEVICE} \
|
||||
-singlerun
|
||||
}
|
||||
|
||||
CMD="$1"
|
||||
shift
|
||||
|
||||
case "${CMD}" in
|
||||
debugserver)
|
||||
do_debugserver "$@"
|
||||
;;
|
||||
debug)
|
||||
do_debug "$@"
|
||||
;;
|
||||
esac
|
Loading…
Add table
Add a link
Reference in a new issue