0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RV64异构多核处理器下如何实现RT-Thread和Linux 同时运行

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者: RT-Thread 2021-10-28 16:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

注:这是一个由中国科学院软件研究所合作资助的开源项目,RT-Thread社区参与,并推动更新到upstream。这个过程中也得到了张健,董波(无锡控博),李志锐(厦门大学)的支持,这里一并表示感谢。

RISC-V指令集架构在这几年中异军突起,受到大家广泛的关注,认可,参与,实践。越来越多的厂商选择使用RISC-V,从单独实验性芯片的尝试,到备份芯片,到辅助芯片,到独立芯片,一步步应用到实际的产业应用领域。例如最近平头哥就针对低端到中高端发布了开源的RISC-V处理器IP core,E902(RV32),E906(带cache的RV32),C906(单核RV64),C910(多核RV64),同时在上面也支持Linux,RT-Thread等开源操作系统

与此同时RT-Thread团队也看到了未来异构多核芯片领域会有更多的应用需求,和中国科学院软件研究所的想法不谋而合,融合RISC-V的异构多核系统这个项目就是在这样的一个背景下产生,所以双方联合来推进,并一起推进到系列开源项目的upstream,让更多人易于使用,让产业界受益。

架构说明

本项目以qemu模拟的虚拟硬件:qemu-riscv64-virt为硬件平台,上面具备Dual RV64 core,分别运行Linux和RTOS(RT-Thread)。对于这类应用,RV64在运行时会涉及到三种运行模式,M-Mode,S-Modem,U-Mode,如下面的架构图。

5cbd9670-37a5-11ec-82a8-dac502259ad0.png

M-Mode模式,机器模式,一般会运行一些简单的程序;如果芯片只包含机器模式,可以运行一些裸机程序或者RTOS,多见于MCU芯片;

H-Mode模式,是虚拟化运行模式,此种情况下未涉及,后续不过多提及;

S-Mode, Supervisor Mode模式是管理者模式,用于运行例如Linux内核的操作系统内核;

U-Mode模式,是用户模式,运行用户态应用程序;而对于RTOS来说,一般不会运行在层。

在这样的方式下,硬件底层是RV64的双核,分别运行Linux和RTOS操作系统,整体的架构如下所示:

5ce14d18-37a5-11ec-82a8-dac502259ad0.png

在这样的方式下,可以由Linux来完成一些复杂的工作,例如存储,网络,显示等;而RTOS则可以用于实时控制,这里运行RT-Thread开源操作系统。在Linux和RTOS之间,可以通过标准的OpenAMP框架进行通信,异系统间的数据交互。

OpenAMP说明

OpenAMP是Xilinx和Mentor Graphic于2014年发起的一个开源项目,旨在提供一份协处理器的标准通信框架。OpenAMP是对Ohad Ben-Cohen在2011年Linux 3.4.1引入的RPmsg, RemoteProc的在异构处理器上的实现,并采用BSD许可协议开源。

lRemoteProc用于Linux作为master来控制和管理协处理器,对协处理器进行power off/on,reset,load firmware等管理操作;

lRPmsg用于多系统间的IPC消息交互。

OpenAMP本身包括几个部分:

5d45faa6-37a5-11ec-82a8-dac502259ad0.png

llibmetal,主要涉及OpenAMP在不同底层系统上的对接,分成了对Linux,RTOS及裸机的支持。

lopen-amp,提供对virtio,rpmsg,remoteproc等的实现;

OpenAMP本身以cmake方式编译,因为原来只包括arm方式的交叉编译方式,所以这个项目中加入对risc-v交叉编译方式的支持。默认WITH_PROXY等相关的特性关闭。

编译 & 运行

针对这样一套多操作系统的异构系统,我们把它命名成pomegranate(石榴,喻意多子,多系统),单独放在github和gitee上,可以按照仓库中的方式进行编译,并使用起来:

https://github.com/RT-Thread/rtthread-pomegranate

假设在Ubuntu 18.04上,来编译和使用,需要先把pomegranate clone到本地,例如使用github:

git clone --recursive https://github.com/RT-Thread/rtthread-pomegranate

然后运行下面的脚本,先把需要的标准包下载下来,并展开:

。/dn_prepare.sh

这个脚本会自动下载需要用到的代码,例如Linux,u-boot,qemu等,以及工具链(针对Linux的工具链,针对RT-Thread的工具链等),并对需要打补丁的代码进行打补丁。

然后编译只需要执行下面的shell脚本:

。/build.sh

执行build.sh时,它会分别对涉及到软件包进行编译,例如opensbi,u-boot,Linux,open-amp,RT-Thread等,编译无误会生成相应的程序文件,及把应用程序复制到Linux的rootfs中。

其中对于一些可以单独运行的软件,例如opensbi、u-boot、Linux、RT-Thread等,在各自分别的目录下有一份run.sh,执行即可使用qemu模拟器来模拟运行。

。/run.sh

这份QEMU做了简单的改造,模拟出来两份串口分别给Linux和RT-Thread使用。RT-Thread进行简单的修改,可以让它运行在S-Mode下,并支持运行在任意核上。OpenAMP上支持RISC-V方式的交叉编译等。这部分代码后续都会推进到各自的upstream端。

未来展望

异构多核处理器并不是一个新事物,例如在ARM芯片上已经存在大量的Cortex-A核+Cortex-M/R核芯片,并应用于各类领域,如手机基带处理器,实时工业控制处理器,车载MPU安全处理器。

在一颗芯片上同时具备ARM核 + RISC-V核的芯片也逐步出现,OpenAMP是搭建起异构系统间软通信的一座桥梁,未来可能还不仅限于此,会让Cortex-A + Cortex-M/R或 RISC-V处理器在使用上更便利,甚至感受不到异构的存在,在多系统间融合,甚至程序的无缝迁移。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20333

    浏览量

    255050
  • 芯片
    +关注

    关注

    463

    文章

    54441

    浏览量

    469428
  • 串口
    +关注

    关注

    15

    文章

    1627

    浏览量

    83357

原文标题:RV64 异构多核处理器下实现RT-Thread和Linux 同时运行

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    睿擎平台AMP共享内存:LinuxRT-Thread 高速数据交换

    在AMP(AsymmetricMulti-Processing,非对称多处理)混合部署架构中,LinuxRT-Thread运行在同一颗芯片的两个不同核心上,如何高效地在两个系统之间传
    的头像 发表于 04-22 18:09 296次阅读
    睿擎平台AMP共享内存:<b class='flag-5'>Linux</b> 与 <b class='flag-5'>RT-Thread</b> 高速数据交换

    富瀚微FH8626V300异构双系统方案:基于ARC架构的RT-ThreadLinux协同实现 | 技术集结

    450MHz),并支持RT-ThreadLinux的双系统架构。在实际方案中,RT-Thread通常运行于实时核心,负责高确定性任务,如传感
    的头像 发表于 03-24 17:11 670次阅读
    富瀚微FH8626V300<b class='flag-5'>异构</b>双系统方案:基于ARC架构的<b class='flag-5'>RT-Thread</b>与<b class='flag-5'>Linux</b>协同<b class='flag-5'>实现</b> | 技术集结

    RT-Thread首款低功耗AI产品预售: Edgi Talk

    亲爱的RT-Thread开发者,我们非常激动的与您分享,RT-Thread与英飞凌联合打造的基于英飞凌PSOCEdge系列微控制的低功耗AI产品EdgiTalk,即将于今日正式开启预售
    的头像 发表于 01-22 11:55 1618次阅读
    <b class='flag-5'>RT-Thread</b>首款低功耗AI产品预售: Edgi Talk

    手搓一个RT-Thread工地巡检机器人要几步? | 技术集结

    本项目为RT-Thread嵌入式大赛获奖作品,基于CanMVK230的工地巡检机器人。K230芯片集成了两颗RISC-V处理器核心,双核玄铁C908。RT-Thread已全面支持XUANTIE系
    的头像 发表于 12-29 21:46 4310次阅读
    手搓一个<b class='flag-5'>RT-Thread</b>工地巡检机器人要几步? | 技术集结

    基于RT-Thread的RPMsg-Lite异构多核通信原理分析 | 技术集结

    RT-Thread(运行于Cortex-M85核)和裸机程序(运行于Cortex-M33核)之间使用rpmsg-lite进行通信,并采用MCMGR组件替代rpmsg
    的头像 发表于 12-19 17:16 8266次阅读
    基于<b class='flag-5'>RT-Thread</b>的RPMsg-Lite<b class='flag-5'>异构</b><b class='flag-5'>多核</b>通信原理分析 | 技术集结

    【直播预告】高性价比智慧视觉处理器FH8626V300L解析,与RT-Thread全栈开发实战 | 问学直播

    上手实践!干货满满,不容错过!RT-Thread与富瀚微电子深度合作,基于备受瞩目的高性价比智慧视觉处理器——FH8626V300L,携手打造了成熟的软硬件一体化
    的头像 发表于 11-11 11:53 942次阅读
    【直播预告】高性价比智慧视觉<b class='flag-5'>处理器</b>FH8626V300L解析,与<b class='flag-5'>RT-Thread</b>全栈开发实战 | 问学直播

    在蜂鸟处理器上进行RT-Thread+ESP8266 wifi模块开发

    本队伍编号CICC3042,本文介绍在蜂鸟处理器运行RT-Thread实时操作系统,并进行ESP8266wifi模块开发。 在蜂鸟配套的sdk中提供了RT-Thread的移植 ht
    发表于 10-31 09:02

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了一个全面、系统的RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微控制的核心
    的头像 发表于 08-24 10:05 1285次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时操作系统<b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

    揭秘!基于RT-Thread探究“优先级反转”的任务调度究竟是什么样的?| 技术集结

    本文将基于RT-Thread,结合RT-Trace调试细化到实际任务调度的粒度,来调试并逐步讲解“优先级反转”的调度和运行逻辑。如果对RT
    的头像 发表于 08-17 10:07 3464次阅读
    揭秘!基于<b class='flag-5'>RT-Thread</b>探究“优先级反转”<b class='flag-5'>下</b>的任务调度究竟是什么样的?| 技术集结

    【老法师】多核异构处理器中M核程序的启动、编写和仿真

    有很多研究单片机的小伙伴在面对多核异构处理器时,可能会对多核的启动流程感到困惑——因为不熟悉GCC编程和GDB调试,所以也无法确定多核
    的头像 发表于 08-13 09:05 4204次阅读
    【老法师】<b class='flag-5'>多核</b><b class='flag-5'>异构</b><b class='flag-5'>处理器</b>中M核程序的启动、编写和仿真

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2827次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    RT-Thread BSP全面支持玄铁全系列RISC-V 处理器 | 技术集结

    RT-ThreadBSP全面支持玄铁全系列RISC-V处理器。玄铁系列RISC-V处理器由阿里达摩院研发,涵盖面向MCU的E系列、面向实时应用的R系列以及面向MPU的C系列。以玄铁QEMU为平台
    的头像 发表于 07-03 18:03 3486次阅读
    <b class='flag-5'>RT-Thread</b> BSP全面支持玄铁全系列RISC-V <b class='flag-5'>处理器</b> | 技术集结

    揭秘RT-Thread上的AUTOSAR CP系统

    标准,同时保留RT-Thread的POSIX支持与可裁剪性,实现了通信隔离、诊断模块集成等关键技术突破,为车载系统提供高安全、可扩展的解决方案。车载电子系统与传统
    的头像 发表于 06-23 20:22 3442次阅读
    揭秘<b class='flag-5'>RT-Thread</b>上的AUTOSAR CP系统

    人形机器人敏捷开发新路径:RT-Thread以软件底座破解复杂系统难题 | 新闻速递

    机器人行业解决方案负责人郭占鑫发表《从异构通信到虚拟化技术:RT-Thread助力机器人敏捷、可持续开发》主题演讲,系统阐述了RT-Thread操作系统在机器人领
    的头像 发表于 06-04 14:03 1426次阅读
    人形机器人敏捷开发新路径:<b class='flag-5'>RT-Thread</b>以软件底座破解复杂系统难题 | 新闻速递

    RT-Thread 上如何实现 SLAAC?

    大佬们,本菜鸟有一些网络上的问题需要帮助: RT-Thread 上如何实现 SLAAC(无状态地址自动分配),给连接到我的板子的设备分配 IPv6 地址; RT-Thread 如何发送以太网报文,要求从报文头开始都是我自己组,
    发表于 05-27 07:21