本人使用STM32H750VBT6,外接W25Q128JVSIO,想要将程序放到外部flash中运行。
参照《通过 STM32CubeMX 制作外部 Flash 的烧写驱动》官方文档进行操作。该文档首先需要完成QSPI的驱动调试,这一步已经验证过没有问题,如下图。
可以看到,程序运行到了最后位置。这说明硬件电路和驱动代码都是没问题的。
接下来按照文档提供的git地址https://github.com/WellinZHANG/External_Loader。从该地址的Loader_Files\H7 device路径下获取Dev_Inf.c、Dev_Inf.h、linker.ld和Loader_Src.c这四个文件放置到工程中,并修改StorageInfo结构体如下,其中MEMORY_FLASH_SIZE修改为0x1000000,也就是16MByte。
struct StorageInfo const StorageInfo = {
#endif
"STM32H750VBT6+W25Q128JVSIQ", // Device Name + version number
NOR_FLASH, // Device Type
0x90000000, // Device Start Address
MEMORY_FLASH_SIZE, // Device Size in Bytes
MEMORY_PAGE_SIZE, // Programming Page Size
0xFF, // Initial Content of Erased Memory
// Specify Size and Address of Sectors (view example below)
{ { (MEMORY_FLASH_SIZE / MEMORY_SECTOR_SIZE), // Sector Numbers,
(uint32_t) MEMORY_SECTOR_SIZE }, //Sector Size
{ 0x00000000, 0x00000000 } } };
按照文档对工程做完相应更改后,可以生成stldr文件,如下图。
用该文件去烧录一个串口程序,如下图。
就会报错如下,我用的STLink烧写器是好使的。
我用在网上找的其他的stldr进行烧写是没问题的,所以我想知道我做的烧写驱动为什么就不行?能帮我解决这个问题的小伙伴,会以100块钱作为酬谢,另外会把这个问题的答案整理成文章分享给大家。关于这个问题的解答大家可以私信我。
关于这个问题涉及的工程、文档和我在网上找的可以用的stldr都会放到如下网盘中,供大家查看,我用的stm32cubeide版本为1.12.1。
通过百度网盘分享的文件:相关资料
链接:https://pan.baidu.com/s/1S6jukp0FegGv-hqpeyargg
提取码:8o12