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

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

3天内不再提示

关于risc-v启动部分的思考

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2020-12-28 10:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关于risc-v启动部分思考

1.本文说明

1.1 risc-v的诞生的时代背景

1.2 发展现状

2.risc-v 的芯片boot过程

2.1 risc-v的启动模式

2.2 risc-v的启动顺序

3.什么是SBI?

4.什么是opensbi

5.openSBI call接口的实现

6.总结

1.本文说明

risc-v的架构有着非常鲜明的特点,如果看过arm,aarch64,mips等架构的一些架构手册的基础知识,再看risc-v的芯片的架构设计,就会觉得非常有意思,可以找到一些影子,但是又比这些架构设计简洁的多。当我看完aarch64的芯片手册,再看risc-v的boot时,设计思想竟然可以做一些对比,同样去看risc-v和mips的寄存器,也可看到高度的一致性。

对于x86的架构我未曾深入了解,但是在risc-v上应该也可以找到一些设计元素。总体说来,risc-v的架构设计集合了各种架构的设计的优点。我突然觉得这种堆叠即模块的设计思想,在当前iot物联网发展的如火如荼的时代又要被赋予最新的使命了。我十分看好risc-v的设计思想,也期待着与软件界的Linux一样,发展的繁荣昌盛。

1.1 risc-v的诞生的时代背景

risc-v至诞生之日起,就赋予了良好的设计模式,吸收了大量的arm、x86、以及mips中良好的设计基因,将过时指令设计的与架构设计中的坑都避免了。这几十年的芯片的发展过程中,不少的芯片架构都曾因为设计问题消失在历史长河中,有着曾经一度辉煌的sparc,还有当时被十分看好的mips。如今市场上最热门的就属x86和arm了,一个主打移动市场,一个主打pc市场,两个在芯片架构的市场上发展的如火如荼。

然而,两个巨头都牢牢的把控着核心技术的门槛,用arm必须去买ip授权,以及x86的交叉授权模式等等。这些都让很多崇尚开源的人看不下去了。那么设计芯片的指令集很难么?设计芯片的指令并非难事,这要很多人使用才行,因为芯片上需要搭载操作系统,需要去运行各种各样的软件,比如浏览器、数据库、办公系统、专业软件等等。这些适配工作投入的精力和难度恐怕是需要集结各国最强的研发实力才能发展完善的。而risc-v就有这个魔力,竟然可以一呼百应,大概是大家受到arm与因特尔的压迫已经很久了,大家都想自己造芯片玩玩。

arm与x86架构由于时间累计的问题,都积累了大量的指令集,x86当时诞生时不过80条指令,而今也有着上千条指令集了,各种复杂的指令集,多媒体指令集等等,使得写底层软件的人苦不堪言。乔布斯有句名言:至繁归于至简。历史遗留的问题既然不能克服和解决,那就干脆抽取精华,设计出一个优秀的架构出来,于是risc-v在这种时代背景下开始了其新的使命。

1.2 发展现状

新事物的崛起,必会引来众多人的围观,技术的风所到之处,均是机会的影子。

而今risc-v已经成为众多大学生积极学习的课程,各大公司也已经启动了预研和探索的脚步。

RISC-V虽仍是星星之火,却已现出燎原之态。

2.risc-v 的芯片boot过程

2.1 risc-v的启动模式

在理解risc-v的boot流程之前,首先需要知道的是risc-v设计的三种模式:

M-mode(Machine Mode)

S-mode(Supervisor Mode)

U-mode(User Mode)

dfc07f56-46ce-11eb-8b86-12bb97331649.png

对于arm64来说,系统上电后启动会处于EL3 secure world ,所以对于arm64来说,一般都会使用ARM Trusted firmware (TF-A) 在normal world EL2 与 secure EL3 进行切换。

而对于risc-v来说,系统上电启动后会在M-Mode,而risc-v目前是没有Hypervisor这一层的概念的,所以目前采用的是opensbi。

dfe685b6-46ce-11eb-8b86-12bb97331649.png

2.2 risc-v的启动顺序

对于标准的risc-v启动顺序,可查看FU540的芯片手册,其中有如下的顺序描述:

MSEL(Mode Select):启动模式,一般为选择拨码开关等方式进行选择。

ZSBL (Zeroth Stage Boot Loader):片上ROM程序。

FSBL(First Stage Boot Loader ):启动PLLs和初始化DDR内存。

BBL(Berkeley Boot Loader ):提供加载,并且管理着二进制接口(SBI)。

下面详细分析一下FU540的启动流程。

复位向量表

当芯片上电后,当芯片有33.3MHz外部晶振时钟时,所有的核会跳转到地址0x1004地址处去执行程序。

e04ec2fc-46ce-11eb-8b86-12bb97331649.png

程序会根据MSEL选择,选择如下的跳转地址:

e09ad34a-46ce-11eb-8b86-12bb97331649.png

Zeroth Stage Boot Loader (ZSBL)

零级引导程序加载会从GUID分区中下载更加复杂的FSBI,一般都是QSPI的flash或者sd卡中下载FSBI,然后将该程序放到地址0x08000000处,至于从哪个介质查找FSBI,可以看到如下的选项:

e100ffa8-46ce-11eb-8b86-12bb97331649.png

The First Stage Boot Loader (FSBL)

该执行的地址位于L2 LIM,也就是地址0x08000000。该程序的目的是DDR初始化后,将系统在DDR中执行起来。

切换频率到1GHz。

配置ddr pll,外设时钟和控制器等等。

拷贝设备树和SBI固件到DDR中。

跳转到0x80000000开始执行程序。

Berkeley Boot Loader (BBL)

Berkeley引导加载程序(BBL)从位于0x8000_0000的DDR执行。它负责提供管理器二进制接口(SBI)以及模拟所需的任何RISC-V不是由芯片本身实现的指令。该接口可以为Linux等其他的os提供调用接口。

3.什么是SBI?

SBI的全称是RISC-V Supervisor Binary Interface 。它提供了risc-v标准的S-mode OS与SupervisorExecution Environment (SEE) 接口。

一般来说,操作系统都不会直接管理硬件资源,会通过SBI去调用到M-mode。

4.什么是opensbi

简单的说,opensbi就是一个开源的RISC-V虚拟化二进制接口的通用的规范。

使用的是BSD-2的开源协议,也就是任何人都可以随意修改和使用,也提供了通用的规范化的接口实现。

这里就需要理解一下为什么需要规范化了。

以往芯片厂家都会按照自己的启动规则定义一些启动的流程,比如有些需要SPL+UBOOT,有些可以是直接从SPI或SD卡中boot,这些启动的规则很多,每当使用一款芯片,都需要去理解其启动的流程,十分的复杂。于是就出现了一些规则和定义。

比如苹果公司定义了个人PC电脑的规则:

又比如Linux定义了设备规则等等:

而risc-v虽然目前芯片种类少,但是也需要制定一些启动规则,于是有了下面的规则:

e236bfe8-46ce-11eb-8b86-12bb97331649.png

当有了opensbi后,再回头看启动流程,与aarch64之间进行一个对比:

e29f5aee-46ce-11eb-8b86-12bb97331649.png

aarch64借助atf框架,从EL3跳转到EL1,并启动u-boot。

e2beb5ce-46ce-11eb-8b86-12bb97331649.png

对于riscv,上图是一个标准的加载启动流程,其中Opensbi提供了M模式的运行时库。

5.openSBI call接口的实现

opensbi不仅仅具有加载和引导功能,也能够供S-Mode的OS使用,比如提供串口控制台或者中断的分发等等。调用方式可以通过ecall来实现。类似于syscall的实现规则。当前阶段实现了下面的接口:

e2f7f6d6-46ce-11eb-8b86-12bb97331649.png

详细可以看下面的官方文档描述。

https://github.com/riscv/riscv-sbi-doc/blob/master/riscv-sbi.adoc

6.总结

riscv的启动规范可以按照opensbi的接口实现来自行定义,芯片厂家也可以通过适配opensbi的接口来实现平台通用化的移植,这样将会大大简化上层设计的复杂度。同时规范化的启动流程对于使用者来说更加的友好。相信在这种规范化的模式下,riscv的设计将会越来越完善。

责任编辑:xj

原文标题:关于risc-v启动部分思考

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

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

    关注

    5209

    文章

    20624

    浏览量

    336756
  • RISC-V
    +关注

    关注

    49

    文章

    2941

    浏览量

    53519

原文标题:关于risc-v启动部分思考

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    deepin社区亮相2026中关村论坛年会RISC-V生态科技论坛

    3 月 26 日,在中关村论坛年会——RISC-V生态科技论坛上,中国科学院软件研究所重磅发布如意 RISC-V 原生操作系统(openRuyi)与点亮计划 2.0 最新成果,同时正式启动如意
    的头像 发表于 03-30 15:39 392次阅读

    RT-Thread 邀您参与“开放・连接”2026玄铁 RISC-V 生态大会,携手共铸 RISC-V“芯”纪元

    2026年3月24日,由浦东新区人民政府科经委指导,达摩院主办,上海开放处理器产业创新中心、RISC-V工作委员会、中国开放指令(RISC-V)生态联盟联合协办的本届玄铁RISC-V生态大会,将在
    的头像 发表于 03-22 10:05 546次阅读
    RT-Thread 邀您参与“开放・连接”2026玄铁 <b class='flag-5'>RISC-V</b> 生态大会,携手共铸 <b class='flag-5'>RISC-V</b>“芯”纪元

    RISC-V不支持 Nx吗?

    RISC-V architecture! · nrwl/nx · Discussion #27915 如果能够支持 RISC-V,那就太好了。目前我无法在我的 VisionFive2 板上
    发表于 02-04 06:27

    探索RISC-V在机器人领域的潜力

    2基础包和相关依赖。 • 设置环境变量,确保ROS 2命令可以被正确识别。 遇到的挑战与解决: 在编译某些复杂的ROS功能包时,由于部分依赖库在RISC-V架构下的版本较新或存在细微差异,曾出现过
    发表于 12-03 14:40

    为什么RISC-V是嵌入式应用的最佳选择

    最近RISC-V基金会在社交媒体上发文,文章说物联网和嵌入式系统正在迅速发展,需要更高的计算性能、更低的功耗和人工智能。RISC-V是为未来而建的,包括超高效的MCU到高性能应用处理器,RISC-V使开发人员能够设计以下解决方案
    的头像 发表于 11-07 10:09 1790次阅读

    RISC-V指令集手册中F指令部分

    本文主要讲解RISC-V指令集手册中F指令部分 RISC-V标准中采用了符合IEEE 754-2008算术标准的单精度浮点计算指令,对于浮点运算来说,RV32F指令扩展中增加了32个32位的浮点
    发表于 10-22 08:18

    大湾区RISC-V生态全景展示:RISC-V生态发展论坛、开发者Workshop和生态应用专区

    继7月份上海的RISC-V中国峰会之后,中国RISC-V生态和产业发展最新动态将在10月份深圳的湾芯展上全景展示。   RISC-V,这个以开放、简约、模块化重塑处理器架构格局的开源指令集(ISA
    的头像 发表于 10-13 09:18 718次阅读
    大湾区<b class='flag-5'>RISC-V</b>生态全景展示:<b class='flag-5'>RISC-V</b>生态发展论坛、开发者Workshop和生态应用专区

    跃昉科技亮相2025 RISC-V软件生态研讨会

    2025 年 9 月 19 日,一场聚焦 RISC-V 软件生态发展的行业盛会——“RISC-V 软件生态研讨会”在珠海国际会展中心成功举办。全球首款支持超128核RISC-V RVA23企业级模拟平台LeapEMU正式亮相,L
    的头像 发表于 09-20 14:04 1358次阅读

    普华基础软件亮相2025 RISC-V中国峰会

    此前,7月16日至18日,第五届RISC-V中国峰会在上海盛大召开。普华基础软件副总经理兼战略研究院院长张晓先受邀参会,发表《开源小满助力RISC-V软硬协同生态发展》主题演讲,分享了开源小满
    的头像 发表于 07-28 16:51 1317次阅读
    普华基础软件亮相2025 <b class='flag-5'>RISC-V</b>中国峰会

    RISC-V 手册

    以下是关于RISC-V的详细介绍,结合其核心技术特点与当前发展现状:核心概念RISC-V(第五代精简指令集)是一种基于精简指令集(RISC)的开源指令集架构(ISA),由加州大学伯克利
    发表于 07-28 16:27 11次下载

    2025新思科技RISC-V科技日活动圆满结束

    新思科技深度参与2025 RISC-V中国峰会并于2025年7月16日举办同期活动“新思科技RISC-V科技日”技术论坛,聚焦“从芯片到系统重构RISC-V创新”主题,议题覆盖当前最前沿的技术领域
    的头像 发表于 07-25 17:31 1573次阅读

    RISC-V 发展态势与红帽系统适配进展

    2025 年 7 月 18 日,在第五届(2025)RISC-V 中国峰会的软件与生态系统分论坛上,红帽软件(北京)有限公司首席软件工程师、RISC-V 国际基金会大使傅炜分享的主题是《红帽在
    发表于 07-18 10:55 4212次阅读
    <b class='flag-5'>RISC-V</b> 发展态势与红帽系统适配进展

    RISC-V International CEO:RISC-V 应用全面开花,2031 年渗透率将达 25.7%

    7 月 16 日~19 日,第五届(2025)RISC-V 中国峰会在上海张江科学会堂拉开帷幕。峰会设置 1 场主论坛、8 大垂直领域分论坛、多场研习会及多项同期活动。在 7 月 17 日的主论坛上
    发表于 07-17 10:28 3790次阅读
    <b class='flag-5'>RISC-V</b> International CEO:<b class='flag-5'>RISC-V</b> 应用全面开花,2031 年渗透率将达 25.7%

    RISC-V和ARM有何区别?

    在微处理器架构领域,ARM与RISC-V是两个备受关注的体系。ZLG致远电子在推出ARM核心版后,又推出了基于RISC-V的MR6450核心版,这引发了人们对这两种架构差异的深入探讨。ARM
    的头像 发表于 06-24 11:38 2211次阅读
    <b class='flag-5'>RISC-V</b>和ARM有何区别?

    RISC-V赛道的“硬核”突围之路

    RISC-V作为一种开源指令集架构(ISA),近年来在全球范围内迅速崛起,有望重塑半导体产业格局。从芯片设计公司到软件开发商,从学术研究机构到行业巨头,都在积极探索RISC-V的应用和创新
    的头像 发表于 04-24 15:34 669次阅读
    <b class='flag-5'>RISC-V</b>赛道的“硬核”突围之路