我工作的ARM嵌入式Linux系統上,偶爾的一個特定頁面上總線錯誤(但不總是)我得到了我的應用程序總線錯誤時,在虛擬地址0x2b200000的頁面訪問。根據編譯器/鏈接器是將代碼還是數據放在該地址,我在讀取變量時或在從該頁面獲取指令時遇到總線錯誤。公交車出錯後,我/ cat/proc/self/maps並確認該頁面確實已映射爲我的進程中有效的內容。ARM Linux系統:有效的虛擬內存
它只是似乎是一個頁面。頁面0x2b201000和0x2b1ff000總是可以的(很明顯,可能會有另一個地址完全不同的錯誤地址,我只是沒有碰到任何東西)。
我知道這裏有一百萬個未知數,但不知道是否任何人都可以在調查的一些方向指向我。該系統具有自定義驅動程序.kos,它使用從內核其餘部分保留或隱藏的物理內存,但我不明白這是如何影響虛擬地址的。
任何有識之士非常感謝。
你是否認爲這是一個硬件錯誤,這是你看到的數據中止錯誤?如果在加載linux之前,如果你有一個引導加載程序,或者創建一個引導加載程序,你可以在那裏讀取該地址並查看是否存在總線故障。基本上把問題分成一半,是硬件還是軟件(例如,因爲該地址範圍不在mmu表中,它是mmu故障)。 – 2012-04-19 14:19:16
我假設一旦啓動Linux並加載驅動程序,就會發生故障。由於它始終是相同的虛擬地址(並且可能不總是相同的底層物理頁框)。你知道我可以在哪裏爲MMU添加調試嗎? – gimmeamilk 2012-04-19 14:31:59