我想將數據從內核模塊複製到用戶空間,內核模塊從串口接收數據並將其傳輸到DMA,然後DMA將數據轉發到tty層,最後轉發到用戶空間。繞過tty層並複製到用戶
中的電流流動 串行驅動器FIFO - > DMA - > TTY層 - >用戶空間
我想達到什麼(數據到TTY層由DMA在定時器期滿排空)是
串行驅動程序FIFO - > DMA - >用戶空間。 (如果有更好的方法讓我知道,我可以使用定時器將數據發送到用戶空間)
另外,處理serialFIFO-> DMA的內核模塊不是字符設備。 我想完全繞過tty層。最好的辦法是什麼?
任何指針/代碼片段,將不勝感激。
我個人開始尋找驅動程序來尋找其他設備的驅動程序,這些驅動程序通常需要相當的要求,例如嵌入式系統上的同步串行通道(只要確保它是用於普通的linux,而不是uClinux內核的某些快捷方式可以採取)。 –
嗨克里斯,感謝您的意見,它是基於MontaVista的(2.6.32)嵌入式Linux。我尋找這樣一個例子,但沒有找到任何。任何有關使用基於mmap的驅動程序將數據傳遞給用戶空間的想法。我一直在想下面的道路。驅動程序將數據複製到DMA,並從DMA將數據複製(memcpy)到基於mmap的內存,用戶空間程序可從中讀取數據。我也關注該方法的一些問題。即如何通知用戶空間新數據並避免數據被DMA覆蓋/損壞。 – user1867459
*「不是字符設備」* - 那麼它必須是一個**塊**設備,這是沒有意義的。 *「...並將其傳送到DMA」* - DMA是傳送數據的方法,而不是複製的目的地。請解釋你認爲繞過tty層的好處是什麼。你明白你放棄了什麼,例如* tc [gs] etattr()*和朋友?這可能是一個XY問題。你是否想減少延遲?看到這[問題](http://stackoverflow.com/questions/4667141/high-delay-in-rs232-communication-on-a-pxa270)通過使用** ASYNC_LOW_LATENCY **解決 – sawdust