OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12357|回复: 12

stm32f4使用iap在外部sdram中运行程序

[复制链接]

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
发表于 2014-11-19 00:19:32 | 显示全部楼层 |阅读模式
5金钱
原子哥的iap例程都是在内部ram中跑的,我现在已经移植成功,并添加了xmodem协议来保证正确率。不过我的是f429,外扩了32M的sdram,现在想通过iap将程序下载到sdram中执行。但一运行就死机,不知道是什么原因。下载的bin文件是直接修改的例程,精简到只保留一个led灯的闪烁,去除了一切初始化,也就是说,在启动文件里注释了SystemInit这个函数,直接进入main函数。main中只有led初始化和 SCB->VTOR = SRAM_BASE | 0x1000,led灯的闪烁延迟也是用的循环。当用iap下载到内部ram里面正常执行,但下载到外部sdram就不执行了。不知道有没有人在外部sram下成功的,那个是静态的,我自己猜测可能是sdram需要定时刷新,而新的app没有接管iap对sdram所做的初始化,但之前用arm9时也是用的sdram,为什么uboot就可以做跳转? 求解惑啊,如果弄不出来,sdram在iap中只能用来建个大缓存数组了。

最佳答案

查看完整内容[请看2#楼]

回复【2楼】 正点原子 : --------------------------------- 成功了,来结个帖子。有学f429的童鞋也可以借鉴下,代码通过iap下载到sdram中,默认的话fmc初始化后bank1、bank2所映射的地址为0xc0000000,0xd0000000。很遗憾,stm32f429内部规划了一个内存映射表,限制了代码只能在某些地址中运行。在bank1、bank2所在的地址属于Execute Never区域。但f429提供了一个寄存器,可以将sdram映射到0x80000000(bank1)、0x90000000( ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
 楼主| 发表于 2014-11-19 00:19:33 | 显示全部楼层

回复【2楼】 正点原子 :
---------------------------------
成功了,来结个帖子。有学f429的童鞋也可以借鉴下,代码通过iap下载到sdram中,默认的话fmc初始化后bank1、bank2所映射的地址为0xc0000000,0xd0000000。很遗憾,stm32f429内部规划了一个内存映射表,限制了代码只能在某些地址中运行。在bank1、bank2所在的地址属于Execute Never区域。但f429提供了一个寄存器,可以将sdram映射到0x80000000(bank1)、0x90000000(bank2),所以需要在iap中设置SYSCFG->MEMRMP 寄存器的11,10位为01,如图

这样,在iap中操作sdram的地址就不再是0xd0000000(我挂在bank2上)了,而是0x90000000了,此时,sdram也就可以运行代码了。

这样在app程序中,设置rom1为0x90000000,设置一个大小,剩下的就是ram了,然后通过跳转就可以运行了。

这里感谢原子哥的iap,还有网上一个无名网友的文章,可惜已经没有了,只能通过快照看了。

测试结果,由于sdram速度只有主频的一半(f429 180M\sdram 90M),所以好多的循环延时都会不准了,但定时器还是准的。另外,跳转之前最好将iap中开启的中断关闭,在app中再初始化。调试过程中我开启了一个1ms的tim7中断,结果每次都死机,后来在跳转前关闭tim7就正常了,貌似滴答定时器可以不关闭。其他没测试。

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-11-19 00:32:05 | 显示全部楼层
SDRAM里面跑啊?高大上哦,你运行之前,得初始化SDRAM吧,而且要SDRAM控制器一直有效工作,否则怎么跑?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
 楼主| 发表于 2014-11-19 08:34:40 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是的,我也是这么理解的,不过不能完整初始化,完整初始化的话sdram会由于一段时间的未刷新而丢失数据,但我又不清楚该初始化哪一段
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
 楼主| 发表于 2014-11-19 08:51:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不过原子哥你没测试过在外部sram中跑程序吗?感觉应该是差不多的啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-11-20 00:12:29 | 显示全部楼层
回复【5楼】wangxipeng:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2014-11-14
在线时间
38 小时
发表于 2015-1-1 00:14:28 | 显示全部楼层
回复【5楼】wangxipeng:
---------------------------------
你好!我这两天也在弄f429-disco板的SDRAM,感觉没有头绪,你说的是在SDRAM初始化里面设置SYSCFG->MEMRMP进行映射么?
回复

使用道具 举报

10

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2014-3-8
在线时间
11 小时
 楼主| 发表于 2015-1-1 19:23:12 | 显示全部楼层
回复【7楼】kings9527110:
---------------------------------
在main函数最开始那里加一条就可以了,在这条语句之后,所有操作sdram的地址全都要改变,如果你不打算在sdram中跑代码,就没必要重映射。毕竟429还差点,在SDRAM中速度慢,还不稳定。
回复

使用道具 举报

0

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-12-21
在线时间
0 小时
发表于 2015-1-1 21:54:54 | 显示全部楼层
如果429能跑linux的话就有用武之地了
回复

使用道具 举报

12

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-9-4
在线时间
8 小时
发表于 2015-5-12 15:03:30 | 显示全部楼层
可以把初始化SDRAM那一部分的程式贴出来给我参考下吗?
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-9-28 16:28:09 | 显示全部楼层
好厉害啊
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-8-10
在线时间
5 小时
发表于 2017-8-10 17:41:17 | 显示全部楼层
兄弟,我最近也在折腾这个事情,没有成功,可以给些帮助吗?开一下源可以吗?万分感谢
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-7-26
在线时间
6 小时
发表于 2019-11-13 15:13:37 | 显示全部楼层
厉害了  
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 14:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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