[third_party/pigweed] Roll 24 commits
d595cc8bc24ce2e pw_hdlc: Add async router
9bbfe80a2ffff7c pw_{log_basic,sys_io}: Fix Soong definitions
9c33f41cda92196 pw_trace_tokenized: Fix static initialization
3473c9118a43845 pw_log_tokenized: Define as cc_static_library
e0888f672378e3e pw_router: Define as cc_static_library
68e898711ea85b8 pw_toolchain: Define as cc_static_library
df4efa0243b5dba pw_result: Define as cc_static_library
595fd9562a8d905 pw_build_info: Add log function of GNU build ID
6ebdfaf68c2e080 pw_span: Define as cc_static_library
d99ef2cf38ae998 pw_preprocessor: Define as cc_static_library
04fbfa382513335 pw_bluetooth_sapphire: Add emulator start workflow
e9441715b774fc7 pw_polyfill: Define as cc_static_library
5c53b840a4ecd3f pw_rpc_transport: Define as cc_static_library
d6d27ec27a71859 pw_function: Define as cc_static_library
e0abef00c07545a pw_multibuf: Define as cc_static_library
cb32298c56d1b71 pw_log_null: Define as cc_static_library
7cffdd83bfd413c pw_thread: Follow Soong guidance
7682e4abe456481 pw_allocator: Add allocation detail storage to Tra
ebcc8c717f3980d pw_channel: Add loopback channel
72a1d6f484ecbd1 pw_toolchain: Remove unusued source set
16d3c47ab5a6d45 pw_status: Add StatusWithSize::size_or
55b88ef80fc2403 pw_channel: Split open bits for read and write
be2ee681c2c0176 pw_async2: Add PendFuncTask
a9d379800be4ccd pw_allocator: Distinguish between requested, usabl
https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: c59bb69e5e17000..d595cc8bc24ce2e
Roller-URL: https://ci.chromium.org/b/8752324174510496177
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: Id0b3d45d1c2240f3501cc4317e5ee9f4e339ca61
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/200610
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Commit-Queue: 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))