查看: 787|回复: 0
收起左侧

RISC-V学习整理

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-1-15 13:53
  • 签到天数: 26 天

    [LV.4]

    发表于 2020-8-6 11:00:19 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    目前网上关于RISC-V架构概念介绍的文章比较多,本文从开发角度把学习中的记录整理出来。


    以下为作者为自学记录内容,文章仅抛砖引玉,有学习需要的同学还需以官网及risc-v专家的书籍为准。


    有错误欢迎指出,共同学习进步。


    国内芯片技术交流-RISC-V学习整理risc-v单片机中文社区(1)


    RISC-V:
    • RV32I RV32E
      RV32G表示RV32IMAFD
      I – 32位地址空间,32个通用寄存器
      M – 整数乘,整数除
      A – 原子操作指令
      F – 单精度浮点
      D – 双精度浮点
      C – 压缩指令,长度16
    • RISC-V仅支持小端
      RISC-V不支持地址自增自减
      RISC-V有2条无条件跳转指令,6条条件跳转指令



    汇编部分:

    1.伪操作,汇编结束伪操作就结束
    2. .option rvc 表示接下来的汇编程序可以被汇编生成16位宽的压缩指令
      .option norvc 表示接下来的汇编程序不可以被汇编生成16位宽的压缩指令
    3. li 赋值
      la 标签地址赋值



    中断和异常:

    • 广义中断和异常都称为异常
      同步:非法地址空间,访问地址属性,取指非对齐,非法指令,断点
      异步:外部中断(精确),读写存储器(非精确)
    • 异常发生 --> 硬件更改寄存器 --> 软件读取寄存器判断 --> 异常处理
      系统会读取mcause寄存器判断何种异常从而跳转异常处理
      RISC-V硬件不会保存上下文,需要软件保存和恢复
    • 相关寄存器
      mtvec
      异常入口地址寄存器,指定异常处理的pc地址,软件可以更改其值
      高30为是BASE
      低2位是mode模式 —| mode=0 所有异常响应 BASE 为 PC
      | mode =1 —| 狭义异常响应 BASE 为 PC
      | 狭义中断响应 BASE+4×casue(中断异常编号) 为 PC
      mcause
      软件可读取寄存器,查看异常原因
      高1位 interropt域
      低31位 异常编号域 --> 定义了12种中断类型和10种异常类型
      mepc
      保存原PC,用于异常返回,可读写,软件可以更改
      中断时,mepc为下一条指令
      异常时,mepc为发生异常时当前的PC
      mtral
      异常值
      如果存储器访问,mtral为存储器地址
      如果非法指令,mtral为非法指令编码
      mstatus
      机器模式状态
      MIE=1,该模式下中断全局打开,为0关闭
      进入异常和退出时都会更改此寄存器
    • RISC-V狭义的异常不可以被屏蔽
      狭义的中断可以被屏蔽,通过中断使能寄存器mie控制
    • RISC-V不支持硬件中断嵌套
      进入异常后,mstatus中mie会被硬件该为0,则中断全局关闭,不支持硬件中断嵌套
      中断嵌套需要有软件实现:
      a.读取mcause确认是中断
      b.软件强写mie为1
        打开mie前需要注意 —| 屏蔽优先级低的中断可以修改mie中几个域
                            | 也可以通过修改PLIC屏蔽低优先级中断
                            | 软件注意保存中断上下文
                            | 软件注意修改mepc值,恢复使用



    PLIC 平台级别中断控制器:

    • 支持0~7共8个中断目标
      中断编号0 做为保留,实际中断源为(支持个数-1)个
      优先级为0~7,数字越大,优先级越高。优先级0可以认为屏蔽中断
      另一种屏蔽中断方法是设置中断使能寄存器 IE为0

    • 中断处理流程
      a 中断使能IE为1,中断源优先级大于0
      b 外部中断经过gateway 寄存器IP(只读)被置1。
      c 仲裁,优先选择高优先级中断,优先级一样则选编号小的中断,仲裁结果必须大于中断目标优先级阈值
      d 产生中断。
      e 中断目标读取存储器地址映射的中断响应寄存器(可读)进行响应,且返回id ,通过此id进行中断处理
      f 将id写入中断完成寄存器(可写)表示中断结束,硬件自动将IP置0, 解除gateway屏蔽,以便其他中断产生









    上一篇:对于RISC-V的初步学习理解——RISC-V简介
    下一篇:RISC-V详细介绍
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-20 21:42 , Processed in 0.960921 second(s), 48 queries .

    快速回复 返回顶部 返回列表