commit | b95a9a4fbd52748aed1bc1877bd4363bcf9e2995 | [log] [tgz] |
---|---|---|
author | pigweed-roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> | Mon Jun 03 09:35:51 2024 +0000 |
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Jun 03 09:35:51 2024 +0000 |
tree | 005e2a16493bd216dbb8141fb83e10e40b2d3bc6 | |
parent | e26bc5eaea2489d6c39c15f5debcf20626a84a86 [diff] |
[third_party/pigweed] Roll 29 commits b0b4108bd83aa5a roll: gn 386a40b1ab0043a [fuchsia_infra] Roll 29 commits ff21b928c01c169 pw_build: Add pw_elf_to_dump rule ee4eea8fda11b8d pw_digital_io_linux: Add trigger option to CLI wat eee966337afe905 pw_log: Cast log level to int32_t 962d662171f05d0 pw_transfer: Always terminate transfers on stream 66c06bc9f876fc1 docs: blog: Bazel feature flags 7a6837d6e7ca33d pw_digital_io_linux: Add "watch" command 1ed69ae399e31f7 pw_digital_io_linux: Add support for input interru e56d63cfa56952f pw_digital_io_linux: Move examples out to compiled 2fd1e9cc714a565 pw_digital_io_linux: Update mock_vfs a07f9d1b43ebf67 pw_digital_io_linux: Add log_errno.h 9e5f85b2ed9593a pw_system: Mention that extra libs need alwayslink 96313b7cc138b0c pw_malloc: Add allocator backends 93fa287dc5010cf targets/rp2040: Add pico/debug probe filtering fla bdc50b62ca4c11a pw_log_string: Set default log backend da28a3e5e0b0048 pw_stream_uart_mcuxpresso: InterruptSafeWriter exa 1aa9d51028fcbc3 pw_stream_uart_mcuxpresso: Stream example a9a64a72393ed20 pw_stream_uart_mcuxpresso: Use clock tree 57310630f125c37 pw_clock_tree: Introduce ElementController class 1a672e2605ac5a4 pw_clock_tree_mcuxpresso: Fix source set name and 1d491c30feb54ee pw_clock_tree: Fix source set name and visibility aaa553c8693be3d pw_stream_uart_mcuxpresso: DMA stream example e8dcc48f4c5e8aa mimxrt595: Upgrade to SDK_2_14_0_EVK-MIMXRT59 1f6ad3a910c7cb0 pw_multibuf: SimpleAllocatorForTest 7bb5a76cced7e77 docs: Update changelog 201c503d9d3f066 pw_build: Add pw_elf_to_bin rule fc373c8032fdfd0 pw_build: Populate executable field in return from 432437af38911f2 pw_system: Add host_device_simulator transitions https://pigweed.googlesource.com/pigweed/pigweed third_party/pigweed Rolled-Commits: 33602efe7702181..b0b4108bd83aa5a Roller-URL: https://ci.chromium.org/b/8746162009499042353 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: I8931a4ebe5550d322f3a2cb30d73e566bc56d944 Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/213452 Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com> Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Clone the repo
git clone https://pigweed.googlesource.com/pigweed/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 ./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 |