commit | 065dd746dd3a70d41a55f881aa83908a5573dc51 | [log] [tgz] |
---|---|---|
author | pigweed-roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> | Wed Mar 13 09:12:39 2024 +0000 |
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | Wed Mar 13 09:12:39 2024 +0000 |
tree | bbee693db737a692cde36db418f79cd3c3ab19aa | |
parent | e1d6650d83708668e8baf22e90156c109ec90906 [diff] |
[third_party/pigweed] Roll 17 commits 64c48347cf7ccbd pw_polyfill: Update __cplusplus macro for C++23; s a230ae449576bc3 pw_channel: Support datagram-to-byte conversions 22961f56a2bdc98 pw_allocator: Various API modifications 96c4cc2fc472b57 bazel: Use pw_facade 2f7282802bce209 pw_polyfill: Remove PW_INLINE_VARIABLE 3c48164394446e5 bazel: Introduce pw_facade 7995a693b330d2c pw_web: NPM version bump to 0.0.15 3e997d8134d55e7 pw_libc: Add uksqrtui to stdfix 60c4cef991b451c pw_channel: Handle closed channels in base caac07d3a5c440b pw_transfer: Add abort() and terminate() apis f9f0a915fed0c59 pw_{assert, thread_zephyr}: Apply formatting fixes 4f404e5d0cbcf95 pw_transfer: Update the proxy to only consider tra 0c001652b86381f pw_allocator: Add IsEqual 8c3aef92d3b774f docs: Fix mentions of sample_project db089088b951fdc pw_allocator: Soft-deprecate heap_viewer.py c8a45fd5afa72a9 pw_bluetooth: Add command complete event 84e0776bdfd8cb1 pw_bluetooth: Add command complete event https://pigweed.googlesource.com/pigweed/pigweed third_party/pigweed Rolled-Commits: 8160a4da123eb03..64c48347cf7ccbd Roller-URL: https://ci.chromium.org/b/8753592532146325265 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I7ddd8db76276cbedf6f25c8351d3e7f6ea2f8de7 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/196290 Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.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))