# Build Summary - STM32H7S78-DK Dual-Boot Project **Date**: October 18, 2026 **Status**: ✅ SUCCESSFUL **Projects**: Boot + Appli (TouchGFX + Audio) ## Build Artifacts ### Boot Project ``` Boot/TouchGFX/build/bin/ ├── application.map (200 KB) - Linker map file ├── target.elf (500 KB) - Final ELF executable ├── target.hex (69 KB) - Intel HEX for flashing ├── intflash.elf (448 MB) - Internal flash ELF (debug) └── intflash.hex (69 KB) - Internal flash HEX ``` ### Appli Project ``` Appli/TouchGFX/build/bin/ ├── application.map (3.5 MB) - Linker map file ├── target.elf (8.6 MB) - Final ELF executable ├── target.hex (8.3 MB) - Intel HEX for flashing ├── intflash.elf (6.1 MB) - Internal flash ELF (debug) └── intflash.hex (1.3 MB) - Internal flash HEX ``` ## Memory Usage (Appli) | Region | Used | Total | Usage | |--------|------|-------|-------| | RAM | 292,960 B | 384 KB | 74.50% | | RAM_CMD | 36,672 B | 64 KB | 55.96% | | DTCM | 8 KB | 12 KB | 66.67% | | DTCM_RTOS | 50,000 B | 52 KB | 93.90% | | FLASH | 484,800 B | 2 MB | 23.12% | | FLASH_GFX | 2,605,504 B | - | TouchGFX assets | ## Makefile Fixes ### Problem Identified The original makefiles used `objects.tmp` file-based linking which caused issues on macOS: - GNU Make `$(file ...)` function unreliable - Temporary file deleted before linking completed - Directory removal race condition ### Solution Applied Changed to direct object file listing in linker command: ```makefile # OLD (problematic) @$(file >$(build_root_path)/objects.tmp) $(foreach F,$(object_files),$(file >>$(build_root_path)/objects.tmp,$F)) @$(linker) ... @$(build_root_path)/objects.tmp ... @rm -f $(build_root_path)/objects.tmp # NEW (working) @$(linker) ... $(object_files) $(object_asm_files) -o $@ ... ``` ### Files Modified - `gcc/makefile_boot` (lines 225-235) - `gcc/makefile_appli` (lines 420-430) ## Flashing ### Flash Loader - **Location**: `gcc/MX66UW1G45G_STM32H7S78-DK.stldr` - **Purpose**: Program external flash (0x70000000) for Appli ### Flashing Order (CRITICAL) 1. **Boot first** (internal flash only) 2. **Appli second** (with external FlashLoader) 3. **Reset** (press NRST button) ### VS Code Tasks See [.vscode/README.md](.vscode/README.md). Build All = Cmd+Shift+B; flashing tasks call `gcc/flash.sh`. ## Verification Commands ```bash # Verify build artifacts exist ls -lh Boot/TouchGFX/build/bin/*.hex Appli/TouchGFX/build/bin/*.hex # Verify HEX format (should show ASCII text) file Boot/TouchGFX/build/bin/target.hex file Appli/TouchGFX/build/bin/target.hex # Test the board connection gcc/flash.sh probe ``` ## Next Steps 1. **Connect ST-Link V3** to the evaluation board 2. **Run VS Code task**: "Build + Flash All" (or `gcc/flash.sh all`) 3. The board is hard-reset automatically after flashing 5. **Verify** TouchGFX UI and audio processing ## Documentation | File | Purpose | |------|---------| | [README.md](README.md) | Project overview and debugging | | [.vscode/README.md](.vscode/README.md) | VS Code configuration | | [.vscode/flash_guide.md](.vscode/flash_guide.md) | Complete flashing instructions | | [AGENTS.md](AGENTS.md) | Hardware and architecture details | --- **Build Status**: ✅ SUCCESSFUL **Ready for Flashing**: ✅ YES **Last Updated**: October 18, 2026