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>
1 file changed
tree: 0b17f7c75159b8d4bd77a628b0c84db0fec9d22e
  1. applications/
  2. build_overrides/
  3. lib/
  4. pcb/
  5. targets/
  6. third_party/
  7. tools/
  8. .bazelignore
  9. .bazelrc
  10. .bazelversion
  11. .gitignore
  12. .gitmodules
  13. .gn
  14. activate.bat
  15. banner.txt
  16. bootstrap.bat
  17. bootstrap.fish
  18. bootstrap.sh
  19. BUILD.gn
  20. BUILDCONFIG.gn
  21. OWNERS
  22. pigweed.json
  23. README.md
  24. WORKSPACE
README.md

Kudzu

Getting Started

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

Environment setup

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

Device tools setup

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.

Linux Setup

GLFW Dependency:

Install the GLFW OpenGL library

sudo apt install libglfw3-dev libglfw3

Udev Rules:

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

Compile:

pw build

Run:

Host

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

Kudzu

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))