日韩精品电影一二区-精品久久久久久亚洲中文字幕-一区二区三区国产美女在线播放-欧美日韩在线观看你懂的-午夜精品一区二区三区的区别-久久精品娱乐亚洲领-欧美在线网站一区二区三区-在线观看91精品国产不卡-国产水滴盗摄一区二区

創(chuàng)龍首頁(yè) >關(guān)于創(chuàng)龍 > 新聞資訊 > 技術(shù)文章

聯(lián)系我們

Contact Us

公司總機(jī):020-8998-6280

技術(shù)熱線:020-3893-9734

技術(shù)郵箱:support@tronlong.com

銷(xiāo)售郵箱:sales@tronlong.com

Xilinx ZYNQ雙核ARM通信開(kāi)發(fā)實(shí)例

2021/12/23

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




圖 1

OpenAMP詳細(xì)開(kāi)發(fā)說(shuō)明可查閱官方文檔:https://china.xilinx.com/content/dam/xilinx/support/documentation/sw_manuals/xilinx2021_2/ug1186-zynq-openamp-gsg.pdf。

本文基于Xilinx Zynq-7010/7020平臺(tái)進(jìn)行案例測(cè)試。







產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書(shū)) 


可點(diǎn)擊鏈接或掃碼二維碼獲取 



↓↓↓

http://site.tronlong.com/pfdownload




1、echo_test案例

1.1 案例功能

案例功能:CPU0使用RPMsg向CPU1發(fā)送數(shù)據(jù),CPU1接收到數(shù)據(jù)后再使用RPMsg向CPU0回傳數(shù)據(jù)。CPU0對(duì)回傳的數(shù)據(jù)進(jìn)行驗(yàn)證,并輸出驗(yàn)證結(jié)果。

1.2 操作說(shuō)明


將CPU1裸機(jī)或FreeRTOS可執(zhí)行文件復(fù)制到評(píng)估板文件系統(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ū)動(dòng),并在“/dev/”目錄下生成RPMsg設(shè)備節(jié)點(diǎn)。
Target#  modprobe rpmsg_user_dev_driver


圖 4

將CPU0應(yīng)用程序可執(zhí)行文件復(fù)制到評(píng)估板文件系統(tǒng),并執(zhí)行如下命令通過(guò)RPMsg與CPU1進(jìn)行通信。

Target#  ./echo_test


圖 5

輸入1,并按回車(chē)鍵進(jìn)行測(cè)試。

 

圖 6


圖 7

輸入2,并按回車(chē)鍵退出測(cè)試。


圖 8

執(zhí)行如下命令,停止CPU1程序。

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


圖 9

2、matrix_multiply案例

2.1 案例功能

案例功能:CPU0隨機(jī)生成兩個(gè)矩陣并使用RPMsg向CPU1發(fā)送數(shù)據(jù),CPU1接收到數(shù)據(jù)后進(jìn)行矩陣乘法運(yùn)算,再使用RPMsg向CPU0回傳運(yùn)算結(jié)果,然后CPU0通過(guò)串口終端輸出運(yùn)算結(jié)果。

2.2 操作說(shuō)明

將CPU1裸機(jī)或FreeRTOS可執(zhí)行文件復(fù)制到評(píng)估板文件系統(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ū)動(dòng),并在“/dev/”目錄下生成RPMsg設(shè)備節(jié)點(diǎn)。

Target#  modprobe rpmsg_user_dev_driver


圖 11

將CPU0應(yīng)用程序可執(zhí)行文件復(fù)制到評(píng)估板文件系統(tǒng),并執(zhí)行如下命令通過(guò)RPMsg與CPU1進(jìn)行通信。

Target#  ./mat_mul_demo


圖 12

輸入1,并按回車(chē)鍵進(jìn)行測(cè)試。


圖 13

輸入2,并按回車(chē)鍵退出測(cè)試。 


圖 14

執(zhí)行如下命令,停止CPU1程序。

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


圖 15

3、內(nèi)存分配說(shuō)明

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

表 1



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

表 2



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


圖 16設(shè)備樹(shù)文件tlz7x-easyevm-s.dts配置


圖 17設(shè)備樹(shù)文件tlz7x-easyevm-s.dts配置


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


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


Copyright © 2013~2025 廣州創(chuàng)龍電子科技有限公司 All Rights Reserved  | 粵ICP備15055271號(hào)