为了实现中断内部程序的快速计算能力,在系统运行时,将存放在 FLASH 区域的中断程序搬移到 RAM 中运行。由于中断程序代码量庞大,导致 RAM 空间不足,对此产生了问题。
.cmd 文件中 RAM 分区如下:
MEMORY
{
PAGE 0 :
……
RAMLS_PROG : origin = 0x008000, length = 0x004000
RAMGS_PROG : origin = 0x00C000, length = 0x004000
……
}
这里产生了第一个问题:中断程序代码量庞大,但在运行时不是都会执行。实际测试结果来看,无论代码是否运行,都会搬移到 RAM 中去占一定的空间?
——————
中断代码运行时会搬移到 LSRAM中,当中断程序代码量超过 16K 时,系统程序编译时会直接报错。由此我尝试修改了 cmd 文件:
MEMORY
{
PAGE 0 :
……
RAMLS_PROG : origin = 0x008000, length = 0x008000
……
}
此时系统程序编译正常,但是烧录程序调试时发现系统死机无法正常工作,我不明白什么原因?
当cmd 文件使用第一种方式时,无法满足我中断程序代码量过大的需求(编译不通过),我应该怎样合理使用 RAM 空间来解决这个问题呢?
当前为了让我的系统正常运行,我只能控制自己的中断程序代码小于 16K,程序搬移到 LSRAM 运行,,此时 GSRAM 为空。