打印
[STM32F4]

[求助]STM32F407外扩SRAM,栈还是在内部RAM上的等问题

[复制链接]
10301|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
圈圈虫1989|  楼主 | 2014-4-9 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近由于项目需要支持512KB以上的RAM,所以尝试使用外扩SRAM的方式,参考官方例程,只是片选由NE2换成了NE3。外部SRAM 地址0x68000000
问题出现了,
1、设置一个超大全局变量数组buffer[512000],读写没问题,但是全局int a,却不能赋值,而且一直都是乱的数据。
2、而且更奇怪的是当全局数组buffer[NUM],NUM>102400后 ST官方库函数UART的收发都有问了。
3、函数中的局部变量仍在使用片内SRAM,地址为0x2000000。
4、如果要在FSMC上使用大容量NAND FLASH 32Gbit的,该FLASH有4个CE管脚,可以直接用IO管脚模拟片选吗?会跟片外SRAM冲突吗?片外SRAM也是使用FSMC,只是SRAM是bank1,NAND是bank3,不理解的是为什么NAND也有什么地址映射?

每天跟新一点吧,在网上看了很多,貌似大家对外扩SRAM的使用都或多或少有些问题,调试好了开贴讲解。使用的是STM32F407,片外SRAM 16Mbit。



沙发
airwill| | 2014-4-9 22:31 | 只看该作者
尝试使用外扩SRAM的方式,你得告诉编译器 外部SRAM 地址0x68000000;
另外还要告诉编译器 buffer[512000] 是放在外部 SRAM 中的.

使用特权

评论回复
板凳
圈圈虫1989|  楼主 | 2014-4-9 23:15 | 只看该作者
airwill 发表于 2014-4-9 22:31
尝试使用外扩SRAM的方式,你得告诉编译器 外部SRAM 地址0x68000000;
另外还要告诉编译器 buffer[512000]  ...

请问版主,我在工程设置里面直接勾选片外RAM,并且设置好地址与大小的。如何告诉编译器 buffer是放在外部SRAM的呢?该如何定义呢?

使用特权

评论回复
地板
圈圈虫1989|  楼主 | 2014-4-9 23:18 | 只看该作者
可以这样吗?

MDK(KEIL)中设定变量或数组到指定的位置
定位变量到指定的位置
使用定义在头文件 absacc.h中的 __at 宏,可以将变量以如下方式定位到绝对地址处:
C 例子:#include <absacc.h>

const char MyText[] __at (0x1F00) = "TEXT AT ADDRESS 0x1F00";

int x __at (0x40003000); // variable at address 0x40003000

unsigned char xArray[128] __at (0x68000000); // Array start at address 0x68000000汇编例子:
在汇编文件中可以使用段名,由|.ARM.__AT_<addr>|组成来定义位置。下面的例子是将一个段定义到地址0xFFE0处:
     AREA |.ARM.__AT_0xFFE0|, CODE, READONLY

使用特权

评论回复
5
圈圈虫1989|  楼主 | 2014-4-9 23:23 | 只看该作者
明天再去公司试试,不想使用__at(0x68000000),这样的用法,今天下午可以直接定义全局变量在片外SRAM的。使用__at(0x68000000),这样的方法还需要注意什么呢?

使用特权

评论回复
6
圈圈虫1989|  楼主 | 2014-4-10 08:37 | 只看该作者
自顶一下,希望大家一起讨论

使用特权

评论回复
7
inurl| | 2014-4-10 08:49 | 只看该作者
sct文件贴出来

使用特权

评论回复
8
inurl| | 2014-4-10 08:50 | 只看该作者
memory map 贴出来

使用特权

评论回复
9
IJK| | 2014-4-10 09:34 | 只看该作者
圈圈虫1989 发表于 2014-4-9 23:18
可以这样吗?

MDK(KEIL)中设定变量或数组到指定的位置

可以这样。
但这样做灵活性差点。
可以通过改链接文件/分散加载文件,来把某些变量放在某些指定的区域。

使用特权

评论回复
10
圈圈虫1989|  楼主 | 2014-4-10 14:57 | 只看该作者
按照__at的方法已解决问题,先暂时这样用着了。

使用特权

评论回复
11
hdp7891000| | 2014-4-10 17:23 | 只看该作者
直接用指针吧,也可以当数组用的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

264

帖子

4

粉丝