簡體   English   中英

如何在內核模式(Linux)中從串行端口讀取數據(字符)?

[英]How to read data (characters) from serial port in Kernel mode (Linux)?

我正在開發一個Linux內核模塊,我需要從串行端口(字符)讀取數據。 我想將字符(例如:“ D”,“ T”和“-”)設置為來自串行端口的條目,我想閱讀這些條目。 我花了很長時間嘗試使用“ inb(0x3f8)”和“ termios”,但沒有成功。 但是,使用“ outb”寫入數據可以正常工作,我在我設置的VBox配置上以VirtualBox的客戶機身份安裝了Ubuntu 10.10作為系統:

   activated serial port
   port number :   COM1    IRQ 4  PORT I/O : 0x3f8
   Port/path   D:\Oracle\serial.txt

我認為,如果您在內核線程中運行,則可以使用filp_open或其他函數來獲取文件操作指針,然后可以通過file_operations指針使用“常規”調用。

當你在一個“正常”的上下文中運行工作- “用戶”過程中或可能內核線程,它絕對不會正確的,如果你在一些“不尋常”的情況下是工作。

在正常任務中,這些調用可能會阻塞,並且一切都會“正常工作”。 我認為。 我已經嘗試過用插座,它的工作原理。

掛載的文件系統可能會出現問題,因為內核線程可能會獲得一個包含很少(或不包含)文件節點的名稱空間。 這可能意味着更容易在用戶空間中打開設備並以某種方式傳遞設備。

還要注意內核中有限的堆棧大小。

暫無
暫無

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

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