1.文档目的
本文档目的在于探究部分QT程序在嵌入式板子上出现Bus Error问题的调试及解决方法;
以数码相框程序出现的Bus Error为例;
2.原因分析
2.1 产生Bus Error的可能原因:
Bus Error即总线错误, Bus Error通常都是因为非对齐访问造成的。CPU在设计上为了性能上的考虑,要求待访问,操作的数据地址都要对齐。如果发现没有对齐的访问,就会向当前进程发出SIGBUS信号,使程序崩溃。RISC包括MIPS都是这种类型的芯片。而X86架构就没有这种对齐要求。所以代码在嵌入式环境下有总线错误而在X86下面可能就没有问题,当然这是有性能的代价。
Bus Error的产生除了上边提到的访问数据地址对齐问题之外,还可能是因为一下原因:
1 机器物理问题或者访问无效物理地址,但这种情况非常少见。
2 Linux平台上执行malloc(),如果没有足够的RAM,