龙芯2k1000的中断设计

1.前言

2.龙芯2k1000的中断描述

2.1 mips设计上的通用中断处理

2.2 龙芯中断的设计

3.龙芯2k1000中断的产生与处理

4.龙芯2k1000中断处理概述

1.前言

中断与异常在任何体系架构的芯片上都不会完全一样。在arm的m系列芯片上需要理解NVIC,这个相对较为容易,而对于高端一些的芯片,中断的处理就会复杂许多。比如arm上的gic(Generic Interrupt Controller)。要使用好GIC则需要专门去读这个外设的手册,然后写中断控制。对于MIPS中断控制的处理流程,就是本文描述的重点。

2.龙芯2k1000的中断描述

龙芯2k1000最多支持64个中断的触发源,按照统一方式进行管理。

这64个中断控制器通过可以配置的中断路由可以分配到CPU0与CPU1中。

在这64个中断中又需要按照需要路由到4个队列上。

2.1 mips设计上的通用中断处理

在MIPS的中断设计上,MIPS CPU会设计8个独立中断位。

其中,6个外部中断(IP2 ~ IP7),2个软中断(IP0~IP1)。片上的计数器/定时器会连接到一个硬件中断位上去。

2.2 龙芯中断的设计

对于对于每个核上的IP0~IP3,其对应的是 CP0_Status 的 IP2 到 IP5。IP7用于定时器中断。

在中断设计这一块,这64个中断又可以分为低32位与高32位,对于低32位可以将每个中断路由到CPU0,Mailbox0,也就是对应IP2。对于高32位,可以将每个中断路由到CPU0,Mailbox0,也就是对应IP3。

根据上述的寄存器配置每个中断的路由即可。

3.龙芯2k1000中断的产生与处理

在rt-thread上,将异常处理向量表通过链接脚本放到代码段的头部。

然后通过写中断向量表地址到向量基地址寄存器中。

如果有中断发生,则可以跳转到中断向量表去执行相关的中断处理程序。

MIPS上的中断处理可以读取c0 cause寄存器,得到mips发生中断或者异常的原因。

因为此时MIPS还只有7个中断信息,需要再次读取龙芯中断控制器的中断,才能准确的得到中断产生的原因。

最后可以通过rt-thread的中断处理的回调函数处理具体的中断信息。

4.龙芯2k1000中断处理概述

龙芯2k1000利用mips上的8个中断位,自己添加了一个中断控制器,该中断控制器可以配置中断的路由方式,比如让其路由到CPU0或者CPU1上,并且可以指定每个中断路由到具体的mailbox上。

根据mailbox的设计,当中断发生时首先通过mips上的c0 casue大致确定其中断的原因,接着通过龙芯2k1000的中断控制器,读取状态从而分析得到具体的外设中断。

上述则是龙芯2k1000中断处理逻辑。

龙芯2k按键中断驱动_龙芯2k1000的中断设计相关推荐

  1. 龙芯2k按键中断驱动_龙芯2k1000的中断处理逻辑

    龙芯2k1000的中断设计 1.前言 2.龙芯2k1000的中断描述 2.1mips设计上的通用中断处理 2.2龙芯中断的设计 3.龙芯2k1000中断的产生与处理 4.龙芯2k1000中断处理概述 ...

  2. 龙芯2k按键中断驱动_外部中断按键驱动

    我的开发板上一共有四个按键,分别影射到GPF0.GPF2.GPG3.GPG11,当按下按键时分别产生0.2.11.19号外部中断.由于没有安装驱动,当按下按键时,没有任何反应.所以需要编写一个驱动,将 ...

  3. 龙芯2k按键中断驱动_字符设备驱动-高级篇按键中断程序驱动

    驱动源码: #include "linux/module.h" #include"linux/kernel.h" #include"linux/fs. ...

  4. 龙芯2k1000的中断设计

    龙芯2k1000的中断设计 1.前言 2.龙芯2k1000的中断描述 2.1 mips设计上的通用中断处理 2.2 龙芯中断的设计 3.龙芯2k1000中断的产生与处理 4.龙芯2k1000中断处理概 ...

  5. 龙芯2k开发板Debian系统安装教程

    龙芯2k开发板Debian系统安装教程 1 准备安装u盘 1.1 获取u盘设备名 将U盘插入个人debian/ubuntu电脑,使用lsblk获取U盘设备名 我的u盘设备名为sdb(sda为我的主硬盘 ...

  6. 经验分享|在龙芯2K上运行RT-Thread系统并开源

    大家好,今天分享下群友老李在大四上学期做的一个项目.希望对大家有启发. 项目信息 项目名称:龙芯2K上的RT-Thread系统 学生姓名:李志锐 学校:聊城大学 大四在读 方案描述:该项目要求首先实现 ...

  7. 龙芯2k的X86环境交叉编译

    1.下载 龙芯内核交叉编译器(运行在X86_64机器上): http://ftp.loongnix.org/toolchain/gcc/release/gcc-4.4.7-7215-n64-loong ...

  8. 龙芯3号_龙芯3号首次成功移植Deepin深度系统!

    Deepin(深度)系统团队的龙芯平台移植工作已经取得突破性成果,Deepin桌面已经在龙芯3A和龙芯3B电脑上成功运行起来了. "龙芯"3B处理器采用32nm工艺制造,最多六核心 ...

  9. 龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代

    4月4日,龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代.龙芯 ERP 系统全系统使用国产化平台,私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上,使用自研 Loongn ...

最新文章

  1. runtime的用法
  2. java多线程模拟龟兔赛跑
  3. 轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur
  4. 简单的加密/解密算法_/c++
  5. Selenium | 网上教程
  6. 未找到导入的项目,请确认 Import 声明中的路径正确
  7. python定义二维数组_在python中定义二维数组
  8. 改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)
  9. 神经网络有趣案例_求解三体问题快了1亿倍,新型神经网络问世
  10. this cluster currently has [1946]/[1000] maximum shards open
  11. TSNE—聚类结果可视化
  12. MLDn学习笔记 —— JDBC
  13. 进程间通信之CreatePipe
  14. php 多城市切换,切换城市
  15. Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
  16. 坚果云企业版服务器端,坚果云团队版和企业版的区别
  17. 日本地震波及芯片产业链致价格走势难料
  18. Windows 7 SP1整合补丁
  19. 南非监管机构严厉打击Facebook的联系人共享
  20. Win10安装ST-Link驱动

热门文章

  1. 数据库常见面试题——索引
  2. Warning: (1366, “Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA.. .‘ for column ‘VARIABLE_
  3. context capture如进行空三迁移
  4. 稀疏线阵综合-基于FOCUSS的综合方法
  5. intentfilter匹配规则
  6. 【VRP问题】基于NSGA算法求解多中心VRP问题
  7. ArcScene---修改图层字段
  8. 电音与计算机相关吗,什么是电音声卡 电音声卡功能和区别介绍【图文】
  9. 树莓派3B上用Python编程获取TSL2561光传感器数据
  10. HDD/SSD基础知识及工作原理