龙芯2k按键中断驱动_龙芯2k1000的中断设计
龙芯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的中断设计相关推荐
- 龙芯2k按键中断驱动_龙芯2k1000的中断处理逻辑
龙芯2k1000的中断设计 1.前言 2.龙芯2k1000的中断描述 2.1mips设计上的通用中断处理 2.2龙芯中断的设计 3.龙芯2k1000中断的产生与处理 4.龙芯2k1000中断处理概述 ...
- 龙芯2k按键中断驱动_外部中断按键驱动
我的开发板上一共有四个按键,分别影射到GPF0.GPF2.GPG3.GPG11,当按下按键时分别产生0.2.11.19号外部中断.由于没有安装驱动,当按下按键时,没有任何反应.所以需要编写一个驱动,将 ...
- 龙芯2k按键中断驱动_字符设备驱动-高级篇按键中断程序驱动
驱动源码: #include "linux/module.h" #include"linux/kernel.h" #include"linux/fs. ...
- 龙芯2k1000的中断设计
龙芯2k1000的中断设计 1.前言 2.龙芯2k1000的中断描述 2.1 mips设计上的通用中断处理 2.2 龙芯中断的设计 3.龙芯2k1000中断的产生与处理 4.龙芯2k1000中断处理概 ...
- 龙芯2k开发板Debian系统安装教程
龙芯2k开发板Debian系统安装教程 1 准备安装u盘 1.1 获取u盘设备名 将U盘插入个人debian/ubuntu电脑,使用lsblk获取U盘设备名 我的u盘设备名为sdb(sda为我的主硬盘 ...
- 经验分享|在龙芯2K上运行RT-Thread系统并开源
大家好,今天分享下群友老李在大四上学期做的一个项目.希望对大家有启发. 项目信息 项目名称:龙芯2K上的RT-Thread系统 学生姓名:李志锐 学校:聊城大学 大四在读 方案描述:该项目要求首先实现 ...
- 龙芯2k的X86环境交叉编译
1.下载 龙芯内核交叉编译器(运行在X86_64机器上): http://ftp.loongnix.org/toolchain/gcc/release/gcc-4.4.7-7215-n64-loong ...
- 龙芯3号_龙芯3号首次成功移植Deepin深度系统!
Deepin(深度)系统团队的龙芯平台移植工作已经取得突破性成果,Deepin桌面已经在龙芯3A和龙芯3B电脑上成功运行起来了. "龙芯"3B处理器采用32nm工艺制造,最多六核心 ...
- 龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代
4月4日,龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代.龙芯 ERP 系统全系统使用国产化平台,私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上,使用自研 Loongn ...
最新文章
- runtime的用法
- java多线程模拟龟兔赛跑
- 轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur
- 简单的加密/解密算法_/c++
- Selenium | 网上教程
- 未找到导入的项目,请确认 Import 声明中的路径正确
- python定义二维数组_在python中定义二维数组
- 改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)
- 神经网络有趣案例_求解三体问题快了1亿倍,新型神经网络问世
- this cluster currently has [1946]/[1000] maximum shards open
- TSNE—聚类结果可视化
- MLDn学习笔记 —— JDBC
- 进程间通信之CreatePipe
- php 多城市切换,切换城市
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- 坚果云企业版服务器端,坚果云团队版和企业版的区别
- 日本地震波及芯片产业链致价格走势难料
- Windows 7 SP1整合补丁
- 南非监管机构严厉打击Facebook的联系人共享
- Win10安装ST-Link驱动
热门文章
- 数据库常见面试题——索引
- Warning: (1366, “Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA.. .‘ for column ‘VARIABLE_
- context capture如进行空三迁移
- 稀疏线阵综合-基于FOCUSS的综合方法
- intentfilter匹配规则
- 【VRP问题】基于NSGA算法求解多中心VRP问题
- ArcScene---修改图层字段
- 电音与计算机相关吗,什么是电音声卡 电音声卡功能和区别介绍【图文】
- 树莓派3B上用Python编程获取TSL2561光传感器数据
- HDD/SSD基础知识及工作原理