roll: third_party/pigweed 76 commits d7f4cfe88a34541 pw_ide: VSC extension 1.0.0 release 37bbd5f8e53c1cf pw_bluetooth_sapphire: Remove unused method f683c3b7e34055e pw_bluetooth_sapphire: Remove variant from LE Send da931640a3ceaa3 pw_bluetooth_sapphire: Remove CommandPacketVariant 2cb52a5c040a068 pw_bluetooth_sapphire: Remove variant from QueueCo cd2cdd36b55215d pw_bluetooth_sapphire: Remove variant from QueueLe b9ee46f19af8b95 pw_bluetooth_sapphire: Create IsoDataChannel b88802f6fb17d16 pw_bluetooth_sapphire: Check legacy adv for rand a b2210dea6ecba21 pw_bluetooth_sapphire: Use platform-independent fo 11b6d22c96ffa25 pw_bluetooth_sapphire: Processing of CIS Establish 4e49c9a4d73cd65 roll: rules_python e4e974a53ee236d pw_bluetooth_sapphire: Use pw_bytes for endianness cbdf4ece80b860e pw_bluetooth_sapphire: Cleanup WritePageScanActivi 31314575c7d54b5 pw_bluetooth_sapphire: Cleanup into shared test fi f5bb47bd0316e6a pw_bluetooth_sapphire: Cleanup WriteLocalNameRespo 5592c7588a11a66 pw_bluetooth_sapphire: Fix camel case for CIS acro 6f990918d3f2ee6 pw_bluetooth_sapphire: Cleanup Inquiry command pac 003bbe28674612a pw_bluetooth_sapphire: Implement AcceptCis() d01cc5df086d910 pw_chrono_freertos: Work around no std::unique_loc 7bd3905ad725850 roll: Fuchsia SDK 29eecebfec5d803 pw_bluetooth_proxy: Remove debugging log 64fab36c47fbac1 pw_console: Default WebHandler.kernel_params to an ee443d56579423e pw_stream_uart_mcuxpresso: Check init state in Dei 95951f4f88891c1 bazel: Modernize pip deps style 9c64c8d1cd1cec4 pw_cpu_exception_cortex_m: Make PC LR optional a98647d744dc24c pw_toolchain: Add linux_sysroot.bzl 7dc26abc274fa80 pw_libcxx: Actually implement operator delete b2afd53cde2dcc9 pw_ide: Revise docs 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..d7f4cfe88a34541 Roller-URL: https://ci.chromium.org/b/8742085144004319921 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: Ib8b2fc913140c3e7013f4cd7a3ba59d7d3831f69 Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/224232 Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.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