mirror of
https://github.com/mytechnotalent/Embedded-Hacking.git
synced 2026-10-04 06:57:02 +02:00
README: name arm-none-eabi-gdb in the toolchain; split compile/flash per platform
The Pico extension's Arm GNU Toolchain includes arm-none-eabi-gdb (used by the GDB / GDB MI labs) -- call it out. Keep the identical cmake build for all OSes but give full Windows / macOS / Linux compile+flash blocks, plus the explicit PICO_SDK_PATH/PICO_TOOLCHAIN_PATH fallback.
This commit is contained in:
1 parent
86d3dbdb12
commit
c2bab7cbd6
1 file changed
+33
-20
@@ -96,12 +96,12 @@ The following hardware parts and sensors are used throughout the course experime
|
||||
|
||||
# Development Environment Setup
|
||||
|
||||
Everything installs natively on Windows, macOS (Apple Silicon), and Linux x64 — **no VM required**. The core toolchain (Pico SDK, Arm GNU Toolchain, `picotool`, OpenOCD) comes from the **Raspberry Pi Pico VS Code extension**, which installs it all under `~/.pico-sdk` on every platform. You then add two reverse-engineering tools and a serial monitor.
|
||||
Everything installs natively on Windows, macOS (Apple Silicon), and Linux x64 — **no VM required**. The core toolchain (Pico SDK, the full Arm GNU Toolchain — `arm-none-eabi-gcc`, `arm-none-eabi-gdb`, `arm-none-eabi-nm`, `objdump` — `picotool`, and OpenOCD) comes from the **Raspberry Pi Pico VS Code extension**, which installs it all under `~/.pico-sdk` on every platform. You then add two reverse-engineering tools and a serial monitor. `arm-none-eabi-gdb` is what the GDB and Binary Ninja (GDB MI) debugging labs use.
|
||||
|
||||
## Windows x64
|
||||
|
||||
1. Install [VS Code](https://code.visualstudio.com/), [Git for Windows](https://git-scm.com/download/win), and [Python 3](https://www.python.org/downloads/) (check **Add python.exe to PATH**).
|
||||
2. In VS Code open **Extensions**, search **Raspberry Pi Pico**, install it, and choose **Pico 2** as the board when prompted. This pulls the Pico SDK, Arm GNU Toolchain, `picotool`, and OpenOCD.
|
||||
2. In VS Code open **Extensions**, search **Raspberry Pi Pico**, install it, and choose **Pico 2** as the board when prompted. This pulls the Pico SDK, Arm GNU Toolchain (includes `arm-none-eabi-gdb`), `picotool`, and OpenOCD.
|
||||
3. Install [Binary Ninja Personal](https://binary.ninja/) and activate the license.
|
||||
4. Install [Ghidra](https://github.com/NationalSecurityAgency/ghidra/releases) and [Eclipse Temurin JDK 21](https://adoptium.net/temurin/releases/?version=21).
|
||||
5. Serial monitor: [PuTTY](https://www.putty.org/).
|
||||
@@ -112,7 +112,7 @@ Everything installs natively on Windows, macOS (Apple Silicon), and Linux x64
|
||||
brew install cmake ninja
|
||||
```
|
||||
|
||||
1. Install [VS Code](https://code.visualstudio.com/), then the **Raspberry Pi Pico** extension (choose **Pico 2**). This installs the Pico SDK, Arm GNU Toolchain, `picotool`, and OpenOCD.
|
||||
1. Install [VS Code](https://code.visualstudio.com/), then the **Raspberry Pi Pico** extension (choose **Pico 2**). This installs the Pico SDK, Arm GNU Toolchain (includes `arm-none-eabi-gdb`), `picotool`, and OpenOCD.
|
||||
2. Install [Binary Ninja Personal](https://binary.ninja/) and activate the license.
|
||||
3. Install Ghidra and JDK 21: `brew install --cask temurin@21`, then the [Ghidra release](https://github.com/NationalSecurityAgency/ghidra/releases).
|
||||
4. Serial monitor: `screen` (built in).
|
||||
@@ -126,42 +126,55 @@ sudo apt update
|
||||
sudo apt install git python3 cmake ninja-build build-essential screen
|
||||
```
|
||||
|
||||
1. Install [VS Code](https://code.visualstudio.com/), then the **Raspberry Pi Pico** extension (choose **Pico 2**). This installs the Pico SDK, Arm GNU Toolchain, `picotool`, and OpenOCD.
|
||||
1. Install [VS Code](https://code.visualstudio.com/), then the **Raspberry Pi Pico** extension (choose **Pico 2**). This installs the Pico SDK, Arm GNU Toolchain (includes `arm-none-eabi-gdb`), `picotool`, and OpenOCD.
|
||||
2. Install [Binary Ninja Personal](https://binary.ninja/) and activate the license.
|
||||
3. Install Ghidra and JDK 21 (`sudo apt install openjdk-21-jdk`, then the [Ghidra release](https://github.com/NationalSecurityAgency/ghidra/releases)).
|
||||
4. Serial monitor: `screen` or `minicom`.
|
||||
|
||||
## Example: Compile and Flash `0x0001 hello, world`
|
||||
|
||||
Build the firmware:
|
||||
The **build** step is identical on all three platforms — CMake and Ninja are cross-platform, and the Pico extension's `~/.pico-sdk/cmake/pico-vscode.cmake` supplies the SDK, toolchain, and `picotool` paths on every OS. Only the **flash** and **serial** steps differ, so each platform is shown in full below. All three flash over the Debug Probe with SWD (`program <bin> 0x10000000 verify reset exit`) — no BOOTSEL, no UF2.
|
||||
|
||||
### Windows x64
|
||||
|
||||
```powershell
|
||||
cd 0x0001_hello-world
|
||||
cmake -B build -G Ninja -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
..\flash.ps1 build\0x0001_hello-world.bin
|
||||
```
|
||||
Serial monitor: **PuTTY** -> *Serial* -> the Debug Probe's COM port -> **115200**.
|
||||
|
||||
### macOS Apple Silicon
|
||||
|
||||
```bash
|
||||
cd 0x0001_hello-world
|
||||
cmake -B build -G Ninja -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
Flash the raw `.bin` over the Debug Probe with OpenOCD — no BOOTSEL, no UF2:
|
||||
|
||||
```bash
|
||||
# macOS / Linux
|
||||
../flash.sh build/0x0001_hello-world.bin
|
||||
screen /dev/cu.usbmodem* 115200
|
||||
```
|
||||
|
||||
```powershell
|
||||
# Windows
|
||||
..\flash.ps1 build\0x0001_hello-world.bin
|
||||
```
|
||||
|
||||
Then open the serial monitor at **115200** on the Debug Probe's UART bridge and you should see `hello, world` repeat:
|
||||
### Linux x64
|
||||
|
||||
```bash
|
||||
# macOS
|
||||
screen /dev/cu.usbmodem* 115200
|
||||
# Linux
|
||||
cd 0x0001_hello-world
|
||||
cmake -B build -G Ninja -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
../flash.sh build/0x0001_hello-world.bin
|
||||
screen /dev/ttyACM0 115200
|
||||
```
|
||||
|
||||
You should see `hello, world` repeat at 115200.
|
||||
|
||||
> **If CMake cannot find the SDK or toolchain** (for example you installed the toolchain yourself instead of via the VS Code extension), pass them explicitly:
|
||||
> ```bash
|
||||
> cmake -B build -G Ninja -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 -DCMAKE_BUILD_TYPE=Release \
|
||||
> -DPICO_SDK_PATH="$HOME/.pico-sdk/sdk/2.2.0" \
|
||||
> -DPICO_TOOLCHAIN_PATH="$HOME/.pico-sdk/toolchain/14_2_Rel1"
|
||||
> ```
|
||||
> On Windows use forward slashes, e.g. `C:/Users/<you>/.pico-sdk/sdk/2.2.0`.
|
||||
|
||||
Debug Probe wiring is [HERE](https://github.com/mytechnotalent/Embedded-Hacking/blob/main/hardware/dp.png).
|
||||
|
||||
<br>
|
||||
|
||||
Reference in new issue
Block a user