feat: initial Zynq XC7Z100 Flasher GUI project

Add cross-platform GUI application for programming Zynq devices
with step-by-step workflow:

- CustomTkinter GUI with dark/light theme support
- 4-step workflow: Check Env → Flash → Bootloader → Main Program
- YAML configuration with relative path resolution
- Serial monitoring and boot log parsing
- TFTP upload with CRC32 verification
- SSH/serial reboot management
- Vivado/Impact tool auto-detection

Project structure:
- app.py: Entry point
- src/: Core modules (config, flash, bitstream, tftp, serial, gui)
- config/: Default configuration template
- .flasher_env/: Python virtual environment
This commit is contained in:
Jeremy Shen
2026-06-08 11:33:50 +08:00
commit bd39023ba7
19 changed files with 3859 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# Conventional Commit Message Template
# =====================================
#
# Format: <type>(<scope>): <subject>
#
# Type:
# feat: A new feature
# fix: A bug fix
# docs: Documentation only changes
# style: Code style changes (formatting, semicolons, etc)
# refactor: A code change that neither fixes a bug nor adds a feature
# test: Adding or correcting tests
# chore: Chores like build process, dependency updates
# perf: A code change that improves performance
#
# Scope:
# The module/component affected (e.g., gui, flash, config, serial)
#
# Subject:
# A short description in present tense, imperative mood
# - No period at the end
# - Max 72 characters
#
# Body (optional):
# - Explains the "what" and "why" not the "how"
# - Use imperative mood
# - Wrap at 72 characters
# - Separate from subject with a blank line
#
# Footer (optional):
# - References issues (Closes #123)
# - Breaking changes (BREAKING CHANGE: ...)
#
# ── Examples ─────────────────────────────────────────────────
#
# feat(gui): add per-step run buttons to workflow panel
#
# feat(flash): implement CRC32 verification for flash programming
#
# fix(gui): resolve step status not updating on worker thread
#
# refactor(config): extract path resolution to Config.resolve_path()
#
# docs: update README with installation instructions
#
# chore: update requirements.txt with darkdetect dependency
#
# perf(serial): reduce serial read timeout from 10s to 5s
#
# ── Multi-scope changes ──────────────────────────────────────
# Use multiple scopes when a change affects multiple modules:
#
# feat(gui,widgets): enhance StepHeader with run/re-run buttons
#
# ── Breaking changes ─────────────────────────────────────────
# feat(gui)!: change step execution model to async
#
# BREAKING CHANGE: Step callbacks now receive index instead of step object