[url=]【经验分享】基于创龙AM5708[/url]多核间通信的IPC例程通用开发流程 此文章原创来源于:创龙电子 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链接库。
, Q- q; p3 K c/ P1 z+ X. u( a[url=]AM5708[/url]编译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 ' d; y/ o2 f r$ j+ u& d
​ 图 2
$ C" V& L5 U l执行如下指令编译并安装镜像,编译完成后,将在“__install/lib”目录下会生成libticmem.a链接库文件,如下图所示: Host# make && make install ​ 图 3 ​ 图 4
$ Z" Y. V8 R- T) j[url=]AM5708[/url]的IPC例程编译以光盘“Demo\rtos-examples\tl-linux-ipc-examples\tl-gatemap-mutex-access”例程为例,进入tl-gatemap-mutex-access工程源码目录,打开products.mak文件,参照如下方法并结合实际情况配置环境变量,其他变量保持一致无需修改。 Host# vi products.mak ​ 图 5
, `$ V, Q- }2 c7 V3 y7 l; P- Linux-RT交叉编译工具链路径
! P- ~* l/ ?* U- q/ T
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链接库路径
E0 H9 T9 P$ K/ w& |: g- q
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 % B, i! I" C, |3 @* k
编译完成后,会在“install/tl-gatemap-mutex-access/debug”目录下生成可执行文件,本例程编译生成了A15核可执行文件(app_host)和DSP1核可执行文件(server_dsp1.xe66),不同例程编译生成的可执行文件不一样。不同核心对应的可执行文件、trace buffer(调试信息)路径不相同,对应关系如下表所示。 2 l5 _: E! O2 ~
表 1
" M/ o+ K$ k/ P' b- _ | 核心 | 可执行文件 | trace buffer | Host | A15核 | app_host | —— | Slave | DSP1核 | server_dsp1.xe66 | remoteproc2/trace0 | DSP2核
8 F8 r& K% ~( c* M4 k(AM570x不含) | server_dsp2.xe66 | remoteproc3/trace0 | IPU1核 | server_ipu1.xem4 | remoteproc0/trace0 | IPU2核 | server_ipu2.xem4 | remoteproc1/trace0 |
# F& ~9 n5 C1 s5 I- \* @* y' AHost# tree -A install/ ​ 图 8
1 F' V% D6 [5 F. x( m[url=]AM5708[/url]的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 # ^. w; n! k$ A# Y, [' s$ p. e
执行如下指令查看DSP核打印信息,如下图所示: Target# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 ​ 图 11
2 h Y. v, X: S! N7 C' h典型运用: l 工业PC&HMI l 工业机器人 l 医疗影像 l 电力自动化 l EtherCAT主/从控制器 l 工业多协议智能网关 - f) f8 m8 \8 [6 @
l 高端数控系统
5 y# C% z: G+ {+ M1 H
9 h+ P; }7 E, J. i |