A few months ago I went to upgrade my OpenPilot CC3D board an something went amiss and I ended up trashing the bootloader. I didn’t have a SWD dongle to reprogram it with so its been collecting dust. I just purchased a v3 bus blaster for a different project I’m working on and it has a SWD firmware so I thought I’d try and recover the CC3D. Below are the steps I used.
Download and install the latest OpenOCD
cd openocd/
./bootstrap
./configure --prefix=/usr
make
sudo make install
Re-flash the Bus Blaster v3 for KT-link buffer
The instructions below came from here
cd busblaster/synthesis
openocd -f board/dp_busblaster_v3.cfg -c "adapter_khz 1000; init; svf system.svf; shutdown"
Getting/Building the bootloader
Now you need to get a bootloader to flash into the CC3D. You might be able to download bl_coptercontrol.hex but I’ve already got the OpenPilot development environment installed so I just built it using
If you don’t have the dev environment setup there are build instructions.
Here is the file I used bl_coptercontrol.hex but the regular disclaimers apply, if this file damages or bricks your CC3D I am not responsible.
OpenOCD config file
You need create a flashing script “cc3d-swd.cfg” to pass to OpenOCD.
transport select swd
source [find target/stm32f1x.cfg]
proc program_device () {
reset init
sleep 50
flash probe 0
sleep 50
flash protect 0 0 last off
sleep 50
flash write_image erase unlock "path_to_hex_file/bl_coptercontrol.hex"
sleep 50
reset run
}
init
program_device ()
exit
Obiously replace “path_to_hex_file” to where you built or downloaded bl_coptercontrol.hex
Connect the bus blaster to the CC3d
I got the cable connections from here.
┊
GND ──────────────────────── GND
┊
TCK ──────────────────────── SWCK
┊
TMS ──────────────────────── SWDAT
┊
Finally reflashing the CC3D bootloader