硬汉嵌入式论坛

 找回密码
 立即注册
查看: 461|回复: 8
收起左侧

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

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-2-16 03:46:18 | 显示全部楼层 |阅读模式
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
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106864
QQ
发表于 2024-2-16 04:52:26 | 显示全部楼层
现在是怎么个玩法,上电后加载到SRAM/SDRAM运行吗,如果是这样的,可以进一步锁定问题。

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

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-2-17 21:40:48 | 显示全部楼层
STM32F429是不是不能将代码存在外部的FLASH,只能放一些数组类的
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 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,这篇文章的)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106864
QQ
发表于 2024-2-18 00:52:49 | 显示全部楼层
张世锋 发表于 2024-2-17 21:40
STM32F429是不是不能将代码存在外部的FLASH,只能放一些数组类的

可以的。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106864
QQ
发表于 2024-2-18 00:53:08 | 显示全部楼层
张世锋 发表于 2024-2-17 22:30
我是想将程序存在外部FLASH W25Q128,然后要用的时候,再从装载域加载到执行域,不知道这样的想法,STM32 ...

支持的,没问题。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-2-18 04:20:53 | 显示全部楼层
无法实现,我的目标其实就是F429使用W25Q128作外部程序存储器,但是一直无法成功
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106864
QQ
发表于 2024-2-18 09:41:28 | 显示全部楼层
张世锋 发表于 2024-2-18 04:20
无法实现,我的目标其实就是F429使用W25Q128作外部程序存储器,但是一直无法成功

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

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

使用道具 举报

5

主题

132

回帖

147

积分

初级会员

积分
147
发表于 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文件。

AN2784.pdf

715.29 KB, 下载次数: 2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-8 08:30 , Processed in 0.307580 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表