創龍首頁 >關于創龍 > 新聞資訊 > 技術文章

聯系我們

Contact Us

公司總機:020-8998-6280

技術熱線:020-3893-9734

技術郵箱:support@tronlong.com

銷售郵箱:sales@tronlong.com

Xilinx ZYNQ雙核ARM通信開發實例

2021/12/23

前  言:本文主要介紹基于OpenAMP框架的雙核ARM通信案例的使用說明,CPU0(Master)運行Linux系統,CPU1(Remote)運行裸機或FreeRTOS程序。CPU0使用remoteproc加載CPU1程序,并對CPU1進行配置。




圖 1

OpenAMP詳細開發說明可查閱官方文檔:https://china.xilinx.com/content/dam/xilinx/support/documentation/sw_manuals/xilinx2021_2/ug1186-zynq-openamp-gsg.pdf。

本文基于Xilinx Zynq-7010/7020平臺進行案例測試。







產品資料(用戶手冊、核心板硬件資料、產品規格書) 


可點擊鏈接或掃碼二維碼獲取 



↓↓↓

http://site.tronlong.com/pfdownload




1、echo_test案例

1.1 案例功能

案例功能:CPU0使用RPMsg向CPU1發送數據,CPU1接收到數據后再使用RPMsg向CPU0回傳數據。CPU0對回傳的數據進行驗證,并輸出驗證結果。

1.2 操作說明


將CPU1裸機或FreeRTOS可執行文件復制到評估板文件系統“/lib/firmware/”目錄下,并執行如下命令加載CPU1程序。

Target#  echo echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
Target#  echo start > /sys/class/remoteproc/remoteproc0/state



圖 3

執行如下命令加載RPMsg驅動,并在“/dev/”目錄下生成RPMsg設備節點。
Target#  modprobe rpmsg_user_dev_driver


圖 4

將CPU0應用程序可執行文件復制到評估板文件系統,并執行如下命令通過RPMsg與CPU1進行通信。

Target#  ./echo_test


圖 5

輸入1,并按回車鍵進行測試。

 

圖 6


圖 7

輸入2,并按回車鍵退出測試。


圖 8

執行如下命令,停止CPU1程序。

Target#  echo stop > /sys/class/remoteproc/remoteproc0/state 


圖 9

2、matrix_multiply案例

2.1 案例功能

案例功能:CPU0隨機生成兩個矩陣并使用RPMsg向CPU1發送數據,CPU1接收到數據后進行矩陣乘法運算,再使用RPMsg向CPU0回傳運算結果,然后CPU0通過串口終端輸出運算結果。

2.2 操作說明

將CPU1裸機或FreeRTOS可執行文件復制到評估板文件系統“/lib/firmware/”目錄下,并執行如下命令加載CPU1程序。

Target#  echo matrix_multiply.elf > /sys/class/remoteproc/remoteproc0/firmware

Target#  echo start > /sys/class/remoteproc/remoteproc0/state


圖 10

執行如下命令加載RPMsg驅動,并在“/dev/”目錄下生成RPMsg設備節點。

Target#  modprobe rpmsg_user_dev_driver


圖 11

將CPU0應用程序可執行文件復制到評估板文件系統,并執行如下命令通過RPMsg與CPU1進行通信。

Target#  ./mat_mul_demo


圖 12

輸入1,并按回車鍵進行測試。


圖 13

輸入2,并按回車鍵退出測試。 


圖 14

執行如下命令,停止CPU1程序。

Target#  echo stop > /sys/class/remoteproc/remoteproc0/state


圖 15

3、內存分配說明

512MByte DDR容量版本核心板的內存地址分配如下:

表 1



1GByte DDR容量版本核心板的內存地址分配如下:

表 2



如需修改CPU1程序(OpenAMP-remote app)內存地址空間范圍,可通過更改設備樹文件tlz7x-easyevm-s.dts、資源表rsc_table.c及鏈接文件lscript.ld對內存地址空間進行重新分配。三者需同步修改并保持一致,以確保固件程序鏈接地址與設備樹配置的elf_ddr_0對應。所使用的資源(內存和virtio設備資源)不能超出設備樹文件配置的內存范圍。


圖 16設備樹文件tlz7x-easyevm-s.dts配置


圖 17設備樹文件tlz7x-easyevm-s.dts配置


圖 18 CPU1程序資源表rsc_table.c配置


圖 19 CPU1程序鏈接文件lscript.ld配置


創龍官方微信公眾號

Copyright © 2013~2025 廣州創龍電子科技有限公司 All Rights Reserved  | 粵ICP備15055271號