cFlash一款图形化Flash分区配置与代码生成工具 📅 2026/7/15 3:20:56 图形化 Flash 分区配置与代码生成工具。不想再手算 offset不想在 http://draw.io、Excel 和头文件之间来回同步cFlash 把 Flash 分区变成“看得见、改得快、能生成、好分享”的配置文件。flechazo.mba by flechazo一个有情怀的程序员https://github.com/FlechazoCLF仓库链接https://gitee.com/carlchai/c-flashcFlashflechazocFlash 用于维护嵌入式项目的 Flash 地址规划并自动生成可在工程中引用的分区常量。它把 Flash 分区配置、可视化查看、JSON 保存和代码生成放到同一个工具里让分区调整从“手工改地址”变成“图形化配置后一键生成”。 为什么需要 cFlashBoot 项目开发里Flash 划分通常会同时存在于设计图和代码中先用 http://draw.io 画出分区再手工把地址、大小、偏移写进头文件。每次修改分区时设计图和代码都要同步更新重复、容易出错也不够直观。cFlash 希望把这件事收敛到一个工具里少一点手工同步多一点确定性过去现在手工计算地址和偏移️ 在图形界面里直接配置设计图和代码分开维护 用 JSON 保存完整分区配置手写一堆宏定义⚙️ 自动生成 flash_map.h 或 flash_map.py分区改动靠口头同步 把 JSON 发出去对方打开就是同一份布局✨ 核心优势️配置方便通过图形界面直接调整 Flash 基地址、总大小和各级分区不需要反复手算偏移和地址。⚙️生成方便配置完成后可以直接生成flash_map.h或flash_map.py减少手写宏定义带来的遗漏和错误。分享方便分区信息统一保存在 JSON 文件中把database/cFlash.json发给别人就可以快速查看、复用或继续修改同一份 Flash 规划。一句话流程打开工具 -配置分区 -保存 JSON -生成代码 -放进工程cFlashflechazo 功能特性 图形化展示 Flash 分区布局。 支持配置 Flash 基地址、总大小、编程页大小、擦除扇区大小和显示参数。 支持新增、编辑、删除、清空分区。 支持父子分区关系例如FLASH_ROOT - BankA - AppA - AppInfo。 使用database/cFlash.json保存配置。 生成 C 头文件flash_map.h。 生成 Python 常量文件flash_map.py。 生成内容包含分区偏移、大小、起始地址和结束地址。 当前状态当前项目已经具备基础图形化配置和代码生成功能仍处于持续完善阶段。项目状态图形化 Flash 分区编辑✅ 已支持JSON 配置保存✅ 已支持C 头文件生成✅ 已支持Python 常量文件生成✅ 已支持C / Java 生成 预留安装包或发布包 待完善开源许可证 待补充️ 环境要求Qt 5 或 Qt 6需包含 Widgets 模块。Qt Creator或支持 qmake 的命令行构建环境。支持 C17 的编译器。工程文件为️ 构建方式Qt Creator使用 Qt Creator 打开cByte.pro。选择支持 Widgets 的 Qt Kit。构建并运行工程。命令行在 Windows MinGW 环境下执行qmake后使用对应的mingw32-make命令。⚡ 快速开始 启动 cFlash。 打开或编辑默认配置文件database/cFlash.json。️ 在 Flash 分区视图中右键新增、编辑或删除分区。 双击根分区编辑 Flash 全局参数。 保存 JSON 配置。⚙️ 通过代码生成菜单导出flash_map.h或flash_map.py。 将生成文件放入目标嵌入式工程中使用或将 JSON 配置发给其他成员查看和协作修改。 配置格式默认配置文件为示例{name:cFlash,version:1.0.0,flash:{base_address:0x0,total_size:2097152,program_page_size:256,erase_sector_size:2048},blocks:[{name:FLASH_ROOT,parent:,offset:0,size:2097152,info:chip flash root}]}blocks中的每一项表示一个 Flash 分区字段说明name分区名称也是生成宏名的来源。parent父分区名称空字符串表示根分区。offset相对父分区的偏移。size分区大小单位为字节。info分区说明会写入生成文件的注释中。color图形界面中的显示颜色。color_enable是否启用该分区的显示颜色。绝对地址计算方式absolute_offsetparent offset chain current offset addressFLASH_BASE_ADDRESS absolute_offset⚙️ 生成结果 C 头文件cFlash 可以生成flash_map.h。示例#define FLASH_BASE_ADDRESS (0x0)#define FLASH_TOTAL_SIZE (0x200000)#define FLASH_PROGRAM_PAGE_SIZE (0x100)#define FLASH_ERASE_SECTOR_SIZE (0x800)#define APPA_OFFSET (0x60000)#define APPA_SIZE (0xA0000)#define APPA_ADDR (FLASH_BASE_ADDRESS APPA_OFFSET)#define APPA_END_ADDR (APPA_ADDR APPA_SIZE) Python 常量文件cFlash 也可以生成flash_map.py用于让脚本或其他工具复用同一份 Flash 分区配置。️ 工程结构cFlash/ ├── cByte.pro qmake 工程文件 ├── main.cpp 应用入口 ├── cbyte.cpp/.h 主窗口 ├── database/ │ └── cFlash.json 默认 Flash 分区配置 ├── display/ 图形显示、菜单、鼠标交互和分区编辑 ├── generator/ 代码生成逻辑 │ ├── generator_c/ C 生成器预留模块 │ ├── generator_cpp/ C 生成器预留模块 │ └── generator_python/ Python 生成器预留模块 └── kernel/ 基础类型、文件操作和 trace 支撑️ 后续计划完善同级分区重叠检查。恢复并完善显示颗粒度、编程页大小、擦除扇区大小等对齐检查。在生成输出文件前强制执行配置校验。将 C/Python 生成逻辑拆分到独立的生成器后端中。在 JSON 中增加schema_version并支持后续配置迁移。增加工程级输出设置例如默认输出目录、文件名、宏前缀和地址基准。增加输出预览或覆盖前 diff 确认。补充发布包和安装说明。补充开源许可证文件。⚠️ 已知限制部分对齐检查逻辑已经存在但当前仍处于禁用状态。cc_display_protocol_validate()已经准备了children_map但同级分区重叠检查还需要补齐。生成的 C 头文件 include guard 当前固定为_FLASH_MAP_H多个工程或多份分区表并存时可能需要改成可配置。cByte.pro.user是 Qt Creator 本地用户配置文件不应提交到仓库。 参与贡献欢迎大家通过 Issue 和 Pull Request 参与改进。推荐优先完善的方向Flash 分区合法性校验。代码生成后端整理。JSON schema 和版本迁移。发布包制作。UI 易用性优化。