From e7dfb375be51e32ed7b867d58276d73544c60e12 Mon Sep 17 00:00:00 2001 From: Daniel Agar <daniel@agar.ca> Date: Wed, 27 Feb 2019 18:42:54 -0500 Subject: [PATCH] create jlink gdb upload script and use in Jenkins Hardware pipeline --- .ci/Jenkinsfile-hardware | 106 ++-------------------- platforms/nuttx/CMakeLists.txt | 23 ++--- platforms/nuttx/Debug/gdbinit.in | 5 + platforms/nuttx/Debug/jlink.sh | 3 - platforms/nuttx/Debug/jlink_gdb_start.sh | 7 ++ platforms/nuttx/Debug/jlink_gdb_upload.sh | 12 +++ 6 files changed, 40 insertions(+), 116 deletions(-) delete mode 100755 platforms/nuttx/Debug/jlink.sh create mode 100755 platforms/nuttx/Debug/jlink_gdb_start.sh create mode 100755 platforms/nuttx/Debug/jlink_gdb_upload.sh diff --git a/.ci/Jenkinsfile-hardware b/.ci/Jenkinsfile-hardware index 069d304751..d5791cdd5c 100644 --- a/.ci/Jenkinsfile-hardware +++ b/.ci/Jenkinsfile-hardware @@ -169,17 +169,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v2_test' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v2_test/px4_fmu-v2_test.elf - ''' + sh 'platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v2_test/px4_fmu-v2_test.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' //sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { @@ -203,51 +193,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v3_default' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v3_default/px4_fmu-v3_default.elf - ''' - sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' - sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' - } catch (Exception err) { - // always report passed for now - currentBuild.result = 'SUCCESS' - } - } // script - } - options { - timeout(time: 600, unit: 'SECONDS') - } - } - - stage('px4_fmu-v3_default (pixhack-v3)') { - agent { - label 'pixhack-v3' - } - steps { - script { - try { - sh 'export' - sh 'find /dev/serial' - unstash 'px4_fmu-v3_default' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v3_default/px4_fmu-v3_default.elf - ''' + sh 'platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v3_default/px4_fmu-v3_default.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { @@ -271,17 +217,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v4_default' - sh ''' gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v4_default/px4_fmu-v4_default.elf - ''' + sh 'platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v4_default/px4_fmu-v4_default.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { @@ -305,17 +241,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v4pro_default' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v4pro_default/px4_fmu-v4pro_default.elf - ''' + sh 'platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v4pro_default/px4_fmu-v4pro_default.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { @@ -339,17 +265,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v5_default' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v5_default/px4_fmu-v5_default.elf - ''' + sh './platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v5_default/px4_fmu-v5_default.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { @@ -373,17 +289,7 @@ pipeline { sh 'export' sh 'find /dev/serial' unstash 'px4_fmu-v5_stackcheck' - sh '''gdb-multiarch -nx --batch \ - -ex "target remote localhost:2331" \ - -ex "monitor reset 0" \ - -ex "load" \ - -ex "compare-sections" \ - -ex "monitor reset 0" \ - -ex "monitor sleep 1000" \ - -ex "monitor go" \ - -ex "kill" \ - build/px4_fmu-v5_stackcheck/px4_fmu-v5_stackcheck.elf - ''' + sh './platforms/nuttx/Debug/jlink_gdb_upload.sh build/px4_fmu-v5_stackcheck/px4_fmu-v5_stackcheck.elf' sh './Tools/HIL/monitor_firmware_upload.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*` --baudrate 57600' sh './Tools/HIL/run_tests.py --device `find /dev/serial -name *usb-FTDI_TTL232R-3V3_*`' } catch (Exception err) { diff --git a/platforms/nuttx/CMakeLists.txt b/platforms/nuttx/CMakeLists.txt index f5f250cba1..4c7da5583a 100644 --- a/platforms/nuttx/CMakeLists.txt +++ b/platforms/nuttx/CMakeLists.txt @@ -349,27 +349,24 @@ if(black_magic_probe_path) endif() add_custom_target(jlink_upload - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Debug/jlink.sh - COMMAND ${GDB} --nx --batch - -iex 'set auto-load safe-path ${PX4_BINARY_DIR}' - -ex 'target remote localhost:2331' - -ex 'monitor reset' - -ex 'load' - -ex 'kill' - $<TARGET_FILE:px4> - DEPENDS px4 ${PX4_BINARY_DIR}/.gdbinit + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Debug/jlink_gdb_start.sh + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Debug/jlink_gdb_upload.sh $<TARGET_FILE:px4> + DEPENDS px4 WORKING_DIRECTORY ${PX4_BINARY_DIR} USES_TERMINAL ) add_custom_target(jlink_debug - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Debug/jlink.sh - COMMAND ${GDB} --nh + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/Debug/jlink_gdb_start.sh + COMMAND ${GDB} -nh -iex 'set auto-load safe-path ${PX4_BINARY_DIR}' -ex 'target remote localhost:2331' - -ex 'monitor reset' + -ex 'monitor reset 0' -ex 'load' - -ex 'monitor reset' + -ex 'compare-sections' + -ex 'monitor reset 0' + -ex 'monitor sleep 1000' + -ex 'monitor go' -ex 'continue' $<TARGET_FILE:px4> DEPENDS px4 ${PX4_BINARY_DIR}/.gdbinit diff --git a/platforms/nuttx/Debug/gdbinit.in b/platforms/nuttx/Debug/gdbinit.in index 3996e71fd5..fbc62d331e 100644 --- a/platforms/nuttx/Debug/gdbinit.in +++ b/platforms/nuttx/Debug/gdbinit.in @@ -1,6 +1,11 @@ source ${PX4_SOURCE_DIR}/platforms/nuttx/Debug/PX4 +help px4 + source ${PX4_SOURCE_DIR}/platforms/nuttx/Debug/NuttX +help nuttx + source ${PX4_SOURCE_DIR}/platforms/nuttx/Debug/ARMv7M +help armv7m set mem inaccessible-by-default off diff --git a/platforms/nuttx/Debug/jlink.sh b/platforms/nuttx/Debug/jlink.sh deleted file mode 100755 index 3d4873aff9..0000000000 --- a/platforms/nuttx/Debug/jlink.sh +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -JLinkGDBServerCLExe -startserver -USB -device Cortex-M4 -if SWD -speed auto > jlink.log & diff --git a/platforms/nuttx/Debug/jlink_gdb_start.sh b/platforms/nuttx/Debug/jlink_gdb_start.sh new file mode 100755 index 0000000000..1aeba4cb8b --- /dev/null +++ b/platforms/nuttx/Debug/jlink_gdb_start.sh @@ -0,0 +1,7 @@ +#! /bin/sh + +killall JLinkGDBServerCLExe + +# TODO: set device from nuttx config +# eg CONFIG_ARCH_CHIP_STM32F427V or CONFIG_STM32_STM32F427 +JLinkGDBServerCLExe -device STM32F427II -select usb -silent -endian little -if SWD -speed auto -ir -LocalhostOnly 1 -strict -vd -singlerun & diff --git a/platforms/nuttx/Debug/jlink_gdb_upload.sh b/platforms/nuttx/Debug/jlink_gdb_upload.sh new file mode 100755 index 0000000000..fe52a00bb8 --- /dev/null +++ b/platforms/nuttx/Debug/jlink_gdb_upload.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +gdb-multiarch -nx -batch \ + -ex "target remote localhost:2331" \ + -ex "monitor reset 0" \ + -ex "load" \ + -ex "compare-sections" \ + -ex "monitor reset 0" \ + -ex "monitor sleep 1000" \ + -ex "monitor go" \ + -ex "kill" \ + ${1} -- GitLab