簡體   English   中英

Linux PCIe設備驅動程序讀/寫功能不適用於某些地址

[英]Linux PCIe device driver read/write functions not working for certain addresses

我編寫了PCIe設備驅動程序,讀/寫功能無法正常工作。 該器件有3個存儲區,從0x10800000,0x0c000000和0x80000000開始。 僅用於測試目的,我在驅動程序中的讀寫函數打印出傳遞的地址並返回。 如果我從用戶空間應用程序調用pread()或pwrite(),我會看到前2個內存區域傳遞的地址,但是如果我調用第三個內存區域,我什么也看不見就好像它沒有甚至進入驅動程序的讀寫功能。

我的驅動程序在運行Linux版本2.6.32的64位計算機上運行完全正常。 它不能使用的另一台機器是運行linux 2.6.25版本的32位機器。 我的想法是,也許32位不喜歡0x80000000地址,但我不知道如何驗證它或如何修復它,如果是這樣的話。

這是一個非常模糊的問題(你正在做什么文件pread / pwrite?)但是因為你說一切都在64位工作而你的驅動程序甚至沒有被調用32位,我猜這個問題是off_t大小以及0x80000000溢出32位並成為巨大負數的事實。

如果你放了怎么辦?

  #define _FILE_OFFSET_BITS 64

作為用戶空間源代碼的第一行? (或者在gcc命令行上傳遞“-D_FILE_OFFSET_BITS = 64”)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM