。arm怎麼給fpga傳數據呢
FPGA的地址映射到ARM空間後,能夠直接寫寄存器,或者經過DMA傳送。DDR沒用過。FPGA的IP覈對linux而言就像普通的設備同樣,也是寄存器,數據總線。傳輸方式也是讀寫寄存器,或者DMA傳輸。
linux並無爲FPGA提供一套新的接口方式
。須要寫驅動
IP的寄存器映射地址是編譯時設置的,而後經過設備樹傳給驅動。驅動裏面要作個虛擬地址映射才能夠用。就這麼一點區別,其餘的和普通驅動同樣
你若是不寫成平臺總線驅動,就能夠不用設備樹,寫成普通驅動,不過寫成設備樹靈活些
什麼設備或者子系統架構就看功能需求了
若是DMA和USB功能放到一塊兒,寫一個字符設備就好了。無論是usb仍是dma,傳完了都會有中斷回調函數,這裏面開啓下次傳送就好了。usb和dma共有這個字符設備
。雜設備會簡單嗎
是的,可是少不了幾行代碼,並且很差設置私有數據
也能夠,分層、分模塊。可是全部的數據最好在底層完成轉移,就看你是否願意花功夫去作
。DMA
這個DMA到DMA迴環測試驅動,要本身作IP核
不須要了解AXI協議,zynq的DMA驅動都作好了,直接調用DMA的通用接口就好了
。USB3.0速度小於理論速度
有協議開銷,並且批量端點的話,錯誤重傳也會影響有效帶寬
大數據量異步適合些,帶寬是看用的什麼端點傳的,數據量大的時候與異步同步關係不大,測得300多MB/s,具體值忘了
大數量傳用BULK和ISO端點傳,BULK會錯誤重傳,ISO保證帶寬,但不保證數據的可靠性,可能會掉數據,另外linux對iso支持很差,建議用bulk
。一個hub同時接鼠標,鍵盤,傳輸數據線
帶寬會受限HUB的帶寬,再就是供電也會受限hub的供電能力,建議直接接root hub上
並且,我記得,鼠標和鍵盤用的中斷端點,USB3.0協議會爲這個端點保留必定的帶寬,固然這個帶寬不高,感性趣的話能夠查查
。qt移植
網上有移植qt+opengl,eglfs,參考要少些,能夠找找。我沒有單獨移植過qt+opengl,沒這個需求。不過yocto裏面有
。arm 版 ubuntu
單獨編內核而後替換很方便的
不用修改文件系統,只替換內核,驅動等修改部分
。其餘
yocto用git下來的都是tar.gz之類的包
不少驅動都有實現用戶空間通用驅動的,像USB、I2C、SPI等linux