久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2154|回復: 0
打印 上一主題 下一主題
收起左側

TMS320C6678 ZYNQ OpenAMP 雙核ARM 通信案例開發手冊之echo_test案例

[復制鏈接]
跳轉到指定樓層
樓主
ID:336245 發表于 2021-7-7 09:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目錄
前 言
1 echo_test案例
1 案例功能
2 操作說明
3 關鍵代碼
3.1 linux_demo代碼說明
3.2 freertos_demo代碼說明
3.3 baremetal_demo代碼說明

前 言

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

echo_test案例開發手冊是基于創龍科技 TI TMS320C6678 + Xilinx Zynq-7045的高速多路高清視頻采集處理平臺,采用DSP+FPGA+ARM架構。

SOM-TL6678ZH核心板正面圖

SOM-TL6678ZH核心板背面圖


TL6678ZH-EVM評估板資源圖1


TL6678ZH-EVM評估板資源圖2
表 1


目錄說明
linux_demobinCPU0應用程序可執行文件
srcCPU0應用程序源碼
freertos_demobinCPU1 FreeRTOS可執行文件
projectCPU1 FreeRTOS工程
baremetal_demobinCPU1裸機可執行文件
projectCPU1裸機工程
echo_test案例
案例功能
案例功能:CPU0使用RPMsg向CPU1發送數據,CPU1接收到數據后再使用RPMsg向CPU0回傳數據。CPU0對回傳的數據進行驗證,并輸出驗證結果。
操作說明
將CPU1裸機或FreeRTOS可執行文件復制到評估板文件系統“/lib/firmware/”目錄下,并執行如下命令加載CPU1程序。
Target# echo echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
Target# echo start > /sys/class/remoteproc/remoteproc0/state

​圖 2
執行如下命令加載RPMsg驅動,并在“/dev/”目錄下生成RPMsg設備節點。RPMsg驅動源碼為內核“drivers/rpmsg/”目錄下的rpmsg_user_dev_driver.c文件。
Target# modprobe rpmsg_user_dev_driver


​圖 3

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


圖4

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


​圖 5


​圖 6

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


​圖 7

執行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state


​圖 8

關鍵代碼
linux_demo代碼說明
打開RPMsg驅動設備節點。



​圖 9

向CPU1發送數據,并對從CPU1回傳的數據進行驗證。


​圖 10

freertos_demo代碼說明
創建processing任務。


​圖 11

(2)在processing()中進行函數調用。


​圖 12

調用init_system()初始化libmetal庫與GIC控制器等。


圖13

綁定中斷號與中斷服務函數,中斷號需與設備樹配置的中斷號一致。


​圖 14


​圖 15

調用platform_create_proc()創建平臺相關信息。



​圖 16

調用get_resource_table()獲取資源表信息,資源表包含內存和virtio設備資源。virtio設備包含vring地址、vring大小和vring對齊方式等信息。


​圖 17

(13)以上函數調用成功后,再調用app()。


​圖 18

調用remoteproc_resource_init()對之前獲得的平臺信息、資源表信息進行處理。創建Remote Device,并為其設置增加、刪除、讀取RPMsg通道函數。


圖 19

調用hil_poll()以阻塞的方式調用poll函數,并等待數據接收。


​圖 20


​圖 21

在數據讀取函數rpmsg_read_cb()中,將接收到的數據放入緩沖區后產生數據接收事件,并在app()中進行事件處理。




​圖 22

在virtio設備復位函數virtio_rst_cb()中產生復位virtio事件,并在app()中進行事件處理。


​圖 23

在RPMsg通道創建函數rpmsg_channel_created()中,創建一個全局RPMsg端點,并設置端點讀取函數。RPMsg通信通過端點完成,與USB類似。


​圖 24

在RPMsg通道刪除函數rpmsg_channel_deleted()中,刪除RPMsg端點同時產生通道刪除事件,并在app()中進行事件處理。


​圖 25

baremetal_demo代碼說明

由于裸機與FreeRTOS程序相似,因此baremetal_demo代碼說明可參考freertos_demo代碼說明小節,下面對部分代碼進行補充說明。
在main()中調用init_system()初始化libmetal庫與GIC控制器等。調用platform_create_proc()創建平臺相關信息。調用get_resource_table()獲取資源表信息。以上函數調用成功后,再調用app()。


​圖 26

調用remoteproc_resource_init()對之前獲得的平臺信息、資源表信息進行處理。創建Remote Device,并為其設置增加、刪除、讀取RPMsg通道函數。


​圖 27

在數據讀取函數rpmsg_read_cb()中,對從CPU0接收到的數據進行判斷,并進行不同處理(關機或回傳數據),實現通信和生命周期管理。


​圖 28

如需獲取案例源碼、TL6678ZH-EVM評估板或其他產品詳細資料,歡迎留言或者私聊!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品99| 日韩视频精品在线 | 电影午夜精品一区二区三区 | 国产日韩精品视频 | 精品国产乱码久久久久久影片 | 亚洲高清在线 | 日本福利片 | 国产成人在线一区 | 欧美日韩三级在线观看 | 成人免费视频 | 久久一区二区三区免费 | 麻豆国产一区二区三区四区 | 欧美一级特黄aaa大片在线观看 | 日韩一区二区在线观看视频 | 午夜视频在线免费观看 | 中文久久 | 亚洲成人自拍 | 久久精品成人热国产成 | 国产亚洲精品久久情网 | 欧美精品在线视频 | 成人午夜精品 | 日韩欧美手机在线 | 在线观看国产三级 | 国产色| 中文字幕一区二区三区四区五区 | 一级aaaa毛片 | 区一区二在线观看 | 国产精品一二三区在线观看 | 久久精品亚洲一区二区三区浴池 | 亚洲精品电影 | 久久大陆 | 成人婷婷| 日本不卡一区 | 日韩电影a | 99精品视频在线 | 91中文字幕在线 | 日韩一区二区视频 | 欧美成人一区二区三区片免费 | 久草中文在线 | 色噜噜亚洲男人的天堂 | 国产免费一区二区 |