diff --git a/BUILD.gn b/BUILD.gn
index e14edf1..53fc8c2 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -35,8 +35,7 @@
     "//applications/system_example(//targets/stm32f769i_disc0_stm32cube:stm32f769i_disc0_stm32cube.size_optimized)",
 
     # Arduino targets
-    "$dir_pw_status:status_test($dir_pigweed/targets/arduino:arduino_size_optimized)",
-    "//applications/hello_world($dir_pigweed/targets/arduino:arduino_size_optimized)",
+    "//applications/spi_flash_test($dir_pigweed/targets/arduino:arduino_size_optimized)",
   ]
 }
 
diff --git a/README.md b/README.md
index 06067c1..508ba95 100644
--- a/README.md
+++ b/README.md
@@ -40,9 +40,57 @@
 
 The build commands are defined in: `//tools/gonk_tools/build_project.py`.
 
-## Run:
+## Gonk `spi_flash_test` Example
 
-### Host
+### Flash with `dfu-util`
+
+1. Create a bin file from the elf. This will be automated later.
+
+   ```sh
+   arm-none-eabi-objcopy -O binary \
+     ./out/gn/arduino_size_optimized/obj/applications/spi_flash_test/bin/spi_flash_test.elf \
+     ./out/gn/arduino_size_optimized/obj/applications/spi_flash_test/bin/spi_flash_test.bin
+   ```
+
+1. Unplug gonk from USB and replug with MODE button held down.
+
+1. Run dfu-util to flash.
+
+   ```sh
+   dfu-util -d 0483:df11 -s 0x08000000:leave \
+     --serial STM32FxSTM32 -a 0 \
+     -D ./out/gn/arduino_size_optimized/obj/applications/spi_flash_test/bin/spi_flash_test.bin
+   ```
+
+1. Unplug Gonk from USB and replug to reset the hardware. SPI bus issues have
+   been observed without this step.
+
+1. Connect over serial.
+
+   ```sh
+   python -m serial.tools.miniterm --raw /dev/ttyGonk 115200
+   ```
+
+   You should see output matching:
+
+   ```
+   --- Miniterm on /dev/ttyGonk  115200,8,N,1 ---
+   --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
+   INF  Device id: 1f 84 1
+   INF  Device id: 1f 84 1
+   INF  Device id: 1f 84 1
+   INF  Device id: 1f 84 1
+   ```
+
+
+### Flash with BlackMagic Probe:
+
+```sh
+./scripts/flash-with-blackmagic-probe.sh ./out/gn/arduino_size_optimized/obj/applications/spi_flash_test/bin/spi_flash_test.elf
+```
+
+## pw_system Example
+### Run on Host
 
 Run the host app and connect to it via `pw-system-console`:
 
@@ -53,7 +101,7 @@
   killall system_example
 ```
 
-### On device
+### Run on Device
 
 Flashing
 
@@ -78,3 +126,34 @@
 ```sh
 python -m pw_stm32cube_build gen_file_list third_party/stm32cube_f7
 ```
+
+# Pin Map
+
+## Misc
+
+| Net    | STM32 Pin | STM32 Function | Function |
+|--------+-----------+----------------+----------|
+| STATUS | PB13      | GPIO_Output    | STAT LED |
+
+## SPI Flash Connection
+
+| Net          | STM32 Pin | STM32 Function | Flash Pin  |
+|--------------|-----------|----------------|------------|
+| ICE_SPI_SS   | PD2       | GPIO_Output    | S#         |
+| ICE_SPI_MISO | PB4       | SPI1_MISO      | DQ1        |
+| ICE_SPI_MOSI | PB5       | SPI1_MOSI      | DQ0        |
+| ICE_SPI_SCK  | PB3       | SPI1_SCK       | C          |
+| FLASH_HOLD   | PC11      | GPIO_Output    | HOLD#/DQ3  |
+| FLASH_WP     | PC12      | GPIO_Output    | W#/VPP/DQ2 |
+
+## FPGA Connection
+
+| 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 |
+| FPGA_IO_SPARE_0_1 | valid_o  |      136 | PB10      | GPIO_Output     | Data/Transfer Valid |
+| DSPI_SCK          | sclk_i   |       76 | PB2       | QUADSPI_CLK     |                     |
+| DSPI_CS           | cs_n     |       75 | PB6       | QUADSPI_BK1_NCS |                     |
+| DSPI_IO1          | mosi_i   |       74 | PC10      | QUADSPI_BK1_IO1 |                     |
+| DSPI_IO0          | miso_i   |       73 | PC9       | QUADSPI_BK1_IO0 |                     |
diff --git a/applications/hello_world/BUILD.gn b/applications/hello_world/BUILD.gn
deleted file mode 100644
index 3be9ef7..0000000
--- a/applications/hello_world/BUILD.gn
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2020 The Pigweed Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-#     https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
-
-import("//build_overrides/pigweed.gni")
-
-import("$dir_pw_arduino_build/arduino.gni")
-import("$dir_pw_build/target_types.gni")
-
-pw_executable("hello_world") {
-  # Example of how to include Arduino style libraries:
-  #
-  # Common library arguments to the arduino_builder tool.
-  # _library_args = [
-  #   "--library-path",
-  #   rebase_path("libraries"),
-  #   "--library-names",
-  #   "ExampleLibraryName",
-  # ]
-  #
-  # _library_cpp_files = exec_script(
-  #     arduino_builder_script,
-  #     arduino_show_command_args + _library_args +
-  #     [ "--library-cpp-files" ],
-  #     "list lines"
-  # )
-  #
-  # include_dirs = exec_script(
-  #     arduino_builder_script,
-  #     arduino_show_command_args + _library_args +
-  #     [ "--library-include-dirs" ],
-  #     "list lines"
-  # )
-
-  sources = [ "main.cc" ]
-
-  deps = [
-    "$dir_pw_log",
-    "$dir_pw_string",
-    "$dir_pw_third_party/arduino:arduino_core_sources",
-  ]
-
-  ldflags = [ "-Wl,--print-memory-usage" ]
-
-  remove_configs = [ "$dir_pw_toolchain/arm_gcc:enable_float_printf" ]
-}
diff --git a/applications/hello_world/main.cc b/applications/hello_world/main.cc
deleted file mode 100644
index 390e6ca..0000000
--- a/applications/hello_world/main.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2023 The Pigweed Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-//     https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-#include <Arduino.h>
-#include <cstdint>
-
-#include "pw_log/log.h"
-#include "pw_string/format.h"
-
-int main() {
-  char buffer[32];
-  uint16_t update_count = 0;
-
-  while (true) {
-    pw::string::Format(buffer, "Message number: %u", update_count);
-    PW_LOG_INFO("%s", buffer);
-    delay(1000);
-
-    update_count = (update_count + 1) % UINT16_MAX;
-  }
-
-  return 0;
-}
diff --git a/applications/spi_flash_test/BUILD.gn b/applications/spi_flash_test/BUILD.gn
new file mode 100644
index 0000000..69cb2f4
--- /dev/null
+++ b/applications/spi_flash_test/BUILD.gn
@@ -0,0 +1,38 @@
+# Copyright 2020 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import("//build_overrides/pigweed.gni")
+
+import("$dir_pw_arduino_build/arduino.gni")
+import("$dir_pw_build/target_types.gni")
+
+pw_executable("spi_flash_test") {
+  include_dirs = [ "//third_party/stm32duino/arduino-core/libraries/SPI/src" ]
+
+  sources = [
+    "//third_party/stm32duino/arduino-core/libraries/SPI/src/SPI.cpp",
+    "//third_party/stm32duino/arduino-core/libraries/SPI/src/utility/spi_com.c",
+    "main.cc",
+  ]
+
+  deps = [
+    "$dir_pw_log",
+    "$dir_pw_string",
+    "$dir_pw_third_party/arduino:arduino_core_sources",
+  ]
+
+  ldflags = [ "-Wl,--print-memory-usage" ]
+
+  remove_configs = [ "$dir_pw_toolchain/arm_gcc:enable_float_printf" ]
+}
diff --git a/applications/spi_flash_test/main.cc b/applications/spi_flash_test/main.cc
new file mode 100644
index 0000000..e1d9bef
--- /dev/null
+++ b/applications/spi_flash_test/main.cc
@@ -0,0 +1,90 @@
+// Copyright 2023 The Pigweed Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+#include <Arduino.h>
+#include <cstdint>
+
+#include <SPI.h>
+
+#include "pw_log/log.h"
+#include "pw_string/format.h"
+
+// STM32 Port & pin          // PCB NET Name
+const int ICE40Reset = PC13; // ICE_RST_N
+const int ICE40Done = PC8;   // ICE_CDONE
+const int FlashCS = PD2;     // ICE_SPI_SS
+const int FlashHold = PC11;  // FLASH_HOLD
+const int FlashWP = PC12;    // FLASH_WP
+const int FlashMOSI = PB5;   // ICE_SPI_MOSI
+const int FlashMISO = PB4;   // ICE_SPI_MOSI
+const int FlashCLK = PB3;    // ICE_SPI_SCK
+const int StatusLed = PB13;  // STATUS
+
+int main() {
+  Serial.begin(115200);
+
+  // Put FPGA in reset.
+  PW_LOG_INFO("Hold FPGA in reset");
+  pinMode(ICE40Reset, OUTPUT);
+  digitalWrite(ICE40Reset, LOW);
+  delay(10);
+
+  // Debug status LED
+  pinMode(StatusLed, OUTPUT);
+  digitalWrite(StatusLed, LOW);
+
+  // SPI pin definitions
+  pinMode(FlashCS, OUTPUT);
+  digitalWrite(FlashCS, HIGH);
+
+  SPI.setMISO(FlashMISO);
+  SPI.setMOSI(FlashMOSI);
+  SPI.setSCLK(FlashCLK);
+  SPI.begin();
+
+  char buffer[32];
+  uint16_t update_count = 0;
+  uint8_t manufacturer_id[4];
+
+  while (true) {
+
+    // Read the SPI Flash JEDEC ID.
+    manufacturer_id[0] = 0x9f;
+    manufacturer_id[1] = 0;
+    manufacturer_id[2] = 0;
+    manufacturer_id[3] = 0;
+    SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
+    digitalWrite(FlashCS, LOW);
+    SPI.transfer(manufacturer_id, 4);
+    digitalWrite(FlashCS, HIGH);
+    SPI.endTransaction();
+
+    pw::string::Format(buffer, "SPI Flash JEDEC ID: %x %x %x",
+                       manufacturer_id[1], manufacturer_id[2],
+                       manufacturer_id[3]);
+    PW_LOG_INFO("%s", buffer);
+    delay(1000);
+
+    update_count = (update_count + 1) % UINT16_MAX;
+
+    // Toggle status LED each loop.
+    if (update_count % 2 == 0) {
+      digitalWrite(StatusLed, HIGH);
+    } else {
+      digitalWrite(StatusLed, LOW);
+    }
+  }
+
+  return 0;
+}
diff --git a/scripts/flash-with-blackmagic-probe.sh b/scripts/flash-with-blackmagic-probe.sh
index df3248b..8b87f09 100755
--- a/scripts/flash-with-blackmagic-probe.sh
+++ b/scripts/flash-with-blackmagic-probe.sh
@@ -22,10 +22,13 @@
     -ex "set confirm off" \
     -ex "target extended-remote ${DEVBMP}" \
     -ex "monitor version" \
-    -ex "monitor tpwr enable" \
+    -ex "monitor tpwr disable" \
     -ex "monitor swdp_scan" \
     -ex "attach 1" \
     -ex "load" \
     -ex "compare-sections" \
     -ex "kill" \
+    -ex "shell sleep 1" \
+    -ex "monitor reset" \
     $@
+
