├── .github └── workflows │ └── docker.yml ├── .gitignore ├── 0001-Extend-bank1-and-enable-bank2-of-STM32H7B0VBTx.patch ├── build.sh ├── openocd-git ├── Makefile ├── debian │ ├── changelog │ ├── compat │ ├── control │ └── rules ├── features.sh ├── features_mac.sh └── udev │ ├── 48-jlink.rules │ ├── 49-stlinkv2-1.rules │ ├── 49-stlinkv2.rules │ └── 49-stlinkv3.rules └── readme.md /.github/workflows/docker.yml: -------------------------------------------------------------------------------- 1 | name: Builder 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | schedule: 8 | - cron: "0 2 * * *" 9 | 10 | 11 | jobs: 12 | docker: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Build 17 | run: | 18 | echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com 19 | docker pull 'docker.pkg.github.com/kbeckmann/ubuntubuilder/ubuntubuilder' 20 | docker tag docker.pkg.github.com/kbeckmann/ubuntubuilder/ubuntubuilder:latest ubuntubuilder 21 | docker run --rm -v $(pwd):/build -w /build ubuntubuilder sudo ./build.sh 22 | env: 23 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 24 | - name: Archive artifact 25 | uses: actions/upload-artifact@v3 26 | with: 27 | name: openocd-git.deb 28 | path: openocd-git*.deb 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | openocd-git/openocd 2 | openocd-git/game-and-watch-backup 3 | openocd-git/debian/openocd-git* 4 | openocd-git/debian/files 5 | openocd-git/debian/.debhelper 6 | openocd-git_*.buildinfo 7 | openocd-git_*.changes 8 | openocd-git_*.deb 9 | openocd-git_*.dsc 10 | openocd-git_*.tar.gz 11 | openocd-git-*.ddeb 12 | 13 | -------------------------------------------------------------------------------- /0001-Extend-bank1-and-enable-bank2-of-STM32H7B0VBTx.patch: -------------------------------------------------------------------------------- 1 | From cf67cdf51d779d70171d5fa0288bfce91338570d Mon Sep 17 00:00:00 2001 2 | From: Konrad Beckmann 3 | Date: Fri, 6 Aug 2021 11:04:51 +0200 4 | Subject: [PATCH] Extend bank1 and enable bank2 of STM32H7B0VBTx 5 | 6 | --- 7 | src/flash/nor/stm32h7x.c | 10 ++++++++-- 8 | 1 file changed, 8 insertions(+), 2 deletions(-) 9 | 10 | diff --git a/src/flash/nor/stm32h7x.c b/src/flash/nor/stm32h7x.c 11 | index 5c71d31f0..f731a0ab1 100644 12 | --- a/src/flash/nor/stm32h7x.c 13 | +++ b/src/flash/nor/stm32h7x.c 14 | @@ -830,6 +830,12 @@ static int stm32x_probe(struct flash_bank *bank) 15 | return ERROR_FAIL; 16 | } 17 | 18 | + if (stm32x_info->idcode == 0x10016480) { 19 | + // Special case for STM32H7B0VBTx 20 | + has_dual_bank = true; 21 | + flash_size_in_kb = 256; 22 | + } 23 | + 24 | if (has_dual_bank) { 25 | LOG_INFO("STM32H7 flash has dual banks"); 26 | if (bank->base != bank1_base && bank->base != bank2_base) { 27 | @@ -841,8 +847,8 @@ static int stm32x_probe(struct flash_bank *bank) 28 | } else { 29 | LOG_INFO("STM32H7 flash has a single bank"); 30 | if (bank->base == bank2_base) { 31 | - LOG_ERROR("this device has a single bank only"); 32 | - return ERROR_FAIL; 33 | + LOG_WARNING("the second bank of this device is undocumented"); 34 | + has_dual_bank = true; 35 | } else if (bank->base != bank1_base) { 36 | LOG_ERROR("STM32H7 flash bank base address config is incorrect. " 37 | TARGET_ADDR_FMT " but should be 0x%" PRIx32, 38 | -- 39 | 2.32.0 40 | 41 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -xe 4 | 5 | sudo apt-get update -y 6 | sudo apt-get upgrade -y 7 | sudo apt-get install -y \ 8 | build-essential debhelper devscripts equivs \ 9 | debhelper git texinfo pkg-config \ 10 | libusb-dev libusb-1.0-0-dev libusb-dev libhidapi-dev libftdi-dev libftdi1-dev \ 11 | libusb-0.1-4 libusb-1.0-0 libftdi1 libftdi1-2 libhidapi-hidraw0 12 | 13 | cd openocd-git 14 | 15 | # This checks out the repository so we can export the git hash of the HEAD commit 16 | make openocd 17 | cd openocd 18 | VERSION=$(git describe --tags --long | cut -d"v" -f2) 19 | cd .. 20 | 21 | rm -f debian/changelog 22 | 23 | export DEBFULLNAME="Docker Build Bot" 24 | export DEBEMAIL="docker@localhost" 25 | 26 | dch --create --distribution unstable --package "openocd-git" \ 27 | --newversion $VERSION "openocd-git" 28 | 29 | dpkg-buildpackage --no-sign -j$(nproc) 30 | 31 | -------------------------------------------------------------------------------- /openocd-git/Makefile: -------------------------------------------------------------------------------- 1 | PREFIX=/opt/openocd-git 2 | 3 | all: | openocd 4 | cd openocd; ./bootstrap 5 | cd openocd; CCACHE=none ./configure --prefix=$(PREFIX) --enable-maintainer-mode --disable-werror --enable-internal-libjaylink $(shell bash ./features.sh) 6 | $(MAKE) -C openocd 7 | 8 | mac: | openocd 9 | cd openocd; ./bootstrap 10 | cd openocd; CCACHE=none ./configure --prefix=$(PREFIX) --enable-maintainer-mode --disable-werror --enable-internal-libjaylink --disable-parport --disable-parport-ppdev --disable-doxygen-html $(shell bash ./features_mac.sh) 11 | $(MAKE) -C openocd 12 | 13 | openocd: 14 | git clone --recurse-submodules https://repo.or.cz/openocd.git openocd 15 | cd openocd; patch -p1 < ../../0001-Extend-bank1-and-enable-bank2-of-STM32H7B0VBTx.patch 16 | 17 | install: 18 | $(MAKE) -C openocd install 19 | # udev rules 20 | install -D -m 0644 -t $(DESTDIR)/lib/udev/rules.d udev/* 21 | 22 | clean: 23 | rm -rf openocd 24 | 25 | -------------------------------------------------------------------------------- /openocd-git/debian/changelog: -------------------------------------------------------------------------------- 1 | openocd-git (0.10.0-1514-ga8edbd020) unstable; urgency=medium 2 | 3 | * openocd-git 4 | 5 | -- Docker Build Bot Tue, 01 Dec 2020 23:09:04 +0000 6 | -------------------------------------------------------------------------------- /openocd-git/debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /openocd-git/debian/control: -------------------------------------------------------------------------------- 1 | Source: openocd-git 2 | Section: main 3 | Priority: extra 4 | Maintainer: Docker Build Bot 5 | Build-Depends: debhelper, git, texinfo, pkg-config, libusb-dev, libusb-1.0-0-dev, libusb-dev, libhidapi-dev, libftdi-dev, libftdi1-dev 6 | 7 | Package: openocd-git 8 | Architecture: any 9 | Depends: libusb-0.1-4, libusb-1.0-0, libftdi1, libftdi1-2, libhidapi-hidraw0 10 | Description: OpenOCD GIT 11 | OpenOCD GIT 12 | 13 | -------------------------------------------------------------------------------- /openocd-git/debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | %: 4 | dh $@ --parallel 5 | -------------------------------------------------------------------------------- /openocd-git/features.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Taken from openocd-git from AUR 4 | 5 | _features=( 6 | aice 7 | amtjtagaccel 8 | armjtagew 9 | at91rm9200 10 | bcm2835gpio 11 | buspirate 12 | cmsis-dap 13 | dummy 14 | ep93xx 15 | ftdi 16 | gw16012 17 | ioutil 18 | jlink 19 | jtag_vpi 20 | legacy-ft2232_libftdi 21 | oocd_trace 22 | opendous 23 | openjtag_ftdi 24 | osbdm 25 | parport 26 | presto_libftdi 27 | remote-bitbang 28 | rlink 29 | stlink 30 | sysfsgpio 31 | ti-icdi 32 | ulink 33 | usb-blaster-2 34 | usb_blaster_libftdi 35 | usbprog 36 | vsllink 37 | xlnx_pcie_xvc 38 | ) 39 | 40 | echo ${_features[@]/#/--enable-} 41 | -------------------------------------------------------------------------------- /openocd-git/features_mac.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Taken from openocd-git from AUR 4 | 5 | _features=( 6 | aice 7 | armjtagew 8 | buspirate 9 | cmsis-dap 10 | dummy 11 | ftdi 12 | ioutil 13 | jlink 14 | jtag_vpi 15 | legacy-ft2232_libftdi 16 | oocd_trace 17 | opendous 18 | openjtag_ftdi 19 | osbdm 20 | presto_libftdi 21 | remote-bitbang 22 | rlink 23 | stlink 24 | ti-icdi 25 | ulink 26 | usb-blaster-2 27 | usb_blaster_libftdi 28 | usbprog 29 | vsllink 30 | ) 31 | 32 | echo ${_features[@]/#/--enable-} 33 | -------------------------------------------------------------------------------- /openocd-git/udev/48-jlink.rules: -------------------------------------------------------------------------------- 1 | # 2 | # This file is going to be stored at /etc/udev/rules.d on installation of the J-Link package 3 | # It makes sure that non-superuser have access to the connected J-Links, so JLinkExe etc. can be executed as non-superuser and can work with J-Link 4 | # 5 | # 6 | # Matches are AND combined, meaning: a==b,c==d,do stuff 7 | # results in: if (a == b) && (c == d) -> do stuff 8 | # 9 | ACTION!="add", SUBSYSTEM!="usb", GOTO="jlink_usb_rules_end" 10 | # 11 | # Give all users read and write access. 12 | # Note: NOT all combinations are supported by J-Link right now. Some are reserved for future use, but already added here 13 | # 14 | # ATTR{filename} 15 | # Match sysfs attribute values of the event device. Trailing 16 | # whitespace in the attribute values is ignored unless the specified 17 | # match value itself contains trailing whitespace. 18 | # 19 | # ATTRS{filename} 20 | # Search the devpath upwards for a device with matching sysfs 21 | # attribute values. If multiple ATTRS matches are specified, all of 22 | # them must match on the same device. Trailing whitespace in the 23 | # attribute values is ignored unless the specified match value itself 24 | # contains trailing whitespace. 25 | # 26 | # How to find out about udev attributes of device: 27 | # Connect J-Link to PC 28 | # Terminal: cat /var/log/syslog 29 | # Find path to where J-Link device has been "mounted" 30 | # sudo udevadm info --query=all --attribute-walk --path= 31 | # sudo udevadm info --attribute-walk /dev/bus/usb// (extract and from "lsusb") 32 | # Reload udev rules after rules file change: 33 | # sudo udevadm control --reload-rules 34 | # sudo udevadm trigger 35 | # 36 | # [old format] 37 | # 0x0101 - J-Link (default) | Flasher STM8 | Flasher ARM | Flasher 5 PRO 38 | # 0x0102 - J-Link USBAddr = 1 (obsolete) 39 | # 0x0103 - J-Link USBAddr = 2 (obsolete) 40 | # 0x0104 - J-Link USBAddr = 3 (obsolete) 41 | # 0x0105 - CDC + J-Link 42 | # 0x0106 - CDC 43 | # 0x0107 - RNDIS + J-Link 44 | # 0x0108 - J-Link + MSD 45 | # 46 | ATTR{idProduct}=="0101", ATTR{idVendor}=="1366", MODE="666" 47 | ATTR{idProduct}=="0102", ATTR{idVendor}=="1366", MODE="666" 48 | ATTR{idProduct}=="0103", ATTR{idVendor}=="1366", MODE="666" 49 | ATTR{idProduct}=="0104", ATTR{idVendor}=="1366", MODE="666" 50 | ATTR{idProduct}=="0105", ATTR{idVendor}=="1366", MODE="666" 51 | ATTR{idProduct}=="0107", ATTR{idVendor}=="1366", MODE="666" 52 | ATTR{idProduct}=="0108", ATTR{idVendor}=="1366", MODE="666" 53 | # 54 | # Make sure that J-Links are not captured by modem manager service 55 | # as this service would try detect J-Link as a modem and send AT commands via the VCOM component which might not be liked by the target... 56 | # 57 | ATTR{idProduct}=="0101", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 58 | ATTR{idProduct}=="0102", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 59 | ATTR{idProduct}=="0103", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 60 | ATTR{idProduct}=="0104", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 61 | ATTR{idProduct}=="0105", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 62 | ATTR{idProduct}=="0107", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 63 | ATTR{idProduct}=="0108", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 64 | # 65 | # J-Link Product-Id assignment: 66 | # 0x1000 + 67 | # Bit 0: MSD 68 | # Bit 1: RNDIS 69 | # Bit 2: CDC 70 | # Bit 3: HID 71 | # Bit 4: J-Link (BULK via SEGGER host driver) 72 | # Bit 5: J-Link (BULK via WinUSB driver. Needs to be enabled in J-Link config area) 73 | # 74 | # [new format] 75 | # 0x1001: MSD 76 | # 0x1002: RNDIS 77 | # 0x1003: RNDIS + MSD 78 | # 0x1004: CDC 79 | # 0x1005: CDC + MSD 80 | # 0x1006: RNDIS + CDC 81 | # 0x1007: RNDIS + CDC + MSD 82 | # 0x1008: HID 83 | # 0x1009: MSD + HID 84 | # 0x100a: RNDIS + HID 85 | # 0x100b: RNDIS + MSD + HID 86 | # 0x100c: CDC + HID 87 | # 0x100d: CDC + MSD + HID 88 | # 0x100e: RNDIS + CDC + HID 89 | # 0x100f: RNDIS + CDC + MSD + HID 90 | # 0x1010: J_LINK_SEGGER_DRV 91 | # 0x1011: J_LINK_SEGGER_DRV + MSD 92 | # 0x1012: J_LINK_SEGGER_DRV + RNDIS 93 | # 0x1013: J_LINK_SEGGER_DRV + RNDIS + MSD 94 | # 0x1014: J_LINK_SEGGER_DRV + CDC 95 | # 0x1015: J_LINK_SEGGER_DRV + CDC + MSD 96 | # 0x1016: J_LINK_SEGGER_DRV + CDC + RNDIS 97 | # 0x1017: J_LINK_SEGGER_DRV + CDC + RNDIS + MSD 98 | # 0x1018: J_LINK_SEGGER_DRV + HID 99 | # 0x1019: J_LINK_SEGGER_DRV + HID + MSD 100 | # 0x101a: J_LINK_SEGGER_DRV + HID + RNDIS 101 | # 0x101b: J_LINK_SEGGER_DRV + HID + RNDIS + MSD 102 | # 0x101c: J_LINK_SEGGER_DRV + HID + CDC 103 | # 0x101d: J_LINK_SEGGER_DRV + HID + CDC + MSD 104 | # 0x101e: J_LINK_SEGGER_DRV + HID + CDC + RNDIS 105 | # 0x101f: J_LINK_SEGGER_DRV + HID + CDC + RNDIS + MSD 106 | # 0x1020: J_LINK_WINUSB_DRV 107 | # 0x1021: J_LINK_WINUSB_DRV + MSD 108 | # 0x1022: J_LINK_WINUSB_DRV + RNDIS 109 | # 0x1023: J_LINK_WINUSB_DRV + RNDIS + MSD 110 | # 0x1024: J_LINK_WINUSB_DRV + CDC 111 | # 0x1025: J_LINK_WINUSB_DRV + CDC + MSD 112 | # 0x1026: J_LINK_WINUSB_DRV + CDC + RNDIS 113 | # 0x1027: J_LINK_WINUSB_DRV + CDC + RNDIS + MSD 114 | # 0x1028: J_LINK_WINUSB_DRV + HID 115 | # 0x1029: J_LINK_WINUSB_DRV + HID + MSD 116 | # 0x102a: J_LINK_WINUSB_DRV + HID + RNDIS 117 | # 0x102b: J_LINK_WINUSB_DRV + HID + RNDIS + MSD 118 | # 0x102c: J_LINK_WINUSB_DRV + HID + CDC 119 | # 0x102d: J_LINK_WINUSB_DRV + HID + CDC + MSD 120 | # 0x102e: J_LINK_WINUSB_DRV + HID + CDC + RNDIS 121 | # 0x102f: J_LINK_WINUSB_DRV + HID + CDC + RNDIS + MSD 122 | # 0x103x: J_LINK_SEGGER_DRV + J_LINK_WINUSB_DRV does not make any sense, therefore skipped 123 | # 0x1050: J_LINK_SEGGER_DRV + 2x CDC 124 | # 0x1051: J_LINK_SEGGER_DRV + 2x CDC + MSD 125 | # 0x1052: J_LINK_SEGGER_DRV + 2x CDC + RNDIS 126 | # 0x1053: J_LINK_SEGGER_DRV + 2x CDC + RNDIS + MSD 127 | # 0x1054: J_LINK_SEGGER_DRV + 3x CDC 128 | # 0x1055: J_LINK_SEGGER_DRV + 3x CDC + MSD 129 | # 0x1056: J_LINK_SEGGER_DRV + 3x CDC + RNDIS 130 | # 0x1057: J_LINK_SEGGER_DRV + 3x CDC + RNDIS + MSD 131 | # 0x1058: J_LINK_SEGGER_DRV + HID + 2x CDC 132 | # 0x1059: J_LINK_SEGGER_DRV + HID + 2x CDC + MSD 133 | # 0x105a: J_LINK_SEGGER_DRV + HID + 2x CDC + RNDIS 134 | # 0x105b: J_LINK_SEGGER_DRV + HID + 2x CDC + RNDIS + MSD 135 | # 0x105c: J_LINK_SEGGER_DRV + HID + 3x CDC 136 | # 0x105d: J_LINK_SEGGER_DRV + HID + 3x CDC + MSD 137 | # 0x105e: J_LINK_SEGGER_DRV + HID + 3x CDC + RNDIS 138 | # 0x105f: J_LINK_SEGGER_DRV + HID + 3x CDC + RNDIS + MSD 139 | # 0x1060: J_LINK_WINUSB_DRV + 2x CDC 140 | # 0x1061: J_LINK_WINUSB_DRV + 2x CDC + MSD 141 | # 0x1062: J_LINK_WINUSB_DRV + 2x CDC + RNDIS 142 | # 0x1063: J_LINK_WINUSB_DRV + 2x CDC + RNDIS + MSD 143 | # 0x1064: J_LINK_WINUSB_DRV + 3x CDC 144 | # 0x1065: J_LINK_WINUSB_DRV + 3x CDC + MSD 145 | # 0x1066: J_LINK_WINUSB_DRV + 3x CDC + RNDIS 146 | # 0x1067: J_LINK_WINUSB_DRV + 3x CDC + RNDIS + MSD 147 | # 0x1068: J_LINK_WINUSB_DRV + HID + 2x CDC 148 | # 0x1069: J_LINK_WINUSB_DRV + HID + 2x CDC + MSD 149 | # 0x106a: J_LINK_WINUSB_DRV + HID + 2x CDC + RNDIS 150 | # 0x106b: J_LINK_WINUSB_DRV + HID + 2x CDC + RNDIS + MSD 151 | # 0x106c: J_LINK_WINUSB_DRV + HID + 3x CDC 152 | # 0x106d: J_LINK_WINUSB_DRV + HID + 3x CDC + MSD 153 | # 0x106e: J_LINK_WINUSB_DRV + HID + 3x CDC + RNDIS 154 | # 0x106f: J_LINK_WINUSB_DRV + HID + 3x CDC + RNDIS + MSD 155 | # 156 | ATTR{idProduct}=="1001", ATTR{idVendor}=="1366", MODE="666" 157 | ATTR{idProduct}=="1002", ATTR{idVendor}=="1366", MODE="666" 158 | ATTR{idProduct}=="1003", ATTR{idVendor}=="1366", MODE="666" 159 | ATTR{idProduct}=="1004", ATTR{idVendor}=="1366", MODE="666" 160 | ATTR{idProduct}=="1005", ATTR{idVendor}=="1366", MODE="666" 161 | ATTR{idProduct}=="1006", ATTR{idVendor}=="1366", MODE="666" 162 | ATTR{idProduct}=="1007", ATTR{idVendor}=="1366", MODE="666" 163 | ATTR{idProduct}=="1008", ATTR{idVendor}=="1366", MODE="666" 164 | ATTR{idProduct}=="1009", ATTR{idVendor}=="1366", MODE="666" 165 | ATTR{idProduct}=="100a", ATTR{idVendor}=="1366", MODE="666" 166 | ATTR{idProduct}=="100b", ATTR{idVendor}=="1366", MODE="666" 167 | ATTR{idProduct}=="100c", ATTR{idVendor}=="1366", MODE="666" 168 | ATTR{idProduct}=="100d", ATTR{idVendor}=="1366", MODE="666" 169 | ATTR{idProduct}=="100e", ATTR{idVendor}=="1366", MODE="666" 170 | ATTR{idProduct}=="100f", ATTR{idVendor}=="1366", MODE="666" 171 | ATTR{idProduct}=="1010", ATTR{idVendor}=="1366", MODE="666" 172 | ATTR{idProduct}=="1011", ATTR{idVendor}=="1366", MODE="666" 173 | ATTR{idProduct}=="1012", ATTR{idVendor}=="1366", MODE="666" 174 | ATTR{idProduct}=="1013", ATTR{idVendor}=="1366", MODE="666" 175 | ATTR{idProduct}=="1014", ATTR{idVendor}=="1366", MODE="666" 176 | ATTR{idProduct}=="1015", ATTR{idVendor}=="1366", MODE="666" 177 | ATTR{idProduct}=="1016", ATTR{idVendor}=="1366", MODE="666" 178 | ATTR{idProduct}=="1017", ATTR{idVendor}=="1366", MODE="666" 179 | ATTR{idProduct}=="1018", ATTR{idVendor}=="1366", MODE="666" 180 | ATTR{idProduct}=="1019", ATTR{idVendor}=="1366", MODE="666" 181 | ATTR{idProduct}=="101a", ATTR{idVendor}=="1366", MODE="666" 182 | ATTR{idProduct}=="101b", ATTR{idVendor}=="1366", MODE="666" 183 | ATTR{idProduct}=="101c", ATTR{idVendor}=="1366", MODE="666" 184 | ATTR{idProduct}=="101d", ATTR{idVendor}=="1366", MODE="666" 185 | ATTR{idProduct}=="101e", ATTR{idVendor}=="1366", MODE="666" 186 | ATTR{idProduct}=="101f", ATTR{idVendor}=="1366", MODE="666" 187 | ATTR{idProduct}=="1020", ATTR{idVendor}=="1366", MODE="666" 188 | ATTR{idProduct}=="1021", ATTR{idVendor}=="1366", MODE="666" 189 | ATTR{idProduct}=="1022", ATTR{idVendor}=="1366", MODE="666" 190 | ATTR{idProduct}=="1023", ATTR{idVendor}=="1366", MODE="666" 191 | ATTR{idProduct}=="1024", ATTR{idVendor}=="1366", MODE="666" 192 | ATTR{idProduct}=="1025", ATTR{idVendor}=="1366", MODE="666" 193 | ATTR{idProduct}=="1026", ATTR{idVendor}=="1366", MODE="666" 194 | ATTR{idProduct}=="1027", ATTR{idVendor}=="1366", MODE="666" 195 | ATTR{idProduct}=="1028", ATTR{idVendor}=="1366", MODE="666" 196 | ATTR{idProduct}=="1029", ATTR{idVendor}=="1366", MODE="666" 197 | ATTR{idProduct}=="102a", ATTR{idVendor}=="1366", MODE="666" 198 | ATTR{idProduct}=="102b", ATTR{idVendor}=="1366", MODE="666" 199 | ATTR{idProduct}=="102c", ATTR{idVendor}=="1366", MODE="666" 200 | ATTR{idProduct}=="102d", ATTR{idVendor}=="1366", MODE="666" 201 | ATTR{idProduct}=="102e", ATTR{idVendor}=="1366", MODE="666" 202 | ATTR{idProduct}=="102f", ATTR{idVendor}=="1366", MODE="666" 203 | ATTR{idProduct}=="1050", ATTR{idVendor}=="1366", MODE="666" 204 | ATTR{idProduct}=="1051", ATTR{idVendor}=="1366", MODE="666" 205 | ATTR{idProduct}=="1052", ATTR{idVendor}=="1366", MODE="666" 206 | ATTR{idProduct}=="1053", ATTR{idVendor}=="1366", MODE="666" 207 | ATTR{idProduct}=="1054", ATTR{idVendor}=="1366", MODE="666" 208 | ATTR{idProduct}=="1055", ATTR{idVendor}=="1366", MODE="666" 209 | ATTR{idProduct}=="1056", ATTR{idVendor}=="1366", MODE="666" 210 | ATTR{idProduct}=="1057", ATTR{idVendor}=="1366", MODE="666" 211 | ATTR{idProduct}=="1058", ATTR{idVendor}=="1366", MODE="666" 212 | ATTR{idProduct}=="1059", ATTR{idVendor}=="1366", MODE="666" 213 | ATTR{idProduct}=="105a", ATTR{idVendor}=="1366", MODE="666" 214 | ATTR{idProduct}=="105b", ATTR{idVendor}=="1366", MODE="666" 215 | ATTR{idProduct}=="105c", ATTR{idVendor}=="1366", MODE="666" 216 | ATTR{idProduct}=="105d", ATTR{idVendor}=="1366", MODE="666" 217 | ATTR{idProduct}=="105e", ATTR{idVendor}=="1366", MODE="666" 218 | ATTR{idProduct}=="105f", ATTR{idVendor}=="1366", MODE="666" 219 | ATTR{idProduct}=="1060", ATTR{idVendor}=="1366", MODE="666" 220 | ATTR{idProduct}=="1061", ATTR{idVendor}=="1366", MODE="666" 221 | ATTR{idProduct}=="1062", ATTR{idVendor}=="1366", MODE="666" 222 | ATTR{idProduct}=="1063", ATTR{idVendor}=="1366", MODE="666" 223 | ATTR{idProduct}=="1064", ATTR{idVendor}=="1366", MODE="666" 224 | ATTR{idProduct}=="1065", ATTR{idVendor}=="1366", MODE="666" 225 | ATTR{idProduct}=="1066", ATTR{idVendor}=="1366", MODE="666" 226 | ATTR{idProduct}=="1067", ATTR{idVendor}=="1366", MODE="666" 227 | ATTR{idProduct}=="1068", ATTR{idVendor}=="1366", MODE="666" 228 | ATTR{idProduct}=="1069", ATTR{idVendor}=="1366", MODE="666" 229 | ATTR{idProduct}=="106a", ATTR{idVendor}=="1366", MODE="666" 230 | ATTR{idProduct}=="106b", ATTR{idVendor}=="1366", MODE="666" 231 | ATTR{idProduct}=="106c", ATTR{idVendor}=="1366", MODE="666" 232 | ATTR{idProduct}=="106d", ATTR{idVendor}=="1366", MODE="666" 233 | ATTR{idProduct}=="106e", ATTR{idVendor}=="1366", MODE="666" 234 | ATTR{idProduct}=="106f", ATTR{idVendor}=="1366", MODE="666" 235 | # 236 | # Handle known CMSIS-DAP probes (taken from mbed website and OpenOCD): 237 | # VID 0xC251 (Keil) 238 | # PID 0xF001: (LPC-Link-II CMSIS_DAP) 239 | # PID 0xF002: (OpenSDA CMSIS_DAP Freedom Board) 240 | # PID 0x2722: (Keil ULINK2 CMSIS-DAP) 241 | # VID 0x0D28 (mbed) 242 | # PID 0x0204: MBED CMSIS-DAP 243 | # 244 | KERNEL=="hidraw*", ATTRS{idProduct}=="f001", ATTRS{idVendor}=="c251", MODE="666" 245 | KERNEL=="hidraw*", ATTRS{idProduct}=="f002", ATTRS{idVendor}=="c251", MODE="666" 246 | KERNEL=="hidraw*", ATTRS{idProduct}=="2722", ATTRS{idVendor}=="c251", MODE="666" 247 | KERNEL=="hidraw*", ATTRS{idProduct}=="0204", ATTRS{idVendor}=="c251", MODE="666" 248 | KERNEL=="hidraw*", ATTRS{idProduct}=="f001", ATTRS{idVendor}=="0d28", MODE="666" 249 | KERNEL=="hidraw*", ATTRS{idProduct}=="f002", ATTRS{idVendor}=="0d28", MODE="666" 250 | KERNEL=="hidraw*", ATTRS{idProduct}=="2722", ATTRS{idVendor}=="0d28", MODE="666" 251 | KERNEL=="hidraw*", ATTRS{idProduct}=="0204", ATTRS{idVendor}=="0d28", MODE="666" 252 | # 253 | # Make sure that J-Links are not captured by modem manager service 254 | # as this service would try detect J-Link as a modem and send AT commands via the VCOM component which might not be liked by the target... 255 | # 256 | ATTR{idProduct}=="1001", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 257 | ATTR{idProduct}=="1002", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 258 | ATTR{idProduct}=="1003", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 259 | ATTR{idProduct}=="1004", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 260 | ATTR{idProduct}=="1005", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 261 | ATTR{idProduct}=="1006", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 262 | ATTR{idProduct}=="1007", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 263 | ATTR{idProduct}=="1008", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 264 | ATTR{idProduct}=="1009", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 265 | ATTR{idProduct}=="100a", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 266 | ATTR{idProduct}=="100b", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 267 | ATTR{idProduct}=="100c", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 268 | ATTR{idProduct}=="100d", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 269 | ATTR{idProduct}=="100e", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 270 | ATTR{idProduct}=="100f", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 271 | ATTR{idProduct}=="1010", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 272 | ATTR{idProduct}=="1011", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 273 | ATTR{idProduct}=="1012", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 274 | ATTR{idProduct}=="1013", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 275 | ATTR{idProduct}=="1014", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 276 | ATTR{idProduct}=="1015", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 277 | ATTR{idProduct}=="1016", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 278 | ATTR{idProduct}=="1017", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 279 | ATTR{idProduct}=="1018", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 280 | ATTR{idProduct}=="1019", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 281 | ATTR{idProduct}=="101a", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 282 | ATTR{idProduct}=="101b", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 283 | ATTR{idProduct}=="101c", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 284 | ATTR{idProduct}=="101d", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 285 | ATTR{idProduct}=="101e", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 286 | ATTR{idProduct}=="101f", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 287 | ATTR{idProduct}=="1020", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 288 | ATTR{idProduct}=="1021", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 289 | ATTR{idProduct}=="1022", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 290 | ATTR{idProduct}=="1023", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 291 | ATTR{idProduct}=="1024", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 292 | ATTR{idProduct}=="1025", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 293 | ATTR{idProduct}=="1026", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 294 | ATTR{idProduct}=="1027", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 295 | ATTR{idProduct}=="1028", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 296 | ATTR{idProduct}=="1029", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 297 | ATTR{idProduct}=="102a", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 298 | ATTR{idProduct}=="102b", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 299 | ATTR{idProduct}=="102c", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 300 | ATTR{idProduct}=="102d", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 301 | ATTR{idProduct}=="102e", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 302 | ATTR{idProduct}=="102f", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 303 | ATTR{idProduct}=="1050", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 304 | ATTR{idProduct}=="1051", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 305 | ATTR{idProduct}=="1052", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 306 | ATTR{idProduct}=="1053", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 307 | ATTR{idProduct}=="1054", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 308 | ATTR{idProduct}=="1055", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 309 | ATTR{idProduct}=="1056", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 310 | ATTR{idProduct}=="1057", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 311 | ATTR{idProduct}=="1058", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 312 | ATTR{idProduct}=="1059", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 313 | ATTR{idProduct}=="105a", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 314 | ATTR{idProduct}=="105b", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 315 | ATTR{idProduct}=="105c", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 316 | ATTR{idProduct}=="105d", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 317 | ATTR{idProduct}=="105e", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 318 | ATTR{idProduct}=="105f", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 319 | ATTR{idProduct}=="1060", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 320 | ATTR{idProduct}=="1061", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 321 | ATTR{idProduct}=="1062", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 322 | ATTR{idProduct}=="1063", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 323 | ATTR{idProduct}=="1064", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 324 | ATTR{idProduct}=="1065", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 325 | ATTR{idProduct}=="1066", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 326 | ATTR{idProduct}=="1067", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 327 | ATTR{idProduct}=="1068", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 328 | ATTR{idProduct}=="1069", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 329 | ATTR{idProduct}=="106a", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 330 | ATTR{idProduct}=="106b", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 331 | ATTR{idProduct}=="106c", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 332 | ATTR{idProduct}=="106d", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 333 | ATTR{idProduct}=="106e", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 334 | ATTR{idProduct}=="106f", ATTR{idVendor}=="1366", ENV{ID_MM_DEVICE_IGNORE}="1" 335 | # 336 | # Handle known CMSIS-DAP probes (taken from mbed website and OpenOCD): 337 | # VID 0xC251 (Keil) 338 | # PID 0xF001: (LPC-Link-II CMSIS_DAP) 339 | # PID 0xF002: (OpenSDA CMSIS_DAP Freedom Board) 340 | # PID 0x2722: (Keil ULINK2 CMSIS-DAP) 341 | # VID 0x0D28 (mbed) 342 | # PID 0x0204: MBED CMSIS-DAP 343 | # 344 | ATTR{idProduct}=="f001", ATTR{idVendor}=="c251", ENV{ID_MM_DEVICE_IGNORE}="1" 345 | ATTR{idProduct}=="f002", ATTR{idVendor}=="c251", ENV{ID_MM_DEVICE_IGNORE}="1" 346 | ATTR{idProduct}=="2722", ATTR{idVendor}=="c251", ENV{ID_MM_DEVICE_IGNORE}="1" 347 | ATTR{idProduct}=="0204", ATTR{idVendor}=="c251", ENV{ID_MM_DEVICE_IGNORE}="1" 348 | ATTR{idProduct}=="f001", ATTR{idVendor}=="0d28", ENV{ID_MM_DEVICE_IGNORE}="1" 349 | ATTR{idProduct}=="f002", ATTR{idVendor}=="0d28", ENV{ID_MM_DEVICE_IGNORE}="1" 350 | ATTR{idProduct}=="2722", ATTR{idVendor}=="0d28", ENV{ID_MM_DEVICE_IGNORE}="1" 351 | ATTR{idProduct}=="0204", ATTR{idVendor}=="0d28", ENV{ID_MM_DEVICE_IGNORE}="1" 352 | # 353 | # 354 | LABEL="jlink_usb_rules_end" 355 | # 356 | # Make sure that VCOM ports of J-Links can be opened with user rights 357 | # We simply say that all devices from SEGGER which are in the "tty" domain are enumerated with normal user == R/W 358 | # 359 | SUBSYSTEM=="tty", ATTRS{idVendor}=="1366", MODE="0666", GROUP="dialout" 360 | SUBSYSTEM=="tty", ATTRS{idVendor}=="c251", MODE="0666", GROUP="dialout" 361 | SUBSYSTEM=="tty", ATTRS{idVendor}=="0d28", MODE="0666", GROUP="dialout" 362 | # 363 | # End of list 364 | # 365 | LABEL="jlink_rules_end" 366 | -------------------------------------------------------------------------------- /openocd-git/udev/49-stlinkv2-1.rules: -------------------------------------------------------------------------------- 1 | # stm32 nucleo boards, with onboard st/linkv2-1 2 | # ie, STM32F0, STM32F4. 3 | 4 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \ 5 | MODE:="0666", \ 6 | SYMLINK+="stlinkv2-1_%n" 7 | 8 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", \ 9 | MODE:="0666", \ 10 | SYMLINK+="stlinkv2-1_%n" 11 | 12 | # If you share your linux system with other users, or just don't like the 13 | # idea of write permission for everybody, you can replace MODE:="0666" with 14 | # OWNER:="yourusername" to create the device owned by you, or with 15 | # GROUP:="somegroupname" and mange access using standard unix groups. 16 | -------------------------------------------------------------------------------- /openocd-git/udev/49-stlinkv2.rules: -------------------------------------------------------------------------------- 1 | # stm32 discovery boards, with onboard st/linkv2 2 | # ie, STM32L, STM32F4. 3 | 4 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \ 5 | MODE:="0666", \ 6 | SYMLINK+="stlinkv2_%n" 7 | 8 | # If you share your linux system with other users, or just don't like the 9 | # idea of write permission for everybody, you can replace MODE:="0666" with 10 | # OWNER:="yourusername" to create the device owned by you, or with 11 | # GROUP:="somegroupname" and mange access using standard unix groups. 12 | -------------------------------------------------------------------------------- /openocd-git/udev/49-stlinkv3.rules: -------------------------------------------------------------------------------- 1 | # stlink-v3 boards (standalone and embedded) in usbloader mode and standard (debug) mode 2 | 3 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374d", \ 4 | MODE:="0666", \ 5 | SYMLINK+="stlinkv3loader_%n" 6 | 7 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374e", \ 8 | MODE:="0666", \ 9 | SYMLINK+="stlinkv3_%n" 10 | 11 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", \ 12 | MODE:="0666", \ 13 | SYMLINK+="stlinkv3_%n" 14 | 15 | SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3753", \ 16 | MODE:="0666", \ 17 | SYMLINK+="stlinkv3_%n" 18 | 19 | # If you share your linux system with other users, or just don't like the 20 | # idea of write permission for everybody, you can replace MODE:="0666" with 21 | # OWNER:="yourusername" to create the device owned by you, or with 22 | # GROUP:="somegroupname" and mange access using standard unix groups. -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # This repository is archived. 2 | 3 | Please fork and maintain it if you need it. 4 | 5 | 6 | ------------------- 7 | 8 | 9 | # Nightly openocd-git build for Ubuntu 20.04 10 | 11 | This repository uses github actions to build openocd from the master branch each night. 12 | 13 | It installs into `/opt/openocd-git`, so you don't have to worry about conflicts with the `openocd` package in case it's already installed. This package also installs udev rules. 14 | 15 | To install this artifact, do the following: 16 | 17 | ``` 18 | wget https://nightly.link/kbeckmann/ubuntu-openocd-git-builder/workflows/docker/master/openocd-git.deb.zip 19 | unzip openocd-git.deb.zip 20 | sudo dpkg -i openocd-git_*_amd64.deb 21 | sudo apt-get -y -f install 22 | ``` 23 | 24 | Now you can execute openocd using `/opt/openocd-git/bin/openocd`. 25 | 26 | 27 | # Build from source (ARM linux) 28 | For ARM-based linux machines (like raspberry pi), you cannot use the prebuilt artifact described above. You can build and install from source by running the following commands. 29 | 30 | ``` 31 | ./build.sh 32 | sudo dpkg -i openocd-git_*_armhf.deb 33 | sudo apt-get -y -f install 34 | ``` 35 | 36 | 37 | # MacOS 38 | ``` 39 | brew install texinfo automake libusb-compat hidapi 40 | export PATH=/usr/local/opt/texinfo/bin:$PATH 41 | 42 | cd openocd-git 43 | make mac 44 | 45 | cd openocd 46 | sudo make install 47 | # Run and add this to your ~/.zshrc file 48 | export PATH=/opt/openocd-git/bin:$PATH 49 | ``` 50 | 51 | 52 | --------------------------------------------------------------------------------