組み込み ARM Linux システムで作業していますが、仮想アドレス 0x2b200000 のページにアクセスすると、アプリでバス エラーが発生することがあります (常にではありません)。コンパイラ/リンカーがそのアドレスにコードまたはデータを配置するかどうかに応じて、変数を読み取るとき、またはそのページから命令がフェッチされるときにバス エラーが発生します。バス エラーの後、cat /proc/self/maps を実行し、そのページが自分のプロセスで有効なものに実際にマップされていることを確認します。
その1ページだけのようです。ページ 0x2b201000 と 0x2b1ff000 は常に問題ありません (明らかに、まったく別の場所に別の不適切なアドレスが存在する可能性があり、たまたまアクセスしたことがないだけです)。
ここには無数の不明な点があることはわかっていますが、誰かが調査の方向性を教えてくれるかどうか疑問に思っていました. システムには、カーネルの残りの部分から予約または隠されている物理メモリを使用するカスタム ドライバー .kos がありますが、それが仮想アドレスにどのように影響するかわかりません。
洞察のナゲットは大歓迎です。