commit | ed3a1178bae1a9a3412cb536d6574ccee00fa8e9 | [log] [tgz] |
---|---|---|
author | pigweed-roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> | Thu Aug 08 09:36:58 2024 +0000 |
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Aug 08 09:36:58 2024 +0000 |
tree | 2173861f04b5eaee87fc9e03c44c599b6c4fb8ab | |
parent | 0d1dfc44d898118416477cbc8c109fcb47f52b7b [diff] |
roll: third_party/pigweed 30 commits 04109d522e8b54b pw_toolchain: Clang support for Arm Cortex-M33 1d487225d2e5fc6 pw_ide: VSC extension 1.3.2 release 10d538fee6ed808 docs: Start Sense tutorial 28d16ef6f95b032 pw_ide: Show progress bar on manual refreshes fcb5ead44b10d2c pw_ide: Detect manual target change in settings a5271e92732267f third_party/icu: Remove ICU 2dd66edd629aee6 pw_web: Add resize handler to message col e004f5f292dd9d6 pw_allocator: Fix bucketed block corruption e6af48396fd8c94 pw_bluetooth_sapphire: Handle switch warning with 17a6be9e3c21fcb pw_bluetooth_sapphire: Handle switch warning with 9e1ed90cd304c1b pw_bluetooth_sapphire: Handle switch warning with d3dbe8c29f5acf9 pw_bluetooth_sapphire: Write Variable PIN Type for 5142577e6a89912 pw_bluetooth_sapphire: Add LegacyPairingState to B 4034273a4c9ddf0 pw_ide: Much faster VSC config parsing 371a125afe2dc53 pw_bluetooth_sapphire: Create and implement Legacy 5ca0a3f3a693b30 pw_bluetooth_sapphire: Handle switch warning with 21f40da8f7fe589 pw_bluetooth_sapphire: Handle switch warning with a17ba9be3dd7e58 pw_bluetooth_sapphire: Translate information & add 928309502f9c164 pw_bluetooth_sapphire: Return registered services 7f18f4dd14532a9 pw_bluetooth_sapphire: Handle switch enum warning 80c3d59adc51dbd pw_bluetooth_sapphire: Handle switch warning with 6f38831725f063e pw_bluetooth_sapphire: Fix shadow variable warning 038f1d423f7ed15 pw_bluetooth_sapphire: Add panic to EventTypeToStr c8044357419a608 bazel: Get picotool from the BCR b83d27482bb6ccf pw_bluetooth_sapphire: Switch over to pw::utf8 0fe4fa324363134 pw_bluetooth_sapphire: Remove unnecessary cast qua 700cfaf609aa933 pw_bluetooth_sapphire: Fix statement expression ex 59eb77108667b32 pw_bluetooth_sapphire: Fix variadic macro warnings c5a66b2e447524f pw_bluetooth: Improve ergonomics of emboss Support 37c87bbae3753e7 pw_digital_io: Add Mock https://pigweed.googlesource.com/pigweed/pigweed third_party/pigweed Rolled-Commits: 8436580deec2312..04109d522e8b54b Roller-URL: https://ci.chromium.org/b/8740182608917407969 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: Ifc49c9e247d9192cc1ecbe7f1b2d1e86733326e6 Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/228324 Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Bot-Commit: 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
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
Start capturing ADC samples with:
gonk \ --bitstream-file ./out/gn/obj/fpga/toplevel/toplevel.bin \ --database ./out/gn/arduino_size_optimized/obj/applications/gonk/bin/gonk.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
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
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
Flash the stm32f7 and launch the gonk.py
script on a bitstream file.
Unplug gonk from USB and replug with MODE button held down.
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
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
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
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 |