[third_party/pigweed] Roll 16 commits

e01ca5820679aeb pw_containers: Omit size on FlatMap construction
36a94a20ffbaf42 pw_snapshot: Add python processor tests
e7fc5d241ad4508 pw_bluetooth_proxy: Fix ordering of TEST arguments
314a7b9bfa1e540 pw_bluetooth: Comment why we include all emboss he
a5052ba92950982 pw_allocator: Make AllMetrics internal
14e0d76298d7690 pw_unit_test: Standardize ASSERT_OK_AND_ASSIGN
dea2ecf94d39c9c pw_unit_test: Clarify status macros are gunit-only
4c0dd405e0eedfa pw_build_info: Make the python module importable
a9707e739fefa6f pw_allocator: Fix SynchonizedAllocator data race
3d2be38e99af311 pw_presubmit: Remove --verbose_explanations flag
69675d0eddb6ce8 pw_transfer: Implement adaptive windowing in Java
0ce38d914d7f6de pw_presubmit: Use _LOG global for logging
1e72e7e55cef252 pw_presubmit: RST format updates
d01aa29f9f9e113 pw_presubmit: Allow disabling hook creation
bc6388fd60ff21b pw_tokenizer: Switch detokenize.h docs to Doxygen
5ee9af02a1ef96c docs: Mention @deprecated in the Doxygen style gui

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: c6e83c173d13b52..e01ca5820679aeb
Roller-URL: https://ci.chromium.org/b/8749787459871288417
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I2505e791cbce2752da3ed4a3d57cab39b9035b03
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/206074
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
1 file changed
tree: 0833b7b78f25bb5906a33948dc70716e2b268165
  1. applications/
  2. build_overrides/
  3. lib/
  4. pcb/
  5. targets/
  6. third_party/
  7. tools/
  8. .gitignore
  9. .gitmodules
  10. .gn
  11. activate.bat
  12. banner.txt
  13. bootstrap.bat
  14. bootstrap.sh
  15. BUILD.gn
  16. BUILDCONFIG.gn
  17. OWNERS
  18. pigweed.json
  19. README.md
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))