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

圖 1
OpenAMP詳細開發說明可查閱官方文檔。
本文基于Xilinx Zynq-7010/7020平臺進行案例測試。

圖2
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配置
-
嵌入式
+關注
關注
5141文章
19526瀏覽量
314861 -
開發板
+關注
關注
25文章
5503瀏覽量
102202 -
Zynq-7000
+關注
關注
3文章
144瀏覽量
37277 -
核心板
+關注
關注
5文章
1105瀏覽量
30628 -
工控板
+關注
關注
0文章
196瀏覽量
13421
發布評論請先 登錄
基于Xilinx ZYNQ7000 FPGA嵌入式開發實戰指南
dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有?
AMD/Xilinx Zynq? UltraScale+ ? MPSoC ZCU102 評估套件

全志T113雙核異構處理器的使用基于Tina Linux5.0——異構雙核通信驗證
正點原子fpga開發板不同型號
【AG32開發板體驗連載】雷達實現與控制
為Xilinx? Zynq?UltraScale?系列多處理器中的VCCINT_VCU軌供電

使用TPS65086x PMIC為Xilinx Zynq UltraScale MPSoC供電

評論