首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例

国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例

原创
作者头像
创龙科技Tronlong
发布2025-08-18 14:25:10
发布2025-08-18 14:25:10
1580
举报

前 言

本文档主要介绍T113-i处理器的ARM + DSP、RISC-V核间通信开发案例,演示T113-i处理器ARM Cortex-A7与HiFi4 DSP核心、玄铁C906 RISC-V核心的核间通信。适用开发环境如下:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

虚拟机:VMware15.5.5

Linux开发环境:Ubuntu18.04.4 64bit

U-Boot:U-Boot-2018.07

Kernel:Linux-5.4.61

LinuxSDK:T113_Tina5.0-V1.0(Linux)

T113-i处理器支持Linux(Kernel-5.4.61)、HiFi4 DSP、玄铁C906 RISC-V组合的OpenAMP架构设计,可满足如工业HMI、工业PLC、物联网网关、机器人示教器、户用储能EMS/BMS、汽车充电桩的需求。

我司提供的ARM + DSP、RISC-V核间通信开发案例位于产品资料“4-软件资料\Demo\platform-demos\rpmsg_echo\”目录下,案例目录说明如下表所示,其中bin目录存放程序可执行文件,src目录存放案例工程源文件。

备注:

  1. 无特殊说明情况下,本文默认使用NAND FLASH配置评估板,默认从Linux系统启动卡启动系统(SD启动模式)进行测试。
  2. Linux系统默认会初始化相关外设,不影响案例测试。
  3. 本文默认使用评估板USB TO UART0串口作为ARM端调试串口,RS232 UART2串口作为HiFi4 DSP/RISC-V核心调试串口,请使用Type-C线连接PC机和评估板的USB TO UART0串口,使用RS232交叉串口母母线、USB转RS232公头串口线,将评估板的RS232 UART2串口连接至PC机的USB接口,如下图所示。
图 1
图 1

rpmsg_echo案例

案例功能

案例主要使用RPMsg框架来实现异构的处理器之间进行相互通信。ARM Cortex-A7核心运行Linux系统与rpmsg_echo应用程序,HiFi4 DSP/RISC-V核心运行HiFi4 DSP/RISC-V程序,实现ARM端的rpmsg数据的接收与发送功能。

案例程序流程图如下:

图 2
图 2

程序原理说明:

  1. HiFi4 DSP/RISC-V等待接收ARM端的rpmsg数据;
  2. ARM端的rpmsg_echo应用程序发送rpmsg数据至HiFi4 DSP/RISC-V;
  3. 当HiFi4 DSP/RISC-V端接收到ARM端的rpmsg数据后会将数据发送回ARM端;
  4. ARM端将接收来自HiFi4 DSP/RISC-V的rpmsg数据;
  5. ARM端程序与HiFi4 DSP/RISC-V程序之间循环往复接收与发送rpmsg数据,实现核间通信。

案例测试

将评估板上电启动,在U-Boot倒计时结束之前按下空格键进入U-Boot命令行模式,执行如下命令关闭设备树UART2配置,避免Linux内核占用案例的外设资源。

U-Boot# fdt set /soc/uart@2500800 status disabled

U-Boot# boot

图 3
图 3

1.ARM Cortex-A7与HiFi4 DSP核心通信

将本案例"dsp\bin\"目录下的可执行文件amp_dsp0.bin拷贝至评估板系统的"/lib/firmware/"目录下,执行如下命令,启动HiFi4 DSP核心并加载工程镜像。

Target# echo amp_dsp0.bin > /sys/class/remoteproc/remoteproc0/firmware //指定加载的工程镜像

Target# echo start > /sys/class/remoteproc/remoteproc0/state //启用HiFi4 DSP核心并加载工程镜像

图 4
图 4

HiFi4 DSP核心启动后将自动运行程序,RS232 UART2串口终端将会打印如下类似信息。

图 5
图 5

将案例"arm\bin\"目录下的应用程序rpmsg_echo拷贝至评估板文件系统,执行如下命令查看程序参数信息。

Target# ./rpmsg_echo -h

参数解析:

-r :rpmsg的控制节点;

-m :发送的信息;

-n :表示发送rpmsg数据包次数。

图 6
图 6

执行如下命令运行ARM端应用程序,发送5次rpmsg数据包至HiFi4 DSP核心,当HiFi4 DSP核心每收到1次rpmsg数据包就会将数据包发送回ARM端。

Target# ./rpmsg_echo -r dsp_rproc@0 -m tronlong -n 5

图 7
图 7

当ARM端程序运行时,RS232 UART2串口终端将会打印如下类似信息。

图 8
图 8

执行如下命令,关闭HiFi4 DSP核心,程序将停止运行。同时RS232 UART2调试串口终端会打印如下类似信息。

Target# echo stop > /sys/class/remoteproc/remoteproc0/state

图 9
图 9
图 10
图 10

2.ARM Cortex-A7与RISC-V核心通信

将本案例"risc-v\bin\"目录下的可执行文件amp_rv0.bin拷贝至评估板系统的"/lib/firmware/"目录下,执行如下命令,启动RISC-V核心并加载工程镜像。

Target# echo amp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware //指定加载的工程镜像

Target# echo start > /sys/class/remoteproc/remoteproc1/state //启用HiFi4 DSP核心并加载工程镜像

图 11
图 11

RISC-V核心启动后将自动运行程序,RS232 UART2串口终端将会打印如下类似信息。

图 12
图 12

将案例"arm\bin\"目录下的应用程序rpmsg_echo拷贝至评估板文件系统,执行如下命令查看程序参数信息。

Target# ./rpmsg_echo -h

参数解析:

-r :rpmsg的控制节点;

-m :发送的信息;

-n :表示发送rpmsg数据包的次数。

图 13
图 13

执行如下命令运行ARM端应用程序,发送5次rpmsg数据包至RISC-V核心,当RISC-V核心每收到1次rpmsg数据包就会将数据包发送回ARM端。

Target# ./rpmsg_echo -r c906_rproc\@0 -m tronlong -n 5

图 14
图 14

当ARM端程序运行时,RS232 UART2串口终端将会打印如下类似信息。

图 15
图 15

执行如下命令,关闭RISC-V核心,程序将停止运行。

Target# echo stop > /sys/class/remoteproc/remoteproc1/state

图 16
图 16
图 17
图 17

案例编译

请将产品资料“4-软件资料\Demo\platform-demos\rpmsg_echo\”案例目录下的arm、dsp和risc-v目录的源码拷贝至Ubuntu工作目录。

1.ARM程序

进入案例应用程序源码目录,执行如下命令,配置应用程序交叉编译工具链环境变量,然后进行编译,编译完成将会在当前目录下生成rpmsg_echo可执行程序。

备注:若为eMMC配置评估板,请将路径"tlt113-evm-nand"修改为"tlt113-evm-emmc"。

Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/bin/arm-linux-gnueabi-gcc make

图 18
图 18

1.RISC-V程序

请根据《RISC-V案例开发手册》的工程编译、程序固化步骤生成工程镜像。

2.HiFi4 DSP程序

请根据《DSP案例开发手册》的工程编译、程序固化步骤生成工程镜像。

关键代码

1.ARM

main.c文件位于案例"rpmsg_echo\arm\src\"目录下。

创建并打开rpmsg端点。

图 19
图 19

通过rpmsg发送数据。

图 20
图 20

通过rpmsg接收数据。

图 21
图 21

关闭rpmsg端点

图 22
图 22

2.HiFi4 DSP

main.c文件位于案例"rpmsg_echo\dsp\src\"目录下。

创建任务并开始任务调度。

图 23
图 23

初始化msgbox和openamp,并创建rpmsg控制器和端点。

图 24
图 24

拷贝数据至信息队列。

图 25
图 25

申请内存,创建并开启rpmsg_echo_thread线程。

图 26
图 26

标记线程停止标志,释放内存。

图 27
图 27

3.RISC-V

main.c文件位于案例"rpmsg_echo\risc-v\src\"目录下。

初始化openamp,并创建rpmsg控制器和端点。

图 28
图 28

拷贝数据至信息队列。

图 29
图 29

申请内存,创建并开启rpmsg_echo_thread线程。

图 30
图 30

标记线程停止标志,释放内存。

图 31
图 31

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言
  • rpmsg_echo案例
    • 案例功能
    • 案例测试
    • 案例编译
    • 关键代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档