5 Commits

Author SHA1 Message Date
9ad7064843 Recovery guide release: merge dev into main 2026-05-04 16:14:43 +02:00
e1ec3b86a7 Added recovery guide 2026-05-04 16:13:55 +02:00
1a27520353 Release v0.2.2: merge dev into main 2026-05-03 18:58:40 +02:00
6e7eeca437 Fixed typo to v0.2.2 2026-05-03 18:58:12 +02:00
15ff6ceb0a Docs v0.2.2 2026-05-03 18:56:56 +02:00
8 changed files with 10292 additions and 3815 deletions

BIN
img/recovery_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
img/recovery_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 KiB

BIN
img/recovery_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
img/recovery_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

7982
main.pdf

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ title: "NeoECU Development Environment"
author:
- name: Hector van der Aa
email: hector@h3cx.dev
affiliation: Version 0.2.1
affiliation: Version 0.2.2
date: today
date-format: long
format:
@@ -11,12 +11,15 @@ format:
mainfont: Inter
codefont: "JetBrains Mono"
papersize: a4
margin:
x: 2cm
y: 2cm
toc: true
---
```{=typst}
#set page(
header: align(right)[
Version 0.2.1
Version 0.2.2
],
numbering: "1",
)
@@ -351,6 +354,12 @@ If this succeeds then your build environment is set up correctly! You should see
# NeoECU Tooling Overview
The NeoECU tooling harmonizes the STM32 and Zephyr environments into one set of easy to use commands. It currently supports the following commands:
::: {.callout-important}
For complete, up-to-date documentation, please refer to the official git repo:
[https://git.h3cx.dev/Exergie/NeoECU-Tooling](https://git.h3cx.dev/Exergie/NeoECU-Tooling)
:::
```bash
neoecu envcheck
neoecu init
@@ -365,28 +374,35 @@ The environment checker is a simple tool that checks that all the required tools
The init command installs all the required python dependencies for west and initializes the cmake build environment for the STM32 side of the project.
## build
The build command builds both sides of the project, STM32 and Zephyr. It defaults to release mode when run without arguments.
The build command builds both sides of the project (if configured), STM32 and Zephyr. It defaults to release mode and both cores when run without arguments.
Multiple arguments can be passed as follows:
```bash
--release
#or
--debug
```
```bash
--clean
--CM7
--CM4
```
For example to build clean in debug mode:
```bash
neoecu build --debug --clean
```
## flash
The flash command will flash the built binaries onto a board connected over JLink. It currently doesn't support per core flashing to it will flash both binaries at once.
The flash command will flash the built binaries onto a board connected over JLink. Single core flashing is done using the same arguments as build:
```bash
--CM7
--CM4
```
If no arguments are provided it defaults to flashing whatever is configured in `neoecu.toml`
## clean
The clean command cleans up all build directories in the project
```{=typst}
#pagebreak()
```
# Updates
## Version 0.2.0
@@ -398,3 +414,6 @@ Fixed errors:
- Incoherent instructions in export line for Zephyr SDK with x.x.x not appearing
- Incorrect mkdir command to create the `/opt/SEGGER/Jlink` directory, updated with -p flag
- Incorrect command for extracting JLink tarball, updated target to correct directory
## Version 0.2.2
Updated neoecu documentation to match neoeco v2.1.0

6016
recovery.pdf Normal file

File diff suppressed because one or more lines are too long

76
recovery.qmd Normal file
View File

@@ -0,0 +1,76 @@
---
title: "Arduino Giga Recovery Guide"
author:
- name: Hector van der Aa
email: hector@h3cx.dev
affiliation: Version 0.1.0
date: today
date-format: long
format:
typst:
mainfont: Inter
codefont: "JetBrains Mono"
papersize: a4
margin:
x: 2cm
y: 2cm
toc: true
---
```{=typst}
#set page(
header: align(right)[
Version 0.1.0
],
numbering: "1",
)
```
```{=typst}
#pagebreak()
```
# Background
This document outlines the procedure to recover a bricked Arduino Giga R1 board.
::: {.callout-important}
This guide does **NOT** return the Arduino Giga to its factory state *(ie the ability to flash via USB with the Arduino IDE)*. However it can be applicable as a first step to a factory restore to Arduino defaults.
:::
After having does a few tests with code generated by STM32CubeMX, I once found one of my Arduinos in a seemingly dead state, no signs of life other than the power LED and a daunting error when trying to flash: `Error: Failed to initialize DAP`. After many hours of trying things, I finally managed to figure out how to recover the mcu when it has been flashed with firmware that rendered it lifeless.
::: {.callout-note}
Once the board is recovered, **CHECK** your RCC configuration in STM32CubeMX, it is likely a power configuration issue where RCC tries to power from an external SMPS when it should be set to LDO_INTERNAL
:::
# Recovery
## Prerequisites
In order to recover the board, you will need the following:
- STM32CubeProgrammer
- A USB-C cable
## Process
![Connection Mode Selection](img/recovery_1.png){width=90%}
Open up STM32CubeProgrammer and set the connection mode to USB
![Arduino Giga BOOT Button](img/recovery_2.png){width=80%}
Then while holding down the `BOOT` button on the Arduino Giga, plug it in. Keep holding the button down for about 5 seconds then release.
![Refresh and Connect Sequence](img/recovery_3.png){width=40%}
Then (1) click the refresh button in STM32CubeProgrammer, you should see a USB device appear, if it doesnt, unplug your board and try the previous step again.
Once the device is recognized, (2) click on connect to establish a connection to the board.
![Full Chip Erase Sequence](img/recovery_4.png){width=90%}
You can now proceed to a chip erase:
1. Open the "Erasing and Programming" window
2. Click the "Full chip erase" button, acknowledge any warnings etc
3. Once the chip erase is complete, click disconnect
**Congrats**, you have successfully unbricked your board, you should now be able to connect to it via JLink. Now good luck finding the config fluke that bricked it.