Re: [問題] Kernel Uart 與 PL2303 Uart 疑問 ??

看板LinuxDev作者 (牛牛爸)時間10年前 (2014/11/15 02:32), 10年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kuangs (kuangs)》之銘言: : 想請問 我目前寫了程式 來收uart的資料 : 如果透過pl2303 chip 收資料 都是正常的 : 但從kernel gpio (已確定GPIO設定正確) 來收資料 卻會有掉code 的情形 : 用的程式也是同一個 : 目前所知 pl2303 是模擬USB : 而 gpio 是直接收到kernel : (上述如有錯誤 請指教) : 兩個在收uart資料上有甚麼不同 導致這個問題?? : 補充一點 : 從UART 進來的資料 有Binary資料 傳統的uart都會有internal fifo for buffering 這是 hw buffer. 你可以看一下 16550 spec trigger level可以設定fifo多少水位觸發中斷 你用gpio 假設 data rate is 115200 等於你一秒要觸發 115200次 這還不包含是否會有glitch錯誤的判斷 有些gpio會有bouncing功能 你可以設定減少這種狀況 但若單純用115200次好了, 除非你確保其他中斷都不會有超時情形 不然收錯就是很正常的狀況 以前在某公司解過幾個問題 一個是 DDC 因為沒有hw buffer 最後就是請對方修改sw protocol, re transmit. 靠sw recover. 另一個是uart. sharp printer 在protocol layer於某個command一次送了64 bytes 底層的uart int因為處理時byte by byte收 反映來不及 造成printer開機送了個NACK 整個就不會動. 另外還有處理過 PTZ dome也是相同的問題 這是即時問題 有些軟體code看起來就是明顯有bug 常常見到的就是類似 user mode下 sudeo如下 wait hw condition (ex: blanking interval) firing hw 這樣的code都是有問題的 因為你無法確保是否firing hw時context switch 然後造成firing不是你想的時間區間內. 所以有時候你會看到某些裝置會閃一下 或者 會有畫面不是一整個替換 有殘留前一個畫面的一些資料在上方會下方的頁面資料之類的 -- 碧雲天,黃葉地。秋色連波,波上寒煙翠。 山映斜陽天接水;芳草無情,更在斜陽外。 黯鄉魂,追旅思;夜夜除非、好夢留人睡。 明月樓高休獨倚。酒入愁腸,化作相思淚。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.218.248 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1415989944.A.4DD.html ※ 編輯: clampsakura (111.249.218.248), 11/15/2014 02:32:51
文章代碼(AID): #1KPaguJT (LinuxDev)
文章代碼(AID): #1KPaguJT (LinuxDev)