linux - ARM Linux : bus error on one particular page of valid virtual memory

标签 linux embedded arm sigbus

我在嵌入式 ARM Linux 系统上工作,偶尔(但不总是)当访问虚拟地址 0x2b200000 的页面时,我的应用程序会出现总线错误。根据编译器/链接器是将代码还是数据放在该地址,我要么在读取变量时遇到总线错误,要么在从该页面获取指令时遇到总线错误。在出现总线错误后,我 cat/proc/self/maps 并确认该页面确实已映射到我的进程中有效的内容。

它似乎只是那一页。页面 0x2b201000 和 0x2b1ff000 总是正常的(很明显,在完全不同的地方可能有另一个错误的地址,我只是碰巧没有访问它)。

我知道这里有一百万个未知数,但想知道是否有人可以指出我的调查方向。系统有自定义驱动程序 .kos,它使用保留或隐藏在内核其余部分中的物理内存,但我不明白这对虚拟地址有何影响。

非常感谢任何宝贵的见解。

最佳答案

感谢大家的帮助。我发现了问题 - 行为不端的驱动程序期望某些用户地址是 2MB 对齐的。例如,如果有效的映射地址实际上是 0x2b3cc000,它将错误地对齐到 0x2b200000,并践踏我的应用程序!

关于linux - ARM Linux : bus error on one particular page of valid virtual memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229600/

相关文章:

python - 从 python 脚本设置 bash 变量

linux - 手册页的含义是什么,例如git-分支(1)

c - 我试图在液晶显示器上显示浮点值,同样我必须首先将其转换为字符串。但它不起作用

linux - 高内存架构

optimization - 快速饱和并在ARM asm中移动两个半字

linux - 输入rc : menu-complete-backward doesn't work on Mac OS X?

linux - proc-sys-fs-binfmt_misc.automount 服务失败

c - 检测 CAN 总线错误的合适方法是什么?

winapi - RS232(Com 端口)RTS/CTS/DTR/DSR 的低级控制可能吗?

c - ARM代码中的未定义指令异常