硬汉嵌入式论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: eric2013
收起左侧

STM32F429的程序加载到SDRAM的运行方法

  [复制链接]

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2018-9-26 09:37:26 | 显示全部楼层
eric2013 发表于 2018-9-26 09:02
是不是类似这个:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86207&highlight=%D4%AD%B4%B4
...

不知道你有没有关注stm32的微信官方公众号,那里也有一个这样的例子,我记得是通过修改分散加载文件
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2018-9-26 09:55:10 | 显示全部楼层
myxiaonia 发表于 2018-9-26 09:37
不知道你有没有关注stm32的微信官方公众号,那里也有一个这样的例子,我记得是通过修改分散加载文件

分散加载不灵活,之前RT1052就是这种的。这种的用起来灵活些。可以方便的设置想要加载到的内容到SDRAM。

这种方式设置后的本质也是有个分散加载文件的,只是对应的分散加载比较麻烦。
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
发表于 2018-9-26 21:02:50 | 显示全部楼层

到STM32F429这个阶段,应该是完全可行的,位置无关代码(Position independent code)和共享库的概念吧,不过不知道意义有多大,因为嵌入式多是“定制”的,做成安卓那样安装app所付出的努力不知道是否划算(是真的不知道),有兴趣可以继续聊聊,成熟之后哪位大侠可以发起个开源项目也挺好的。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2018-9-26 21:06:03 | 显示全部楼层
myxiaonia 发表于 2018-9-25 19:51
keil有例程,直接将程序编译到sdram地址,c库启动时候自动复制到sdram,然后直接就在sdram上运行了

也 ...

你好,请问如何将代码直接放在外部SDRAM调试呢。固件比较大的时候能够在线调试
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2018-9-26 21:08:52 | 显示全部楼层
xiatian_xjtu 发表于 2018-9-11 16:04
如何能通过st-link将程序下载到sdram中?现在429总共能用的sram只有256k,仿真稍微大点的程序必须下载到fla ...

你这个做的怎么样了,最近在弄,交流下啊
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2018-9-27 08:37:18 | 显示全部楼层
myxiaonia 发表于 2018-9-25 19:51
keil有例程,直接将程序编译到sdram地址,c库启动时候自动复制到sdram,然后直接就在sdram上运行了

也 ...

在STM32上面有实现过吗,SDRAM在线调试的
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2018-9-27 14:21:10 | 显示全部楼层
MaxChen 发表于 2018-9-27 08:37
在STM32上面有实现过吗,SDRAM在线调试的

方法都一样的呀
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2018-9-27 17:34:15 | 显示全部楼层

我这边弄完可以SDRAM调试,但是我们stm32得LCD 显存是放在SDRAM上得。用SDRAM调试得时候,显示不能用。你得可以显示吗
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2018-9-28 09:18:19 | 显示全部楼层
MaxChen 发表于 2018-9-27 17:34
我这边弄完可以SDRAM调试,但是我们stm32得LCD 显存是放在SDRAM上得。用SDRAM调试得时候,显示不能用。你 ...

lpc1788是可以的,stm32我不太清楚,但我想应该也是可以的
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2018-9-29 11:13:12 | 显示全部楼层
myxiaonia 发表于 2018-9-28 09:18
lpc1788是可以的,stm32我不太清楚,但我想应该也是可以的

嗯嗯,就是显示很慢,等于代码段就在外部SDRAM,图片定义那些全局常量是在代码段也就是在SDRAM,显示的速度明显跟不上,不知道有没有什么办法。
回复

使用道具 举报

14

主题

61

回帖

103

积分

初级会员

积分
103
发表于 2018-10-7 19:43:44 | 显示全部楼层
tovax 发表于 2018-9-25 15:34
把存储介质上的程序加载到SDRAM内存运行倒是很好的思路
请教一个类似的问题,关于u-boot的:
u-bo ...

这个问题是由于你的u-boot符号文件不能与你的应用程序符号文件同时加载,如果用GDB的话,先在u-boot跳转前打上一个断点,运行到断点后,执行"symbol-file <应用程序elf文件路径>" , 就会加载应用程序的符号文件,应用程序中如果有断电的话,就会正确执行到断点了。
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
发表于 2018-11-25 18:26:28 | 显示全部楼层
rgw5267 发表于 2018-10-7 19:43
这个问题是由于你的u-boot符号文件不能与你的应用程序符号文件同时加载,如果用GDB的话,先在u-boot跳转 ...

谢谢,确实是符号的问题
回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2018-12-8 17:13:18 | 显示全部楼层
MaxChen 发表于 2018-9-27 17:34
我这边弄完可以SDRAM调试,但是我们stm32得LCD 显存是放在SDRAM上得。用SDRAM调试得时候,显示不能用。你 ...

在SDRAM调试方法能共享一下吗?显示是完全不能用还是刷新慢?
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2018-12-8 20:45:50 | 显示全部楼层
还是一直没有领略到这种加载到SDRAM运行程序的好处,觉得是很高大上,但是就是不知道那些场合用上。希望有个人可以举个例子详细说明一下,非常感谢!
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2018-12-12 10:40:52 | 显示全部楼层
luscu 发表于 2018-12-8 20:45
还是一直没有领略到这种加载到SDRAM运行程序的好处,觉得是很高大上,但是就是不知道那些场合用上。希望有 ...

如果程序很大,又不想用xip,只能放在ram运行啊  这个是cpu的做法
在ram运行,很灵活,可以做很多事情,比如可以动态加载程序,电脑上开启关闭程序,也可以修改程序,比如程序加密等
回复

使用道具 举报

17

主题

70

回帖

121

积分

初级会员

积分
121
发表于 2019-2-21 11:26:32 | 显示全部楼层
非常棒!!!
回复

使用道具 举报

13

主题

156

回帖

215

积分

高级会员

积分
215
发表于 2019-2-27 17:32:50 | 显示全部楼层
老大,问下,这样是不是会比在内部flash跑速度要慢好多,我记得之前用F1时,把变量放到外部Ram,慢的吓人
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2019-2-27 17:36:18 | 显示全部楼层
本五心 发表于 2019-2-27 17:32
老大,问下,这样是不是会比在内部flash跑速度要慢好多,我记得之前用F1时,把变量放到外部Ram,慢的吓人

是的,差不少。
回复

使用道具 举报

13

主题

156

回帖

215

积分

高级会员

积分
215
发表于 2019-2-28 11:42:27 | 显示全部楼层

我之前用F1试了下变量放在外部ram,真的没办法接受。老大,在请教几个问题:
1、这个速度能差多少?能接受不?
2、这种方法只是程序能做的很大吗?即使程序可以做的很大,但是跑起来比人脑还慢,感觉就失去了研究的价值。我不是很理解,不知大佬对这应用在实际项目中怎么看
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2019-2-28 14:38:34 | 显示全部楼层
本五心 发表于 2019-2-28 11:42
我之前用F1试了下变量放在外部ram,真的没办法接受。老大,在请教几个问题:
1、这个速度能差多少?能接 ...

1、没实测过,像H7这种带Cache的会好些。
2、对,适合用于大程序的场合和H750这种自带Flash非常小的应用
回复

使用道具 举报

13

主题

156

回帖

215

积分

高级会员

积分
215
发表于 2019-2-28 14:57:56 | 显示全部楼层
eric2013 发表于 2019-2-28 14:38
1、没实测过,像H7这种带Cache的会好些。
2、对,适合用于大程序的场合和H750这种自带Flash非常小的应用

好的,改天我试下。再次感谢给予的回复
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2019-3-1 15:36:24 | 显示全部楼层
Mark!!!
回复

使用道具 举报

61

主题

62

回帖

245

积分

高级会员

积分
245
发表于 2020-7-23 15:33:18 | 显示全部楼层
没看到搜藏,先标记一下
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-5-8 15:25:46 | 显示全部楼层
已经使用GCC实现, 非常感谢楼主
回复

使用道具 举报

2

主题

17

回帖

23

积分

新手上路

积分
23
发表于 2022-4-15 23:16:56 | 显示全部楼层
rgw5267 发表于 2018-9-12 09:57
还有另外一个方法. 硬汉可以尝试一下.  先放一张图

lds文件在那里设置呢?没找到这个文件
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-3-15 22:54:25 | 显示全部楼层
123214!!!111
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-6-15 20:26:10 | 显示全部楼层
rgw5267 发表于 2018-9-12 09:57
还有另外一个方法. 硬汉可以尝试一下.  先放一张图

MPU配置可以指定0xc0000000 允许执行代码,和FMUC地址映射也是使得地址映射到external ram,可以执行代码,两种方法有什么区别?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2023-6-16 10:59:00 | 显示全部楼层
huangxxpp 发表于 2023-6-15 20:26
MPU配置可以指定0xc0000000 允许执行代码,和FMUC地址映射也是使得地址映射到external ram,可以执行代码 ...

FMC映射这种方法我没有测试,只测试了MPU设置这种方法。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

职业摆烂选手,退堂鼓一级演奏家

积分
3
QQ
发表于 2023-7-5 15:26:18 | 显示全部楼层
如果有小伙伴按照楼主所示后无法执行,比如我

那你就去 APP项目system_stm32h7xx.c 文件下注释掉
// FMC_Bank1_R->BTCR[0] = 0x000030D2;
这句话,然后见证奇迹吧

希望能帮助到别人
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2023-7-6 09:13:54 | 显示全部楼层
candang 发表于 2023-7-5 15:26
如果有小伙伴按照楼主所示后无法执行,比如我

那你就去 APP项目system_stm32h7xx.c 文件下注释掉

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 03:41 , Processed in 0.262990 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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