前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >米尔全志T113-i国产开发板实测:RISC-V+DSP性能揭秘

米尔全志T113-i国产开发板实测:RISC-V+DSP性能揭秘

原创
作者头像
用户10591265
发布于 2025-03-21 09:13:47
发布于 2025-03-21 09:13:47
2680
举报
文章被收录于专栏:米尔电子米尔电子

近年来,随着半导体产业的快速发展和技术的不断迭代,物联网设备种类繁多(如智能家居、工业传感器),对算力、功耗、实时性要求差异大,单一架构无法满足所有需求。因此米尔推出MYD-YT113i开发板(基于全志T113-i)来应对这一市场需求。

米尔基于全志T113-i核心板及开发板
米尔基于全志T113-i核心板及开发板

part 01 T113-i芯片及OpenAMP简介

T113-i芯片简介

T113-i由两颗ARM A7 、一颗C906(RISC-V)和一颗DSP(HIFI 4)组成。

  • C906(RISC-V核)特性:
  1. 主频最高1008MHz
  2. 32KB I-cache+32 KB D-cache
  3. 操作系统支持裸跑和FreeRTOS实时操作系统
  4. 支持少量数据核间通讯(RPMsg)和大量核间数据(RPBuf)
  • DSP(HIFI 4)特性:
  1. 最高主频600MHz
  2. 32KB L1 I-cache+32 KB L1 D-cache  64KB I-ram+64KB D-ram
  3. 操作系统支持裸跑和FreeRTOS实时操作系统
  4. 支持少量数据核间通讯(RPMsg)和大量核间数据(RPBuf)
  • OpenAMP系统原理

T113-i=2×ARM A7 + 1×C906(RISC-V) + 1×DSP(HIFI 4)组成,其中两个A7核为主核心,C906(RISC-V核)和DSP为双副核心。而其中的RISC-V属于超高能效副核心,标配内存管理单元,可运行RTOS或裸机程序,T113的主核运行Linux进行人机界面的交互和应用流程,而RISC-V则是后台可进行大数据数据采集,或者相关编码器的控制等,降低主核被中断的次数,大大提供了主核的运行效率。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立运行不同的任务,又可多个核心之间进行核间通信,这些不同架构的核心以及他们上面所运行的软件组合在一起,就成了 AMP 系统(Asymmetric Multiprocessing System 异构多处理系统)即非对称多处理架构。

part 02 AMP系统通信机制详解

AMP通信原理

由于两个核心存在的目的是协同的处理,因此在异构多处理系统中往往会形成Master-Remote结构。主核心启动后启动从核心。当两个核心上的系统都启动完成后,他们之间就通过IPC(Inter Processor Communication)方式进行通信,而 RPMsg就是IPC中的一种。 在AMP系统中,两个核心通过共享内存的方式进行通信。两个核心通过AMP中断来传递讯息。内存的管理由主核负责。

使用 RPMsg进行核间通信

RPMsg整体通讯框架

上面介绍了通讯原理,这里讲解如何通讯,AMP使用RPMsg框架进行通讯,该框架用于AMP场景下处理器之间进行相互通信。OpenAMP内部实现了可用于RTOS或裸机系统中的RPMsg框架,与Linux内核的RPMsg框架兼容。

其通信链路建立流程如下:

  1. RTOS 端调用 rpmsg_create_ept 创建指定 name 的端点。
  2. Linux 端 rpmsg core 层收到端点创建消息,调用 rpmsg_register_device 将其作为一个设备注册到 rpmsg bus。
  3. Linux 端 rpmsg bus 匹配到相应的驱动,触发其 probe 函数。
  4. Linux 端驱动 probe 函数完成一些资源的分配以及文件节点的生成。
  5. Linux 端驱动的 probe 函数调用完后,rpmsg bus 会回复一个 ACK。
  6. RTOS 端收到 ACK 后设置端点的状态,此时使用 is_rpmsg_ept_ready 函数会返回 true。

RPMsg数据传输流程如下:

下面展示一次RPMsg数据传输的通信过程,下面详细说明:

  1. arm端把数据拷贝到buffer中,在初始化时已经将buffer和payload memory地址绑定,因此数据拷贝后相当于存放到了payloadmemory中。
  2. 在消息传输命令后加上数据在payload memory中的起始地址和长度,组成数据包,调用RPMsg接口发送。

RPBuf:基于共享内存和RPMsg消息通知,实现传输大数据传输的框架。

RPMsg:基于VirtIO管理的共享内存,实现数据传输的框架。

VirtIO:原本是一套用在虚拟化环境中传输数据的框架,这里用作共享内存(VRING)的管理。

OpenAMP:OpenAMP框架为RTOS、裸机和Linux用户空间提供了RPMsg、VirtIO、re-moteproc(未列出)的实现,并且与Linux内核兼容。

Msgbox:是全志平台提供的一套消息中断机制,已通过linux内核中原生的mailbox框架作适配。

MSGBOX_IRO_REG:Msgbox的中断相关寄存器。

buffer:表示申请到的共享内存。用户通过操作buffer对象,可直接访问对应的共享内存。

payload memory:用来存放实际传输数据的共享内存,因此称为payload(有效负载)。

VRING:由Virtl0管理的一个环形共享内存。

part 03 案例与性能测试

A核与RISC-V核通讯流程

A核与RISC-V核通讯流程如下:

1. 首先监听端点

2. 创建端点

3. 节点通讯

linux向riscv发送

4. riscv接收数据

A核与RISC-V核数据传输性能测试

A核与RISC-V核数据传输性能测试,使用rpmsg_test命令对rpmsg进行性能测试,测试发送方向和接收方向各自的耗时以及速率。

1. 主核测试结果:

2. 从核测试结果:

3. 通过输出的结果可以得到:

[rpmsg1] send: 496.000000Kb 20.000000ms 24.799999M/s

[rpmsg1] receive : 496.000000Kb 9980.000000ms 0.049699Mb/s

发送496KB数据耗时20ms发送速率为24.79Mb/s

接收496KB数据耗时9980ms发送速率为0.049699Mb/s

DSP GPADC采集测试

采集流程如下:

1. 开启DSP

2. DSP核打印

3. 开启DSP后,把GPADC0引脚接入1.8V电源,此时用户可以执行A核应用程序与DSP进行通讯,使DSP进行GPADC采集并返回数据

可以看到GPADC0收的电压数据为1792,转换为电压值为:1792/1000=1.792V。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
嵌入式学习路线图
可能是最近跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助。
刘盼
2018/03/01
2.6K0
嵌入式学习路线图
嵌入式软件工程师杂谈 —– 什么是BSP工程师?
要明白什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)说起。维基百科上对嵌入式系统的定义如下:
混说Linux
2022/11/18
9980
嵌入式软件工程师杂谈 —– 什么是BSP工程师?
嵌入式学习路线「建议收藏」
嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把嵌入式开发作为自己的职业目标,但是因为嵌入式涉及的知识太多,太杂,太广,很多嵌入式初学者陷入嵌入式知识的海洋中,东学一点,西学一点,找不到学习的方向。
全栈程序员站长
2022/06/30
2K0
毕业十年 | 这是我的学习路线图
技术有很多种,也永远学不完。不仅语言更新换代严重,技术范围也有自己的更新,今年 C 语言流行,明年 Python 风靡,今年人工智能火爆,明年物联网是风口。我一直在思考技术人就这么苦逼地一直要跟着技术的风向跑吗?有没有一条可以沉淀下来,打磨到退休的技术? 我想技术永远是发展的,但有一条路径值得学习沉淀,甚至可以做到退休。 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类。 程序员分类 业务类 业务类更多的是在应用程序。随着移动互联网的快速发展出现一批 UI 设计师,这里的设计师是指 APP 的界面设计
刘盼
2022/03/04
5440
GitHub超火开发者路线图库有AI学习路线了!star数近30万
AI 大时代,每天都有层出不穷的新技术、新方法、新模型、新应用…… 想要去学却又似乎无从下手?
机器之心
2025/02/14
1290
GitHub超火开发者路线图库有AI学习路线了!star数近30万
王者程序员整理的Python网络爬虫和web的系统学习路线图
最近很多小伙伴找小编咨询,如何系统的学习Python?相信这个论题应该困扰了许多想学习Python的人,今天小编给大家讲一下一个零根底的小白,应该如何体系化的学习Python编程语言,在学习的道路上少浪费时间去摸索,少走弯路。
Python进阶者
2018/08/03
6080
王者程序员整理的Python网络爬虫和web的系统学习路线图
灵魂拷问:嵌入式行业真的没前途吗?
前辈您好,我是一名大一即将大二的学生,对嵌入式挺感兴趣的,想要以嵌入式作为发展方向,但是上网查嵌入式,看到的几乎90%都是负面评价,也加了不少交流群,对嵌入式的负面评价好多,这让我很纠结,我虽然挺感兴趣的,但是几乎所有人都在劝退,这就比较影响我的学习进度,出于兴趣,我在学嵌入式,但是又这么多人劝退使得我很纠结,就在java后端跟嵌入式这两个方向里跳来跳去,有时候学这个,有时候学那个,导致进度提不上来,哪个都学不会多少,想请问前辈,嵌入式真的如网上所说的这么不堪吗?另附:我是普通重点本科的电子信息类专业,按说比较对口嵌入式吧,虽说做java也行。
李肖遥
2020/07/16
1.4K0
灵魂拷问:嵌入式行业真的没前途吗?
干货领取!Java架构体系学习路线图,这6点技术人一定要知道!
可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。
养码场
2018/08/10
4070
软考高级架构师:嵌入式软件开发概念和例题
嵌入式软件开发与传统软件开发在目标、环境和开发过程等方面有显著的差异。下面通过对比的方式,简要阐述这些差异所在:
明明如月学长
2024/05/25
1980
软考高级架构师:嵌入式软件开发概念和例题
嵌入式,过时了没?
疑惑一 作者你好,我是本科生,之前是学java的,但是后来签的工作是嵌入式软件开发,我对嵌入式开发不太了解的,这行有前景吗? 这是小编在后台接收到的小伙伴的疑惑,任何一个没有踏入社会学的任何自己觉得有用的知识都是相对的,很少有直接将自己在学校或者培训班学习的东西直接切入到对号的工作岗位上,找到什么的工作本身存在很大的变数。作为即将走向社会的学生来说,在不偏离大的方向基础上先能养活自己是第一位的,再想如何进一步发展自己。 java和嵌入式距离到底有多远? java主要集中在后台开发以及客户端App开发领域。嵌
程序员互动联盟
2018/03/16
1.2K0
2021 入门级的 Java 程序员学习路线图 1.0
Hello,大家好,我是阿粉,最近看文章发现一个 Java 学习路线图的资料,觉得很不错就拿过来分享给大家,目前这个版本是 1.0 的,之所以说这个是 1.0 的版本主要是因为还有一些高级内容没有加进去,比如 JVM,容器,消息队列,云原生等都还没有提到,不过对于初学者来说这个路线图已经可以上手完成工作了。
Java极客技术
2022/12/02
2230
2021 入门级的 Java 程序员学习路线图 1.0
学机械也想转嵌入式?
前几天,有读者在后台问,他是一个机械专业的学生,想转到嵌入式方向,问我有没有必要转?如果转嵌入式该怎么学?
AI 电堂
2021/07/27
7410
学机械也想转嵌入式?
嵌入式软件开发应该掌握哪些知识?
嵌入式软件通常是指嵌入式系统中运行的软件,嵌入式系统是一种特殊的计算机系统,通常用于控制、监测和数据处理等任务。嵌入式系统通常由硬件和软件两个部分组成,其中嵌入式软件是指在嵌入式系统中运行的程序,用于控制硬件并提供特定的功能和服务。嵌入式软件应用广泛,包括汽车、医疗设备、智能家居、智能穿戴、工业自动化等众多领域。
芯动大师
2024/04/15
5960
嵌入式软件开发应该掌握哪些知识?
从事嵌入式开发,C语言学算法要学到很高深吗?
懂得嵌入式开发,必须要精通C语言算法 从事嵌入式软件开发多年,嵌入式开发未来前景也非常广阔,消费类电子产品大部分都属于嵌入式开发系列,嵌入式软件开发从开发角度分为三层,嵌入式软件底层开发,嵌入式软件框架层开发,嵌入式应用开发。但有些公司并没有把这些结构划分的这么清楚,可能应用层和框架层直接柔和在一起了,不同层次的开发技能的要求也会不一致,不能简单的认为C语言搞定了就能顺畅的做嵌入式开发了。
程序员互动联盟
2020/04/03
1.6K0
让你轻松学习嵌入式的几种线路图方向
嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等 Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。 你可以尝试以下路线: (1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都
企鹅号小编
2018/02/24
2.1K0
Go 开发者路线图
在下边有一个路线图,如果你想要成为一名Go语言的开发者的话,你可以沿着这张图里面的路径去学习,里面记录了一些你可能也想学习的库。当你问到:”我想成为一名Go语言开发者,接下来我要学些什么?“,我做的这个路线图就是一个很好的建议。
ccf19881030
2020/10/28
1K0
Go 开发者路线图
面经 | 嵌入式软件开发(海康威视)
a. 嵌入式软件开发的笔试题中,c/c++、数据结构、操作系统、计算机网络等都会涉及到,对于操作系统方面的考察相较于其他岗位会更多一些。在程序题中,除了一些算法题,还会考察某个现有函数的实现,例如:memcpy。
用户3946442
2022/04/11
1.3K0
面经 | 嵌入式软件开发(海康威视)
毫无保留,这是我全部的嵌入式学习&秋招经验!
往届互联网校招中一直都是软件为大,硬件不管是从招聘规模还是薪资来说可能都比不上软件行业。
拓跋阿秀
2023/01/30
2.6K0
嵌入式学习书籍推荐[通俗易懂]
从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。
全栈程序员站长
2022/06/29
1.8K0
嵌入式学习书籍推荐[通俗易懂]
嵌入式:ARM嵌入式系统开发流程概述
交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中运行调试的开发方式,它通常采用宿主机/目标机模式。用来开发的通用计算机可以选用比较常见的PC机等,运行通用的Windows等操作系统。
timerring
2022/12/28
2K0
嵌入式:ARM嵌入式系统开发流程概述
推荐阅读
相关推荐
嵌入式学习路线图
更多 >
LV.0
A嵌入式软件工程师
目录
  • part 01 T113-i芯片及OpenAMP简介
    • T113-i芯片简介
  • part 02 AMP系统通信机制详解
    • AMP通信原理
    • 使用 RPMsg进行核间通信
      • RPMsg整体通讯框架
      • RPMsg数据传输流程如下:
  • part 03 案例与性能测试
    • A核与RISC-V核通讯流程
    • A核与RISC-V核数据传输性能测试
    • DSP GPADC采集测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档