作者: Denny Yang
TI的新一代处理器平台AM57XX是多核异构结构的SOC,片上有一到两个ARM核(ARM CORTEX-A15)和一到两个DSP(C66x)核。AM57xx处理器是高度集成的器件,可用于实现高性能和多媒体应用。板载加速器提供加速视觉和深度学习功能,支持多个工业以太网协议和视频处理。多核SOC的软件相对单核系统比较复杂,TI的AM57XX的软件包是processor sdk(http://www.ti.com/tool/processor-sdk-am57x)。
SDK默认ARM 跑LINUX系统,DSP跑OPENCL Monitor。ARM通过OPENCL接口使用DSP,DSP起到加速运算的作用,如下图所示:
图1,基于OPENCL的工作方式
很多客户希望自主使用DSP,不用OPENCL框架。TI也提供了基于IPC的ARM DSP工作框架,如下图所示:
图2,基于IPC的工作方式
本文介绍图2的工作方式和操作步骤。本文编译工作都是在一台LINUX PC上操作,建议操作系统使用UBUNTU1604或者1804版本。本文基于Processor SDK 06.01.00.08版本操作,其他版本SDK操作步骤大致相似。分步骤操作如下:
1,安装AM57XX RTOS SDK和LINUX SDK。LINUX SDK下载链接如下: http://software-dl.ti.com/processor-sdk-linux/esd/AM57X/latest/index_FDS.html
点击下面链接下载LINUX SDK
在UBUNTU系统下,首先通过chmod +x ….给下载文件一个可执行权限,然后./xxx执行这个安装包,根据提示安装到默认目录。
同理,安装LINUX版本RTOS SDK ,链接如下:http://software-dl.ti.com/processor-sdk-rtos/esd/AM57X/latest/index_FDS.html
在UBUNTU系统下,首先通过chmod +x ….给下载文件一个可执行权限,然后./xxx执行这个安装包,根据提示安装到默认目录。
RTOS SDK安装好后会在/home/xxx/ti目录下出现如下文件:
2,安装LINUX版本CCS
最新版本CCS下载链接:http://www.ti.com/tool/download/CCSTUDIO
下载这个文件到UBUNTU系统:
下载解压后会得到如下文件:
在UBUNTU桌面系统中(注意要登录桌面,不要远程控制台登录),通过控制台执行./ ccs_setup_9.2.0.00013.bin,然后根据提示把CCS安装到/home/xxx/ti目录。
注意:第一次打开CCS会问是否需要导入RTOS安装的一系列组件,选择“是”。
3,新建开发板启动SD卡,编译kernel。
准备一张空白SD卡,插入USB转SD工具,将工具插入UBUNTU PC USB口。然后通过控制台进入ti-processor-sdk-linux-am57xx-evm-06.01.00.08\bin,执行./ create-sdcard.sh。根据提示选择SD卡,最终得到一张可以用于启动的SD卡。
把这张卡插入AM5728 IDK,上电可以正常启动LINUX系统。
在ti-processor-sdk-linux-am57xx-evm-06.01.00.08路径下,执行make linux可以把LINUX kernel重新编译。
4,编译IPC EXAMPLE。本文要编译的DEMO路径是:ti\ipc_3_50_04_07\examples\DRA7XX_linux_elf。首先到ipc_3_50_04_07目录编辑products.mak
设置TOOLCHAIN_LONGNAME,TOOLCHAIN_INSTALL_DIR,TOOLCHAIN_PREFIX,KERNEL_INSTALL_DIR等参数。
进入processor_sdk_rtos_am57xx_6_01_00_08目录,编辑makefile如下:
在processor_sdk_rtos_am57xx_6_01_00_08目录执行./setupenv.sh && make ipc_example,如果一切顺利可以在\ipc_3_50_04_07\examples\DRA7XX_linux_elf目录下获得编译好的DEMO binary文件。
5,本文测试ex02_messageq这个DEMO,在DRA7XX_linux_elf目录下找到如下文件复制到开发板上LINUX系统。
App_host是ARM LINUX跑的软件,server_xxx分别是在DSP1/2,IPU1/2上面跑到软件。把server_xx这几个文件复制到/lib/firmware下面。删除现有的dra7-dsp1-fw.xe66,dra7-dsp2-fw.xe66,dra7-ipu1-fw.xem4,dra7-ipu2-fw.xem4软连接。然后重新建立软链接:
ln -s server_dsp1.xe66 /lib/firmware/dra7-dsp1-fw.xe66
ln -s server_dsp2.xe66 /lib/firmware/dra7-dsp2-fw.xe66
ln -s server_ipu1.xem4 /lib/firmware/dra7-ipu1-fw.xem4
ln -s server_ipu2.xem4 /lib/firmware/dra7-ipu2-fw.xem4
重启系统。
分别执行:./app_host DSP1(DSP2,IPU1,IPU2),可以获得如下输入打印,说明运行成功:
6,进一步开发。进入./ti/pdk_am57xx_1_0_16/packages目录,执行source ./pdksetupenv.sh。修改pdkProjectCreate.sh 文件中的CCS路径如下:
执行“./pdkProjectCreate.sh AM572x all little all all dsp”创建DSP DEMO的CCS工程。
一切顺利可以在.\ti\pdk_am57xx_1_0_16\packages\MyExampleProjects目录创建一些CCS工程如下:
这些是基于TI RTOS的一些外设接口的DEMO软件,他们可以导入到CCS进行编译和调试,读者可以把需要的DEMO移植到IPC EXAMPLE里,从而实现自己DSP软件。
总结:本文介绍了如何编译测试AM57XX平台IPC的DEMO。首先需要安装UBUNTU操作系统的PC,并在UBUNTU下安装RTOS和LINUX SDK,然后安装LINUX版本CCS。软件安装完毕,需要修改编译脚本,先编译IPC EXAMPLE,然后创建基于CCS的DSP RTOS DEMO。后续需要读者把RTOS DEMO移植到IPC EXAMPLE从而实现自己的DSP软件。