You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a demo for using LVGL, DRAM, LLVM Toolchain, ELF on an STM32F746G discovery board (#104)
Demonstrating a "full" graphical firmware running on an STM32 microcontroller board, concretely the STM32F746G "Discovery" board. Multiple interesting technologies demonstrated:
- **ELF file format**, linking with lld, with a custom simple linker script (and thus it builds identically on both macOS and Linux hosts)
- **LLVM Embedded Toolchain for ARM**
- **LVGL** graphical/input/animation library
- The **DRAM, LCD, touch panel, GPIO pins and interrupts** on the STM32F746G
- **No other SDKs or library dependencies** -- all the startup code, including MCU, board and peripheral initialization is done in Swift source code
Additionally, this sample code:
- Has **LSP integration** set up via the `.sourcekit-lsp/config.json` file, confirmed to work in multiple code editors (VS Code, Sublime Text, Zed)
- Uses **SwiftPM's toolset.json** to define compiler and linker flags
- Has a host OS (macOS, Linux) **"simulator" using SDL** that can use the same "business logic" code to render the same LVGL UI.
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,7 @@ Each example in this repository contains build and deployment instructions, howe
33
33
|[rpi-picow-blink-sdk](./rpi-picow-blink-sdk)| Raspberry Pi Pico W | Pico SDK | Blink an LED to signal 'SOS' in Morse code repeatedly with Swift & the Pico SDK. | <imgwidth="300"src="https://github.com/apple/swift-embedded-examples/assets/26223064/a4949a2e-1887-4325-8f5f-a681963c93d7"> |
34
34
|[stm32-blink](./stm32-blink)| STM32F746G-DISCO | None | Blink an LED repeatedly. | <imgwidth="300"src="https://github.com/apple/swift-embedded-examples/assets/1186214/739e98fd-a438-4a64-a7aa-9dddee25034b"> |
35
35
|[stm32-lcd-logo](./stm32-lcd-logo)| STM32F746G-DISCO | None | Animate the Swift Logo on the built-in LCD. | <imgwidth="300"src="https://github.com/apple/swift-embedded-examples/assets/1186214/9e117d81-e808-493e-a20c-7284ea630f37"> |
36
+
|[stm32-lvgl](./stm32-lvgl)| STM32F746G-DISCO | – | Baremetal setup of LCD, touch panel, DRAM, using the LLVM Embedded toolchain for ARM. Renders graphics, animations, and reacts to user input via LVGL. Includes a macOS/Linux SDL based host simulation app. | <imgwidth="300"src="https://github.com/user-attachments/assets/3b4fefd3-1656-4768-9c64-6cbcb3ff9665"> |
36
37
|[stm32-neopixel](./stm32-neopixel)| STM32F746G-DISCO | None | Control NeoPixel LEDs using SPI. | <imgwidth="300"src="https://github.com/apple/swift-embedded-examples/assets/1186214/9c5d8f74-f8aa-4632-831e-212a3e35e75a"> |
37
38
|[stm32-uart-echo](./stm32-uart-echo)| STM32F746G-DISCO | None | Echo user input using UART. | <imgwidth="300"src="https://github.com/apple/swift-embedded-examples/assets/1186214/97d3c465-9a07-4b86-9654-0c2aaaa43b3d">|
0 commit comments