您好!
我需要为项目提供更多 RAM 空间。 我应用了文档“slaa628b.pdf”中描述的方法,但有些问题是错误的。
在链接器中定义 RAM2、如下所示;
存储器
{
TINYRAM :origin = 0x0006、length = 0x001A
外设_8位 :origin = 0x0020、length = 0x00E0
peripherals_16BIT :origin = 0x0100、length = 0x0100
RAM :origin = 0x1C00,length = 0x0800
RAM2 :origin = 0x2400、length = 0x0800
INFOA :origin = 0x1980,length = 0x0080
INFOB :origin = 0x1900,length = 0x0080
INFOC :origin = 0x1880,length = 0x0080
INFOD :origin = 0x1800,length = 0x0080
FRAM :origin = 0x4400,length = 0xBB80
。 。 。
}
构建后、一切看起来都正常、存储器配置由下面的映射文件给出;
存储器配置
名称 源 长度 使用 未使用 的属性 填充
------------ ---- ------ ---- ---- --------
TINYRAM 00000006 0000001a 00000000 0000001a RWIX
外设_8位 00000020 000000e0 00000000 000000e0 RWIX
外设_16BIT 00000100 00000100 00000000 00000100 RWIX
INFOD 00001800 00000080 00000000 00000080 RWIX
INFOC 00001880 00000080 00000000 00000080 RWIX
INFOB 00001900 00000080 00000000 00000080 RWIX
INFOA 00001980 00000080 00000000 00000080 RWIX
RAM 00001c00 00000800 00000638 000001c8 RWIX
RAM2 00002400 00000800 00000236 000005ca RWIX
FRAM 00004400 0000bb80 000068b2 000052ce RWIX
。 。 。
但是、代码会崩溃、从而跳转不在代码范围内的地址。 我调试了代码并在内存浏览器中调查了 RAM2地址,我看到这些新地址范围(0x2400-0x2C00)被3FFF (JUMP)填充,所以代码从这些地址跳转到范围外的地址。
我错过了什么? 为什么会发生这种情况?