主题中讨论的其他器件:SysConfig
工具与软件:
.cmd
CPU2文件的片段: RAMM0M1 : origin = 0x000002, length = 0x0007F6 /* on-chip RAM block M1 */
RAMM1_RSVD : origin = 0x0007F8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
RAMD0D1 : origin = 0x00C000, length = 0x001000
// This section is set to owned by CPU1 for data
CPU1RAMGS0GS6 : origin = 0x00D000, length = 0x007000
// This section is set to owned by CPU1 for Ramfunc
CPU1RAMGS7GS9 : origin = 0x014000, length = 0x003000
// This section is set to owned by CPU2 for data
CPU2RAMGS10GS12 : origin = 0x017000, length = 0x003000
// This section is set to owned by CPU2 for Ramfunc
CPU2RAMGS13GS15 : origin = 0x01A000, length = 0x003000
RAMD0D1
后面紧跟CPU1RAMGS0GS6
、分配给 CPU1的数据、那么是否应该RAMD0D1
保留 CPU2块的最后8 x 16个字、以避免预取到无效的内存区域?
跟进问题:根据.cmd
上面的文件、如果 CPU2预取进入 CPU1拥有的存储器区域、会发生什么情况? 是否有任何可以观察到此行为的寄存器?
目前,我们遇到了一个问题,当执行一个位于最末RAMD0D1
(占用最后8个字)的函数时,有跳到illegal_isr()
的机会,但这并不总是发生。 我们想要确认此行为是否是由于预取到无效的存储器区域而导致的。