[麦麦茶水间] 【每周分享】将资源文件烧录到MCU外挂Flash的两种方法

[复制链接]
460|1
dffzh 发表于 2025-9-10 15:01 | 显示全部楼层 |阅读模式
本帖最后由 dffzh 于 2025-9-10 15:24 编辑

有时候我们需要将外部资源文件(比如音频文件或者图片文件的bin格式文件)烧录到MCU外挂的flash芯片中,那一般是怎么操作的呢?本文讲述两种常用的方法,供大家参考。
方法一:使用Keil的“After Build”功能 + 自定义烧录算法(最常用,最集成)
这种方法的核心思路是:
将资源文件转换为C语言数组,并链接到程序中;
编写一个烧录到外挂Flash的函数,例如 Program_External_Flash();
在Keil中设置,在编译完成后自动执行这个函数,该函数会将数组中的数据写入外部Flash。
优点是:整个过程与Keil编译流程完美集成,一键编译、下载、烧录资源。无需依赖外部烧录工具。

方法二:将资源文件合并到最终下载的Hex/Bin文件中(推荐,更简洁)
这种方法利用链接器,将程序固件和资源文件合并成一个大的二进制文件,然后使用调试器一次性烧录到MCU的内部Flash指定地址。然后,在你的程序启动时(在main()之前),自己编写一个Bootloader逻辑,将这个资源数据段拷贝到外部Flash。
优点是:只需要一次烧录动作,所有数据都通过调试器下载,非常可靠;Keil配置简单。

以下是两种的一些特性对比:
对于大多数项目,我强烈推荐使用【方法二】,它更简洁、更可靠,并且与开发工具链的集成度更高。你只需要在项目初期花一点时间设置好链接脚本和启动拷贝代码,之后所有的开发流程都和普通项目没有区别,一键下载即可完成所有工作。

方法一更适合需要频繁单独更新资源文件而不想重新编译整个大型固件的场景,但配置和维护成本较高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
四十四次日落 发表于 2025-9-27 15:07 | 显示全部楼层
将资源文件烧录到 MCU 外挂 Flash 有两种方法:一是使用 Keil 的 “After Build” 功能结合自定义烧录算法,将资源文件转 C 语言数组,编译后自动写入;二是利用链接器合并程序固件与资源文件,再用调试器烧录到内部 Flash,通过 Bootloader 逻辑拷贝到外部 Flash。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

1393

帖子

23

粉丝
快速回复 在线客服 返回列表 返回顶部