• 龙芯中断系统


    龙芯中断系统与x86中断系统完全不一样的。

    CPU级中断(异常)支持

    几个相关的寄存器有
    SR (BEV, SR, NMI, IM7-0, ERL, EXL, IE)
    Cause (IP7-0)

    龙芯有6个硬件中断信号线,分别对应Cause寄存器的15~10(IP7~IP2)位,龙芯片上时钟(定时器)占用了最高位那一根信号线,即Cause中的IP7。

    龙芯还有两个软件中断寄存器位,对应Cause的9~8(IP1~0)位,它们是可读可写的。

    当外部一个中断信号来到的时候,首先影响的就是Cause寄存器中IP位,信号从哪根线进入就会把对应的IP7~IP2中的那个位置1。Cause的任何一个IP位被置1,就能够引发一个CPU异常,但是要实在地引发CPU异常,还需要通过SR状态寄存器中的某几个关卡。要使一个传入的中断信号一定能引发一个中断,需要对SR中的以下几个位做如下操作:

    • SR(IE 0位) 位必须置1, 否则会束缚CPU不响应任何中断,所以这位的名字叫全局中断全能位;
    • SR(EXL 1位) 和 SR(ERL 2位) 两位必须清零。如果它俩中的任何一位为1, 则会禁止任何中断。而且每一次中断(CPU异常)成功触发后,它们中的某一个会自动置1,所以要注意在一个异常结束前,要将这两位都清零一下;
    • 在SR状态寄存器中,还要8位掩码位 IM7~0(15位~8位),它们分别对应Cause中的那8位IP位(IP7~0),要想使某个IP位成功引发一个CPU异常,则那个IP位对应的IM位必须置1(表示掩码开)。相当于在这里又设置了一道关卡。由于8个通道有8个掩码,可以实现精确独立的信号响应控制,而这种控制是由软件在程序中实施的,所以给了程序员很大的方便。
  • 相关阅读:
    Contiki学习笔记  第一个程序:Hello World
    contiki学习笔记---process结构体
    MYSQL碰到The total number of locks exceeds the lock table size 问题解决记录
    navicat连接mysql查询结果中文都是?号(C#)
    C#使用OracleBulkCopy
    解决IIS应用程序池默认回收导致程序崩溃
    构建可读性更高的 ASP.NET Core 路由机制
    .Net(C#)汉字和Unicode编码互相转换
    聊聊c#字符串拼接
    VS2010到VS2019各个版本的密钥
  • 原文地址:https://www.cnblogs.com/kuainiao/p/2859833.html
Copyright © 2020-2023  润新知