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

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

3天内不再提示

RISC-V的中断处理 中断操作三个步骤

XL FPGA威廉希尔官方网站 交流 来源:XL FPGA威廉希尔官方网站 交流 作者:XL FPGA威廉希尔官方网站 交流 2024-05-20 16:38 次阅读

中断操作三个步骤:

1、中断初始化

void intr_init(){  //configure PLIC    //cpu 0 accept all interrupts with priority above 0  plic_set_threshold(BSP_PLIC, BSP_PLIC_CPU_0, 0);   //enable SYSTEM_PLIC_USER_INTERRUPT_A_INTERRUPT rising edge interrupt#ifdef SYSTEM_AXI_A_BMB
  plic_set_enable(BSP_PLIC, BSP_PLIC_CPU_0, SYSTEM_PLIC_SYSTEM_AXI_A_INTERRUPT, 1);  plic_set_priority(BSP_PLIC, SYSTEM_PLIC_SYSTEM_AXI_A_INTERRUPT, 1);
#endif    //enable interrupts    //Set the machine trap vector (../common/trap.S)  csr_write(mtvec, trap_entry);     //Enable external interrupts  csr_set(mie, MIE_MEIE);   csr_write(mstatus, MSTATUS_MPP | MSTATUS_MIE);}

其中包括设置中断门限。相应中断的使能,以及中断的优先级,数字越大,优先级越高。然后还有中断入中数据的保存。

2、trap处理

void trap(){  int32_t mcause    = csr_read(mcause);    //Interrupt if true, exception if false  int32_t interrupt = mcause < 0;      int32_t cause     = mcause & 0xF;  if(interrupt){    switch(cause){    case CAUSE_MACHINE_EXTERNAL: axiInterrupt(); break;    default: crash(); break;    }  } else {    crash();  }}

3、用户中断处理

void axiInterrupt(){

  uint32_t claim;  //While there is pending interrupts  while(claim = plic_claim(BSP_PLIC, BSP_PLIC_CPU_0)){switch(claim){#ifdef SYSTEM_AXI_A_BMB

    case SYSTEM_PLIC_SYSTEM_AXI_A_INTERRUPT:            bsp_print("Entered AXI Interrupt Routine, Passed!");       break;

#endif    default: crash(); break;    }        //unmask the claimed interrupt    plic_release(BSP_PLIC, BSP_PLIC_CPU_0, claim);   }}



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

    关注

    0

    文章

    94

    浏览量

    10967
  • RISC-V
    +关注

    关注

    45

    文章

    2271

    浏览量

    46131
收藏 人收藏

    评论

    相关推荐

    Zynq中断三个部分:SGI、PPI、SPI

    Zynq中断大致可分为三个部分 第一部分为SGI,软件生成的中断,共16端口; 第二部分为PPI,CPU私有外设中断,有5
    的头像 发表于 11-16 17:21 1.1w次阅读
    Zynq<b class='flag-5'>中断</b>的<b class='flag-5'>三个</b>部分:SGI、PPI、SPI

    国产RISC-V MCU推荐

    。同时提供标准和高级通信接口:3SPI、2I2C、3USART、2UART,2I2S,2
    发表于 04-17 11:00

    risc-v的mcu对RTOS兼容性如何

    RISC-V的MCU对RTOS(实时操作系统)的兼容性主要取决于多个因素,包括RTOS的版本、RISC-V指令集的实现、以及芯片制造商提供的支持。以下是关于RISC-V的MCU对RTO
    发表于 05-27 16:26

    RISC-V架构及MRS开发环境回顾

    —— CH32V103系列MCU。作为长久以来对RISC-V架构关注和研究的成果, RISC-V3A处理器,支持IMAC指令子集,内嵌了PFIC中断
    发表于 12-16 23:08

    如何在RISC-V处理器上使用FreeRTOS?

    FreeRTOS内核调用哪个外部中断处理程序,设置外部中断handler的名称步骤如下:1 加载RISC-V芯片供应商提供的外部
    发表于 11-29 15:54

    学习RISC-V入门 基于RISC-V架构的开源处理器及SoC研究

    RISC-V架构的开源处理器与SoC。1 RISC-V简介1.1 RISC-V的基本设计RISC-V是一
    发表于 07-27 18:09

    RISC-V是什么?如何去设计RISC-V处理器?

    RISC-V是什么?有哪些特点?如何去设计RISC-V处理器?
    发表于 06-18 09:24

    FreeRTOS与RISC-V——适用于RISC-V的FreeRTOS概述

    1.1简介FreeRTOS中面向RISC-V的接口是易于拓展的,其提供了一系列基本的接口,用于操作适用于所有RISC-V实现中的通用寄存器,以及一系列的宏来处理特定的硬件实现中涉及到的
    发表于 04-09 09:26

    RISC-V的异常处理机制复杂吗?

    RISC-V对于异常处理的实现复杂吗?应该没有ARM Cortex系列的那样复杂,有NVIC或GIC中断控制器吧。那么它执行异常处理的流程是怎样的?
    发表于 04-21 15:00

    浅析单片机中断处理过程

    中断处理过程可分为中断响应、中断处理中断返回三个
    的头像 发表于 11-06 14:31 1.8w次阅读
    浅析单片机<b class='flag-5'>中断</b><b class='flag-5'>处理</b>过程

    如何建设RISC-V软件生态?

    本文从RISC-V软件开源基础平台、RISC-V多样化软件生态以及RISC-V开源社区等三个方面详细介绍了如何建设RISC-V软件生态。
    的头像 发表于 06-23 11:21 3285次阅读
    如何建设<b class='flag-5'>RISC-V</b>软件生态?

    Sifive Learn Inventor基础之GPIO 按键中断 RISC-V

    Sifive Learn Inventor 基础之gpio 按键中断Sifive Learn Inventor是Sifive的一款基于RISC-V内核的开发板,具体见官网的Hifive Rev b
    发表于 12-20 19:06 1次下载
    Sifive Learn Inventor基础之GPIO 按键<b class='flag-5'>中断</b> <b class='flag-5'>RISC-V</b>

    RISC-V高性能计算需要要解决的三个问题

    尤其是在 2022 年,RISC-V 的发展势头极为强劲,RISC-V 处理器核出货量突破 100 亿颗。
    发表于 02-15 11:53 613次阅读

    RISC-V SiFive U54内核的中断介绍

    类型的 RISC-V 中断:本地和全局。 本地中断:U54内核的本地中断只有2种,软件中断和定时器中断
    的头像 发表于 10-08 09:39 596次阅读
    <b class='flag-5'>RISC-V</b> SiFive U54内核的<b class='flag-5'>中断</b>介绍

    MCU如何处理中断中断处理过程包括哪些步骤

    当MCU接收到一个中断信号时,它会暂停当前正在执行的任务,保存现场,然后跳转到预设的中断处理程序(Interrupt Service Routine, ISR)去处理这个
    的头像 发表于 11-08 12:57 1415次阅读