實時通信方案 圖 1 中斷響應到PCIe通信過程 AMP + GPIO中斷技術-協同運作 AMP即Asymmetric Multi-Processing,(非對稱多處理架構),多個核心相對獨立運行不同的操作系統或裸機應用程序,如Linux+RTOS/裸機組合。系統需要一個主核心統籌全局,各處理器核心相互隔離,擁有獨立內存,既能各自執行不同任務,又可實現核間通信。 圖 2 GPIO中斷技術通過硬件級事件觸發機制,當GPIO引腳電平變化,能夠立即中斷處理器當前任務,在工業控制信號采集、緊急按鍵處理等對實時性要求嚴苛的場景中表現卓越。當AMP架構與GPIO中斷技術實現強強聯合,既能充分發揮主核調度與從核實時響應優勢,又可以大幅度提升系統計算的性能與實時性。 DMA技術-加速數據傳輸 DMA技術(Direct Memory Access,直接內存訪問)允許硬件外設直接與存儲器進行數據交換,全程無需CPU參與數據傳輸。 使用非DMA方式進行數據傳輸時,外設與內存之間的數據搬運需要依靠CPU來完成。這意味著每次數據傳輸都需要CPU的介入,導致CPU資源占用較高,并且數據傳輸速度相對較低。而采用DMA方式進行數據傳輸,外設可直接與內存進行數據交換,減少了CPU介入與中斷處理,數據傳輸更流暢高效。 圖3 RK3568J + FPGA典型應用場景 圖4 本文主要介紹基于RK3568J + FPGA的PCIe實時通信案例,適用開發環境如下。 Windows開發環境:Windows 7 64bit、Windows 10 64bit Linux開發環境:VMware15.5.5、Ubuntu18.04.4 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-4.19.232、Linux-RT-4.19.232 LinuxSDK:LinuxSDK-[版本號](基于rk356x_linux_release_v1.3.1_20221120) 硬件平臺:創龍科技TL3568F-EVM工業評估板(基于瑞芯微RK3568J + 紫光同創Logos-2) 案例說明 案例通過PCIe DMA在FPGA端(PCIe EP)與ARM端(PCIe RC)之間建立高速數據傳輸通道,由FPGA端按鍵觸發GPIO中斷啟動數據傳輸,動態調整1KByte、16KByte、32KByte、64KByte數據量并統計傳輸速率、延遲及誤碼率。 圖5 案例演示請參考產品資料完成U-Boot鏡像、內核鏡像替換,加載FPGA可執行程序,并將amp.img鏡像固化至評估板。 按下評估板FPGA端的USER3按鍵(KEY7),程序運行一次。 如下圖所示,使用示波器測量FPGA GPIO(黃色波形)中斷觸發至ARM GPIO(藍色波形)輸出高電平的實際耗時,可看到FPGA GPIO信號上升沿至ARM GPIO信號上升沿的時間間隔約為4us,即FPGA GPIO中斷響應時間約為4us。 圖6 RS232 UART0串口終端將打印GPIO中斷次數、GPIO中斷響應到啟動PCIe DMA的耗時、PCIe平均讀寫速率、PCIe讀寫耗時、誤碼率等相關信息,如下圖所示。圖7 從上圖RS232 UART0串口終端的打印信息可知,FPGA GPIO中斷響應到啟動PCIe DMA的最大耗時為4us。 |