硬汉嵌入式论坛

 找回密码
 立即注册
查看: 61|回复: 3
收起左侧

vibe 了一个实用的固件打包小工具

[复制链接]

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 昨天 11:02 | 显示全部楼层 |阅读模式
本帖最后由 sant1niz3r 于 2026-5-30 11:22 编辑

关注硬汉哥这么久终于有机会发帖了。

楼主是嵌入式软件开发,每次发布新版本总是要一连串的格式转换、打包、重命名操作。虽然一部分可以用脚本完成,但终究不够优雅。
特别是 JFlash 的 .dat/.cfg 只能手动操作,还有一些 Bootloader 的打包工具只提供了 GUI 版本。


加上最近在学 Rust,所以设计了一个 CLI 工具(baker),把以上流程完全自动化。支持以下功能:

1. 单个配置文件驱动(工具会自动在 cwd 搜索 baker.toml,建议放到项目根目录)
2. 支持格式转换、打包(可自定义 OTA 文件头)、将 bootloader 和 app 合并为一个文件
3. 自动从代码中提取固件版本号(比如version.h 中定义 VERSION_MAJOR 或 VERSION_STR 等宏)
4. 将打包好的文件按照自定义规则命名(如 ${PROJECT}_v${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}_${TIME_YYYYMMDD} )
5. 自定义 PostBuild 钩子(可用于调用 JFlash 或其他工具/脚本)
6. 单可执行文件,无依赖 支持 Linux/Windows 多平台。CI/CD 友好

----------------------------

baker 使用示例 :
1. 假设项目目录如下:待打包固件(app.hex),版本头文件(version.h),Bootloader 以及工具所需配置文件 baker.toml(内容见末尾)
   其中 release 为打包文件输出目录(在 baker.toml 中指定)



2. 将 baker.exe 加入环境变量 PATH
3. 在项目目录运行终端,执行命令 baker -V 确认环境变量生效。baker list 可以显式 baker.toml 中的构建目标


4. 执行 baker build all,进行打包。


5. 输出如下:


6. version.h 内容:


7.  baker.toml 内容(源码见 GitHub):


7.1 如果需要导出为 JFlash 使用的 .dat/.cfg 格式,则需要用 JFlash 创建一个 .jflash 项目文件并放在项目目录下。
并在 baker.toml 中需要转换的 target 下添加 postbuild 钩子:


7.2 对应产物如下:


7.3 生成的 fpk 可以用 mOTA 打包工具解包:


------------------------

项目地址:https://github.com/nasihs/baker-rs
mOTA 项目:https://gitee.com/DinoHaw/mOTA
欢迎试用和提出建议,如果有帮助的话麻烦点个 star,感恩!

项目目录.png
baker list.png
baker build.png
产物.png
toml.png
postbuild.png

baker_v0.3.0.zip

2.48 MB, 下载次数: 0

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122832
QQ
发表于 昨天 15:39 | 显示全部楼层
谢谢楼主分享

点评

谢谢大佬!  详情 回复 发表于 昨天 19:41
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 昨天 19:40 | 显示全部楼层
第一次发帖还不会插入图片,尴尬
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 昨天 19:41 | 显示全部楼层

谢谢大佬!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-5-31 01:50 , Processed in 0.543174 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表