1. 程式人生 > >【經驗分享】基於創龍AM5708多核間通信的IPC例程通用開發流程

【經驗分享】基於創龍AM5708多核間通信的IPC例程通用開發流程

devkit server 沒有 測試程序 內存 音視頻 host 依次 trace

c
此文章原創來源於:創龍電子

? ? ? ??AM5708嵌入式開發板是一款由創龍基於TI AM570x浮點DSP C66x + ARM Cortex-A15工業控制及可編程音視頻處理器。由SOM-TL570x工業核心板設計的開發板,它為用戶提供了SOM-TL570x工業核心板的測試平臺,用於快速評估SOM-TL570x工業核心板的整體性能。廣泛應用於機器視覺、電力自動化、智能交通、醫療器械、自動分揀裝置、高精度儀器儀表、高端數控系統等多種工業應用場合。

? ? ? ? 下面簡單講解一下創龍基於AM57x核間通信的IPC例程位於光盤"Demo\rtos-examples"目錄下,其中ti-linux-ipc-examples文件夾下包含TI官方例程,tl-linux-ipc-examples文件夾下為創龍移植的IPC例程。

? ? ? ? 每個IPC例程包含src、bin兩個文件夾,其中src文件夾下含例程源文件,bin文件夾下含有我司提供的IPC例程可執行文件,將其復制到開發板文件系統下即可測試。本章節以光盤"Demo\rtos-examples\tl-linux-ipc-examples\tl-gatemap-mutex-access"例程為例,演示基於AM57x核間通信IPC例程在Linux下的通用開發步驟。測試前請參照《基於創龍AM57x的RTOS SDK開發環境搭建和編譯說明》文檔,搭建基於Linux的RTOS Processor-SDK-04.03開發環境、編譯IPC例程需要依賴的IPC鏈接庫。

AM5708編譯libticmem.a鏈接庫
libticmem.a共享內存鏈接庫提供對共享內存的支持,它是由IPC例程"/src/ludev"源文件編譯生成,例程如果未使用共享內存則源碼不含該文件。

如果IPC例程需要使用到共享內存,請參照如下方法編譯生成libticmem.a鏈接庫。編譯IPC例程時依賴於libticmem.a鏈接庫,如果IPC例程沒有使用到共享內存則無需編譯libticmem.a鏈接庫。

打開Ubuntu,執行如下指令新建“/home/tronlong/AM57xx/rtos_examples/”工作目錄,將光盤“Demo\rtos-examples\tl-linux-ipc-examples\tl-gatemap-mutex-access”例程整個文件夾上傳到rtos_examples工作目錄。

Host#?? mkdir -p /home/tronlong/AM57xx/rtos_examples

Host#?? cd /home/tronlong/AM57xx/rtos_examples

技術分享圖片

圖 1

進入IPC例程"/src/ludev"目錄,在ludev下依次執行如下指令,新建install目錄用於存放編譯生成的文件。並設置好環境變量,其中"prefix="參數應根據IPC例程"ludev/install"目錄實際路徑修改。

Host#?? cd tl-gatemap-mutex-access/src/ludev/

Host#?? mkdir __install

Host#?? ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=/home/tronlong/AM57xx/rtos_examples/tl-gatemap-mutex-access/src/ludev/__install

技術分享圖片

圖 2

執行如下指令編譯並安裝鏡像,編譯完成後,將在“__install/lib”目錄下會生成libticmem.a鏈接庫文件,如下圖所示:

Host#?? make && make install

技術分享圖片

圖 3

技術分享圖片

圖 4

AM5708的IPC例程編譯
以光盤“Demo\rtos-examples\tl-linux-ipc-examples\tl-gatemap-mutex-access”例程為例,進入tl-gatemap-mutex-access工程源碼目錄,打開products.mak文件,參照如下方法並結合實際情況配置環境變量,其他變量保持一致無需修改。

Host#?? vi products.mak

技術分享圖片

圖 5

Linux-RT交叉編譯工具鏈路徑
TOOLCHAIN_INSTALL_DIR = /home/tronlong/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr

Cmem鏈接庫路徑
CMEM_INSTALL_DIR = /home/tronlong/AM57xx/rtos_examples/tl-gatemap-mutex-access/src/ludev

技術分享圖片

圖 6

修改完成保存退出後,執行如下指令清理工程,編譯並安裝鏡像。

Host#?? make clean

Host#?? make -j 8 && make install

技術分享圖片
圖 7

編譯完成後,會在“install/tl-gatemap-mutex-access/debug”目錄下生成可執行文件,本例程編譯生成了A15核可執行文件(app_host)和DSP1核可執行文件(server_dsp1.xe66),不同例程編譯生成的可執行文件不一樣。不同核心對應的可執行文件、trace buffer(調試信息)路徑不相同,對應關系如下表所示。

表 1

核心

可執行文件

trace buffer

Host

A15核

app_host

——

Slave

DSP1核

server_dsp1.xe66

remoteproc2/trace0

DSP2核
(AM570x不含)

server_dsp2.xe66

remoteproc3/trace0

IPU1核

server_ipu1.xem4

remoteproc0/trace0

IPU2核

server_ipu2.xem4

remoteproc1/trace0

Host#?? tree -A install/

技術分享圖片

圖 8

AM5708的IPC例程測試
為便於測試,我司提供經測試驗證的IPC例程可執行文件,位於光盤“Demo\rtos-examples”路徑下的IPC工程bin目錄下,bin目錄下還包含load-firmware.sh腳本文件,ARM端通過load-firmware.sh腳本文件加載可執行文件到DSP/M4核心。

以tl-gatemap-mutex-access例程為例,將光盤“Demo\rtos-examples\tl-linux-ipc-examples\tl-gatemap-mutex-access\bin”文件夾復制到開發板文件系統“/home/root”目錄下。進入文件系統bin目錄,執行load-firmware.sh腳本文件加載固件:

Target# ????? ./load-firmware.sh

技術分享圖片
圖 9

執行如下指令,運行A15測試程序:

Target# ????? ./app_host

技術分享圖片
圖 10

執行如下指令查看DSP核打印信息,如下圖所示:

Target# ????? cat /sys/kernel/debug/remoteproc/remoteproc2/trace0

技術分享圖片
圖 11

【經驗分享】基於創龍AM5708多核間通信的IPC例程通用開發流程