专家好:
IDE: CS+ CACX V4.00.01 / Win10
chip: R5F10WMG(RL78/L13)
RL78代码运行过程中偶尔发现主函数中RAM变量被改变,单步仿真后发现是定时器中断函数中有 乘/除法操作导致。屏蔽此语句后 结果正确。请问此情况是什么原因导致的?如何从根本上解决此问题?谢谢!
备注:
1. 正常数组累加取反结果应为0xFFFFFFFF, 异常时结果却为0xFFFFFF00 (最后一个字节数据被改变);
2. 中断函数不只有 乘/除操作会影响,类似a+=b函数也会有相同问题。查看汇编代码有调用系统库函数
请问此情况是什么原因导致的?如何从根本上解决此问题?谢谢!
请问这种问题在什么情况下可以复现?
程序中的出现问题的变量是全局变量还是局部变量?
地址分配是奇地址?还是偶地址?
Hi Xu:
1.主函数里对unsigned long数组做累加取反操作, 定时器中断里做 a+=b或乘/除操作
2.全局变量
3.全局变量定义在奇地址和偶地址,问题相同
用CS+ for CACX, 他的RL78的编译器应该是78K0R
您可以用CS+ for CC,或是E2 Studio试试,这两个的编译器是CC-RL
下面是用CC-RL编译器的结果,仿真后没有问题