解答:
默认情况下, MPLAB C18 假设对象不超过存储区边界。 要安全使用大于256 字节的对象,需要执行下列步骤:
1)必须使用 #pragma idata 或#pragma udata 伪指令将对象分配到恰当的段中:
#pragma udata buffer_scn
static char buffer[0x180];
#pragma udata
2)必须通过指针访问对象:
char * buf_ptr = &buffer[0];
...
// examples of use
buf_ptr[5] = 10;
if (buf_ptr[275] > 127)
...
3)必须在链接描述文件中创建一个跨越多个存储区的区域:
- 修改前的链接描述文件:
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
- 修改后的链接描述文件:
DATABANK NAME=big START=0x200 END=0x37F PROTECTED
DATABANK NAME=gpr3 START=0x380 END=0x3FF
4)必须通过在链接描述文件中添加SECTION伪指令,将对象所在的段(在第1步中创建)分配到新的区域(在第3 步中创建):
SECTION NAME=buffer_scn RAM=big
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
1) 允许一个物理内存(即 XRAM) 可同时作为程序存储器和数据存储器进行访问
如何使用 SCR XRAM 作为程序
发表于 01-30 08:18
的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
发表于 12-31 16:54
数据存储器 FLASH程序存储器 FLASH数据存储器 片内RAM数据
发表于 11-29 09:50
为什么单片机定义的数组是存放在数据存储器中,而不是存放在程序存储器中,这样断电,那数组里面的数据
发表于 08-14 16:41
4Gb到100Gb的密度.谈及循环及数据保留间的强相关性,使用N削D来获得高写入性能的系统经常面对一个困难即在长时间的休止状态下如何保证足够的数据保留。变相
发表于 05-17 09:45
Nios II系统中的紧耦合存储器是旁路缓存的片上存储器,该存储器具有最好的存储器访问性能,能采用与其它
发表于 12-07 10:27
。为了充分利用和发挥DDR3存储器的优点,使用一个高效且易于使用的DDR3存储器接口控制器是非常重要的。视屏处理应用就是
发表于 05-24 05:00
。为了充分利用和发挥DDR3存储器的优点,使用一个高效且易于使用的DDR3存储器接口控制器是非常重要的。视屏处理应用就是
发表于 05-27 05:00
因此,随着程序的发展,链接器将我的变量重新定位到不同的内存位置。这会导致数据损坏。将EDATA移动到可在数据存储器中任何位置的探地雷达的正确
发表于 05-31 08:28
/383681#M3607我要将数据矩阵存储在fpga而不是LUT的块存储器中作为内存!因为基于我编写的代码中的上述链接,它使用LUT作为内
发表于 11-07 07:30
取数据。因此,上述第二操作时机可以优先于第一操作时机。在一种可能的实现方式中,当存储器的剩余带宽大于第二阈值时,例如大于100M/S,此时
发表于 11-15 15:44
嗨,我是FPGA设计的初学者。在我的设计中,我应该实时地连接我的设计和Block内存。正如我在数据表中看到的那样,vivado的Block ram有一
发表于 05-25 07:51
系统的客户端): 对象存储架构 1、对象 对象是系统中数据
发表于 09-01 16:27
/SRAM 或通过 FSMC 的外部存储器)。D总线:此总线用于将 Cortex™-M4F 数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的
发表于 08-05 07:41
如何制作一个磁带数据存储器?
发表于 11-11 07:43
评论