[其他ST产品] st程序能否从sd卡加载

[复制链接]
634|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。
童雨竹 发表于 2025-3-13 08:25 | 显示全部楼层
你可以参考 IAP(在应用编程) 方式,从 SD 卡 读取 BIN 文件,然后 写入 Flash,重启后就能运行新程序。
万图 发表于 2025-3-13 08:26 | 显示全部楼层
STM32F4 的 RAM 大小有限,程序太大可能 放不下,你可以看看 F7/H7 这种更大 RAM 的型号是否合适。
Wordsworth 发表于 2025-3-13 08:27 | 显示全部楼层
裸机 下 从 SD 卡 直接执行 比较难,建议用 RTOS,比如 FreeRTOS + FatFS,这样管理 SD 卡 和 RAM 会更方便。
Bblythe 发表于 2025-3-13 08:29 | 显示全部楼层
你可以试试 Keil 或 GCC 配置 RAM 运行,修改 LD 文件,让程序加载到 RAM 并从 RAM 运行。
Pulitzer 发表于 2025-3-13 08:30 | 显示全部楼层
直接 RAM 运行 需要 跳转 代码,比如 ((void (*)(void))jump_address)();,但要确保 Vector Table 也正确迁移。
Uriah 发表于 2025-3-13 08:32 | 显示全部楼层
MCU 没有 MMU,无法像 PC 那样直接从 SD 卡 运行 代码,必须先 拷贝到 RAM,然后 手动跳转执行。
Clyde011 发表于 2025-3-13 08:33 | 显示全部楼层
你是想 SD 卡 做 固件更新 还是 动态加载代码?如果是 固件更新,建议用 Bootloader,如果是 动态加载,就要 手写 Loader 了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

56

帖子

0

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