All Projects → wose → ts100

wose / ts100

Licence: other
ts100 soldering iron firmware written in Rust

Programming Languages

rust
11053 projects
GDB
78 projects

ts100

ts100 soldering iron firmware written in Rust

⚠️ You can't solder with this firmware (yet) ⚠️ Take a look at Ralim/ts100 for a feature complete alternative.

v0.1.0

Hardware

Schematics

Schematics

PCB

Main Board Top

Main Board Bottom

CPU Board Top

CPU_Board_Bottom

Debugger Interface

The SWD interface is exposed as 4 solder pads at the bottom of the CPU board.

  • VCC (NC)
  • GND (NC)
  • SWCLK (blue wire)
  • SWDIO (red wire)

I added a little bit of kapton tape in between the CPU and main board before assembling to minimize the damage if the solder connection breaks.

CPU and Main board

Firmware Backup

It's probably a good idea to backup the original firmware including the (horrible) bootloader. After connecting an ST-Link programmer you can use openocd to dump the flash.

Start openocd:

% openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
Open On-Chip Debugger 0.9.0 (2017-03-07-13:28)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
        Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
        Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
        adapter speed: 1000 kHz
        adapter_nsrst_delay: 100
        none separate
        Info : Unable to match requested speed 1000 kHz, using 950 kHz
        Info : Unable to match requested speed 1000 kHz, using 950 kHz
        Info : clock speed 950 kHz
        Info : STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
        Info : using stlink api v2
        Info : Target voltage: 3.245003
        Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

Dump the firmware:

% telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> dump_image ts100_orig.bin 0x08000000 0xffff
dumped 65535 bytes in 1.386794s (46.149 KiB/s)
>

Hacking

Dependencies

  • Rust nighly
  • OpenOCD
  • GNU ld
  • GDB
  • Xargo
% rustup default nightly
% rustc -V
rustc 1.21.0-nightly (f774bced5 2017-08-12)

% sudo apt-get install binutils-arm-none-eabi gdb-arm-none-eabi openocd
% arm-none-eabi-ld -V | head -n1
GNU ld (2.28-5+9+b3) 2.28
% arm-none-eabi-gdb -v | head -n1
GNU gdb (7.12-6+9+b2) 7.12.0.20161007-git
% openocd -v 2>&1 | head -n1
Open On-Chip Debugger 0.9.0 (2017-03-07-13:28)

% cargo install xargo
% xargo -V
xargo 0.3.8
cargo 0.22.0-nightly (7704f7b1f 2017-08-09)

% rustup component add rust-src

Compiling

% git clone https://github.com/wose/ts100.git
% cd ts100/firmware
% xargo build --release

OpenOCD/GDB

Connect the soldering iron to the ST-Link programmer and start openocd:

% openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg

Start gdb in another terminal. The included .gdbinit will connect to openocd and flash the chip when gdb is started.

% arm-none-eabi-gdb target/thumbv7m-none-eabi/release/firmware

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].