st程序能否从sd卡加载
大约知道程序时存储在flash中,运行时调度到ram中,那么,程序的c文件和h文件能否存储在sd卡中,从sd卡调度到ram中?STM32 的 Bootloader 支持从 SD 卡 加载固件,但 C 和 H 文件是源码,不能直接运行,必须编译成 BIN 或 HEX。 你想实现 从 SD 卡 加载程序到 RAM 运行,可以用 外部 loader 读取 BIN 文件,然后拷贝到 RAM 并跳转执行。 STM32 主要从 Flash 启动,但 F4 这种带 大 RAM 的型号,可以实现 XIP 或 RAM 运行,不过需要特定 Linker Script。 你可以参考 IAP(在应用编程) 方式,从 SD 卡 读取 BIN 文件,然后 写入 Flash,重启后就能运行新程序。 STM32F4 的 RAM 大小有限,程序太大可能 放不下,你可以看看 F7/H7 这种更大 RAM 的型号是否合适。 裸机 下 从 SD 卡 直接执行 比较难,建议用 RTOS,比如 FreeRTOS + FatFS,这样管理 SD 卡 和 RAM 会更方便。 你可以试试 Keil 或 GCC 配置 RAM 运行,修改 LD 文件,让程序加载到 RAM 并从 RAM 运行。 直接 RAM 运行 需要 跳转 代码,比如 ((void (*)(void))jump_address)();,但要确保 Vector Table 也正确迁移。 MCU 没有 MMU,无法像 PC 那样直接从 SD 卡 运行 代码,必须先 拷贝到 RAM,然后 手动跳转执行。 你是想 SD 卡 做 固件更新 还是 动态加载代码?如果是 固件更新,建议用 Bootloader,如果是 动态加载,就要 手写 Loader 了。
页:
[1]