急求!定义了个大的数组,结果使得far段和cinit段都很大,ram不够了

[复制链接]
2529|8
 楼主| whnyao1314 发表于 2015-4-28 19:33 | 显示全部楼层 |阅读模式
在.h中定义了一个超级大的数组,整型,大概在30000个数据,在.c中用到,结果此数据存在了far段中,且定义后也会使cinit段同样很大,超出了内部ram的大小,且程序按照需求只能运行在内部ram中,求助各位大神,如何解决此问题,
 楼主| whnyao1314 发表于 2015-4-28 19:35 | 显示全部楼层
芯片用的是C6713,理论上来说不是已初始化的变量会存放在cinit中吗?怎么会在far中呢?
shiny12 发表于 2015-5-26 10:17 | 显示全部楼层
遇到同样的问题  我的 .far也不够用,所以想一部分文件产生的。far放在l2上,另一部分放在DDR上  但具体怎么编程呢,求问
xlhust 发表于 2015-5-26 14:21 | 显示全部楼层
28系列DSP,全局变量初始值存在cinit中,只在初始化时复制到ebss,程序运行时调用ebss中内容。
6000系列应该是同理
wowow 发表于 2015-5-27 09:51 | 显示全部楼层
1.改进算法,分段搬移到l2,处理完结果搬出去。
2.了解C6000的cache,改进算法最大化利用cache。
TI的这套视频讲得不错,有关优化算法和利用Cache
http://processors.wiki.ti.com/in ... hop&redirect=no
这几个文档可以看一下:
TMS320C6000 DSP Cache User's Guide
Cache Usage in High-Performance
shiny12 发表于 2015-5-27 12:30 | 显示全部楼层
wowow 发表于 2015-5-27 09:51
1.改进算法,分段搬移到l2,处理完结果搬出去。
2.了解C6000的cache,改进算法最大化利用cache。
TI的这套 ...

我的想法是把一部分文件的.far放在L2上,另一部分放在DDR上,这样的想法可行不,,,若可行的话分配语句该怎么写呢,求支招
wowow 发表于 2015-5-27 17:33 | 显示全部楼层
代码里:
#pragma  DATA_SECTION( LargeBufA, ".ddr2" )
unsigned short                    LargeBufA[1024];

cmd里:
    .ddr2       >   DDR2
前者见:
C6000 Compiler Version 7.4 User's Guides > C6000 Optimizing C/C++ Compiler User's Guide > TMS320C6000C/C++ Language Implementation > Pragma Directives
6.9.6. The DATA_SECTION Pragma

cmd部分应该会吧?
smalling6 发表于 2015-5-29 09:38 | 显示全部楼层
wowow 发表于 2015-5-27 09:51
1.改进算法,分段搬移到l2,处理完结果搬出去。
2.了解C6000的cache,改进算法最大化利用cache。
TI的这套 ...

这个视频不错 mark下
598330983 发表于 2015-5-31 08:35 来自手机 | 显示全部楼层
你想法缩小那个数组啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部