roll: third_party/pigweed 48 commits

510f3669f3efa06 pw_bluetooth_sapphire: Use pw_bytes for endianness
110886b36198cfe pw_bluetooth_sapphire: Use pw_bytes for endianness
8874d47ccfa465d pw_bluetooth_sapphire: Reorganize test_packets.h/.
721173ca9019b69 pw_bluetooth_sapphire: Cleanup WriteInquiryScanAct
63a1dce944a0fbe pw_bluetooth_sapphire: Use pw_bytes for endianness
b335456fdb77bb9 pw_bluetooth_sapphire: Use pw_bytes for endianness
fbda534b8e330ba pw_bluetooth_sapphire: Use pw_bytes for endianness
548f5c7af1b9af5 pw_bluetooth_sapphire: Remove unneeded #include
edc32d2d6933838 pw_bluetooth_sapphire: Use pw_bytes for endianness
4524992ebf7d7a4 pw_bluetooth_sapphire: Use pw_bytes for endianness
d7e8d2ff283c451 pw_bluetooth_sapphire: Use pw_bytes for endianness
3e71386abd84aec pw_bluetooth_sapphire: Use pw_bytes for endianness
3ac62ffae11dbdb pw_bluetooth_sapphire: Rename link_initiated to ou
a532db5b0ae5a4b pw_bluetooth_sapphire: Cleanup WriteScanEnable pac
50f4a97a1903282 pw_bluetooth_sapphire: Cleanup ReadScanEnable pack
41f05bde0a0e51c pw_bluetooth_sapphire: Remove alias for BrEdrConne
4be96ee0d8d1e07 pw_bluetooth_sapphire: BrEdrConnectionRequest crea
217e8726bf1c9d7 pw_bluetooth_sapphire: Add connection role to fake
57000edcfd2bb92 pw_bluetooth_sapphire: Remove double std::move in
22c3381a3cc63e3 pw_bluetooth_sapphire: Fix BrEdrDynamicChannel cra
aae665e766a0865 pw_bluetooth_sapphire: Cleanup BrEdrConnectionRequ
565760fe5122a2e pw_bluetooth_sapphire: Implement IsoStreamServer
a8285a5c71eebb7 pw_bluetooth_sapphire: Modernize fuchsia.hardware.
aa4a8e3d13ed126 pw_bluetooth_sapphire: Rename to secure_simple_pai
0c81249d91bb21b pw_bluetooth_sapphire: Use weak hci::BrEdrConnecti
61111f8a0a8a584 pw_bluetooth_sapphire: Create and use PairingState
fed1a4ac940f060 pw_bluetooth_sapphire: Implement GetCodecLocalDela
2ff9fd8832b11ad pw_bluetooth_sapphire: Add Bazel rules for FIDL la
e8a0c91ac25a4a2 pw_bluetooth_sapphire: Refactor ScoConnection
2036fdef704762d pw_bluetooth_sapphire: Fix max connection event le
a622862b3f0bc5d pw_bluetooth_sapphire: Add AdvertisingData.ToStrin
8b518ec2b747f12 pw_bluetooth_sapphire: Make UUID string parsing op
ec2a45e92ab2918 pw_bluetooth_sapphire: Add Adapter::GetSupportedDe
9695b4b71c9a788 pw_bluetooth_sapphire: Clean up legacy advertising
135b5344b4b2750 pw_bluetooth_sapphire: Add missing climits include
4b00cebc95b7131 pw_bluetooth_sapphire: Add Emboss support to SendC
3688ecf89dbc109 pw_bluetooth_sapphire: Improve naming of android n
993d153724f7fc9 pw_bluetooth_sapphire: Migrate emboss aliases to n
196ab220be84690 pw_bluetooth_sapphire: Add tests for LE Read Max.
2265b2568b2ddc9 pw_bluetooth_sapphire: Ensure command is supported
eb4af40890efea5 pw_bluetooth_sapphire: Use duration_cast for const
a5ca74b914e8205 pw_bluetooth_sapphire: Implement extended adv. pdu
5cf904b2b9af5fa pw_bluetooth_sapphire: Use `ull` constants for enu
41608a281538865 pw_bluetooth_sapphire: Update semantics of `bredr.
f1ee471410b4b2c pw_bluetooth_sapphire: Add the credit-based flow c
72a8ca6b98eb503 pw_bluetooth_sapphire: Migrate LEAdvertisingReport
40351f96a88b4cf pw_bluetooth_sapphire: Lenient LEGetVendorCapabili
2295d1150aa5748 pw_unit_test: Removed duplicate from forwarded var

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 5522843e83b016f..510f3669f3efa06
Roller-URL: https://ci.chromium.org/b/8742151601453986273
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I1f0d2346ab6a1b360bf75af01392573f7fefd24f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/223792
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
1 file changed
tree: 37194ba07f62beb68df2e49ae3ec1809ff1ed7aa
  1. applications/
  2. build_overrides/
  3. infra/
  4. pw_async_bench/
  5. pw_board_led/
  6. pw_board_led_arduino/
  7. pw_board_led_host/
  8. pw_board_led_mimxrt595_evk/
  9. pw_board_led_pico/
  10. pw_board_led_stm32cube/
  11. pw_board_led_stm32f429i_disc1/
  12. pw_board_led_stm32f769i_disc0/
  13. pw_digital_io_arduino/
  14. pw_digital_io_null/
  15. pw_digital_io_stm32cube/
  16. pw_display_driver/
  17. pw_display_driver_ili9341/
  18. pw_display_driver_imgui/
  19. pw_display_driver_mipi/
  20. pw_display_driver_null/
  21. pw_display_driver_st7735/
  22. pw_display_driver_st7789/
  23. pw_graphics/
  24. pw_mipi_dsi/
  25. pw_mipi_dsi_mcuxpresso/
  26. pw_pixel_pusher/
  27. pw_pixel_pusher_rp2040_pio/
  28. pw_spi_arduino/
  29. pw_spi_stm32cube/
  30. pw_spin_delay/
  31. pw_spin_delay_arduino/
  32. pw_spin_delay_host/
  33. pw_spin_delay_mcuxpresso/
  34. pw_spin_delay_rp2040/
  35. pw_spin_delay_stm32cube/
  36. pw_spin_delay_stm32f429i_disc1/
  37. pw_spin_delay_stm32f769i_disc0/
  38. pw_sys_io_baremetal_stm32f769/
  39. pw_toolchain_extra/
  40. targets/
  41. third_party/
  42. tools/
  43. .bazelignore
  44. .bazelrc
  45. .gitattributes
  46. .gitignore
  47. .gitmodules
  48. .gn
  49. activate.bat
  50. banner.txt
  51. bootstrap.bat
  52. bootstrap.sh
  53. BUILD.bazel
  54. BUILD.gn
  55. BUILDCONFIG.gn
  56. modules.gni
  57. navbar.md
  58. OWNERS
  59. pigweed.json
  60. README.md
  61. WORKSPACE
README.md

Pigweed Experimental

This repository contains a variety experiments to help inform various Pigweed policies, designs, and implementation behaviors.

Code in this repository is not reviewed to the standard of the main Pigweed repository, and generally speaking is untested and maintained on a best-effort basis. This is not a repository of “early access” Pigweed modules, but more so a sandbox for Pigweed contributors to collaborate on investigations. For more information, see the contribution guidelines for the experimental repository and where to land code.

DO NOT DEPEND ON THIS REPOSITORY IN ANY PRODUCTION PROJECT!

Repository setup

Clone this repo with --recursive to get all required submodules.

git clone --recursive https://pigweed.googlesource.com/pigweed/experimental

This will pull the Pigweed source repository into third_party/pigweed. If you already cloned but forgot to --recursive run git submodule update --init to pull all submodules.

pw_graphics

The //pw_graphics folder contains some libraries for drawing to an RGB565 framebuffer and displaying it on various platforms.

The demo applications that make use of these libraries are:

Build instructions

First time setup:

git clone --recursive https://pigweed.googlesource.com/pigweed/experimental
cd experimental
. ./bootstrap.sh
pw package install imgui
pw package install glfw
pw package install stm32cube_f4
pw package install pico_sdk

STM32F429-DISC1

Compile:

gn gen out --export-compile-commands --args="
  dir_pw_third_party_stm32cube_f4=\"$PW_PROJECT_ROOT/environment/packages/stm32cube_f4\"
"
ninja -C out

Flash:

openocd -f third_party/pigweed/targets/stm32f429i_disc1/py/stm32f429i_disc1_utils/openocd_stm32f4xx.cfg -c "program out/stm32f429i_disc1_stm32cube_debug/obj/applications/terminal_display/bin/terminal_demo.elf verify reset exit"

STM32F769-DISC0

First time setup:

pw package install stm32cube_f7

Compile:

gn gen out --export-compile-commands --args="
  dir_pw_third_party_stm32cube_f7=\"//environment/packages/stm32cube_f7\"
"
ninja -C out

Flash:

openocd -f targets/stm32f769i_disc0/py/stm32f769i_disc0_utils/openocd_stm32f7xx.cfg \
  -c "program out/stm32f769i_disc0_debug/obj/applications/blinky/bin/blinky.elf verify reset exit"

Linux, Windows or Mac

Compile:

gn gen out --export-compile-commands --args="
  dir_pw_third_party_imgui=\"$PW_PROJECT_ROOT/environment/packages/imgui\"
  dir_pw_third_party_glfw=\"$PW_PROJECT_ROOT/environment/packages/glfw\"
"
ninja -C out

Run:

out/host_debug/obj/applications/terminal_display/bin/terminal_demo

CURRENTLY NOT WORKING (https://pwbug.dev/325649415) - Raspberry Pi Pico Connected to an external SPI display

Working displays:

First time setup:

pw package install pico_sdk

Compile:

gn gen out --export-compile-commands --args='
  PICO_SRC_DIR="//environment/packages/pico_sdk"
'
ninja -C out

Flash:

  • Using a uf2 file:

    1. Reboot pico into BOOTSEL mode by holding the bootsel button on startup.
    2. Copy ./out/rp2040/obj/applications/terminal_display/terminal_demo.uf2 to your Pi Pico.
  • Using picotool:

    1. Reboot pico into BOOTSEL mode by holding the bootsel button on startup. Or try forcing a reboot with picotool:
    picotool reboot -f -u
    
    1. Flash the elf or uf2 file and reboot.
    picotool load ./out/rp2040/obj/applications/terminal_display/bin/terminal_demo.elf
    picotool reboot
    
  • Using a Pico Probe and openocd:

    This requires installing the Raspberry Pi foundation's OpenOCD fork for the Pico probe. More details including how to connect the two Pico boards is available at Raspberry Pi Pico and RP2040 - C/C++ Part 2: Debugging with VS Code

    Install RaspberryPi's OpenOCD Fork:

    git clone https://github.com/raspberrypi/openocd.git \
      --branch picoprobe \
      --depth=1 \
      --no-single-branch \
      openocd-picoprobe
    
    cd openocd-picoprobe
    
    ./bootstrap
    ./configure --enable-picoprobe --prefix=$HOME/apps/openocd --disable-werror
    make -j2
    make install
    

    Setup udev rules (Linux only):

    cat <<EOF > 49-picoprobe.rules
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666"
    KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666"
    EOF
    sudo cp 49-picoprobe.rules /usr/lib/udev/rules.d/49-picoprobe.rules
    sudo udevadm control --reload-rules
    

    Flash the Pico:

    ~/apps/openocd/bin/openocd -f ~/apps/openocd/share/openocd/scripts/interface/picoprobe.cfg -f ~/apps/openocd/share/openocd/scripts/target/rp2040.cfg -c 'program out/rp2040/obj/applications/terminal_display/bin/terminal_demo.elf verify reset exit'
    

    Launching gdb*

    ~/apps/openocd/bin/openocd -f ~/apps/openocd/share/openocd/scripts/interface/picoprobe.cfg -f ~/apps/openocd/share/openocd/scripts/target/rp2040.cfg
    
    gdb-multiarch -ex "target remote :3333" -ex "set print pretty on" out/rp2040/obj/applications/terminal_display/bin/terminal_demo.elf
    

    arm-none-eabi-gdb can be used in place of gdb-multiarch above.

MIMXRT595-EVK Connected to an external MIPI display

Setup NXP SDK:

  1. Build a NXP SDK
  2. Download SDK
  3. Extract SDK's zip file to //environment/SDK_2_12_1_EVK-MIMXRT595

Compile:

gn gen out --export-compile-commands --args="
  pw_MIMXRT595_EVK_SDK=\"//environment/SDK_2_12_1_EVK-MIMXRT595\"
  pw_target_mimxrt595_evk_MANIFEST=\"//environment/SDK_2_12_1_EVK-MIMXRT595/EVK-MIMXRT595_manifest_v3_10.xml\"
  pw_third_party_mcuxpresso_SDK=\"//targets/mimxrt595_evk:mimxrt595_sdk\"
"

ninja -C out

Flash the MIMXRT595-EVK:

Follow the instructions to flash the MIMXRT595-EVK with the SEGGER J-Link firmware and using arm-none-eabi-gdb at https://pigweed.dev/targets/mimxrt595_evk/target_docs.html#running-and-debugging.

Teensy 4.1

https://www.pjrc.com/teensy/loader_cli.html

brew install teensy_loader_cli
OBJCOPY=/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-objcopy
INFILE=out/arduino_debug/obj/applications/terminal_display/bin/terminal_demo.elf
OUTFILE=foo.hex
$OBJCOPY -O ihex -R .eeprom -R .fuse -R .lock -R .signature $INFILE $OUTFILE
teensy_loader_cli --mcu=TEENSY41 -w -v $OUTFILE