我目前正在使用Ubuntu使用BeagleBone Black,並試圖找到一些方向。我創建了一個c程序,用於偵聽SIGIO並運行read()以獲取該行的數據。從我在互聯網上的研究和通過一些書看,看起來這種方法效率不高,因爲使用循環監聽Signal中斷很糟糕,因爲大量的上下文切換(應該指出,這個I/O線將很忙,所以SIGIO每秒至少觸發4次,這是異步的)。建議使用硬件中斷並觸發響應,以從線路獲取數據並將其放置到寄存器中,並且可以使用直接存儲器訪問優先訪問用戶。所以問題仍然是我可以在哪裏找到更多關於如何做到這一點的信息,我在這個主題上找到了很多信息,但其中大多數只是談論如何操作系統確實中斷或使用信號,它們與忙線是相當的稅收。Linux,在I/O上使用硬件中斷,通過直接內存訪問將數據放入用戶可訪問區域
-1
A
回答
0
如果你非常關心時間和延遲,你應該使用一些實時系統。
幸運的是,Beaglebone black在其SOC上實時處理核心,稱爲PRU(可編程實時單位)。 如果您對PRU的概念還不熟悉,您可能想要開始here,然後,一旦您瞭解了PRU的需求和用途,該網站就有一些入門教程。
使用最新的軟件支持,如remoteproc,rpmsg和,只要您瞭解其工作原理,就可以非常容易地使用PRU。
相關問題
- 1. 通過JavaScript訪問硬件
- 2. 訪問Linux用戶空間中的硬件寄存器
- 3. 直接訪問硬盤?
- 4. 直接訪問硬盤
- 5. 直接內存訪問
- 6. 訪問域用戶通過亞當
- 7. 直接訪問linux framebuffer - copyarea
- 8. 使用閃存硬件訪問
- 9. 通過直接訪問列填充鍵入的數據集?
- 10. 直接訪問內容數據庫 - SharePoint
- 11. 直接訪問數據庫
- 12. 通過C#訪問用戶
- 13. 直接訪問數據庫與間接訪問數據庫
- 14. 使用Wamp訪問硬盤數據
- 15. 受限訪問用戶的可編輯內容區域
- 16. 訪問的數據通過使用C++
- 17. 訪問進程的內存區域
- 18. FCKEditor:訪問內容區域
- 19. 在Windows/Linux下直接訪問內存設備
- 20. 使用存儲過程訪問數據
- 21. 防止用戶訪問可通過代碼訪問的動作
- 22. 從C訪問硬件或內存#
- 23. 如何知道用戶通過QR掃描直接訪問URL?
- 24. 訪問直接內存地址,我們可以直接訪問任何內存地址?
- 25. 從用戶進程訪問硬件
- 26. 訪問linux虛擬內存
- 27. 通過Twitter API訪問直接消息
- 28. 防止通過.htaccess直接訪問robots.txt
- 29. 通過JavaScript直接訪問MongoDB
- 30. 通過訪問方法或直接在超類中引用attributtes?
投票結束爲「要求外部資源」。形式上這是正確的,但實際上你的問題太廣泛了。在你甚至不知道它有多廣泛之前,你必須做更多關於Linux如何工作的基礎研究,關於硬件,驅動程序,特權訪問,併發等等。沒有冒犯,但強烈要求先學習和自己做研究。 – Olaf
我很感謝你的推動力,促使人們首先自己瞭解這個主題。但我已經研究了一下,但是我發現的一切都是理論。我找不到能夠使用硬件中斷的代碼的實際示例,然後繼續使用DMA將數據推送到其他位置。 –
「我找不到代碼的實際示例...」。對不起,但那不可能! Linux是開源的,所有的資源都是免費的。你真的想告訴內核源代碼中沒有一個使用中斷和DMA的驅動程序? – Olaf