這兩個鏈結中,提供Sample Code,關於如何存取記憶體,在Linux中。
將Physical Address轉成Virtual Address。
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
歸還Virtual Address。
int munmap(void *addr, size_t length);
devmem.c [Link1]
devmem2 [Link2]
[“Bus error” system error] 匯流排錯誤--系統錯誤
Bus Error通常是由應用程式試圖去存取記憶體空間,硬體不能實際定址。這原因可能是一個沒有對齊的存取,像是存取不存在的地址,或者是沒有足夠的權限來存取或更改記憶體。這很難說這到底是什麼問題你所遇到,不知道你改了什麼程式碼;甚至超過 - 使用不同的編譯器或編譯器的設置也可能會導致此行為。
from: http://stackoverflow.com/questions/5870353/bus-error-system-error
Unhandled fault: External abort on non-linefetch (0x18) at 0xb6f4d000
Bus error
可能的錯誤原因:
此錯誤的產生,當程式試圖去讀取RX FIFO Port時,但它的FIFO沒有任何資料。當/dev/mem讀取有正確回應時,表示那邊有東西被讀取到。
http://forums.xilinx.com/t5/Embedded-Linux/ZC702-Devmem-failure-accessing-AXI-port/td-p/284746
沒有留言:
張貼留言