3 Commits

Author SHA1 Message Date
faa6e5ffbe Release v0.2.0: merge dev into main 2026-03-22 12:54:10 +01:00
646d69a2ae Docs v0.1.1 2026-03-21 23:13:04 +01:00
1ad75dd604 Merge branch 'dev' 2026-03-21 23:12:22 +01:00
9 changed files with 11 additions and 6138 deletions

1
.gitignore vendored
View File

@@ -1 +0,0 @@
.quarto/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

BIN
main.pdf

Binary file not shown.

View File

@@ -3,7 +3,6 @@ title: "NeoECU Development Environment"
author: author:
- name: Hector van der Aa - name: Hector van der Aa
email: hector@h3cx.dev email: hector@h3cx.dev
affiliation: Version 0.2.2
date: today date: today
date-format: long date-format: long
format: format:
@@ -11,15 +10,12 @@ format:
mainfont: Inter mainfont: Inter
codefont: "JetBrains Mono" codefont: "JetBrains Mono"
papersize: a4 papersize: a4
margin:
x: 2cm
y: 2cm
toc: true toc: true
--- ---
```{=typst} ```{=typst}
#set page( #set page(
header: align(right)[ header: align(right)[
Version 0.2.2 Version 0.2.0
], ],
numbering: "1", numbering: "1",
) )
@@ -218,7 +214,7 @@ cd && ls | grep "zephyr-sdk"
``` ```
Then take this and add the following to your .bashrc (or equivalent): Then take this and add the following to your .bashrc (or equivalent):
```bash ```bash
export ZEPHYR_SDK_INSTALL_DIR=$HOME/zephyr-sdk-x.x.x export ZEPHYR_SDK_INSTALL_DIR=$HOME/zephyr-sdk-1.0.0
``` ```
Making sure that the x.x.x matches the version you have installed. Making sure that the x.x.x matches the version you have installed.
@@ -265,8 +261,8 @@ Download the '*J-Link Software and Documentation Package*' from
From your downloads, install the package: From your downloads, install the package:
```bash ```bash
# Arch # Arch
sudo mkdir -p /opt/SEGGER/JLink sudo mkdir /opt/SEGGER/JLink
sudo tar -xvzf JLink_Linux_*_x86_64.tgz -C /opt/SEGGER/JLink --strip-components=1 sudo tar -xvzf JLink_Linux_*_x86_64.tgz -C target --strip-components=1
# Debian # Debian
sudo apt install ./JLink_Linux_*_x86_64.deb sudo apt install ./JLink_Linux_*_x86_64.deb
@@ -310,10 +306,9 @@ source .venv/bin/activate
This step must be repeated for each new terminal session. This step must be repeated for each new terminal session.
## NeoECU Tooling Setup ## NeoECU Tooling Setup
Install the neoecu cli tooling and west for Zephyr: Install the neoecu cli tooling:
```bash ```bash
uv pip install "git+https://git.h3cx.dev/h3cx/NeoECU-Tooling.git" uv pip install "git+https://git.h3cx.dev/h3cx/NeoECU-Tooling.git"
uv pip install west
``` ```
Help can be found by running: Help can be found by running:
```bash ```bash
@@ -354,12 +349,6 @@ If this succeeds then your build environment is set up correctly! You should see
# NeoECU Tooling Overview # 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: 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 ```bash
neoecu envcheck neoecu envcheck
neoecu init neoecu init
@@ -374,46 +363,23 @@ 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. 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 ## build
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. The build command builds both sides of the project, STM32 and Zephyr. It defaults to release mode when run without arguments.
Multiple arguments can be passed as follows: Multiple arguments can be passed as follows:
```bash ```bash
--release --release
# or
--debug --debug
```
```bash
--clean --clean
--CM7
--CM4
``` ```
For example to build clean in debug mode: For example to build clean in debug mode:
```bash ```bash
neoecu build --debug --clean neoecu build --debug --clean
``` ```
## flash ## flash
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: 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.
```bash
--CM7
--CM4
```
If no arguments are provided it defaults to flashing whatever is configured in `neoecu.toml`
## clean ## clean
The clean command cleans up all build directories in the project The clean command cleans up all build directories in the project
```{=typst}
#pagebreak()
```
# Updates
## Version 0.2.0
Complete instructions with completely neoecu tooling
## Version 0.2.1
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

File diff suppressed because one or more lines are too long

View File

@@ -1,76 +0,0 @@
---
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.