我有一个针对某个视频解码器的RVDS项目(它的所有C代码), 为ARM926EJ-S目标创建,使用RVDS 2.2模拟器执行。 我没有使用任何scatterload /<配置文件> /< map file>至 提到代码中的各种内存段,如Stack segment, 堆,数据段,RVDS模拟器环境的代码段。
我试图通过这种行为进行大量调试,但我无法确定原因和解决方法。
答案 0 :(得分:0)
我有一些类似的事情发生在我正在进行的项目中。它最终成为引用堆栈上未初始化指针的问题。它通常指向未使用的程序存储器,并覆盖未使用的代码。
当我删除未使用的代码时,突然它指向了我不能修改的内存,并且它会以不合理的方式退出。
仔细检查你的mallocs,并确保你的函数变量指针!
答案 1 :(得分:0)
初始化ZI部分是否为零。我认为运行时中的分散加载代码初始化了ZI部分(我不是一段时间)。我们有一个问题,ZI部分被初始化,我们的程序加载器遗留了一些数据。
因此,更改代码中的任何行都会导致它在同一位置崩溃。 即使删除代码也会导致崩溃。我会在你的程序开始时验证ZI部分为零。