標(biāo)題: TMS320C6678 ZYNQ OpenAMP 雙核ARM 通信案例開發(fā)手冊(cè)之echo_test案例 [打印本頁]
作者: Tronlong 時(shí)間: 2021-7-7 09:05
標(biāo)題: TMS320C6678 ZYNQ OpenAMP 雙核ARM 通信案例開發(fā)手冊(cè)之echo_test案例
目錄
前 言
1 echo_test案例
1 案例功能
2 操作說明
3 關(guān)鍵代碼
3.1 linux_demo代碼說明
3.2 freertos_demo代碼說明
3.3 baremetal_demo代碼說明
前 言
本文主要介紹ZYNQ基于OpenAMP框架的雙核ARM通信案例的使用說明,CPU0(Master)運(yùn)行Linux系統(tǒng),CPU1(Remote)運(yùn)行裸機(jī)或FreeRTOS程序。CPU0使用remoteproc加載CPU1程序,并對(duì)CPU1進(jìn)行配置。

echo_test案例開發(fā)手冊(cè)是基于創(chuàng)龍科技 TI TMS320C6678 + Xilinx Zynq-7045的高速多路高清視頻采集處理平臺(tái),采用DSP+FPGA+ARM架構(gòu)。
SOM-TL6678ZH核心板正面圖
SOM-TL6678ZH核心板背面圖
TL6678ZH-EVM評(píng)估板資源圖1
TL6678ZH-EVM評(píng)估板資源圖2
表 1
目錄說明
linux_demobinCPU0應(yīng)用程序可執(zhí)行文件
srcCPU0應(yīng)用程序源碼
freertos_demobinCPU1 FreeRTOS可執(zhí)行文件
projectCPU1 FreeRTOS工程
baremetal_demobinCPU1裸機(jī)可執(zhí)行文件
projectCPU1裸機(jī)工程
echo_test案例
案例功能
案例功能:CPU0使用RPMsg向CPU1發(fā)送數(shù)據(jù),CPU1接收到數(shù)據(jù)后再使用RPMsg向CPU0回傳數(shù)據(jù)。CPU0對(duì)回傳的數(shù)據(jù)進(jìn)行驗(yàn)證,并輸出驗(yàn)證結(jié)果。
操作說明
將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
圖 2
執(zhí)行如下命令加載RPMsg驅(qū)動(dòng),并在“/dev/”目錄下生成RPMsg設(shè)備節(jié)點(diǎn)。RPMsg驅(qū)動(dòng)源碼為內(nèi)核“drivers/rpmsg/”目錄下的rpmsg_user_dev_driver.c文件。
Target# modprobe rpmsg_user_dev_driver
圖 3
將CPU0應(yīng)用程序可執(zhí)行文件復(fù)制到評(píng)估板文件系統(tǒng),并執(zhí)行如下命令通過RPMsg與CPU1進(jìn)行通信。
Target# ./echo_test
圖4
輸入1,并按回車鍵進(jìn)行測(cè)試。
圖 5
圖 6
輸入2,并按回車鍵退出測(cè)試。
圖 7
執(zhí)行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
圖 8
關(guān)鍵代碼
linux_demo代碼說明
打開RPMsg驅(qū)動(dòng)設(shè)備節(jié)點(diǎn)。
圖 9
向CPU1發(fā)送數(shù)據(jù),并對(duì)從CPU1回傳的數(shù)據(jù)進(jìn)行驗(yàn)證。
圖 10
freertos_demo代碼說明
創(chuàng)建processing任務(wù)。
圖 11
(2)在processing()中進(jìn)行函數(shù)調(diào)用。
圖 12
調(diào)用init_system()初始化libmetal庫與GIC控制器等。
圖13
綁定中斷號(hào)與中斷服務(wù)函數(shù),中斷號(hào)需與設(shè)備樹配置的中斷號(hào)一致。
圖 14
圖 15
調(diào)用platform_create_proc()創(chuàng)建平臺(tái)相關(guān)信息。
圖 16
調(diào)用get_resource_table()獲取資源表信息,資源表包含內(nèi)存和virtio設(shè)備資源。virtio設(shè)備包含vring地址、vring大小和vring對(duì)齊方式等信息。
圖 17
(13)以上函數(shù)調(diào)用成功后,再調(diào)用app()。
圖 18
調(diào)用remoteproc_resource_init()對(duì)之前獲得的平臺(tái)信息、資源表信息進(jìn)行處理。創(chuàng)建Remote Device,并為其設(shè)置增加、刪除、讀取RPMsg通道函數(shù)。
圖 19
調(diào)用hil_poll()以阻塞的方式調(diào)用poll函數(shù),并等待數(shù)據(jù)接收。
圖 20
圖 21
在數(shù)據(jù)讀取函數(shù)rpmsg_read_cb()中,將接收到的數(shù)據(jù)放入緩沖區(qū)后產(chǎn)生數(shù)據(jù)接收事件,并在app()中進(jìn)行事件處理。
圖 22
在virtio設(shè)備復(fù)位函數(shù)virtio_rst_cb()中產(chǎn)生復(fù)位virtio事件,并在app()中進(jìn)行事件處理。
圖 23
在RPMsg通道創(chuàng)建函數(shù)rpmsg_channel_created()中,創(chuàng)建一個(gè)全局RPMsg端點(diǎn),并設(shè)置端點(diǎn)讀取函數(shù)。RPMsg通信通過端點(diǎn)完成,與USB類似。
圖 24
在RPMsg通道刪除函數(shù)rpmsg_channel_deleted()中,刪除RPMsg端點(diǎn)同時(shí)產(chǎn)生通道刪除事件,并在app()中進(jìn)行事件處理。
圖 25
baremetal_demo代碼說明
由于裸機(jī)與FreeRTOS程序相似,因此baremetal_demo代碼說明可參考freertos_demo代碼說明小節(jié),下面對(duì)部分代碼進(jìn)行補(bǔ)充說明。
在main()中調(diào)用init_system()初始化libmetal庫與GIC控制器等。調(diào)用platform_create_proc()創(chuàng)建平臺(tái)相關(guān)信息。調(diào)用get_resource_table()獲取資源表信息。以上函數(shù)調(diào)用成功后,再調(diào)用app()。
圖 26
調(diào)用remoteproc_resource_init()對(duì)之前獲得的平臺(tái)信息、資源表信息進(jìn)行處理。創(chuàng)建Remote Device,并為其設(shè)置增加、刪除、讀取RPMsg通道函數(shù)。
圖 27
在數(shù)據(jù)讀取函數(shù)rpmsg_read_cb()中,對(duì)從CPU0接收到的數(shù)據(jù)進(jìn)行判斷,并進(jìn)行不同處理(關(guān)機(jī)或回傳數(shù)據(jù)),實(shí)現(xiàn)通信和生命周期管理。
圖 28
如需獲取案例源碼、TL6678ZH-EVM評(píng)估板或其他產(chǎn)品詳細(xì)資料,歡迎留言或者私聊!
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
日皮视频免费
|
日韩欧美在线一区
|
国产伦精品一区二区三毛
|
久久艹免费视频
|
日本久久综合网
|
国产精品成人国产乱一区
|
免费亚洲成人
|
日本网站免费在线观看
|
一级毛片视频
|
天天综合网7799精品
|
美女爽到呻吟久久久久
|
欧美极品一区二区
|
国产乱码久久久
|
久久久精品视频一区二区三区
|
亚洲国产日韩一区
|
国产精品99久久久久久久久久久久
|
日韩一区二区在线观看
|
亚洲天堂精品久久
|
99r在线|
在线亚洲欧美
|
欧美在线国产精品
|
精品国产欧美
|
国产精品久久一区二区三区
|
超碰男人天堂
|
91在线观看|
毛片电影
|
国产精品久久久久一区二区三区
|
成人看片在线观看
|
日韩高清国产一区在线
|
99久久精品免费视频
|
国产视频一区二区
|
国产精品国产a级
|
国产精品毛片一区二区三区
|
精品国产91乱码一区二区三区
|
久久i|
久操伊人
|
日韩精品一区二区三区中文在线
|
天天操天天射综合
|
91婷婷韩国欧美一区二区
|
日本在线视频一区二区
|
欧美成年网站
|