00:00
好的,那首先啊,欢迎各位朋友来到铃声教育啊,我是威克。接下来啊,我们主要是学习什么呢。Linu克斯内核里面的一个中断管理机制。那么通过前面的基础,我们已经讲过啊。这个内核的各大模块。那么在学习这个啊技术之前,我们首先要知道。什么问题呢?就是说我们前面讲过的Linux内核啊,它这些相关的,你比如这个内存管理是吧。还有进程管理啊啊,以及这个同步啊,并发啊,文件系统啊等等。那么操作系统它除了刚刚我所讲的这些功能以外,它还有哪些呢?还有我们啊一个非常重要的模块就是什么呢?就是这个我们今晚要讲的,你比如这个啊,显示器啊,键盘鼠标啊,网卡,声卡,显卡等等。
01:06
那么这个处理器它跟这个外设资金啊。如果处理器呢,它发出一个请求信号之后,就一直在轮训这个键盘的响应。由于键盘响应的速度啊,它比这个处理器啊要慢很多,所以要等待我们的用户的食物,那么这个时候呢,处理器就浪费资源了,所以说啊。不如啊,键盘有事件发生的时候。我们就会什么,就会发出一个什么这个信号给处理器。让处理器啊,暂停当前的工作啊,给我们这个响应一个回复。给我这个处理啊,那么这比什么呢?这个比我们处理器啊,一直在轮训这个啊,效率要高了很多,其实这个操作它就是什么,就是我们所讲的一个中断啊,大家要摸清楚这个观点啊就行了。
02:01
好,那我们摸清楚的观点之后呢,还有一个问题啊。那么现在啊,这里有这么一句话,嗯,我们记住啊。什么问题呢?我们刚刚讲的这个人训啊。人性机制。他也不是什么呢,也不完全要比什么呢,要比我们那个中断机制啊要差,就这个意思啊。什么意思呢?为什么提出的概念啊,因为什么,因为我们在什么呢?你在这个啊,在大型的这个什么,在大型的这个啊,网络服务器啊。他的一个什么呢?它的一个。网络服务器,嗯。它的一个吞吐量是不是啊。吞吐量啊,非常大的这个啊。情况下是不是,那么这个时候我们这个网卡驱动,哎,它就采用一个什么呢,采用一个轮训机制,就这个意思,轮训机制呢,它要比我们往常的这个中断机制啊,效率啊要什么呢,要更高就。
03:13
这个意思啊。啊,那你比如什么呢?比如啊这些开源组件框架是不是叫什么呢?叫DBDK啊DPDK啊,这个框架是不是啊,它的英文全称我给他列一下啊。叫做date是吧。My plan。是吧,啊,That plan development是吧。啊,D lo。一个什么K。啊,它是由这几个啊进行组成的。那我们掌握这个之后啊,大家还注意了,其实我们不管在什么呢,在啊叉8664啊这个体系架构下面,还是在ARM的这个相关的体系架构啊。
04:01
那么我们如何进行什么呢?中断,它是如何进行管理?你比如Linux内核啊,这些中断管理机制呢,它是如何设计实现的?你比如什么呢,以及我们常用的一些什么啊,下半部分其次你比如什么软中段啊。采一个工作对立机制啊,Task啊等等啊。这就是我们要理解的。那么除此以外的话,我们还有一个点啊,还有一个点。嗯,什么点呢,就这一个了啊。刚刚我们讲这个是第一个是吧,好,接下来我们就来看第二个了。啊,第二个是什么呢?第二个就是说我们经常讲的这个什么,就是Linux内核啊,嗯,Linux内核。它这个什么呢?它能够支持什么,支持很多种的这个什么,很多种处理器的一个啊体系啊。架构。那么我们从什么呢?如果我们从系统的这个角度啊。
05:03
啊来看的话,所以要知道啊,Linux内核它这个中断管理啊。可以分为什么呢?可以分为啊四个层啊四个。啊,四个层次。那么分别是哪四个层次呢?第一个层次我们一般是讲的是硬件层。硬件层是什么意思,就是说你比如这个CPU中断跟哪个呢?跟这个中断控制器的一个连接,它就是硬件层了。还有一个就是处理器架构管理。处理器加管理是什么意思啊,就是CPU中断异常处理。就这个意思,嗯。还有一个什么呢?还有一个是中断控制器管理。中断控制器管理,就是说你比如IIQ这个中断号的一个相关映射。还有什么呢?还有就是我们经常讲的一个什么呢?Linux的一个什么啊,Linux通用啊。通用这个中档啊,处理器的处理器啊,这个层面是不是你比如啊注册中档啊。
06:07
和这个什么,比如中断注册啊,或者中断处理啊等等,这就是Linux通用的一个中断处理器的这一层。那么总共我们将它呢进行分为什么分为这四层啊。好,那我们现在啊,掌握这四层之后,那接下来我们就来看下一个问题是吧。好,下一个问题什么?但是你还搞清楚啊,你不能瞎搞是吧,为什么呢。这里就提到了一个啊,不能乱搞啊,那什么叫不能乱搞呢?就是说你比如这个不同体系架构是不是它这个啊,它的一个设计概理念也不一样,要搞清楚啊,就是你不同体系,嗯。不同体系架构,它对什么对中断的这个控制器啊啊。设计的这个什么设计理念啊也啊不一样是不是,那为什么不一样呢?你比如说ARM公司啊,因为ARM公司它就提供什么呢,提供通用的一个什么中断控制器。
07:09
那我们叫什么?终端控制们叫gic嘛,我们叫gic。这个啊什么意思呢,啊瑞是吧,就这个单词啊。Interruption。好,Interrupt还有什么呢?还有这个C,就这个意思啊。除此以外。这是这个啊,要注意了,那么这是你在ARM体系架构下,你去查询他这个什么呀。它这个终端控制器,它肯定是写gic的啊。那还有一种就是什么呢?就是我们经常讲的啊,叫做什么,我们用英特尔的嘛,就是叉八六。叉八六的一个什么叉八六架构啊,你看叉八六的一个体系架构,嗯。它采用什么。它提供的是什么?提供的是高级可编程啊,可编程中断。
08:04
控制器,那么叫a pic是吧?Advance。这个单词啊,Program。OK是吧?还有一个什么,还有一个interrupt。Country。哎,就这么简单是吧,就这个意思啊。那么注意了,目前它的版本比较多啊,有三啊有二了是不是啊等等啊,但是。你比如说ARM的一个什么呢?V7架构处理器。它当中你比如例如啊,它有一些相关的什么呢?啊CA7啊或者A9啊等等,它最多可以支持八个核啊。那么第三个版本,第四个版本啊,二八的话,你比如A53是不是。除了这些相关的这个A53以外,其实它还有其他的这个架构啊。大家要搞清楚是不是你比如什么呢,比如这个ARM,这个什么we process。
09:04
这些是中断管理实现,那么它支持的是GC第二个版本,那什么意思呢?我们在这里面可以看到的,注意R。为什么我们要这么理解啊?就这个啊,那为什么这么做呢?你看这一边我们打开一下这里是吧,刚刚你看到了啊。那现在我这个CPU啊,注意啊,现在我给大家。处理的这个对。这个CPU你看啊,你看呢。再是运行一次啊。就这样的,你比如它CPU架构是什么,它是英特尔嘛,是不是,那么是英特尔的话,那刚才我们讲了cat是不是。啊,那么我们在什么。在cat后面啊。再进行什么,再进行下一步操作。
10:03
大家一定要了解这个问题是不是?那你直接通过开车这个指令是吧。啊,开启这个命令之后呢,后面你在什么,我们直接在这个杠啊,这个目录的PC下面有一个什么呢?有一个interrupt,是不是我们回车。好,我们用飞车A。写错了吗?啊,少了个S啊,少了个S,嗯,飞车。你发现没有?这里面它都是基于什么IO,你看啊,都是CPU0是吧,你看啊。这些是吧,你比如IP下划线这个是啊,IO下线的apic你看。A pic,当你看到a pic,它就是什么呢?就是我们这个英特尔啊,叉发六的架构就是英特尔架构的啊。大家要了解这个就行了,但是我们做嵌入式驱动开发的话,一般都是基于ARM这个架构下面啊。
11:00
那现在我们就把这个啊放到这来就可以了,是吧。好,这个问题我们就全部啊搞定了。好,那这个搞定之后你还注意啊。什么意思呢?你比如ARM的那个什么中断控制器啊,它有一个核心点啊,我们大家来观察一下是不是。什么问题呢,你看啊。就是我们ARM是不是啊,ARM2啊。他是V几的是VIP啊。VIP什么杠CACA15。还有一个什么,还有一个就是说明CH就这个意思。他这个平台,嗯。他这个平台支持什么呢?支什么contact是不是,嗯,Contact a级了没A15是不是。和什么呢,和这个是不是。A级啊,它支持的是A7,它是几个,它是两个机型。
12:04
两个机型,所以啊,它这个中断控制器呢,啊,使用的是什么呢?是gic啊刚什么呢,杠400的这个。这个是ARM架构啊,嗯。控制期,那一般我们讲的是以R为主,为什么?因为嵌入时间比较多啊,大家注意这个问题是不是,嗯。啊,所以说它就这两个是不是,所以说你比如啊,它这个什么A15对不对啊context a15跟A7,那么这两个组是不是两个机型,那么连接到什么呢?就跟那个GC40400这个啊中断控制器进行相互连接,那么它再通过这个终端控制器再连接到什么,再连接到外部设备,就这个意思啊,它的架构是这么这么体现出来的诶。它这个架构就这么体现设计的。大家一定要明白这一点就行了。好,那这个图形我们怎么去描述呢?其实它是这样,你看啊。
13:03
对这么放啊,上面这里面是吧。你看它这个终端控制器是吧。这里再来一个是。两个啊。好,就这么简单是吧。大小。好,接着。机的下面是终端控制器。
14:05
嗯,就这个意思,把它删除啊。啊,中间这一块。那么这里的话就是终端控制器了。文本。它是中断控制器。它是基于什么?GGC是吧,杠400。就这个意思。好,上面这一方我们刚讲了啊。它是第一个两个机型嘛,第一个是A15。Closer。A15。这第一个是吧,还有一个什么,还有一个是A7。就这么两个啊,然后再把它进行进一步的把它放大一下,是不是你看。这不就出来了吗?是不是啊,属于他们之间的一个啊。
15:00
操作它是双向要注意啊。双向完成。OK。哎,这两个的话。箭头啊。就这么做。然后这个是其中的一个是吧。用红色啊,这个换一个。用这个颜色是吧。下面这个的话,我就用这个啊。这样的话我们编译啊。清楚去了解是吧,所以我们整体看到的是不是就是中档平台的架构。嗯,就这个意思,嗯。底层控制看到没有?好,它就这么一个价格。啊,它从这个地方啊,要注意啊,中断控制器接到什么,接到外面这个部分。呢,下面这一块它是什么呢?下面这一块是外部设备,嗯。就是外部。
16:01
OK啊,外部设备。外部设备有很多了,是不是它不止这一个啊,你要搞清楚啊。差不多了,是外部设备。嗯,可以了。好,现在大家所看到的这个是不是是基于什么呢?是基于这个。Pro啊VP就是C15的这个平台,是不是就15A这个平台架构。啊,就这个平台架构要注意啊。要注意这个操作就行了。就是ARM啊。他这个什么呢?他这个平台啊,中断管理这个架构如下。就这个意思,你看那个图。
17:02
好的,你看现在我们这个就全部结搞定了是吧。好,那这个全部搞定了啊,注意啊,其实里面还有很多这个相关的一个细节记得啊,我已经换到这个笔记当中,对不对,那么这个笔记相关的这个内核的这些相关掩码,包括十家大场面试题啊。包括学习Linux的一个相关的这个。记,是不是包括PDF这个参考文档大家呢?记得啊,直接找谁啊,直接找秋香老师来领取我们。给大家提供的这个相关的这个PDF文档啊,你根据这个来就OK了,是不是。Okay。好,那么接下来的话,我们啊,刚刚提到的这个问题是吧。就回头来了。那么这个外部设备是不是,嗯。我们搞清楚了还有什么,还有经常讲的,你比如说它这个SGI是不是SGI这个软件啊,触发中断是不是什么意思啊。
18:04
就是说它通常用于多核之间的一个通信。那么就是说最多它可以支持什么?16个啊,这个S加压增大。那么。SGI中断,它通常是什么?是在Linux内核当中被用作什么?被用作ipi中断啊?并且会送,送达到什么呢?送达到系统指定的CPU,这是一个。另外一个是PPI私有的一个什么外设终端。这是什么?这是每一个处理器核心的一个什么私有中档?那么最多它支持什么?支持16个PPI怎么办?那么硬件中大号,它是可以从硬件中的号,它有编号,大家可以查相关相关文档,那么通常这个什么,通常这个啊。中断是不是它会发到CPU上面,所以一般应用场景的话。
19:00
私有外设中呢,一般是用在什么?用在CPU的这个本地时中。还有一些相关的这个什么,还有相关的这个SP外设嘛,SP外设的话就是公共的一个外设终端,那么你这个公共外设终端呢,它最多可以支持什么900多个啊,900多个这外设中断啊。那么具体多少的话,大家也得看官方文档资料了,每一款肯定稍微有点不一样是不是?但是我们要知道一个问题。什么问题呢?就是接下来我们要掌握这个了啊。第一个三。第一个是什么?第一个就是说你这个gic是吧?啊gic这个中断控制器,它主要有什么呢?主要有两个啊,主要有两个部分组成。哪两个部分不组成呢?它分别为什么?分别为这个。分别为这个仲裁单言啊。仲裁单元和什么呢?和CPU的一个什么接口,就这个意思啊。
20:00
分成两个CPU接口模块,那么其中啊。其中我们经常讲这个仲裁发言是吧。嗯,仲裁发言。其中仲裁单员,他就为什么呢,为每一个这个中断员啊,维护一个什么呢,维护一个状态机。注意,这是一个问题啊。那么并且呢,支持什么,他支持我们这个,比如这个喷啊,Active啊,或者是一些啊inac啊等等。那么这个什么呢?其中你要掌握的这个gic检测中断的流程就是首先。当gic检测到一个中断发生的时候呢?他就将这个中断设为分离这个状态。那么对于什么,对于这个处于判定这个状态中断过程当中,仲裁单元它会确定这个啊目标CPU嘛,他会将什么,将终端请求发送到什么,发送到这个CPU上面就可以了。
21:01
对于每个CPU仲裁单也会从很多很多个配离状态中选择一个优先级比较高的嘛。他主要是做这个事情啊。大家要搞清楚这个啊,关键点核心就可以了。那这这个啊。啊,那我们啊理解这个啊,最基本的相关问题的话,那么GC中断控制器啊。这个控制器它会支持什么,支持中端的一个优先级抢占问题。他就这么个意思啊。大家注意啊。好,那我们现在理解之后还有什么呢,还有一些相关这个中断号呢,那你这个中断号的话,你看啊。你比如这个,刚才我们讲这个定义平台在哪里呀,就是S你看啊定义平台。在阿姆体系结构,你看。好在这个a ch是。Ash下面呢,有个什么呢?有个R看到没有。
22:01
ARM下面呢,有个much much什么much re。好里面呢,有这个DT啊。诶,他这不对啊。
23:01
它这个架构好像是没有这个架构在设计的时候。我们讲了在内河。它为土啊内核它定位土来管理中断号的。内核下面。IQDC。你看哪个大家注意啊,这个。这什么意思呢?就是刚讲的这个Linux内核是吧,使用什么使用为土啊。使用位图来管理什么管理这个中断号,就这个意思,机体啊如下。叫做这个。
24:00
I。IIQ下划线。Bit map。下划线,Bits。就这一个的。啊,就这个。井号,DeFine。嗯,下面这个。你看往下。它可以进行进一步把它展开啊,大家注意啊。看到没有?
25:34
好,这就是我们掌握一个的,其实它还有一个什么。其实他这个硬件增大号和软件增大号啊,它有一个什么,有一个相关的一个映射架构。大家要搞清楚啊。我们来看一下啊。他是怎么一回事呢?第二个啊。第二个。第二个什么,第二个这个软件中断号对不对。
26:02
软装大号它和什么呢?还有一个就是硬件,有软件就有硬件啊,硬件增大号。他们之间的一个什么映射流程啊。如下。映射流程来看一下。OK。我们来看这个啊。怎么做呢?大小。那首先我们看第一个。
27:02
第一个你比如窗口号是不是。比如CPU通过GRC增端控制器是不是,然后再到什么呢?再到NR这个IQRDC里面进行进一步设置,那第一步做什么,第二步做什么,第三步做什么,第四步做什么。他有个流程啊。好,那现在啊,我们就把这个记一下是不是。他的第一步做什么?第一步,首先它解析什么,解析这个DTS的一个什么。计算DTS啊。计算什么呢?计算硬件中单号这是第一个是不是。这他第一步啊。好,第二步是什么呢?第二步就是一定要从什么,它直接从这个a lock的啊。Look的什么呢?下划线IQ这个位图当中啊,取什么呢?取第几个,取第一个空闲的一个什么。
28:03
比特卫把它作为什么?作为IIQ的一个什么总单号?那第二步。那么第三步是什么呢?第三步它就有什么,他就专门有IQ的这个什么中断号。干什么呢?啊,它会啊,取出什么呢,就会得到啊嗯,得到什么呢?得到我们这个中段描述符,是不是中断描述符,这个就叫IQ嘛,刚才看到了啊啊这个DSC的一个什么数据结构。这就是他的第三,是不是第三个啊。CD3好,那第四的话呢。第四啊。第四。第四的话就要设置什么,它必须要设置IQ下划下划线这个date的一个什么,Date的一个结构体当中的一个什么,IQ等于什么呢?等于iiq的一个中断号。啊,这是他的第四步转。
29:01
好,那么它第五步什么呢?第五步你就要什么,你就设置这个什么DSSC,它所指向的一个什么,Handle德里面的这个什么。IQ指向。到了什么呀啊fast啊。Fast什么呢?Faster y下划线有个什么IQ?他就通过这个进行完成,所以它基本的思路啊,我们可以归纳为什么呢,归纳为五个啊。那你只要啊,至少只要你掌握这五个之后,那么大家也可以什么也可以。通过图形啊进行把它绘制出来,是不是什么意思呢。你看一下他们之间的指向,其实是这样的。他们之间的关系你看啊。比如说最左边是不是它就有个窗口设备是吧。你比刚才讲啊。
30:01
这这这个当小三20。这个表示什么呢?这个就是NR下划线,什么IQS是不是。CPU了。嗯,就是中央处理器了。那CPU它所对应的下面是什么呢?就控制器了。GC多少呢,他是刚才我们讲了啊,GC400中断控制器。就这个意思。重量控制器。那么他们之间关系中,量控制器呢?直接跟外部设备连接的。
31:19
嗯,这里连接到外面啊,就是外部设备嘛。嗯,它是外部啊。外部的一些什么呢?外部窗口设备是吧。就到这一块来了。好,那你这个外部窗口的一个设备的话,那么它可以指向什么呢?指向我们右边这一个,看到没有。把它缩小一点。
32:14
好,可以了,三。这边。它有几个部分啊。他专门有一个。专门有个什么桌面IQ嘛,下划线这个什么呢,DSC啊进行存储。NRIQ。用这个里面有很多个陈岩。比如他第一个成年是吧,第二个成年。
33:33
法第二个。第三个。啊,第四个。哎,他们之间是通过这个啊。它就这么一个结构,看到没有。到这一块来。
34:14
就可以了啊。好,然后这是其实我们所看到这一步,它是什么呀?NR下划线。Ii QS是不是?他是一个什么?多少个啊,它有多少个中段描述符吗。就这个意思,用通过数组进行存储。大家一定要摸清楚这个最基本的关系是吧?然后到这边来,它在指向什么呢?它再有指针指向对应的一个。叫做什么叫做structure,刚才讲了啊。嗯,刷成RQ下划线什么呢?DSC这个描述符是吧。
35:01
它有对应的这个指针来指向它。就这这么紫啊。就就这么干是吧。好,那么它有这个。好,这个去指向的话呢,那还有什么呀,还有一些相关的数据了,那你这些相关数据的话,那你就回头到这来了,看到没有。哎,你这个数据。叫做什么IIQ这个什么呀。I could date。Di就可以了是吧。那所以你这个这个子针就指向这儿来。那他可想它等于乘以。同时你也可以指向什么呀,I ship。
36:00
看他就这么一个思路,看到没有。比如它比如这里它专门有个子针嘛,是不是那么它这个子针就专门来什么呢?子下面下面这些相关乘因。对哦。要搞清楚。差多了。好,那么基本上啊,它整体四度就这样,你比如这个指向I是吧。那其实他这个成员就这么个意思是吧。啊,你再往下面。那么它指向SID,那么这里面就其实它也有一个什么,也有个专门的结构体积指向它。他这个思路就是这样的。好,最基本的问题。嗯,差不多了是吧,你看。
37:01
这里是一块,你要搞清楚啊。左边这个部分。它是一块对吧。你这边。你又是一块。他到这地方。它也是一款。啊,你到这边你是你的这个模块是吧,就是结构体嘛。每个地方都有每个地方的这这个部分啊,你看。你根据这个部分,我们就可以知道是不是可以了解掌握这些更多的东西,你看。这就是软件终端号跟硬件终端号他们之间的一个操作啊,最基本。把整体思路架构。那我全部给他列出来了是不是。
38:01
好,可以了,你看没有。嗯,搞定了啊。这个大小改善。那么啊,注意啊,啊,今天晚上对不对这个内容啊课程。我全部就给大家分享完毕了,是不是第一大点啊,ARM中断控制器,那么下一次我们再继续讲解下一个是不是,下一个讲什么呢?软中断跟。啊,各位朋友啊,那我们下一次课再见。
我来说两句