roll: third_party/pigweed 21 commits e51b311a154e11c pw_toolchain: Use `crate_name` for GN rust targets e194c83f1d06383 pw_toolchain: proc_macro GN cross compile ddcc251bcac0c2c pw_toolchain: Rustc cross compile to qemu-clang 2bccf25ed3d181d pw_build: Fix configs in pw_rust_executable 61f6e54585a0e81 pw_rust: Add no_std build to basic_executable 79f0dd143867866 pw_rust: Rename host_executable 9d49c47bb21b0cc pw_env_setup: Add rustc thumbv7m target 55c5087185c0ff3 pw_tokenizer: decode_optionally_tokenized without 280aeccf0bef690 pw_console: Additional UI and code themes 5cb019aed9d68b2 pw_web: NPM version bump to 0.0.22 1df8cb6e2022a85 pw_web: Show REPL message at every run 0e17c001aa2a1c6 pw_symbolizer: Add missing runfiles dep 59f96058375492f pw_rpc: Fix Typescript client streaming return typ 93c2ec369ab5a18 pw_console: Bump version of console js, add titles 8f276075de78ca5 pw_web: NPM version bump to 0.0.21 116b67dbec88d7b bazel: Manage Java deps through bzlmod 9b9615e17801148 pw_presubmit: Add new presubmit steps 285805a35a9878a pw_web: Enable custom titles, log-view access 71a9d5447de318e docs: Fix some bad links in the changelog 40caf32b68cf760 third_party/stm32cube: bzlmod-friendly changes df07efa092d4072 pw_rpc: Add yield mode constraint_setting https://pigweed.googlesource.com/pigweed/pigweed third_party/pigweed Rolled-Commits: b454ef6a4541f4f..e51b311a154e11c Roller-URL: https://ci.chromium.org/b/8740818360641304033 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I799e841c810514f8eb01ed336b6d417b1c7247e0 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/226919 Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com> Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Make sure you've set up Pigweed's prerequisites.
If you're on Windows, you can automate the initial setup by downloading the first-time setup script from cmd.exe:
curl https://pigweed.googlesource.com/pigweed/sample_project/+/main/tools/setup_windows_prerequisites.bat?format=TEXT > setup_pigweed_prerequisites.b64 && certutil -decode -f setup_pigweed_prerequisites.b64 setup_pigweed_prerequisites.bat && del setup_pigweed_prerequisites.b64
Then you can run the script with the following command in cmd.exe:
setup_pigweed_prerequisites.bat
Note: You may see a few UAC prompts as the script installs Git, Python, and enables developer mode.
Once that is done, you can clone this project with the following command:
git clone https://pigweed.googlesource.com/pigweed/kudzu
Pigweed uses a local development environment for most of its tools. This means tools are not installed to your machine, and are instead stored in a directory inside your project (Note: git ignores this directory). The tools are temporarily added to the PATH of the current shell session.
To make sure the latest tooling has been fetched and set up, run the bootstrap command for your operating system:
Windows
bootstrap.bat
Linux & Mac
source ./bootstrap.sh
After tooling updates, you might need to run bootstrap again to ensure the latest tools.
After the initial bootstrap, you can use use the activate scripts to configure the current shell for development without doing a full update.
Windows
activate.bat
Linux & Mac
source ./activate.sh
Install the pico SDK and tool to flash the device.
pw package install pico_sdk
pw package install picotool
These packages will be built and added to the path automatically. There is no need to add these to the gn arguments.
Install the GLFW OpenGL library
sudo apt install libglfw3-dev libglfw3
Put the following into /usr/lib/udev/rules.d/49-picoprobe.rules
# Pico app mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE:="0666", SYMLINK+="rp2040"
# RP2 Boot
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE:="0666", SYMLINK+="rp2040"
# Picoprobe
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666", SYMLINK+="picoprobe"
This will also symlink /dev/picoprobe and /dev/rp2040 to the respective vendor and product ids.
Apply the above rules with:
sudo udevadm control --reload-rules sudo udevadm trigger
pw build
Run the host app and connect to it via pw console:
./out/gn/host_device_simulator.speed_optimized/obj/applications/badge/bin/badge & \ pw console --socket-addr default ; \ killall badge
export ELF=./out/gn/rp2040.size_optimized/obj/applications/badge/bin/badge.elf picotool reboot -f -u && \ sleep 3 && \ picotool load -x $ELF
Connect with pw console:
pw console --verbose \ --baudrate 115200 \ --token-databases ./out/gn/rp2040.size_optimized/obj/applications/badge/bin/badge.elf \ --device /dev/rp2040
From Python Repl window you can issue RPCs interactively:
>>> device.rpcs.kudzu.rpc.Kudzu.PackageTemp() (Status.OK, kudzu.rpc.PackageTempResponse(temp=27.60657501220703))