龙芯2k按键中断驱动_龙芯2k1000的中断处理逻辑
龙芯2k1000的中断设计
1.前言
2.龙芯2k1000的中断描述
2.1mips设计上的通用中断处理
2.2龙芯中断的设计
3.龙芯2k1000中断的产生与处理
4.龙芯2k1000中断处理概述
1.前言
中断与异常在任何体系架构的芯片上都不会完全一样。在arm的m系列芯片上需要理解NVIC,这个相对较为容易,而对于高端一些的芯片,中断的处理就会复杂许多。比如arm上的gic(GenericInterruptController)。要使用好GIC则需要专门去读这个外设的手册,然后写中断控制。对于MIPS中断控制的处理流程,就是本文描述的重点。
2.龙芯2k1000的中断描述
龙芯2k1000最多支持64个中断的触发源,按照统一方式进行管理。
这64个中断控制器通过可以配置的中断路由可以分配到CPU0与CPU1中。
在这64个中断中又需要按照需要路由到4个队列上。
2.1mips设计上的通用中断处理
在MIPS的中断设计上,MIPSCPU会设计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上的中断处理可以读取c0cause寄存器,得到mips发生中断或者异常的原因。
因为此时MIPS还只有7个中断信息,需要再次读取龙芯中断控制器的中断,才能准确的得到中断产生的原因。
最后可以通过rt-thread的中断处理的回调函数处理具体的中断信息。
4.龙芯2k1000中断处理概述
龙芯2k1000利用mips上的8个中断位,自己添加了一个中断控制器,该中断控制器可以配置中断的路由方式,比如让其路由到CPU0或者CPU1上,并且可以指定每个中断路由到具体的mailbox上。
根据mailbox的设计,当中断发生时首先通过mips上的c0casue大致确定其中断的原因,接着通过龙芯2k1000的中断控制器,读取状态从而分析得到具体的外设中断。
上述则是龙芯2k1000中断处理逻辑。
责任编辑:xj
原文标题:龙芯2k1000的中断设计
文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。
龙芯2k按键中断驱动_龙芯2k1000的中断处理逻辑相关推荐
- 龙芯2k按键中断驱动_龙芯2k1000的中断设计
龙芯2k1000的中断设计 1.前言 2.龙芯2k1000的中断描述 2.1 mips设计上的通用中断处理 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. ...
- 龙芯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 ...
- 奔跑吧!中国芯,北京迅为龙芯处理器平台
龙芯是中国科学院计算所自主研发的通用CPU,采用简单指令集,类似于MIPS指令集.龙芯1号的频率为266MHz,最早在2002年开始使用.龙芯2号的频率最高为1GHz.龙芯3A是首款国产商用4核处理器 ...
最新文章
- 模拟浏览器的神器 - HtmlUnit
- SQL Server 审核(Audit)-- 创建服务器级别的审核
- 当你工作压力很大的时候
- 基于Spring Boot的WebSocket应用程序并捕获HTTP会话ID
- 广东电网计算机专业笔试题目,广东电网笔试题目
- 不小心合并了icloud通讯录_苹果手机怎么恢复通讯录联系人号码?原来方法竟如此简单!...
- Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067
- cad坐标提取插件_如何快速地将CAD里的坐标提取到Excel中?最简单的方法你知道吗?...
- pycharm中的常用快捷键与常用设置
- Prometheus监控学习笔记之PromQL简单示例
- 64位Win7下安装Oracle11gr2以及PL/sql(32位)安装
- c语言语法大全,oc语言基本语法汇总分析
- 微信小程序布局 左右结构简单例子
- 腾讯音乐娱乐集团Q3财报亮眼:单季总营收75.8亿元破纪录,在线音乐付费用户历史性破5000万
- 解决尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败的问题
- 强制客户端更新Silverlight XAP文件方法汇总
- python 安装scapy_安装scapy时出错
- 12个免费logo生成器
- 电话号码查询系统(链式结构)
- 少儿编程课程和乐高机器人有什么不同