中断处理

vxworks下gmac调试的总结

こ雲淡風輕ζ 提交于 2019-12-25 05:28:21
1:3280芯片手册详解过程: MAC 控制器支持 DMA 接收和发送,内部在接收和发送方向各有一个 2048 字节的 FIFO作为缓存。由于 FIFO 深度所限,MAC 控制器不支持硬件自动流控机制。 模式和带宽的切换 1:在做 MII 和 RMII 之间的切换前,应该先掉电 2:上电后软件重新配置芯片系统控制模块中MAC 的工作接口模式寄存器,之后再启动 MAC 控制器 3:需要注意的是,在收发功能开启的状态下不能对双工模式或速率进行改变(先关掉Mac收发,这样可以避免出现大量的错包的情况) 1:所有的发送中断和接收中断触发的条件都是dma操作完成(dma完成数据搬运的操作); 2:较早发送和接收中断说明数据帧较大不是一个buffer发送; 芯片的寄存器空间: MAC 模块支持以太网 PHY 的 MII 接口和 RMII 接口。 CSR(Control & Status 寄存器)共占有 8KB 地址空间,分为两段:DMA CSR 和 MAC CSR。 AHB Master 接口为 DMA 模块与系统主机的接口。 APB 接口即 CSR 接口,用于读写访问 DMA CSR 和 MAC CSR。 DMA 模块有独立的发送和接收引擎,进行系统内存与 MAC 间的数据搬运,将 CPU 的 干预最小化,只在帧发送或接收结束以及其他一些条件(如发生错误)下中断 CPU。 DMA

硬中断与软中断的区别

强颜欢笑 提交于 2019-12-25 03:37:41
硬中断与软中断的区别 作者:Danbo 时间:2015-7-9 硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成

硬中断与软中断的区别!

霸气de小男生 提交于 2019-12-25 03:37:08
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I

硬中断和软中断

女生的网名这么多〃 提交于 2019-12-25 03:36:58
硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断: 1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。 2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I

硬中断和软中断的区别

♀尐吖头ヾ 提交于 2019-12-25 03:36:50
硬中断 1、硬中断是由硬件产生的。比如像磁盘、网卡、键盘、时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 2、处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,他可以在没有主CPU的支持下,可以同时处理多个中断)。 3、硬中断可以直接中断CPU、它会引起内核中的相关代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 4、对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或成为调度器)可以调度多任务。 软中断 1、软中断的处理非常像硬中断。然而仅仅是由当前正在运行的进程所产生的。 2、通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据i/O模型的不同,进程或许会挂起直到I/O完成,此时内核调度器会选择另一个进程去运行。I/O可以在进程之间产生调度过程通常和磁盘I/O的方式是相同的。 3

软中断和硬中断的区别 ?

夙愿已清 提交于 2019-12-25 03:36:23
目录 硬中断 1.由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包 的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。 硬中断是外部设备对CPU的中断; 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。 软中断 1.通常是硬中断服务程序对内核的中断; 2.为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作

Java并发编程(五) 任务的取消

笑着哭i 提交于 2019-12-25 03:00:22
在Java中无法抢占式地停止一个任务的执行,而是通过中断机制实现了一种协作式的方式来取消任务的执行。外部程序只能向一个线程发送中断请求,然后由任务自己负责在某个合适的时刻结束执行。 1. 设置取消标志 这是最基本也是最简单的停止一个任务执行的办法,即设置一个取消任务执行的标志变量,然后反复检测该标志变量的值。 public class MyTask implements Runnable { private volatile running = true; public void run() { while(running) { //...操作 } } public void stop() { running = false; } } 通常需要使用volatile关键字来修饰标志变量,以保证该任务类是线程安全的。但是,如果run方法中存在阻塞的操作,则该任务可能永远也无法正常退出。 2. 中断线程的执行 每个线程都有一个boolean类型的变量来标志该线程的中断状态,Thread类中包含三个与中断状态相关的方法: interrupt方法试图中断线程并设置中断状态标志变量为true; isInterrupted方法测试线程是否已经中断,返回中断状态变量的值; interrupted方法用于清除线程的中断状态,并返回之前的值,即如果当前线程是中断状态,则重新设置为false

怎么理解Linux软中断?

馋奶兔 提交于 2019-12-24 12:14:55
1. 怎么去理解 前面博客简单说过中断的含义,中断是系统用来响应硬件设备请求的一种机制,会打断进程的正常调度和运行,然后调用内核中的中断处理程序来响应硬件设备的请求。 为什么要有中断?其实中断是一种异步的事件处理机制,可以提高系统的并发处理能力。由于中断处理程序会打断进程的运行,特别是还会临时关闭中断,会导致上一次中断处理程序完成以前,其他中断都不能响应,那么这种情况下中断也可能会丢失,所以为了减少对进程的调度和运行的影响,中断处理程序要尽可能快的执行。 在Linux中,为了解决中断处理程序运行时间过长或者中断丢失的问题,将中断分为两个部分,上半部和下半部: 上半部用来快速处理中断,他在中断禁止的模式下运行,主要处理跟硬件紧密相关的或者时间敏感的工作。 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行,并且每个CPU对应一个软中断内核线程,名字为“ksoftirqd/CPU编号”。另外,软中断不仅仅是刚刚说的硬件设备中断处理程序的下半部,一些内核的自定义事件也是,比如网络收发、定时、内核调度和RCU(Read-Copy Update的缩写,Linux内核最常用的锁之一)等。 举个例子来帮助理解,网卡收包: 网卡收包,会通过硬中断的方式,通知内核有数据到达,内核就应该调用中断处理程序来响应它。这里上半部,就是快速处理,把网卡的数据读到内存中,更新一下硬件寄存器的状态

多线程之线程的生命周期

坚强是说给别人听的谎言 提交于 2019-12-23 22:09:00
说一下线程的声明周期? 答:1.新建状态   2.就绪状态   3.运行状态   4.阻塞状态   5.死亡状态 具体描述一下每一个状态? 答: 1.新建状态:    用new关键字建立一个线程后,该线程对象就处于新建状态。 处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。 2.就绪状态:      处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分配CPU。 当系统选定一个等待执行的线程后,它就会从就绪状态进入运行状态,该动作称为“CPU调度”。 3.运行状态      在运行状态的线程执行自己的run方法中代码,直到等待某资源而阻塞或完成任何而死亡。 如果在给定的时间片内没有执行结束,就会被系统给换下来回到就绪状态。 4.阻塞状态    处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,或等待I/O设备等资源,将让出CPU并暂时停止自己运行,进入阻塞状态。   在阻塞状态的线程不能进入就绪队列。只有当引起阻塞的原因消除时,如睡眠时间已到,或等待的I/O设备空闲下来,线程便转入就绪状态,重新到就绪队列中排队等待,被系统选中后从原来停止的位置开始继续执行。 5.死亡状态     死亡状态是线程生命周期中的最后一个阶段。线程死亡的原因有三个,一个是正常运行 的线程完成了它的全部工作;另一个是线程被强制性地终止

linux驱动面试题2018(面试题整理,含答案)

吃可爱长大的小学妹 提交于 2019-12-23 21:47:37
linux驱动面试题2018(面试题整理,含答案) 前言: 这篇文章主要是对linux驱动面试题一个整理跟总结,参考了很多网上的资料,基本涵盖linux驱动相关面试内容。我把他们大概的分为三部分:基础部分,同步相关,还有中断部分。中断,同步相关基本都是必问的。下面也会对这几个方面的面试题进行详细的解答,你把下面的面试题弄懂了,应该可以应付大部分linux驱动面试了。要想真正的理解,还的在实践中多动手调试多总结,如果有什么地方错了或者不全,欢迎小伙伴们留言。 一. 基础题: linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? https://blog.csdn.net/bingqingsuimeng/article/details/7924756 字符设备和块设备的区别,请分别列举一些实际的设备说出它们是属于哪一类设备 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。 块设备:和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备上能够容纳文件系统,如:u盘,SD卡,磁盘等。 字符设备和块设备的区别仅仅在于内核内部管理数据的方式