roll: third_party/pigweed roll: zephyr

cf6170c doc: build: dts: api: document the zephyr,camera chosen node
c00015d samples: drivers: video: tcpserversink: add _dev suffix to variable
be5df19 samples: drivers: video: tcpserversink: sort header alphabetically
1b3f96c samples: drivers: video: convert to new LOG_MODULE_REGISTER() syntax
a3465f8 drivers: video: sw_generator: convert to use the devicetree
cc66467 samples: drivers: video: fix board definitions
5fa26d9 video: gc2145: use VGA resolution as default
79e218a video: gc2145: add CSI mode of the GC2145 sensor
979d8ff video: gc2145: avoid default DVP enabling
eeab052 video: st_mipid02: addition of ST MIPID02 CSI bridge
b0432a8 video: add LINK_FREQ ctrl and a helper to retrieve it
b5d8aee video: common: addition of INTEGER_MENU control type
a459f1d video: addition of CSI2 standard data-type defines
450345a ci: move weekly build back to sunday night
8c7417a drivers: i3c: fix adv_info_get ret code
8286b0e doc: coding guidelines: clarify severity
ff3d5f8 drivers: pwm: pwm_nrf_sw: use shutdown task if available
240b560 drivers: ssp: unify clock selection flow across ACE platforms
af1ba95 drivers: i3c: cdns: add busy status
bb797ab cmake: Fix compilation options for kobject_hash*.c
e87e054 drivers: spi_bitbang: Increase supported word size to 32 bits
c8c0c29 arch: arm: cortex_a_r: use correct name for TLB Conflict Abort
5ab74ff doc: arm: cortex_m: Update PACBTI support
c6d1932 doc: arm: cortex_m: Update feature table
35b5fb3 arch: arm: cortex_m: Add support for PACBTI flags
e7dd7ab drivers: i2c: Add support for clock stretching in the i2c-gpio module.
d3a7b7d drivers: i3c: cdns: fix ibi length with no payload
a673871 drivers: sensor: Remove broken reset from apds9306 driver
62ea066 scripts: west_commands: simulate: Fix linter issues
b9fb5d7 scripts: west_commands: robot: Fix linter issues
359a0c2 scripts: west_commands: flash: Fix linter issues
5321c14 scripts: west_commands: debug: Fix linter issues
d9d4daa scripts: west_commands: build_helpers: Fix linter issues
166fd3e scripts: west_commands: build: Fix linter issues
2dc9c2b samples: subsys: nvs: add testcase for MCXN947 internal flash
bb7f776 boards: nxp: frdm_mcxn947 and mcx_n9xx_evk: enable clock for FMU
1fd24fb soc: nxp: mcx: MCXNx4x: update SOC to use flash_k4 driver
6681f8d soc: nxp: s32k3: configure missing mpu regions
63ebf4d Revert "arch: arm: mpu: fix erratum 1013783-B"
db726c4 sw_isr_table: Add spaces to fix compiler warning
ae114f1 tests: modem_ubx: Fix clang failure by removing static keyword
923fedb arch/x86/core: Use CONFIG_QEMU_TARGET for QEMU specific code
d54c308 docs: fix typo in vendor-prefixes for Digilent Inc.
dbb3243 samples: sensor: accel_trig: add fixture for shield-tap
66d90e7 soc: nxp_kinetis: Mark  __kinetis_flash_config  with __used attribute
481711e tests: spi_loopback: Fix fail handle of thread test
c10c13b tests: spi_loopback: Handle overflow of print latency
eb5014f soc: imxrt: add mimxrt1052/1062 flashing configuration
df65918 drivers: spi: spi_context.h: remove multithreading dependency
7af5523 driver: sensor: aosong,dht: fix sensor protocol broken since change #83192
1fb86e1 doc: release: update/consolidate LTS information
36e0b3d modules: optional: rust: Update to latest development
c6a41a4 tests: boot: Update imgtool path in west_sign_wrapper
f5d1803 tests: drivers: build_all: stepper: add uart configuration for tmc51xx
358907b drivers: stepper: adi_tmc: tmc51xx uart support
a66d064 drivers: stepper: adi_tmc: extend rampstat mask range
b914537 drivers: stepper: adi_tmc: extend to support uart
6cc860d drivers: stepper: adi_tmc: bus: abstraction layer for bus
bceeb76 dts: bindings: stepper: adi: tmc51xx uart support
94a7f02 ubx: Refactor codebase in order to improve usability
f1df212 soc: rw: Enable flexcomm wakeup/sleep clocking
e5a35e6 drivers: uart_mcux_flexcomm: Enable as wakeup src
4598c18 soc: rw: Switch main clock on PM2 to LPOSC
6bd6e50 pm: Add API to check if a state disables a device
65ebecb pm: refactor policy_device_ get/put
481a2fa uart_mcux_flexcomm: Fix TX garbage char bug in PM
a550c74 doc: document `WIFI_USAGE_MODE`
3aa61a9 tests: wifi: nrf_wifi: reduce config overrides
3d7979e drivers: wifi: nxp: auto `NXP_WIFI_SOFTAP_SUPPORT`
53cf5ff drivers: wifi: esp32: auto `ESP32_WIFI_AP_STA_MODE`
90a2d0e drivers: wifi: nrf_wifi: operation mode from application request
7dbd36a drivers: wifi: options for application usage of Wi-Fi
5cffb8e modules: lvgl: Register print callback after lv_init
3d24070 kernel: work: add k_work_queue_run()
2c69e7c dts: vendor: nordic: Fix wrong GPREGRET addresses
e04f679 openthread: Add Kconfigs for packet TX time and carrier functions
0336721 led: fix up the ENOSYS condition to pass coverity
af43487 tests: boards: nrf: i2s: i2s_divider: Confirm CLK divider value
b991632 tests: drivers: i2s: i2s_speed: Fix typo in Kconfig file
801107e drivers: firmware: add IRONside boot report
588c2e6 soc: esp32c6: Fix sleep routine
5712c96 west.yml: hal_espressif: Fix ESP32-C6 sleep routine
8951711 drivers: uhc: udc: use DYNAMIC_INTERRUPTS for KHCI and EHCI
e98cfa4 boards: nxp: add uhc support for mimxrt1050_evk
a8796ca boards: nxp: add uhc support for frdm_k22f, rt1060, lpc55s69 and lpc55s28
abfa945 drivers: uhc: implement nxp mcux uhc driver
7bbb834 Revert "posix: rwlock: Refactor locking using k_timepoint_t"
0a6e579 Revert "posix: net: move static inline gethostname() to lib definition"
a649b31 Revert "posix: device_io: mark pwrite() buf as const"
da48a04 Revert "posix: sysconf: match _SC* defines with newlib/picolib"
a098f5c Revert "posix: move PTHREAD_STACK_MIN to posix_features"
d410b2c samples: counter: alarm: undef redefined TIMER for ambiq
d5931ba net: lib: coap: Return an error on removing a non-existing observer
39ae9c3 samples: drivers: counter: alarm: support nrf54h and nrf54l
c0c1b0a drivers: flash: Align NXP flash drivers on parameter checking
298f6d8 drivers: flash: Add documentation on read API
73faf5c doc: doxygen: Add openthread module header to INPUT
47f39a1 net: openthread: Remove OpenThread module API from net header
201d928 openthread: Add header for OpenThread module
463f518 drivers: Update dtc transfer info alignment

Roll-Count: 1
GitWatcher: ignore
Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/295405
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Original-Revision: c40a7a1128aeddfabc61e129f3d47ef225dbe8de

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: a1e8863cfc6d7a..c40a7a1128aedd
Roll-Count: 1
Roller-URL: https://cr-buildbucket.appspot.com/build/8713188602466236609
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I99037a8ea561662f7b1c107b37ecedf155852c4f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/295533
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
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: b247a83704ebc137c140282834d6c77225c6e513
  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. .bazelversion
  46. .clang-tidy
  47. .gitattributes
  48. .gitignore
  49. .gitmodules
  50. .gn
  51. activate.bat
  52. banner.txt
  53. bootstrap.bat
  54. bootstrap.sh
  55. BUILD.bazel
  56. BUILD.gn
  57. BUILDCONFIG.gn
  58. MODULE.bazel
  59. modules.gni
  60. navbar.md
  61. OWNERS
  62. pigweed.json
  63. README.md
  64. ROLLER_OWNERS
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