[third_party/pigweed] Roll 19 commits

afd316169759dd6 pw_bluetooth_sapphire: Move LegacyLowEnergyScanner
5c739bcdbbbfa7f SEED-0118: Claim SEED number
87c0c3bec90b694 pw_presubmit: Correct host in coverage presubmit
d18befe5952f6fc pw_bluetooth_sapphire: Create new LowEnergyScanner
a8eb8a3d5f2ebf6 pw_bluetooth_sapphire: Extended scanning support,
1dc5e7afd1aae8b pw_bluetooth_sapphire: Remove fidl fuzzer from bui
c440120d8bfcd27 pw_build_info: Fix relative paths in Python tests
3527d9b676c386e pw_bluetooth_sapphire: Refactor method and variabl
c0c533382b569ef pw_presubmit: Fix coverage options
db11358897e2c3f pw_system: Load all domain tokens
cf32519404ab824 pw_system: Style fixes to Python scripts
d11691777400232 pw_transfer: Limit to sending a single chunk in te
89588329bfc42c9 docs: Add changelog update instructions and tool
afac8b29114e86e pw_toolchain/arm_clang: Reduce binary size
9d2d05aa5bd9d36 pw_allocator: Refactor metric collection
2a854674b2c3707 pw_bluetooth: LE Request Peer SCA Complete event
f2301a70207870e pw_tokenizer: Move ReadUint32
c821a51c8023c9a pw_sensor: Claim SEED number for high level view
2fda6c82d5b6004 pw_protobuf: Add common_py_pb2 target

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 8b5d45a34aa2d4b..afd316169759dd6
Roller-URL: https://ci.chromium.org/b/8763195811068948625
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I8c74477903581e6766ec8117dc6623f1d1bcc576
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/182750
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: 1d097bbc04b2c626aca9b0895f7361d98f6667bd
  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-system-console:

./out/gn/host_device_simulator.speed_optimized/obj/applications/badge/bin/badge & \
  pw-system-console --socket-addr default \
    --proto-globs third_party/pigweed/pw_rpc/echo.proto ; \
  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-system-console:

pw-system-console --verbose \
  --baudrate 115200 \
  --proto-globs third_party/pigweed/pw_rpc/echo.proto \
  --token-databases ./out/gn/rp2040.size_optimized/obj/applications/badge/bin/badge.elf \
  --device /dev/rp2040