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

原创 RTThread物联网操作系统 2021-10-21 18:30


注:这是一个由中国科学院软件研究所合作资助的开源项目,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,如下面的架构图。



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


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


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


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

 

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



在这样的方式下,可以由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本身包括几个部分:


 

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处理器在使用上更便利,甚至感受不到异构的存在,在多系统间融合,甚至程序的无缝迁移。

 


你可以添加微信17775982065为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!



👇 点击阅读原文进入官网

RTThread物联网操作系统 帮助您了解RT-Thread相关的资讯.
评论
  • 沉寂已久的无人出租车赛道,在2024年突然升温了。前脚百度旗下萝卜快跑,宣布无人驾驶单量突破800万单;后脚特斯拉就于北京时间10月11日上午,召开了以“We,Robot”为主题的发布会,公布了无人驾驶车型Cybercab和Robovan,就连低调了好几个月的滴滴也在悄悄扩编,大手笔加码Robotaxi。不止是滴滴、百度、特斯拉,作为Robotaxi的重磅选手,文远知行与小马智行,也分别在10月份先后启动美股IPO,极氪也在近日宣布,其与Waymo合作开发的无人驾驶出行汽车将大规模量产交付,无人
    刘旷 2024-12-19 11:39 125浏览
  • 耳机虽看似一个简单的设备,但不仅只是听音乐功能,它已经成为日常生活和专业领域中不可或缺的一部分。从个人娱乐到专业录音,再到公共和私人通讯,耳机的使用无处不在。使用高质量的耳机不仅可以提供优良的声音体验,还能在长时间使用中保护使用者听力健康。耳机产品的质量,除了验证产品是否符合法规标准,也能透过全面性的测试和认证过程,确保耳机在各方面:从音质到耐用性,再到用户舒适度,都能达到或超越行业标准。这不仅保护了消费者的投资,也提升了该公司在整个行业的产品质量和信誉!客户面临到的各种困难一家耳机制造商想要透
    百佳泰测试实验室 2024-12-20 10:37 97浏览
  •         不卖关子先说感受,真本书真是相见恨晚啊。字面意思,见到太晚了,我刚毕业或者刚做电子行业就应该接触到这本书的。我自己跌跌撞撞那么多年走了多少弯路,掉过多少坑,都是血泪史啊,要是提前能看到这本书很多弯路很多坑都是可以避免的,可惜这本书是今年出的,羡慕现在的年轻人能有这么丰富完善的资料可以学习,想当年我纯靠百度和论坛搜索、求助啊,连个正经师傅都没有,从软件安装到一步一布操作纯靠自己瞎摸索,然后就是搜索各种教程视频,说出来都是泪啊。  &
    DrouSherry 2024-12-19 20:00 54浏览
  • //```c #include "..\..\comm\AI8051U.h"  // 包含头文件,定义了硬件寄存器和常量 #include "stdio.h"              // 标准输入输出库 #include "intrins.h"         &n
    丙丁先生 2024-12-20 10:18 54浏览
  • 在强调可移植性(portable)的年代,人称「二合一笔电」的平板笔电便成为许多消费者趋之若鹜的3C产品。说到平板笔电,不论是其双向连接设计,面板与键盘底座可分离的独特功能,再加上兼具笔电模式、平板模式、翻转模式及帐篷模式等多种使用方式,让使用者在不同的使用情境下都能随意调整,轻巧灵活的便利性也为多数消费者提供了绝佳的使用体验。然而也正是这样的独特设计,潜藏着传统笔电供货商在产品设计上容易忽视的潜在风险。平板笔电Surface Pro 7+ 的各种使用模式。图片出处:Microsoft Comm
    百佳泰测试实验室 2024-12-19 17:40 149浏览
  • 汽车驾驶员监控系统又称DMS,是一种集中在车辆中的技术,用于实时跟踪和评估驾驶员状态及驾驶行为。随着汽车产业智能化转型,整合AI技术的DMS逐渐成为主流,AI模型通过大量数据进行持续训练,使得驾驶监控更加高效和精准。 驾驶员监测系统主要通过传感器、摄像头收集驾驶员的面部图像,定位头部姿势、人脸特征及行为特征,并通过各种异常驾驶行为检测模型运算来识别驾驶员的当前状态。如果出现任何异常驾驶行为(如疲劳,分心,抽烟,接打电话,无安全带等),将发出声音及视觉警报。此外,驾驶员的行为数据会被记录
    启扬ARM嵌入式 2024-12-20 09:14 48浏览
  • 随着工业自动化和智能化的发展,电机控制系统正向更高精度、更快响应和更高稳定性的方向发展。高速光耦作为一种电气隔离与信号传输的核心器件,在现代电机控制中扮演着至关重要的角色。本文将详细介绍高速光耦在电机控制中的应用优势及其在实际工控系统中的重要性。高速光耦的基本原理及优势高速光耦是一种光电耦合器件,通过光信号传递电信号,实现输入输出端的电气隔离。这种隔离可以有效保护电路免受高压、电流浪涌等干扰。相比传统的光耦,高速光耦具备更快的响应速度,通常可以达到几百纳秒到几微秒级别的传输延迟。电气隔离:高速光
    晶台光耦 2024-12-20 10:18 82浏览
  •         在上文中,我们介绍了IEEE 802.3cz[1]协议提出背景,旨在定义一套光纤以太网在车载领域的应用标准,并介绍了XMII以及PCS子层的相关机制,在本篇中,将围绕IEEE 802.3cz-MultiGBASE-AU物理层的两个可选功能进行介绍。EEE功能        节能以太网(Energy-Efficient Ethernet)是用于在网络空闲时降低设备功耗的功能,在802.3cz的定义中,链
    经纬恒润 2024-12-19 18:47 47浏览
  • By Toradex秦海1). 简介为了保证基于 IEEE 802.3 协议设计的以太网设备接口可以互相兼容互联互通,需要进行 Ethernet Compliance 一致性测试,相关的技术原理说明请参考如下文章,本文就不赘述,主要展示基于 NXP i.MX8M Mini ARM 处理器平台进行 1000M/100M/10M 以太网端口进行一致性测试的测试流程。https://www.toradex.com
    hai.qin_651820742 2024-12-19 15:20 104浏览
  • 百佳泰特为您整理2024年12月各大Logo的最新规格信息。——————————USB▶ 百佳泰获授权进行 USB Active Cable 认证。▶ 所有符合 USB PD 3.2 标准的产品都有资格获得USB-IF 认证——————————Bluetooth®▶ Remote UPF Testing针对所有低功耗音频(LE Audio)和网格(Mesh)规范的远程互操作性测试已开放,蓝牙会员可使用该测试,这是随时测试产品的又一绝佳途径。——————————PCI Express▶ 2025年
    百佳泰测试实验室 2024-12-20 10:33 64浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦