mirror of
https://github.com/meshtastic/meshtastic.git
synced 2025-01-12 22:37:33 -08:00
Add instructions for uploading firmware through SWDIO
Add instructions for uploading firmware through SWDIO by using a Raspberry Pi.
This commit is contained in:
parent
34c7f4efa8
commit
4d50ac52c4
105
docs/getting-started/flashing-firmware/nrf52/swdio.mdx
Normal file
105
docs/getting-started/flashing-firmware/nrf52/swdio.mdx
Normal file
|
@ -0,0 +1,105 @@
|
|||
---
|
||||
id: swdio
|
||||
title: SWDIO using a Raspberry Pi
|
||||
sidebar_label: SWDIO using a Raspberry Pi
|
||||
sidebar_position: 6
|
||||
description: Instructions for uploading firmware through SWDIO by using a Raspberry Pi.
|
||||
---
|
||||
|
||||
Most Meshtastic devices can be flashed simply using USB.
|
||||
However, some (eg Seeed WM1110) require the use of an external device that can connect via "SWDIO".
|
||||
There are dedicated devices such as the [RAKDAP1](https://store.rakwireless.com/products/daplink-tool)
|
||||
that can do this work. However, for many people a Raspberry Pi is more convenient.
|
||||
|
||||
This article provides instructions on how use a Raspberry Pi as a SWDIO Flash Tool.
|
||||
|
||||
## Set up Wiring
|
||||
The first step is to connect two wires between your Raspberry Pi and the SWDIO ports on your NRF52-based device.
|
||||
|
||||
Connect GPIO pin 11 on your Raspbery Pi to the CLK pin on the Meshtastic Device.
|
||||
Connect GPIO pin 8 on your Raspbery Pi to the DIO pin on the Meshtastic Device.
|
||||
|
||||
Ensure you get the GPIO numbers correct.
|
||||
|
||||
Plug in your Raspberry Pi to USB power.
|
||||
Plug in the Meshtastic Device to power.
|
||||
|
||||
## Install OpenOCD
|
||||
|
||||
You can use OpenOCD to manage the SWDIO connection with the Meshtastic Device.
|
||||
Install it on your Raspberry Pi.
|
||||
|
||||
```
|
||||
$ sudo apt update
|
||||
$ sudo apt install libtool autoconf automake texinfo telnet gdb-multiarch git
|
||||
$ git clone git://repo.or.cz/openocd.git
|
||||
$ cd openocd/
|
||||
$ ./bootstrap
|
||||
$ ./configure --enable-bcm2835gpio
|
||||
$ make -j4
|
||||
$ sudo make install
|
||||
```
|
||||
|
||||
## Check connection
|
||||
Let's try connecting to the NRF52-based device with SWDIO before we do anything with firmware.
|
||||
All the configuration you need is in the openocd repository.
|
||||
|
||||
```
|
||||
$ openocd -f ./openocd/tcl/interface/raspberrypi-native.cfg -c "transport select swd" -f openocd/tcl/target/nrf52.cfg -s tcl
|
||||
```
|
||||
|
||||
The first flag selects the Raspberry Pi as your host machine, the transport is SWDIO, and the last flag says you are connecting to a nRF52-based chip.
|
||||
You should see something like this:
|
||||
|
||||
```
|
||||
Open On-Chip Debugger 0.12.0+dev-00633-gad87fbd1c
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
srst_only separate srst_gates_jtag srst_push_pull connect_deassert_srst
|
||||
swd
|
||||
Info : Listening on port 6666 for tcl connections
|
||||
Info : Listening on port 4444 for telnet connections
|
||||
Info : BCM2835 GPIO JTAG/SWD bitbang driver
|
||||
Info : clock speed 100 kHz
|
||||
Info : SWD DPIDR 0x2ba01477
|
||||
Info : [nrf52.cpu] Cortex-M4 r0p1 processor detected
|
||||
Info : [nrf52.cpu] target has 6 breakpoints, 4 watchpoints
|
||||
Info : [nrf52.cpu] Examination succeed
|
||||
Info : [nrf52.cpu] starting gdb server on 3333
|
||||
Info : Listening on port 3333 for gdb connections
|
||||
Info : accepting 'telnet' connection on tcp/4444
|
||||
```
|
||||
|
||||
|
||||
If you see “Error connecting DP: cannot read IDR”, then you've probably connected the wires to the wrong place.
|
||||
|
||||
## Obtaining Firmware
|
||||
Check the instructions for your [hardware](/docs/hardware/devices) to find the correct firmware for your device.
|
||||
Then, copy the firmware file to your Raspberry Pi.
|
||||
|
||||
|
||||
## Flashing Firmware
|
||||
Once you have openocd running, you can connect to your Meshtastic device using telnet.
|
||||
Flashing is as simple as running a few commands inside the telnet session:
|
||||
|
||||
```
|
||||
$ telnet 127.0.0.1 4444
|
||||
Trying 127.0.0.1...
|
||||
Connected to 127.0.0.1.
|
||||
Escape character is '^]'.
|
||||
Open On-Chip Debugger
|
||||
> init
|
||||
> reset init
|
||||
> halt
|
||||
> nrf5 mass_erase
|
||||
> program new2.uf2 verify
|
||||
> reset
|
||||
> exit 0
|
||||
```
|
||||
|
||||
Unplug the power and plug it back in after flashing.
|
||||
|
||||
## Connecting
|
||||
Congratulations, you should now be able to connect to your device through Bluetooth in the Meshtastic app.
|
||||
|
Loading…
Reference in a new issue