硬汉嵌入式论坛

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

stm32F437+freeRTOS如何使用外扩SRAM

[复制链接]

2

主题

11

回帖

48

积分

新手上路

积分
48
发表于 2018-5-3 19:43:55 | 显示全部楼层 |阅读模式
按照eric大神的做法:
第一步:修改启动代码,固定的分配0x400字节做为栈使用。特别注意,修改栈顶指针固定在0x2000_0400位置。
不要让编译器去自动配置。





第二步:在函数SystemInit_ExtMemCtl中初始化外部SRAM



第三步:配置外部SRAM的起始地址和大小:




第四步:添加全局的宏定义



结果发现,程序死在创建信号量函数,进一步跟踪,死在pvPortMalloc(),应该是ucHeap定义在内存里的原因,通过__attribute__((at(0x64000000)))指向外存(我的板子用的片选2),编译报错,在该地址处冲突。指向之后的某个地址,如__attribute__((at(0x64080000))),启动打印乱码。请问何解?
后来我想换个思路,将ucHeap直接指向0x64000000处,整个外存都给ucheap使用,上述四个步骤中一和三不变,但是启动过程中仍然挂了,还未定位死在哪,请问这个思路有问题吗??
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117555
QQ
发表于 2018-5-4 02:42:39 | 显示全部楼层
你的第三步里面首地址也是0x68000000吗
回复

使用道具 举报

2

主题

11

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-5-4 08:45:21 | 显示全部楼层
eric2013 发表于 2018-5-4 02:42
你的第三步里面首地址也是0x68000000吗

肯定改了呀,0x64000000
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117555
QQ
发表于 2018-5-4 09:52:03 | 显示全部楼层
图图 发表于 2018-5-4 08:45
肯定改了呀,0x64000000

你的SRAM速度是多少的? 70ns吗。速度跟不上,会让系统直接卡死。

我们的V5是10ns的,一片零售要70块。
回复

使用道具 举报

2

主题

11

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-5-4 10:27:35 | 显示全部楼层
eric2013 发表于 2018-5-4 09:52
你的SRAM速度是多少的? 70ns吗。速度跟不上,会让系统直接卡死。

我们的V5是10ns的,一片零售要70块 ...

我的速度是45ns的。我现在用第二钟方式,直接将ucheap指向外部sram地址,发现代码如果添加以太网lwip模块就会挂掉,而且根本没有跑到以太网部分代码。但是如果不添加以太网模块就没问题,能够正常启动。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117555
QQ
发表于 2018-5-4 10:34:53 | 显示全部楼层
图图 发表于 2018-5-4 10:27
我的速度是45ns的。我现在用第二钟方式,直接将ucheap指向外部sram地址,发现代码如果添加以太网lwip模块 ...

基本上性能也就这样了。
回复

使用道具 举报

2

主题

11

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-5-4 10:40:26 | 显示全部楼层
eric2013 发表于 2018-5-4 10:34
基本上性能也就这样了。

先不考虑性能问题,关键是一加上以太网功能,就直接挂掉了。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 10:28 , Processed in 0.045023 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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