Microchip
直播中

王静

8年用户 684经验值
私信 关注
[问答]

使用dsPIC33EP512GP无法定义大于8191的有符号长数组

使用dsPIC33EP512GP,我无法定义大于8191的有符号长数组:有符号长.sed_event_data[8192]_.(“.,.("sample."),address(0x2000));这失败了,错误是“数组‘.sed_event_data’的大小太大”。XC16用户手册第8.7.2节指出,数据指针是16位,因此应该寻址65536字节。是什么原因造成对数组大小的限制?小宇宙

回帖(16)

陈晨

2019-9-5 07:07:50
你的照片有多少RAM?
举报

杜元晓

2019-9-5 07:21:35
你试过检查内存映射吗?我发现精灵浏览器插件对于这种分析非常有用。
举报

杜元晓

2019-9-5 07:37:51
我猜OP的控制器是dsPIC33EP512GP50X,大约有48K字节的RAM,其中45056字节是从0x2000开始的“远”内存。通常,“.”属性和“align”属性足以为DMA等保留RAM。通常使用数组名称作为地址而不是数值。你使用汇编模块需要固定地址吗?
举报

李代三

2019-9-5 07:44:22
亲爱的尼古拉,我最初没有使用地址属性,但是后来链接器把大数组放在了近RAM中,这意味着需要放在近RAM中的其他变量没有足够的空间。我已经粘贴了适当的映射部分:数据存储器[Origin=0x1000,Length=0xc000]部分:地址对齐间隙总长度(dec)------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------0x12(18)数据0x10e20x10e20x12(18)0x12(18)0x10e20xec(236)bss 0x11ce 0x11ce 0x11ce 0x11ce 0x84(132)0x84(132)数据0xx11252520x1120x1120x1120x1120x1120x125200x12520x260x26(38)bss 0x1278 0x1278 0x4(4)4(4)数据0x127c0x127c0x127c0x127c0x4(4)数据0x2x127c0x2(2)0x2(2)0x2(2)0x2(2(2)0x1280 00x40(64)数据0x12c0 0x62(98)堆0x1322 0x200(512)采样缓冲区0x2000 0x7ffc(32764)使用的总数据存储器(字节): 0x851c(34076)69%对数组长度的限制似乎来自于编译不是链接器
举报

更多回帖

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