roll: third_party/pigweed 300393a..0379712 (14 commits) 0379712:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/264639 pw_containers: Reduce map template expansion f1819cf:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282935 pw_env_setup: Roll clang-next 402011f:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/260419 pw_presubmit: Check that rst files are in Bazel b60380d:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282912 pw_tokenizer: Skip spaces in domains 4d02310:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282932 third_party: Add LLVM docs to Bazel build 59f60a7:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282914 pw_trace_tokenized: Add missing type_traits include 4387b94:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282732 pw_async2: Enable conversion warnings 68222f9:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282452 pw_async2: Use IntrusiveForwardList for task wakers b61bd3b:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282814 pw_perf_test: Set log level; minor updates 72f5894:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282775 pw_rpc: Add kconfig dependency on PIGWEED_THREAD_SLEEP 69fc79a:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282774 pw_sync_zephyr: Fix backend mapping for binary_semaphore 5ba1848:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/282776 pw_ring_buffer: Suppring reading via a pw::Function 1c277ee:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/280973 pw_async2: Crash if task returns Pending() without a waker 2ca5393:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/239232 pw_env_setup: Detect lack of Internet Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed Rolled-Commits: 300393a5efaf2d..037971222a1ff0 Roll-Count: 1 Roller-URL: https://cr-buildbucket.appspot.com/build/8717906920049472801 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: Idd48c3895ac24925fafe6d215f1d592f003fa5d7 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/283052 Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.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))