之前一直在玩樹莓派,發現有個DSI顯示接口一直沒有被用上,經過一番研究發現有點意思,記錄一下相關資料以后再說。
1. DSI接口直接從BCM283x的CPU里面引出來,對應的是VC4(GPU核心)的一個輸出,樹莓派一共有兩個DSI輸出,DSI0只在樹莓派的CM型號中引出。驅動這個端口目前有兩種方法:
2. DSI接口跑的具體協議是MIPI DSI協議,是MIPI組織規定的一種專有的視頻傳輸協議,常見於手機屏幕。這種協議目前並不公開,相關的開發研究較為困難(在某些論壇散落者零星的資料)。與此類似的是CSI攝像頭協議,但目前CSI協議已經被泄露,可以在網上找到詳盡的spec。很久之前還有MIPI DPI協議,這個因為長時間的研究基本上已經被研究清楚,網上可以找到大量資料。
3 關於視頻傳輸格式,基本可以分為三類,HDMI,VGA,A/V,DVI等面向最終用戶的接口,這種接口比較常見,相關資料比較全面也容易適配,但是注意,這些接口一般需要芯片進行轉換,為了通用性實際上無法直接驅動屏幕面板。第二類是一些通用的屏幕接口如edp,lvds,rgb(ttl)等等,這里所說的這些接口往往是可以直接驅動面板的,是直接編碼的像素信息,復雜的是需要考慮時序和屏幕自身的參數(刷新時間,空白時間等等),另外這些協議設計的主要是像素編碼和物理傳輸層的規定。第三類就是一些專用的屏幕接口,如MIPI DSI,MIPI DPI等等,這類接口的特性更為復雜,通過一些特定的指令序列進行控制和視頻數據傳輸。
(補充,也有一些接口既可以外部連接,也可以直接用在屏幕上,比如DP和EDP)
4.關於樹莓派的顯示系統,視頻相關的過程應當分為兩部分分析:視頻的渲染和視頻的輸出(編碼)。
5. 目前,全網只有一個方案成功利用了樹莓派的dsi接口,即官方屏幕,DF家也有一塊類似的屏幕。利用dsi屏幕的難點有兩個:硬件和軟件
6. 如何解決。官方的方案是dsi->dpi橋接(TC3587系列),DF家的方案是dsi->rgb(icn6211),類似的方案還有TI家的DSI8x系列等等。這些方案的難點是:橋接芯片需要進行配置以適配輸入的dsi信號和輸出給的屏幕參數:要么使用單片機,要么辦法讓host發送這些指令(寫在firmware/kernel里,驅動gpu或其他模塊發送)。對應的,軟件端(包括firmware kernel os 甚至software)必須進行patch並且完全的適配具體屏幕。如果自己做板子,還要考慮高頻數字電路的一些玄學問題(干擾,同步,EMI等等)。總之,這個DSI接口用起來是很難了。
7. 補充:有牛人直接寫FPGA來驅動dsi屏幕的,這個應該是終極解決方案。而且這個足夠硬核,是反向的利用通用信號hdmi去驅動專用屏幕dsi。不過如果有這個技術。。。。應該也不會糾結樹莓派用什么屏幕這種小問題了。
8. 一些思路:
9. 補充:希望下一代的樹莓派可以將dpi單獨導出來,這樣就可以從根本上解決問題而不再為dsi困擾。Broadcom的意圖很明顯,希望利用RPi的DSI接口促進開發者對於BCM系芯片的高級視頻功能的研究(DSI是為高清視頻設計的,手機屏幕上已經大量采用了,不出意外應該是下一代的通用屏幕接口,當然,如果能開源的話),但目前看來,如果沒有官方的支持,用戶似乎不會對這些功能感興趣,最多也就是感到不便而無可奈何,業余開發者根本不可能去進行這些功能的研究。目前所有的這些成功的嘗試,要么本身就是Broadcom或者RPiF的工程師,要么就是有雄厚財力支持的第三方開發者。苦逼如筆者之類連100M以上示波器都沒有的業余玩家,也許只能洗洗睡了。(哦,對了,我的100M示波器怕是也該還了)。
(全文終)
另:
可能有用的資料
http://m.elecfans.com/article/578395.html
https://www.amobbs.com/thread-5552741-1-1.html
https://toshiba-semicon-storage.com/us/product/assp/interface-bridge/display-interface.html
http://www.ti.com/product/SN65DSI83
(P.S. DSI Tuner 2.0)
https://www.raspberrypi.org/forums/viewtopic.php?t=213625
https://www.raspberrypi.org/forums/viewtopic.php?t=153954
https://raspberrypi.stackexchange.com/questions/49450/does-the-raspberry-pi-touch-display-work-with-regular-kernel
https://www.raspberrypi.org/forums/viewtopic.php?t=178179
https://github.com/anholt/linux/wiki/Raspberry-Pi-and-other-MIPI-DSI-display-panels
http://raspi.tv/2014/raspberry-pi-official-7-inch-dsi-prototype-preview
https://github.com/daveshah1/DSITx
https://www.raspberrypi.org/forums/viewtopic.php?f=45&t=157109
https://hackaday.io/project/364-mipi-dsi-display-shieldhdmi-adapter/details
https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV-Programmers-Manual
https://www.raspberrypi.org/forums/viewtopic.php?t=188908
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f733d6194bd58b26b705698f96b0f0bd9225369
https://dri.freedesktop.org/docs/drm/gpu/vc4.html
@anholt
@6by9
@hermanhermitage @openedev
@aBUGSworstnightmare @es_pi_user
https://www.raspberrypi.org/forums/index.php
https://github.com
https://www.google.com
https://blog.csdn.net
最后,不是很喜歡論壇里大量的不可能、不行的說法,這也是進行這番研究的最初目的。
沒有什么不可能,僅僅是時間和成本是否值得付出。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。