Other Parts Discussed in Thread: RM48L952
我使用的微控制器是 RM48L952、调试器是 XDS110、CCS 版本是 7.3.0.00019
当我按下 CCS 中的调试按钮来将程序加载到 CPU 并恢复调试会话时、调试窗口显示(暂停-交叉触发)并且不再能够操纵 CPU。
我成功地缩小 了问题的范围:
void Copy(uint8_t *src, uint8_t *dst, uint32_t length)
{
uint32_t i;
for(i = 0; i < length; ++i)
{
dst[i] = src[i];
}
}
static void LowPwmInit()
{
static const hetINSTRUCTION_t hetProgram[34] = { ... };
hetREG1->GCR &= 0xfffffffe;
Copy((uint8_t *)hetProgram, (uint8_t *)hetRam, sizeof(hetProgram));
// (void)memcpy((void *)hetRam, (const void *)hetProgram, sizeof(hetProgram));
hetREG1->GCR |= 0x00000001;
}
当我在 LowPwmInit 函数中调用 Copy 函数时、会发生问题。 当 LOOP (I)达到0x20 (32)时、复制函数停止继续。 但它只是复制函数、没有什么花哨的东西。 当我使用 memcpy 而不是 Copy 时、程序运行正常。
更奇怪的 是 、当我不进行调试时、例如、当我关闭并打开电源时、机器按预期运行。 我的函数似乎没有明显的错误、我认为它与调试有关。
问题出在哪呢?