Skip to content

Commit 7a52e0b

Browse files
authored
Merge pull request #2403 from Treboada/feat-detect-connected-programmer
Detect connected programmer to download and debug firmware
2 parents 2806850 + 5c30672 commit 7a52e0b

File tree

4 files changed

+53
-2
lines changed

4 files changed

+53
-2
lines changed

hw/bsp/pinetime/pinetime_debug.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,12 @@
3030
. $CORE_PATH/hw/scripts/openocd.sh
3131

3232
FILE_NAME=$BIN_BASENAME.elf
33-
CFG="-f interface/stlink.cfg -f target/nrf52.cfg"
33+
34+
# autodetect or default stlink
35+
openocd_detect_interface stlink
36+
37+
CFG="-f interface/${OPENOCD_INTERFACE}.cfg -f target/nrf52.cfg"
38+
3439
EXTRA_GDB_CMDS='monitor arm semihosting enable'
3540
# Exit openocd when gdb detaches.
3641
EXTRA_JTAG_CMD="$EXTRA_JTAG_CMD; nrf52.cpu configure -event gdb-detach {if {[nrf52.cpu curstate] eq \"halted\"} resume;shutdown}"

hw/bsp/pinetime/pinetime_download.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@
3131

3232
. $CORE_PATH/hw/scripts/openocd.sh
3333

34-
CFG="-f interface/stlink.cfg -f target/nrf52.cfg"
34+
# autodetect or default stlink
35+
openocd_detect_interface stlink
36+
37+
CFG="-f interface/${OPENOCD_INTERFACE}.cfg -f target/nrf52.cfg"
3538

3639
if [ "$MFG_IMAGE" ]; then
3740
FLASH_OFFSET=0

hw/scripts/common.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,31 @@ parse_extra_jtag_cmd() {
7676
echo $NEW_EXTRA_JTAG_CMD
7777
EXTRA_JTAG_CMD=$NEW_EXTRA_JTAG_CMD
7878
}
79+
80+
# Try to detect connected programmers
81+
detect_programmer() {
82+
83+
DETECTED_PROGRAMMER='none'
84+
85+
# check if lsusb command is available
86+
if [ $(which lsusb) ] ; then
87+
88+
# extract the VID:PID list for connected USB devices
89+
USB_DEV=$(lsusb | cut -f6 -d' ')
90+
91+
echo "$USB_DEV" | grep -q -i 'c251:f001'
92+
[ $? -eq 0 ] && DETECTED_PROGRAMMER='cmsis-dap'
93+
94+
echo "$USB_DEV" | grep -q -i '0483:3748'
95+
[ $? -eq 0 ] && DETECTED_PROGRAMMER='stlink-v2'
96+
97+
echo "$USB_DEV" | grep -q -i '0483:374b'
98+
[ $? -eq 0 ] && DETECTED_PROGRAMMER='stlink-v2-1'
99+
100+
echo "$USB_DEV" | grep -q -i '1366:1015'
101+
[ $? -eq 0 ] && DETECTED_PROGRAMMER='jlink'
102+
103+
fi
104+
105+
echo "Detected programmer: $DETECTED_PROGRAMMER"
106+
}

hw/scripts/openocd.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,18 @@ openocd_reset_run () {
149149
openocd $CFG -c init -c "reset run" -c shutdown
150150
return $?
151151
}
152+
153+
openocd_detect_interface () {
154+
detect_programmer
155+
case $DETECTED_PROGRAMMER in
156+
cmsis-dap)
157+
OPENOCD_INTERFACE='cmsis-dap'
158+
;;
159+
stlink-v2-1)
160+
OPENOCD_INTERFACE='stlink-v2-1'
161+
;;
162+
*) # default is passed by argument or 'stlink'
163+
OPENOCD_INTERFACE=${1:=stlink}
164+
;;
165+
esac
166+
}

0 commit comments

Comments
 (0)