ADI 技术
直播中

刘晓红

7年用户 255经验值
私信 关注
[问答]

BF592 RAM定义的数据最多只能为16252 BYTE

BF592资料里写的是有32K的SRAM,我写了下这段程序:
#include
unsigned char test[16252];  
void main()
{
while(1);
}
发现定义的数据最多只能为16252 BYTE,如果超出就编译出错,请问是什么原因引起?我应该怎么样才能用到32K的空间?我这样的定义语法应该是存在内部32K的SRAM没错吧?谢谢!

回帖(4)

张虎豹

2018-10-30 10:06:00
您好,您的问题已经提交给ADI专家,我们会尽快回复您的问题,谢谢!
举报

张润

2018-10-30 10:17:48
您好,
 
BF592的data SRAM为32KB,在使用过程中如果使能ROM需要额外占用4KB的data SRAM,用户可使用的data SRAM大小为28KB。
建议生成ldf文件,然后通过
#pragma section("L1_data")
unsigned char test[];
把数组放到data SRAM中。
举报

刘晓红

2018-10-30 10:35:59
引用: testd001xx 发表于 2018-10-30 13:00
您好,
 
BF592的data SRAM为32KB,在使用过程中如果使能ROM需要额外占用4KB的data SRAM,用户可使用的data SRAM大小为28KB。

我把project options下的add startup code/LDF选择项选到add an ldf and startup code,是这样吗?
但我在选择好后也只能定义到最大24236,程序如下:
#pragma section("L1_data")
unsigned char test1[24236];
int main( void )
{
while(1);
}
选择好还是达不到28K或者32K,是我操作有错吗?
另外请教:
1:我不懂#pragma section("L1_data")是什么作用?加不加也试不出区别,里面的“L1_data”也不是关键字,随便写都一样一样?
2:您说的使用过程中使能ROM,是在哪里可以设置打开或者关闭的?
   另外我有没有什么方法可以把L1 INSTRUCTION BANK A SRAM或者L1 INSTRUCTION BANK B SRAM的空间再分一部分来用来当DATA SRAM用?或者有没有办法把L1 INSTRUCTION ROM设置成DATA SRAM来用?因为我需要更多的DATA SRAM。
举报

张润

2018-10-30 10:43:27
引用: WYF13760287143 发表于 2018-10-30 13:18
我把project options下的add startup code/LDF选择项选到add an ldf and startup code,是这样吗?
但我在选择好后也只能定义到最大24236,程序如下:
#pragma section("L1_data")

您好,
 
1. L1_data主要用于存放全局变量
2. 对ROM的操作请在下面网址中搜索EE351,这篇文档中详细介绍了ROM的具体操作
http://www.analog.com/en/technical-documentation/application-notes-whitepapers/application-notes/resources/processors-dsp/blackfin/listing.html
3. Data RAM和instruction RAM是分开的,没有办法把指令RAM配置成数据RAM
4. 右键单击工程,选择project options->Link->General,在Additional Outpt中勾选Generate symbol map,编译后在debug文件夹下双击打卡后缀名为.xml的文件,里面详细描述了每个section的空间占用,您可以看到L1 DATA SRAM中都放了哪些数据,占用了多少空间等等信息
举报

更多回帖

发帖
×
20
完善资料,
赚取积分