diff --git a/.github/workflows/build-stm.yml b/.github/workflows/build-stm.yml
new file mode 100644
index 00000000..4de13860
--- /dev/null
+++ b/.github/workflows/build-stm.yml
@@ -0,0 +1,44 @@
+name: Build STM32 Examples
+
+on:
+ push:
+ branches: ["main"]
+ pull_request:
+ branches: ["main"]
+ schedule:
+ # Build on Mondays at 9am PST every week
+ - cron: '0 17 * * 1'
+
+jobs:
+ build-stm32:
+ runs-on: ubuntu-24.04
+
+ strategy:
+ fail-fast: false
+ matrix:
+ example: [stm32-blink]
+ swift: [swift-DEVELOPMENT-SNAPSHOT-2024-12-04-a]
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: 3.11
+
+ - name: Install ${{ matrix.swift }}
+ run: |
+ wget -q https://download.swift.org/development/ubuntu2404/${{ matrix.swift }}/${{ matrix.swift }}-ubuntu24.04.tar.gz
+ tar xzf ${{ matrix.swift }}-ubuntu24.04.tar.gz
+ export PATH="`pwd`/${{ matrix.swift }}-ubuntu24.04/usr/bin/:$PATH"
+ echo "PATH=$PATH" >> $GITHUB_ENV
+ swiftc --version
+
+ - name: Build ${{ matrix.example }}
+ working-directory: ${{ matrix.example }}
+ run: |
+ pip3 install -r ../Tools/requirements.txt
+ export STM_BOARD=STM32F746G_DISCOVERY
+ ./build-elf.sh
diff --git a/Tools/elf2hex.py b/Tools/elf2hex.py
new file mode 100755
index 00000000..db0449fa
--- /dev/null
+++ b/Tools/elf2hex.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env -S python3 -u -tt
+
+# This source file is part of the Swift open source project
+#
+# Copyright (c) 2023 Apple Inc. and the Swift project authors.
+# Licensed under Apache License v2.0 with Runtime Library Exception
+#
+# See https://swift.org/LICENSE.txt for license information
+
+#
+# elf2hex -- Converts a statically-linked ELF executable into an "Intel HEX"
+# file format suitable for flashing onto some embedded devices.
+#
+# Usage:
+# $ elf2hex.py