roll: third_party/pigweed roll: zephyr

74056a7 boards: st: stm32f0_disco: fix partition inline comment
785c454 boards: st: fix STM32WL5 boards DTS files coding style
a8430ef boards: st: fix STM32WB boards DTS files coding style
0e8069e boards: st: fix STM32WBA boards DTS files coding style
84add0d boards: st: fix STM32WB0 boards DTS files coding style
2418d03 boards: st: fix STM3U5 boards DTS files coding style
d9354ad boards: st: fix STM3U0 boards DTS files coding style
9777242 boards: st: fix STM3N6 boards DTS files coding style
cb09d19 boards: st: fix STM3MP1* boards DTS files coding style
0a3526b boards: st: fix STM32L5 boards DTS files coding style
37d545a boards: st: fix STM32L4 boards DTS files coding style
ea0eace boards: st: fix STM32L1 boards DTS files coding style
af3f64f boards: st: fix STM32L0 boards DTS files coding style
39a9fe9 boards: st: fix STM32H7* boards DTS files coding style
135e0dd boards: st: fix STM32H5 boards DTS files coding style
1aa8f51 boards: st: fix STM32G4 boards DTS files coding style
e8e3560 boards: st: fix STM32G0 boards DTS files coding style
3782c24 boards: st: fix STM32F7 boards DTS files coding style
721b3b8 boards: st: fix STM32F4 boards DTS files coding style
b6a3c0c boards: st: fix STM32F3 boards DTS files coding style
41129ab boards: st: fix STM32F2 boards DTS files coding style
c217fc4 boards: st: fix STM32F1 boards DTS files coding style
c865aa5 boards: st: fix STM32F0 boards DTS files coding style
8f02dc5 boards: st: fix STM32C0 boards DTS files coding style
440de0d fs: nvs: fix invalid block compare when data CRC is enabled
691816d tests: drivers: spi: spi_loopback: Test fast spi on slow GPIO port
623479c Bluetooth: RFCOMM: Fix CR bit in DISC frame
f06f6be boards: ai_wb2_12f: default to bflb_mcu_tool runner for flashing
75972e0 tests: west_runners: Add bflb_mcu_tool to import test
f275463 boards: bl604e_iot_dvk: default to bflb_mcu_tool runner for flashing
fb937be scripts: runners: Introduce bflb_mcu_tool runner
94f78a0 drivers: display: Fix Black White Red SSD16xx displays
e70fef3 samples: net/secure_mqtt_sensor_actuator: replenish filter condition
0baa6bc sample: sensor: Add support for temperature sensor on RT700 cm33_cpu1
84fb870 dts: arm: nxp: add i3c2/3 instances for cm33_cpu1
64ac57a arch: arm: Added IAR support to ARM irq header macros
8cfd849 arch: arm: mpu: Fix alignment check for iccarm
a9f2a19 boards: Add support for the board CH32V303EVT
be9549b soc: Add support for the WCH CH32V303
2b91c46 modules: Update hal_wch
265cfb4 boards: variscite: Adjust index.rst
d3ecec1 boards: variscite: Add Variscite DART-MX93 board
aa3af71 shields: add shield.yml for st_b_cams_imx_mb1854
b2de146 boards: ti: lp_mspm0g3507: fix doc to use code-block
18360d5 dts: arm: ti: mspm0: fix typo
c4866ec soc: cyw20829: Initial integrate Cypress MCUBoot for 20829
968704e soc: cyw20829: add support of Secure LCS
7ef83fc soc: cyw20829: Use python script to generate app header
3d26d4c boards: cyw20829: add custom flashloader with 64k of erase block size
bcf4d1a doc: west: releases: Fix typo
732c80f ci: use new docker image v0.28.0.20250523
b8f3263 toolchain: clang: compiler opt: -Ofast -> -O3 -ffast-math
e4b4a8d riscv: Increase TEST_EXTRA_STACK_SIZE to 4096 if c++ exceptions
3cdc5a9 tests/kernel: Disable -Werror when testing deprecated pipe APIs
0adac7c libc/minimal: Add stub 'sys/lock.h'
74c9e7a tests/c_lib: Skip double sqrt test when double is not 64 bits
c6a2107 doc: release-notes-4.2: Information about TC shim
dfde321 drivers; crypto: Remove TinyCrypt shim
2ddec2f arch: arm: update to use CMSIS_6 compatible macros
8b13c60 modules: CMSIS_6: update copyright
b853f01 doc: Update on switch to CMSIS_6
219fae6 sca: llvm: add support for clang static analyzer
7e00170 doc: toolchain: ATfE: fix formating
b234e86 tests: net: lib: lwm2m: detects no-operation setter and getter functions
42ad579 samples: drivers: adc_sequence: Add lp_em_cc2340r5 DT overlay
0acad3e samples: drivers: adc_dt: Add lp_em_cc2340r5 DT overlay
0800aa0 boards: ti: lp_em_cc2340r5: Add ADC support
d9134b3 dts: arm: ti: cc23x0: Add ADC support
dd5ed02 drivers: adc: Add support for cc23x0 ADC
66eb61a drivers: clock_control_mcux_syscon: confine RTC code to SOC_SERIES_MCXN
d7f1c0a drivers: wifi: siwx91x: Add support for Enhanced Legacy Power Save
c3ce29e drivers: wifi: siwx91x: Add support for get_power_save_config()
adae168 drivers: wifi: siwx91x: Add support for set_power_save()
b939714 doc: migration-guide-4.2: Add note about HTTP client response cb
00d214c tests: net: http_client: Add new testsuite for HTTP client
3572c9f net: http: client: Allow to abort download from response callback
73e248f net: zperf: Make UDP upload report retransmission count configurable
02530be net: zperf: Fix invalid zsock_recv() error check
a94209b shields: migrate to shield.yml
79e3ecb doc: boards: catalog: add shields to board catalog
df01afa scripts: west: commands: make use of shield.yml in west shields command
3a62b17 cmake: shields: introduce shield.yml
66fda82 shields: scripts: cmake: use list_shields.py in shields.cmake
93ced04 scripts: shields: handle BOARD_ROOT not containing shields folder
84980e0 boards: aithinker: update vendor name for Ai-Thinker WB2-12F board
e99e15d bindings: vendor-prefixes: add Ai-Thinker Co., Ltd. entry
e462ef3 drivers: video: ov7670: Set default format to RGB565 QVGA
2e25820 boards: stm32n6570_dk: Add touch screen support
5406259 tests: drivers: gpio_hogs: Add nrf54 platforms.
80b9040 soc: nordic: dmm: Add lock around sys_heap operations
37b4407 dts/renesas/smartbond: Add support for the ARMv8-M MPU
bf93559 doc: releases: State zbus API as stable
c71f51c api: zbus: Make zbus a stable API
d3ec916 sys: timeutil: check for 32-bit time_t to avoid warning (part 2)
4dea09d test: drivers: gpio: turn off rand generator.
270f5d6 soc: nordic: Use proper devicetree entries for clock frequency
dd99eda dts: arm: nordic: Add default rtc1 clock frequency to nrf53 network core
e553b29 dts: bindings: timer: Add default clock frequency for nordic grtc
a9d0a36 scripts: kconfig: Add dt_nodelabel_int_prop function
bc06d85 tests: kernel: timer: Align timer tests to nRF54

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

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: 4be0d002f0f5f1..f69d7754a173c4
Roll-Count: 1
Roller-URL: https://cr-buildbucket.appspot.com/build/8713787775503783841
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: Ifab733402bb0ff4f8af4db519bc164412d6de8bf
Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/294373
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: da0f3983d6f2c05913f282f22090437eda5bf2c4
  1. applications/
  2. build_overrides/
  3. fpga/
  4. lib/
  5. pcb/
  6. scripts/
  7. targets/
  8. third_party/
  9. tools/
  10. .gitignore
  11. .gitmodules
  12. .gn
  13. banner.txt
  14. bootstrap.fish
  15. bootstrap.sh
  16. BUILD.gn
  17. BUILDCONFIG.gn
  18. OWNERS
  19. pigweed.json
  20. README.md
README.md

Gonk

Getting Started

NOTE: If you are using a gonk_tools.zip bundle follow the instructions in the //tools directory: https://pigweed.googlesource.com/gonk/+/refs/heads/main/tools/

  1. Clone the repo

    git clone https://pigweed.googlesource.com/gonk
    
  2. Source bootstrap.sh to download all compilers and tooling into the environment directory:

    . ./bootstrap.sh
    

    This should init all git submodules for you.

  3. From here on the Pigweed environment is activated. You can activate the environment in a new shell without re-running bootstrap by sourcing activate.sh

    . ./activate.sh
    

Capture ADC samples and plot

  1. First bootstrap, run pw build and flash gonk using DFU.

    . ./bootstrap.sh
    
    pw build
    

    Unplug gonk from USB and replug with MODE button held down.

    Run gonk-flash on the MCU binary. This uses pyfu-usb.

    gonk-flash ./out/gn/arduino_size_optimized/obj/applications/gonk/gonk.bin
    
  2. Start capturing ADC samples with:

    gonk \
      --bitstream-file DEFAULT \
      --log-to-stderr
    
    • Press Enter to stop or start ADC continuous updates. It will begin automatically on startup.
    • Press ctrl-c to quit.
  3. Plot the logs from gonk-csv-log.txt with:

    python tools/gonk_tools/plot.py -i gonk-csv-log.txt -o plot.svg
    

Compilation Details

Build for the host and device by running:

pw build

This is mostly a shortcut with nice output for running gn gen out/gn and ninja -C out/gn.

The build commands are defined in: //tools/gonk_tools/build_project.py.

Gonk Verilog Build

The Verilog build requires the following to be installed on Linux:

sudo apt install fpga-icestorm nextpnr-ice40 yosys

Running pw build will run the FPGA toolchain if these commands are available on the $PATH:

  • icepack
  • icetime
  • nextpnr-ice40
  • yosys

The bitstream files will be written with the .bin extenson under ./out/gn/obj/fpga/*/*.bin along with log output files.

For example:

$ ls ./out/gn/obj/fpga/toplevel/
nextpnr-log.txt
toplevel.asc
toplevel.bin
toplevel.json
toplevel_timing_report.json
toplevel_timing_report.txt
yosys-log.txt

Gonk Firmware Build

Flash the stm32f7 and launch the gonk.py script on a bitstream file.

Flash via DFU

  1. Unplug gonk from USB and replug with MODE button held down.

  2. Run gonk-flash which uses pyfu-usb. The --bin-file argument is optional.

    gonk-flash --bin-file ./out/gn/arduino_size_optimized/obj/applications/gonk/bin/gonk.elf
    

Alternative: Flash with BlackMagic Probe

This is more useful if you are doing firmware debugging.

./scripts/flash-with-blackmagic-probe.sh ./out/gn/arduino_size_optimized/obj/applications/gonk/bin/gonk.elf

Generating the Gonk Python Bundle

This is a distibutable python wheel that can be used without the Gonk source checkout or compiling anything.

On Linux with the FPGA toolchain available run:

pw build

The zip file containing all the dependencies for the gonk python tooling is located in:

out/gn/obj/gonk_bundle.zip

Inside are the Python wheels for gonk_dist, gonk_firmware, and all third_party dependencies.

gonk_bundle
├── python_wheels
│   ├── appdirs-1.4.4-py2.py3-none-any.whl
│   ├── astroid-3.0.1-py3-none-any.whl
│   ├── ...
│   ├── gonk_dist-0.0.1+20240305140627-py3-none-any.whl
│   ├── gonk_firmware-0.0.1+20240305140542-py3-none-any.whl
│   ├── ...
│   └── wheel-0.40.0-py3-none-any.whl
├── requirements.txt
├── setup.bat
└── setup.sh

Appendix

CSV Log Format

Fields

  1. Host timestamp with format %Y%m%d %H:%M:%S.%f
  2. Delta microseconds (elapsed microseconds since the last ADC read) on the STM32 microcontroller side.
  3. 7 Voltage values
  4. 7 Current values
  5. 7 Power values
  6. Comment text

Example separated into multiple lines (with an empty comment field)

20240813 14:16:35.176433,
283,
0.8148437500000001, 0.8892578125, 5.212109375000001, 1.087109375, 0.8904296875000001, 3.3820312500000003, 1.8125,
0.058447916666666676, 0.031546875, 0.13443125, 0.015902343750000002, 0.0009143518518518518, 0.16081250000000002, 0.004143750000000001,
0.04762591959635418, 0.02805330505371094, 0.7006703784179689, 0.01728758697509766, 0.0008141660337094908, 0.5438729003906251, 0.007510546875000001,

GPIO assert events in the CSV

When GPIOs are pulled LOW (to ground) a line in the CSV will appear with delta_micros = 0 and empty measurement values. The Comment field will contain the GPIO assert log message.

Example:

20240813 14:12:32.930888, 0,
,,,,,,,
,,,,,,,
,,,,,,,
Header pin assert: 2

Compiling the FPGA Toolchain

yosys

See https://github.com/YosysHQ/yosys for more instructions.

On Ubuntu/Debian install the deps:

sudo apt-get install build-essential clang lld bison flex \
    libreadline-dev gawk tcl-dev libffi-dev git \
    graphviz xdot pkg-config python3 libboost-system-dev \
    libboost-python-dev libboost-filesystem-dev zlib1g-dev

Activate the bootstrap environment . ./bootstraph.sh then compile yosys.

git clone https://github.com/YosysHQ/yosys
cd yosys
git submodule update --init
make config-clang
make -j8

Install it to a known directory and add it to your $PATH:

make DESTDIR=$HOME/ice40-fpga-tools install
export $PATH=$PATH:$HOME/ice40-fpga-tools/usr/local/bin

fpga-icestorm

TODO: Document compiling from source.

nextpnr-ice40

TODO: Document compiling from source.

Updating STM32Cube

Checkout the desired commits in each of these submodules:

third_party/stm32cube_f7/cmsis_core
third_party/stm32cube_f7/cmsis_device
third_party/stm32cube_f7/hal_driver

Then run from Gonk root:

python -m pw_stm32cube_build gen_file_list third_party/stm32cube_f7

Gonk Pin Maps

Misc

NetSTM32 PinSTM32 FunctionFunction
STATUSPB13GPIO_OutputSTAT LED

Top 6 pin header (0.1inch pitch 2x3)

Visual header pin positions:

                             +-------------
+------+--------+-----+      |
|  2   | Ground |  6  |      |    USB-C
+------+--------+-----+      |    Port
|  1   |   3    | VCC |      |
+------+--------+-----+      +-------------
Header PinNetSTM32 Pin
1SPI_HDR_IO3PB0
2SPI_HDR_IO1PA2
3SPI_HDR_IO2PA3
4GND
5VCC_GONK
6SPI_HDR_IO0PA1

SPI Flash Connection

NetFPGA IO#STM32 PinSTM32 FunctionFlash Pin
ICE_SPI_SS71PD2GPIO_OutputS#
ICE_SPI_MISO68PB4SPI1_MISODQ1
ICE_SPI_MOSI67PB5SPI1_MOSIDQ0
ICE_SPI_SCK70PB3SPI1_SCKC
FLASH_HOLD63PC11GPIO_OutputHOLD#/DQ3
FLASH_WP64PC12GPIO_OutputW#/VPP/DQ2

FPGA Connection

NetFunctionFPGA IO#STM32 PinSTM32 FunctionNotes
FPGA_IO_SPARE_0_2rst_i135PA0GPIO_OutputActive high
FPGA_IO_SPARE_0_0mode_i137PB11GPIO_OutputFPGA operation mode
DSPI_CSvalid_o75PB6GPIO_OutputData/Transfer Valid
FPGA_IO_SPARE_1_1miso_i101PC2SPI1_MISO
FPGA_IO_SPARE_1_0mosi_i99PC3SPI1_MOSI
I2C_O_SDAcs_n79PB9SPI1_NSS
FPGA_IO_SPARE_0_1sclk_i136PB10SPI1_SCK
FPGA_IO_SPARE_2_049PA7
FPGA_IO_SPARE_2_148PA6
FPGA_IO_SPARE_2_247PA5
FPGA_IO_SPARE_2_345PA4