背景
在C6455上有一片外挂DDR2,型号是MICRON的MT47H128M16RT-25EIT:C,容量为256MB,16位数据位宽,设计接口时钟250MHz,接口速率500MHz,地址范围是0xE0000000~0xEFFFFFFF。
问题描述
现在需要将一段初始化的数据定义到DDR中,因此我们将链接文件写成这样:
MEMORY
{
IRAM (RWX) : org = 0x800000, len = 0x1fbc00
DDR2 (RWX) : org = 0xe0000000, len = 0x10000000
}
SECTIONS
{
.slowdata: load > IRAM, run > DDR2
}
在代码中变量定义为
#pragma DATA_SECTION(foo, ".slowdata");
char data[1024*1024] = {
//一些无规律的初值
...
};

本文讨论了在C6455上使用DDR2进行数据初始化时遇到的链接错误。问题源于尝试将大量初始化数据放入DDR,导致内存不足。通过分析编译链接过程,发现初始化段.cinit占据了过多RAM空间。解决方案是改变链接选项为–ram_model,实现加载时初始化。然而,这又引发了数据未正确初始化的新问题,暗示可能涉及芯片启动过程的细节。
最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



