张世锋 发表于 2024-2-16 03:46:18

STM32F429使用W25Q128JV作外部程序存储器,debug发现一直卡在某个中断

F429使用W25Q128JV作外部程序存储器,仿真发现一直卡在某个中断
void HardFault_Handler(void)
{
/* USER CODE BEGIN HardFault_IRQn 0 */

/* USER CODE END HardFault_IRQn 0 */
while (1)
{
    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
    /* USER CODE END W1_HardFault_IRQn 0 */
}
}
这里,我的工程没有勾选 Verify

eric2013 发表于 2024-2-16 04:52:26

现在是怎么个玩法,上电后加载到SRAM/SDRAM运行吗,如果是这样的,可以进一步锁定问题。

如果是直接SPI Flash运行程序,这个是不支持的,F429驱动SPI Flash不支持内存映射模式。

张世锋 发表于 2024-2-17 21:40:48

STM32F429是不是不能将代码存在外部的FLASH,只能放一些数组类的

张世锋 发表于 2024-2-17 22:30:43

eric2013 发表于 2024-2-16 04:52
现在是怎么个玩法,上电后加载到SRAM/SDRAM运行吗,如果是这样的,可以进一步锁定问题。

如果是直接SPI...

我是想将程序存在外部FLASH W25Q128,然后要用的时候,再从装载域加载到执行域,不知道这样的想法,STM32F429是否支持呢,毕竟F103系列的都支持(这个我自己没去真实搞出来,而是看到https://blog.csdn.net/p1279030826/article/details/114927280,这篇文章的)

eric2013 发表于 2024-2-18 00:52:49

张世锋 发表于 2024-2-17 21:40
STM32F429是不是不能将代码存在外部的FLASH,只能放一些数组类的

可以的。

不过要加载到内部SRAM或者外部SRAM/SDRAM运行。

eric2013 发表于 2024-2-18 00:53:08

张世锋 发表于 2024-2-17 22:30
我是想将程序存在外部FLASH W25Q128,然后要用的时候,再从装载域加载到执行域,不知道这样的想法,STM32 ...

支持的,没问题。

张世锋 发表于 2024-2-18 04:20:53

无法实现,我的目标其实就是F429使用W25Q128作外部程序存储器,但是一直无法成功

eric2013 发表于 2024-2-18 09:41:28

张世锋 发表于 2024-2-18 04:20
无法实现,我的目标其实就是F429使用W25Q128作外部程序存储器,但是一直无法成功

可以这样先间接的验证下。

将你要存储到SPI Flash的程序转换成C数值,放在内部Flash,然后将其加载到RAM里面,看看执行正常不,正常后再存到SPI Flash加载测试,这样方便锁定问题。

无关风月 发表于 2024-2-18 09:51:44

之前在官方手册上看到过这样的一段话,不知道对你有帮助没


2.4
从外部NOR闪存存储器执行代码
大容量的STM32F10xxx内置了多达512K字节的闪存存储器,对于多数应用是足够了。需要更多存储器容量的应用,可以使用外加的NOR闪存存储器。
本节说明了如何使用外部NOR闪存存储器运行用户程序。这需要2个重要的步骤:
AN2867
10/22
参照2008年9月 AN2784 英文第1版
与非总线复用模式的异步16位NOR闪存接口
本译文仅供参考,如有翻译错误,请以英文原稿为准。请读者随时注意在ST网站下载更新版本

加载用户程序至外部NOR存储器: 这个操作需要对开发工具进行特别的配置:在链接文件中,必须指定NOR闪存存储器的开始地址(或任何其它地址),这是需要放置用户程序的地址。

执行用户代码: 一旦用户程序代码加载到NOR闪存存储器,在内部闪存存储器中需要有一段配置FSMC的程序,配置好FSMC后可以跳转至(NOR闪存存储器中的)用户程序代码执行。
在STM32F10xxx固件库中有一个外部NOR闪存存储器中运行程序的例程,例程的路径如下:STM32F10xFWLib\FWLib\examples\FSMC\NOR_CodeExecute。这个例程是把GPIO翻转IO的例子拷贝到STM3210E-EVAL评估板的扩展NOR闪存存储器中,并执行这个例程。
有关如何在你的开发工具上使用这个例程的详细内容,请参考上述路径下的readme文件。
页: [1]
查看完整版本: STM32F429使用W25Q128JV作外部程序存储器,debug发现一直卡在某个中断