# pi-stm32-uart-bootloader

> Raspberry PI STM32 UART Bootloader

Latest version **0.0.3** (published 2018-07-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install pi-stm32-uart-bootloader
pnpm add pi-stm32-uart-bootloader
yarn add pi-stm32-uart-bootloader
bun add pi-stm32-uart-bootloader
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2018-07-10 |
| First published | 2018-07-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 69.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 28 |
| Author | Joe Ferner |
| Maintainers | joeferner |
| Keywords | raspberry, pi, stm32, uart, bootloader |

## Links

- npm: https://www.npmjs.com/package/pi-stm32-uart-bootloader
- Repository: https://github.com/joeferner/pi-stm32-uart-bootloader
- Homepage: https://github.com/joeferner/pi-stm32-uart-bootloader#readme
- Issues: https://github.com/joeferner/pi-stm32-uart-bootloader/issues
- npm.io page: https://npm.io/package/pi-stm32-uart-bootloader

## Dependencies (4)

- [serialport](https://npm.io/package/serialport.md) ^6.2.1
- [buffer-builder](https://npm.io/package/buffer-builder.md) ^0.2.0
- [node-wiring-pi](https://npm.io/package/node-wiring-pi.md) 0.0.4
- [nested-error-stacks](https://npm.io/package/nested-error-stacks.md) ^2.0.1

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 0.0.3 (latest) — 2018-07-10
- 0.0.2 — 2018-07-04
- 0.0.1-security — 2018-07-02

## README

**Raspberry PI STM32 UART Bootloader**

This node module facilitates flashing an STM32 over the built in UART bootloader.

The STM32 has a built in bootloader which can be accessed by setting the following
BOOT1 and BOOT0 pins. "Main Flash Memory" is where your program typically resides.
"System Memory" is where STM32's built in bootloaders reside.

| BOOT1 | BOOT0 | Boot Mode         |
|:-----:|:-----:|-------------------|
|   x   |   0   | Main Flash Memory |
|   0   |   1   | System Memory     |
|   1   |   1   | Embedded SRAM     |

This module will toggle these pins (BOOT0 and BOOT1) along with the reset pin and UART
to flash the STM32.

### Raspberry Pi 3

On the Raspberry Pi 3 yo get better baud rate results you will probably want to remap the
physical UART away from the bluetooth and back to the UART pins. To do this add the following
line to your `/boot/config.txt` file.

```
dtoverlay=pi3-miniuart-bt
```

### Usage

The following example has been tested to flash the STM32F103RBT6 on the STM32F103 Nucleo board.
You'll need to make the following connections.

|  Pi  | STM32            |
|-----:|------------------|
|  8   | UART RX PA10     |
|  10  | UART TX PA9      |
|  11  | RESET            |
|  13  | BOOT0            |
|      | BOOT1/PB2 -> GND |

You will also need to disable the built in Nucleo reset by removing the jumper on `SB12` or
replacing it with a weak pull up resistor (10K should work).

```javascript
var wpi = require('wiring-pi');
var STM32UARTBootloader = require('pi-stm32-uart-bootloader');
var fs = require('fs');
var path = require('path');

async function flash() {
    wpi.wiringPiSetupPhys();

    const bootloader = new STM32UARTBootloader({
        resetPin: 11,
        boot0Pin: 13,
        serialPortPath: '/dev/serial0'
    });
    await bootloader.init();

    const data = fs.readFileSync(path.join(__dirname, 'blink.bin'));
    await bootloader.flash(0x08000000, data);
    console.log('done');
}

flash();
```

---
_Source: https://npm.io/package/pi-stm32-uart-bootloader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
