打印
[其他ST产品]

st程序能否从sd卡加载

[复制链接]
311|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SocialButterfly|  楼主 | 2025-3-11 23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大约知道程序时存储在flash中,运行时调度到ram中,那么,程序的c文件和h文件能否存储在sd卡中,从sd卡调度到ram中?

使用特权

评论回复
沙发
公羊子丹| | 2025-3-13 08:20 | 只看该作者
STM32 的 Bootloader 支持从 SD 卡 加载固件,但 C 和 H 文件是源码,不能直接运行,必须编译成 BIN 或 HEX。

使用特权

评论回复
板凳
周半梅| | 2025-3-13 08:22 | 只看该作者
你想实现 从 SD 卡 加载程序到 RAM 运行,可以用 外部 loader 读取 BIN 文件,然后拷贝到 RAM 并跳转执行。

使用特权

评论回复
地板
帛灿灿| | 2025-3-13 08:23 | 只看该作者
STM32 主要从 Flash 启动,但 F4 这种带 大 RAM 的型号,可以实现 XIP 或 RAM 运行,不过需要特定 Linker Script。

使用特权

评论回复
5
童雨竹| | 2025-3-13 08:25 | 只看该作者
你可以参考 IAP(在应用编程) 方式,从 SD 卡 读取 BIN 文件,然后 写入 Flash,重启后就能运行新程序。

使用特权

评论回复
6
万图| | 2025-3-13 08:26 | 只看该作者
STM32F4 的 RAM 大小有限,程序太大可能 放不下,你可以看看 F7/H7 这种更大 RAM 的型号是否合适。

使用特权

评论回复
7
Wordsworth| | 2025-3-13 08:27 | 只看该作者
裸机 下 从 SD 卡 直接执行 比较难,建议用 RTOS,比如 FreeRTOS + FatFS,这样管理 SD 卡 和 RAM 会更方便。

使用特权

评论回复
8
Bblythe| | 2025-3-13 08:29 | 只看该作者
你可以试试 Keil 或 GCC 配置 RAM 运行,修改 LD 文件,让程序加载到 RAM 并从 RAM 运行。

使用特权

评论回复
9
Pulitzer| | 2025-3-13 08:30 | 只看该作者
直接 RAM 运行 需要 跳转 代码,比如 ((void (*)(void))jump_address)();,但要确保 Vector Table 也正确迁移。

使用特权

评论回复
10
Uriah| | 2025-3-13 08:32 | 只看该作者
MCU 没有 MMU,无法像 PC 那样直接从 SD 卡 运行 代码,必须先 拷贝到 RAM,然后 手动跳转执行。

使用特权

评论回复
11
Clyde011| | 2025-3-13 08:33 | 只看该作者
你是想 SD 卡 做 固件更新 还是 动态加载代码?如果是 固件更新,建议用 Bootloader,如果是 动态加载,就要 手写 Loader 了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

10

帖子

0

粉丝