聯(lián)系我們
Contact Us公司總機:020-8998-6280
技術(shù)熱線:020-3893-9734
技術(shù)郵箱:support@tronlong.com
銷售郵箱:sales@tronlong.com
非對稱的ARM雙系統(tǒng),如何實現(xiàn)工業(yè)產(chǎn)品的低延時——基于ZYNQ
2022/04/15
Xilinx Zynq-7020/7010是一款集成雙核ARM Cortex-A9 + Artix-7 FPGA架構(gòu)的單芯片SoC,它的OpenAMP框架可實現(xiàn)雙核ARM Cortex-A9非對稱使用方案,從而使雙核ARM實現(xiàn)分別跑兩個系統(tǒng):一個ARM Cortex-A9跑Linux,一個ARM Cortex-A9作為實時核跑RTOS(FreeRTOS)或者裸機。實時核與FPGA端進行低延時的高速數(shù)據(jù)交換與實時通訊控制,從而滿足低延時的實時任務(wù)要求。而跑Linux的 ARM核作為更上層應(yīng)用,處理更復(fù)雜的業(yè)務(wù)事務(wù)。
Xilinx Zynq-7020/7010單芯片SoC方案配合雙系統(tǒng)的應(yīng)用為工業(yè)控制、電力一二次融合設(shè)備、醫(yī)療電子、測試測量、汽車電子、通信等應(yīng)用提供了更靈活、更具成本優(yōu)勢的解決方案。
產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書)可點擊下方鏈接或掃碼二維碼獲取。
http://site.tronlong.com/pfdownload
1、echo_test案例
1.1 案例功能
案例功能:CPU0使用RPMsg向CPU1發(fā)送數(shù)據(jù),CPU1接收到數(shù)據(jù)后再使用RPMsg向CPU0回傳數(shù)據(jù)。CPU0對回傳的數(shù)據(jù)進行驗證,并輸出驗證結(jié)果。
1.2 操作說明
將CPU1裸機或FreeRTOS可執(zhí)行文件復(fù)制到評估板文件系統(tǒng)“/lib/firmware/”目錄下,并執(zhí)行如下命令加載CPU1程序。
Target# echo echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
Target# echo start > /sys/class/remoteproc/remoteproc0/state
圖 3
執(zhí)行如下命令加載RPMsg驅(qū)動,并在“/dev/”目錄下生成RPMsg設(shè)備節(jié)點。
Target# modprobe rpmsg_user_dev_driver
圖 4
將CPU0應(yīng)用程序可執(zhí)行文件復(fù)制到評估板文件系統(tǒng),并執(zhí)行如下命令通過RPMsg與CPU1進行通信。
Target# ./echo_test
圖 5
輸入1,并按回車鍵進行測試。
圖6
圖7
輸入2,并按回車鍵退出測試。
圖 8
執(zhí)行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
圖 9
2、matrix_multiply案例
2.1 案例功能
案例功能:CPU0隨機生成兩個矩陣并使用RPMsg向CPU1發(fā)送數(shù)據(jù),CPU1接收到數(shù)據(jù)后進行矩陣乘法運算,再使用RPMsg向CPU0回傳運算結(jié)果,然后CPU0通過串口終端輸出運算結(jié)果。
2.2 操作說明
將CPU1裸機或FreeRTOS可執(zhí)行文件復(fù)制到評估板文件系統(tǒng)“/lib/firmware/”目錄下,并執(zhí)行如下命令加載CPU1程序。
Target# echo matrix_multiply.elf > /sys/class/remoteproc/remoteproc0/firmware
Target# echo start > /sys/class/remoteproc/remoteproc0/state
圖 10
執(zhí)行如下命令加載RPMsg驅(qū)動,并在“/dev/”目錄下生成RPMsg設(shè)備節(jié)點。
Target# modprobe rpmsg_user_dev_driver
圖 11
將CPU0應(yīng)用程序可執(zhí)行文件復(fù)制到評估板文件系統(tǒng),并執(zhí)行如下命令通過RPMsg與CPU1進行通信。
Target# ./mat_mul_demo
圖 12
輸入1,并按回車鍵進行測試。
圖 13
輸入2,并按回車鍵退出測試。
圖 14
執(zhí)行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
圖 15
3、內(nèi)存分配說明
512MByte DDR容量版本核心板的內(nèi)存地址分配如下:
表 1
1GByte DDR容量版本核心板的內(nèi)存地址分配如下:
表 2
如需修改CPU1程序(OpenAMP-remote app)內(nèi)存地址空間范圍,可通過更改設(shè)備樹文件tlz7x-easyevm-s.dts、資源表rsc_table.c及鏈接文件lscript.ld對內(nèi)存地址空間進行重新分配。三者需同步修改并保持一致,以確保固件程序鏈接地址與設(shè)備樹配置的elf_ddr_0對應(yīng)。所使用的資源(內(nèi)存和virtio設(shè)備資源)不能超出設(shè)備樹文件配置的內(nèi)存范圍。
圖 16設(shè)備樹文件tlz7x-easyevm-s.dts配置
圖 17設(shè)備樹文件tlz7x-easyevm-s.dts配置
圖 18 CPU1程序資源表rsc_table.c配置
圖 19 CPU1程序鏈接文件lscript.ld配置
上述推文中的案例是在創(chuàng)龍科技(Tronlong)基于Zynq-7010/7020處理器設(shè)計的兩款工業(yè)評估板——TLZ7x-EasyEVM、TLZ7x-EasyEVM-S上實現(xiàn)的,它由核心板+底板構(gòu)成,用戶使用核心板進行二次開發(fā)時,僅需專注上層運用,降低了開發(fā)難度和時間成本,可快速進行產(chǎn)品方案評估與技術(shù)預(yù)研。
圖 1 TLZ7x-EasyEVM硬件資源框圖

圖 4 TLZ7x-EasyEVM-S硬件資源框圖
現(xiàn)兩款評估板均有免費試用活動,趕緊掃描下方二維碼申請吧。

服務(wù)熱線