roll: third_party/pigweed 31 commits
5522843e83b016f pw_ide: Update VSC extension packaging
cc2beaffedcc51a pw_ide: Add proto extension as dependency
29715742befb0a6 pw_ide: Fix VSC troubleshooting links
1e6e5c51a80a41a pw_ide: Update compile commands tool version
288cab865e0ce4e pw_string: Disable wchar test for libcpp
4efaa47db19bf11 pw_console: Handle web logging in a separate threa
bce5a2c840bcf60 targets/rp2040: Fix assert basic termination behav
d616e78205d88ba pw_unit_test: Update logging_main compatibility
2766aa101c6e187 pw_libcxx: Add operator new
73a7627c588b5de pw_presubmit: Allow disabling checks in unit tests
f73539ca94138de pw_cpu_exception_cortex_m: Fix assembly
386caa7e2f4b97e rp2040: Add pw_libcxx as dep for system_async_exam
438d90e9e88a22d pw_bluetooth_sapphire: Migrate FIDL to bt::testing
b668ec403097832 pw_presubmit: No copyright check in .vscodeignore
031dba7cd2b4eae emboss: Remove -Wno-format-invalid-specifier
07a9afe8a840ef9 pw_ide: Don't show root comp DB dir as target
0c7db655fb64de7 pw_result: Fix docs.rst example
b188ee240266da8 pw_console: Cleanup web kernel on page close
3d2173aa0ad7ae1 pw_presubmit: Skip commit message check for merges
2772d9b730f5a5d bazel: Create separate "sanitizers" CI program
16d93199ea412dc pw_toolchain: Host clang toolchain for Bazel
60dd9633d53e69b pw_crypto: Don't build micro-ecc
9bdf7f88b60c4a2 bazel: Run under tsan, ubsan in presubmit
7de876e4cac8bb5 docs: Update pigweed.dev fonts
99f590845fe5e2b pw_cpu_exception_cortex_m: Temporarily disable tes
f08c484d94d7f45 emboss: Update emboss repo to v2024.0716.040724
2eb848eb3c427a2 pw_presubmit: Add test for inclusive language chec
55dbd768bf62a1d docs: Minor updates
fc32542d40ea2a3 pw_assert_trap: Add a new assert backend which tra
81aad1379cb7f23 pw_result: Add missing header
9d900358e89d603 pw_{kvs,result,tokenizer,unit_test}: Missing <stri
https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 789f3ef5abc6b6e..5522843e83b016f
Roller-URL: https://ci.chromium.org/b/8742175741835042593
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I423afed14433408d991a79a6ef7dd05c2320a2cf
Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/223468
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>
Clone the repo
git clone https://pigweed.googlesource.com/gonk
Source bootstrap.sh to download all compilers and tooling into the environment directory:
. ./bootstrap.sh
This should init all git submodules for you.
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
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.
The Verilog build requires the following to be installed on Linux:
sudo apt install fpga-icestorm nextpnr-ice40 yosys
Run this to compile:
pw build
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
Flash the stm32f7 and launch the write_fpga.py script on a bitstream file.
Unplug gonk from USB and replug with MODE button held down.
Run gonk-flash on the MCU binary. This uses pyfu-usb.
gonk-flash --bin-file ./out/gn/arduino_size_optimized/obj/applications/fpga_config/fpga_config.bin
Write an FPGA bitstream with the write_fpga.py script:
gonk \ --bitstream-file ./out/gn/obj/fpga/toplevel/toplevel.bin --database ./out/gn/arduino_size_optimized/obj/applications/fpga_config/bin/fpga_config.elf \ --log-to-stderr
You can redirect host and device logs to separate files with:
gonk \ --bitstream-file ./out/gn/obj/fpga/toplevel/toplevel.bin --database ./out/gn/arduino_size_optimized/obj/applications/fpga_config/bin/fpga_config.elf \ --host-logfile gonk-host-logs.txt \ --device-logfile gonk-device-logs.txt
./scripts/flash-with-blackmagic-probe.sh ./out/gn/arduino_size_optimized/obj/applications/spi_flash_test/bin/spi_flash_test.elf
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
Run the host app and connect to it via pw-system-console:
./out/gn/host_device_simulator.speed_optimized/obj/applications/system_example/bin/system_example & \ pw-system-console --socket-addr default \ --proto-globs third_party/pigweed/pw_rpc/echo.proto ; \ killall system_example
Flashing
openocd -s $PW_PIGWEED_CIPD_INSTALL_DIR/share/openocd/scripts \ -f $GONK_ROOT/targets/stm32f769i_disc0_stm32cube/openocd_stm32f7xx.cfg \ -c "program out/gn/stm32f769i_disc0_stm32cube.size_optimized/obj/applications/system_example/bin/system_example.elf reset exit"
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
| Net | STM32 Pin | STM32 Function | Function |
|---|---|---|---|
| STATUS | PB13 | GPIO_Output | STAT LED |
| Net | FPGA IO# | STM32 Pin | STM32 Function | Flash Pin |
|---|---|---|---|---|
| ICE_SPI_SS | 71 | PD2 | GPIO_Output | S# |
| ICE_SPI_MISO | 68 | PB4 | SPI1_MISO | DQ1 |
| ICE_SPI_MOSI | 67 | PB5 | SPI1_MOSI | DQ0 |
| ICE_SPI_SCK | 70 | PB3 | SPI1_SCK | C |
| FLASH_HOLD | 63 | PC11 | GPIO_Output | HOLD#/DQ3 |
| FLASH_WP | 64 | PC12 | GPIO_Output | W#/VPP/DQ2 |
| Net | Function | FPGA IO# | STM32 Pin | STM32 Function | Notes |
|---|---|---|---|---|---|
| FPGA_IO_SPARE_0_2 | rst_i | 135 | PA0 | GPIO_Output | Active high |
| FPGA_IO_SPARE_0_0 | mode_i | 137 | PB11 | GPIO_Output | FPGA operation mode |
| DSPI_CS | valid_o | 75 | PB6 | GPIO_Output | Data/Transfer Valid |
| FPGA_IO_SPARE_1_1 | miso_i | 101 | PC2 | SPI1_MISO | |
| FPGA_IO_SPARE_1_0 | mosi_i | 99 | PC3 | SPI1_MOSI | |
| I2C_O_SDA | cs_n | 79 | PB9 | SPI1_NSS | |
| FPGA_IO_SPARE_0_1 | sclk_i | 136 | PB10 | SPI1_SCK | |
| FPGA_IO_SPARE_2_0 | 49 | PA7 | |||
| FPGA_IO_SPARE_2_1 | 48 | PA6 | |||
| FPGA_IO_SPARE_2_2 | 47 | PA5 | |||
| FPGA_IO_SPARE_2_3 | 45 | PA4 |
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/fpga_config/fpga_config.bin
Start capturing ADC samples with:
python tools/gonk_tools/write_fpga.py \ --bitstream-file ./out/gn/obj/fpga/toplevel/toplevel.bin \ --database ./out/gn/arduino_size_optimized/obj/applications/fpga_config/bin/fpga_config.elf \ --host-logfile gonk-host-logs.txt \ --device-logfile gonk-device-logs.txt \ --log-to-stderr
Enter to stop or start ADC continuous updates. It will begin automatically on startup.ctrl-c to quit.Plot the logs from gonk-device-logs.txt with:
python tools/gonk_tools/plot.py -i gonk-device-logs.txt -o plot.svg