我在处理一个软件问题时,尝试在中断处理程序中加入了一些快速且简单的调试代码。其中包括一个双精度浮点运算,用于存储感兴趣的值(即自上次中断以来的时间),稍后在我的运行线程中使用。我认为这没有问题(虽然它需要更长的时间,但从时间上来看,我有足够的时间;中断并不会太快地到达),但是VxWorks确实不喜欢它。当代码到达那里时,它会一直崩溃,这是一个糟糕的崩溃,会重新启动系统。我花了一点时间追踪双操作作为问题来源,并意识到甚至在中断中调用的例程返回一个常量双时也会失败。
在PowerPC(或其他体系结构)中,在中断处理程序中进行浮点运算并在由中断处理程序调用的函数中返回浮点(或其他类型)值是否普遍存在问题?我不知道为什么这会导致程序崩溃。
(解决方法是将“自上次中断以来的滴答数”转换为“自上次中断以来的时间”,直到代码退出处理程序,因为它似乎可以很好地处理长整数运算。)