Skip to content

Commit a0e5280

Browse files
authored
Summary: Add the Cross compilation Script for RPi (4 & 5) for Linux host machine (#15014)
Test Plan: examples/raspberry_pi/rpi_setup.sh pi5 ... [100%] Linking CXX executable llama_main [100%] Built target llama_main [SUCCESS] LLaMA runner built successfully ==== Extracting Bundled Libraries ==== [INFO] Extracting GLIBC libraries from toolchain... [WARNING] Use bundled GLIBC script on RPI device ONLY if you encounter a GLIBC mismatch error when running llama_main. [SUCCESS] Bundled libraries prepared in: /home/sidart/working/executorch/cmake-out/bundled-libs [INFO] On Raspberry Pi, run: sudo ./install_libs.sh ==== Verifying Build Outputs ==== [INFO] Checking required binaries... [SUCCESS] ✓ llama_main (6.1M) [SUCCESS] ✓ libllama_runner.so (4.0M) [SUCCESS] ✓ libextension_module.a (89K) - static library [SUCCESS] All required binaries built successfully! ==== Setup Complete! ==== ✓ ExecuTorch cross-compilation setup completed successfully! 📦 Built binaries: • llama_main: /home/sidart/working/executorch/cmake-out/examples/models/llama/llama_main • libllama_runner.so: /home/sidart/working/executorch/cmake-out/examples/models/llama/runner/libllama_runner.so • libextension_module.a: Statically linked into llama_main ✅ • Bundled libraries: /home/sidart/working/executorch/cmake-out/bundled-libs/ 📋 Next steps: 1. Copy binaries to your Raspberry Pi pi5: scp /home/sidart/working/executorch/cmake-out/examples/models/llama/llama_main pi@<rpi-ip>:~/ scp /home/sidart/working/executorch/cmake-out/examples/models/llama/runner/libllama_runner.so pi@<rpi-ip>:~/ scp -r /home/sidart/working/executorch/cmake-out/bundled-libs/ pi@<rpi-ip>:~/ 2. Copy shared libraries to system location: sudo cp libllama_runner.so /lib/ # Only this one needed! sudo ldconfig 3. Dry run to check for GLIBC or other issues: ./llama_main --help # Ensure there are no GLIBC or other errors before proceeding. 4. If you see GLIBC errors, install bundled libraries: cd ~/bundled-libs && sudo ./install_libs.sh source setup_env.sh # Only do this if you encounter a GLIBC version mismatch or similar error. 5. Download your model and tokenizer: # Refer to the official documentation for exact details. 6. Run ExecuTorch with your model: ./llama_main --model_path ./model.pte --tokenizer_path ./tokenizer.model --seq_len 128 --prompt "What is the meaning of life ?" 🎯 Deployment Summary: 📁 Files to copy: 2 (llama_main + libllama_runner.so) 🏗️ Extension module: Built-in (no separate .so needed) 🔧 Toolchain saved at: /home/sidart/working/executorch/arm-toolchain/arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu 🔧 CMake toolchain file: /home/sidart/working/executorch/arm-toolchain-pi5.cmake Happy inferencing! 🚀 ### Summary [PLEASE REMOVE] See [CONTRIBUTING.md's Pull Requests](https://github.com/pytorch/executorch/blob/main/CONTRIBUTING.md#pull-requests) for ExecuTorch PR guidelines. [PLEASE REMOVE] If this PR closes an issue, please add a `Fixes #<issue-id>` line. [PLEASE REMOVE] If this PR introduces a fix or feature that should be the upcoming release notes, please add a "Release notes: <area>" label. For a list of available release notes labels, check out [CONTRIBUTING.md's Pull Requests](https://github.com/pytorch/executorch/blob/main/CONTRIBUTING.md#pull-requests). ### Test plan [PLEASE REMOVE] How did you test this PR? Please write down any manual commands you used and note down tests that you have written if applicable.
1 parent bbe36f8 commit a0e5280

File tree

8 files changed

+623
-1
lines changed

8 files changed

+623
-1
lines changed
File renamed without changes.

examples/rpi/pico2/README.md renamed to examples/raspberry_pi/pico2/README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
This document outlines the steps required to run a simple Add Module on the Pico2 microcontroller using executorch.
33

44
## (Pre-requisistes) Prepare the Environment for Arm
5-
1. See <a href="https://docs.pytorch.org/executorch/main/tutorial-arm.html#set-up-the-developer-environment"/> for instructions on setting up the environment for Arm.
5+
6+
1. Setup executorch development environment, Also see <a href="https://docs.pytorch.org/executorch/main/tutorial-arm-ethos-u.html#software"/> for instructions on setting up the environment for Arm.
67
2. Make sure you have the toolchain configured correctly.
8+
79
```bash
810
which arm-none-eabi-gcc
911
--> return something like executorch/examples/arm/ethos-u-scratch/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc
@@ -22,9 +24,11 @@ executorch/examples/rpi/build_firmware_pico.sh --model=<path_to_model.pte>
2224
```
2325

2426
### Flash Firmware
27+
2528
Hold the BOOTSEL button on the Pico2 and connect it to your computer; it will mount as RPI-RP2. Copy the executorch_pico.uf2 file to this drive.
2629

2730
### Verify Execution
31+
2832
Check that the Pico2's LED blinks 10 times at 500 ms interval to confirm successful firmware execution.
2933
The Pico2's LED should blink 10 times at 500 ms intervals, indicating successful firmware execution. If connected via serial, you should see:
3034

@@ -34,7 +38,9 @@ Output: 13.000000, 136.000000, 24.000000, 131.000000
3438
```
3539

3640
### Debugging via Serial Terminal
41+
3742
On macOS or Linux, open a serial terminal with:
43+
3844
```bash
3945
screen /dev/tty.usbmodem1101 115200
4046
```
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)