jtag
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
jtag [2017/03/30 13:52] – [BAITE] kingkevin | jtag [2017/04/25 14:05] – [Baite] kingkevin | ||
---|---|---|---|
Line 82: | Line 82: | ||
One trick to get this ridiculously low price is to use STM32F101 micro-controllers. | One trick to get this ridiculously low price is to use STM32F101 micro-controllers. | ||
Compared to the STM32F103 micro-controllers they offer less functionalities, | Compared to the STM32F103 micro-controllers they offer less functionalities, | ||
- | Well this is because these micro-controllers use the same die, but if not all STM32F103 feature tests pass after production they get packages as STM32F101, | + | Well this is because these micro-controllers use the same die, but if not all STM32F103 feature tests pass after production they get packages as STM32F101, |
+ | At least this is my guess. | ||
+ | It would be interesting to check if the other STM32F103 peripherals normally not present on the STM32F101 work as well, but I wouldn' | ||
+ | After all, they are probably marked as STM32F101 for a good reason.\\ | ||
Similarly the STM32F103C8 is only rated having 64 kB of flash because it didn't pass the flash test, compared to the 128 kB for the STM32F103CB, | Similarly the STM32F103C8 is only rated having 64 kB of flash because it didn't pass the flash test, compared to the 128 kB for the STM32F103CB, | ||
Line 108: | Line 111: | ||
{{: | {{: | ||
- | From the outside this looks very similar to the previous one, except that the connector pinout is very different (except for power).\\ | + | From the outside this looks very similar to the previous one, except that the connector pinout is very different (except for power) |
No markings are on the board. | No markings are on the board. | ||
Line 119: | Line 122: | ||
This one has an " | This one has an " | ||
==== Baite ==== | ==== Baite ==== | ||
- | |||
{{: | {{: | ||
Line 126: | Line 128: | ||
{{: | {{: | ||
- | The [[https://www.aliexpress.com/ | + | The [[http://betemcu.cn/|Baite]] [[https:// |
The seem to use the same board also for several other programmers, | The seem to use the same board also for several other programmers, | ||
Line 133: | Line 135: | ||
{{: | {{: | ||
- | I've also reversed the board layout to get the {{:jtag:baite_schematic.pdf|schematic}}. | + | I've also reversed the board layout to get the {{:jtag:baite.pdf|schematic}}. |
The connector pins are all protected with 220 ohms resistors. | The connector pins are all protected with 220 ohms resistors. | ||
- | STM32F103C8 connection: | + | {{:jtag: |
- | ^ STM32F103C8 signal ^ STM32F103C8 pin ^ adapter pin ^ adapter signal ^ | + | {{: |
- | | PA7 | 17 | 1 | JRST | | + | |
- | | AMS1117 | | 2 | 3V3 | | + | There is a newer version marked as " |
- | | USB VCC | | 3 | 5V | | + | |
- | | PA4 | 14 | 4 | JTCK/SWCLK | | + | * they added a SWD port |
- | | PB11 | 22 | 5 | SWIM | | + | * the STM32F103C8 has been replaced with a STM32F101CB, |
- | | PA14 | 37 | 6 | JTMS/SWDIO | | + | * the passives are smaller |
- | | USB GND | | 7 | GND | | + | * the routing is horrible |
- | | PA5 | 15 | 8 | JTDO | | + | |
- | | PB6 | 42 | 9 | SWIM_RST | + | ===== Black Magic Probe ===== |
- | | PA6 | + | |
- | | PB12, | + | The [[https:// |
- | | PB5 | 41 | | LED | | + | Thus no need to have an OpenOCD server to control the SWJ adapter. |
+ | You can directly connect GDB to this adapter (over USB CDC ACM).\\ | ||
+ | It also comes with a UART port (over a second USB CDC ACM). | ||
+ | This is very useful while developing (for printf debugging). | ||
+ | |||
+ | The hardware comes with some disadvantages though: | ||
+ | * the ARM Cortex SWJ connector uses a small header (not very dupont-wire friendly) | ||
+ | * the separate UART is not always populated (UART is also available on the SWJ connector) | ||
+ | * it is quite expensive (> $50) | ||
+ | * it is always sold out (and V2.1 on pre-order will take a bit of time until it is available) | ||
+ | |||
+ | But because the firmware is open source it is possible to port it to other hardware, and [[https:// | ||
+ | It has been [[https:// | ||
+ | It has also been [[http:// | ||
+ | So I decided to port it to the [[#baite|baite]]. | ||
+ | This has less power pins (who needs 2xGND, 2x5V, 3x3.3V anyway), but provides enough function pins to add UART (and SRST). | ||
+ | |||
+ | To build the firmware ([[https:// | ||
+ | <code bash> | ||
+ | git clone https:// | ||
+ | cd blackmagic | ||
+ | git submodule init | ||
+ | git submodule update | ||
+ | wget -O 0001-add-new-platform-Baite-ST-Link-V2-clone.patch " | ||
+ | patch -p1 < 0001-add-new-platform-Baite-ST-Link-V2-clone.patch | ||
+ | make | ||
+ | cd src | ||
+ | make clean | ||
+ | make PROBE_HOST=baite | ||
+ | </ | ||
+ | |||
+ | First we need to re-program the Baite dongle.\\ | ||
+ | As you can see on the {{: | ||
+ | But on the back of the board you can find test points so to program the device using the serial bootloader: | ||
+ | |||
+ | ^ pin ^ signal ^ | ||
+ | | 1 (square) | ||
+ | | 2 | TX | | ||
+ | | 3 | BOOT0 | | ||
+ | | 4 | +5V | | ||
+ | | 5 | GND | | ||
+ | |||
+ | Use any USB to UART converter and connect the corresponding pins to this port. | ||
+ | Don't power the Baite dongle over USB since it might then boot the normal application. | ||
+ | Instead let the USB to UART converter power it. | ||
+ | To start the serial bootloader when powering the dongle you need to set BOOT0 high by connecting it to +3.3V or DTR (or any high signal present on the USB to UART converter). | ||
+ | |||
+ | To flash the Black Magic DFU bootloader I used [[https:// | ||
+ | Since the flash is read/write protected you first need to clear these option bits. | ||
+ | |||
+ | <code bash> | ||
+ | # disable flash read protection | ||
+ | stm32flash -k / | ||
+ | # disable flash write protection | ||
+ | stm32flash -u / | ||
+ | # erase flash | ||
+ | stm32flash -o / | ||
+ | # flash DFU bootloader | ||
+ | stm32flash -w blackmagic/ | ||
+ | </ | ||
+ | |||
+ | Unplug and re-plug the Baite dongle and you should see the device in DFU bootlader mode. | ||
+ | Flash the main application firmware using dfu-util: | ||
+ | <code bash> | ||
+ | dfu-util -d 1d50:6017 -s 0x08002000: | ||
+ | </ | ||
+ | |||
+ | Unplug and re-plug the Baite dongle. | ||
+ | The adapter should be running the main application and two USB CDC ACM ports will appear. | ||
+ | |||
+ | You can re-flash the device from the main application using dfu-util: | ||
+ | <code bash> | ||
+ | dfu-util -d 1d50:6018 -s 0x08002000: | ||
+ | </ | ||
+ | |||
+ | or short RX to ground (pin 5 and 7) to force the DFU bootloader start when plugin in the dongle (in case the main application is buggy). | ||
+ | Here is the new "BMP Baite" {{ : | ||
+ | ^ signal ^ pin ^ pin ^ signal ^ | ||
+ | | SRST | 1 | 2| +3.3V | | ||
+ | | +5V | 3 | 4 | JTCK/SWCLK | | ||
+ | | RX | 5 (key) | 6 | JTMS/SWDIO | | ||
+ | | GND | 7 | 8 | JTDO/ | ||
+ | | TX | 9 | 10 | JTDI | | ||
+ | **note**: the RX pin is pulled up by a 620 ohms resistor. Thus the TX connected to BMP Baite must by strong enough to drive it low (e.g. not like with the CH340 USB to UART converter). | ||
+ | If you connect SRST to the target NRST, it is even possible to reset the target board without having to press on the on-board reset button (of there is any): | ||
+ | <code bash> | ||
+ | gdb --eval-command=" | ||
+ | </ | ||
===== Altera USB-Blaster ===== | ===== Altera USB-Blaster ===== | ||
jtag.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1