APP下载

浅谈嵌入式linux的中断处理技术

2017-03-20王伟

知音励志·社科版 2017年2期
关键词:处理技术中断

王伟

众所周知,嵌入式linux的实用性与中断处理技术是紧密相连密不可分的,那么必然就是一荣俱荣,一损俱损。而接下来本文着重谈的是中断处理技术在嵌入式linux中应用的优缺点,并同时提出了改善嵌入式实用性的方案,希望对大家有所裨益。

【关键词】嵌入式Linux;中断;处理技术

1 简述中断处理与linux实时化

据调查,Linux内核关注的主要是所用程序的吞吐量,所以如果从实时性方面考虑,Linux本身并没有什么实用性。但是呢,Linux的调度器却能够让其共同享有来自CPU的各种资源,而这是因为linux的调度器本身就具有公平分配的特质。可是虽有公平分配的特质,但内核却是不可抢占的,尤其是单处理器上的,而正是由于此特征,才会在进行实时化时无法躲避实质性的障碍,尤其是关闭中断正在运行的内核线程,而且由于条件有限不具备精确的计时器,极有可能会出现调度时间不准确等问题。而在中国,目前对linux进行实时化改造最常用的有两种办法:

1.1 对内核实行外部实时性扩展,前提是在原有linux上。

而这样做的目的是为了使linux成为一个性能更加稳定的操作系统,而且再加上linux自身具有高效的内核,能够支持各种硬件系统的良好网络性能进而会使其的功能更加强大;除此之外,linux的代码拥有开放的操作系统,这样就能拥有较强的模块,还能相应的增强linux的可移植性,而这样的最终目的就是为了更有利于linux进行实时化。而且也正是由于linux的这些优势才会在价格昂贵的专用实时操作系统中脱颖而出,而且在实际操作中,越来越多的人能够意识到linux應用到嵌入式情境中的好处。而前面提到的嵌入式实时系统我们可以通俗的理解为:是一个对外部的风吹草动能够在规定或者确定的时间内做出反应的系统,且实时响应性则是该系统最突出的优势。而且嵌入式系统一般都会采用中断技术来对外部实践进行响应,其中中断处理方式的合理与否会跟系统的实时性能直接挂钩。

1.2 要对linux内核进行实时性的改造,也就是对原有的linux内核进行相对的修改。

在此就不进行详细的介绍了。而接下来就详细阐述在这两种方法下,对linux原有中断处应做的改进。

2 linux原有中断处要做的改进

2.1 应对其进行中断模拟

要想让两个内核共享一个处理器,那么就应该以标准linux内核为前提,然后再加一个实时内核就能解决这个问题,那么随着内核的增加,也实现了单内核操作系统向双内核操作系统的转变。而之所以要采取这样的做法,是因为不仅可以使内核拥有优先级,还可以不费吹灰之力解决内核中断问题,可谓一举两得,而linux的原有内核,一般情况不会运用,只有在没有实时任务时,才会对linux原有的内核进行运用,而且linux实时化后的双内核结构,只要定时器到达指定的位置,内核就会响应。除此之外,大多数定时器的调度在不出意外的情况下是10毫秒,但由于嵌入式系统实时性的要求非常严格,所以普通的定时器不符合要求。因而改变这种状况,为了提高定时器的精度,可以尝试在嵌入式linux内核中引入两种定时器模式,即Periodic模式和Oneshot模式。所谓periodic模式就是对时钟的芯片能够进行简单的编程,而编程的目的则是为了让其能够适应较高的频率,而由于这种模式会极大的增加系统消耗,所以大多会用在周期性强的场合。而另一种则是Oneshot模式,不是周期性的工作,而工作过程就是可以使时钟芯片随时随地的发生中断。以上就是对中断模拟的简单描述。

2.2 对时钟机制的简单改造以及内核设计

在对时钟机制进行改造时,应该先设定定时器的初始值寄存器,而设定的依据不是任意而为的,则是要根据实时任务的执行时间。除此之外,也应该对抢占式的内核进行设计,当对内核的抢占性方面进行改造时,可以采用两种方法:一种是抢占点的方法,也就是对linux内核做内部实时性的改造,改造的一部分就是对时钟机制进行改造。所以当时钟发生中断时,工作人员不要慌张的乱找引起中断的地方,而是应该把其当作一次“休养生息”的时机,也就是当做对程序进行调度的时机。而上面提到的定时器,其主要的功能就是使时钟产生中断,而如果想让时钟具有高效的实时性,那么就可以从提高精度以及定时器的频率下手。而对内核进行抢占式设计,主要的目的就是让处于系统调用状态的用户抢占被刚唤醒的高优先级,且在这个处理模式中,假如出现了高优先级的任务,但并不会优先切换到高优先级的任务,而是需要等待,等被中断的任务被执行完成后,才会切换到高优先级任务。但是如果想立刻就切换到高优先级的任务,就可以设置一个统一的中断处理函数即dolRQ,而这个函数的主要任务则是负责把其前部进行中断,等把这个函数处理完成后,并没有结束,而是还要对部分软件进行后部的中断处理,这样才能做到万无一失。而linux主要采用softriq的中断机制来进行软件的中断处理。而据统计linux内核有32个sof2tirp,且每一个都会有一个函数。那么这样就会有32个,即应该对32个sof2tirp进行咨询。而linux主要任务是处理软件的中断,因此在执行时,不要盲目的就把中断的信息传给linux,而是要视情况而定,也就是要仔细查看内核中断的情况,再三斟酌后再决定是不是要将中断的信息传递给Linux,而在这个过程中,同样可以采用前后的方式来执行,这样就能够在无形中使得嵌入式Linux的实用性更加灵活。

3 简述嵌入式Linux的中断处理机制

linux的中断处理机制,需要把内核关闭,然后在对内核进行中断响应,直到结束中断的处理程序。假如在这个过程中,中断处理程序执行的时间非常长,那可想而知在这一段时间里,优先级再高的响应都不会得到响应,而且还极有可能会对系统的实时性能造成严重的影响。因此,在嵌入式Linux中,要对其进行一分为二,即分为tophalf和bottomhalf,那么就可以把延迟处理且有不怕中途被打断的程序归为bottomhalf,而其余的归于tophalf,这样通过分工合作可以更好地进行协调工作,更好地进行中断处理。

4 结束语

小巧、高速、可预测性等特点是嵌入式实施操作系统独有的优势,而正是因为嵌入式操作系统的这些特点才能在工作过程中精确的把控时间,进而减小误差。 而在以上的篇幅中,本人主要谈了嵌入式linux中断处理技术,并提出一些改进方法,而且随着科技日新月异的发展,我相信对Linux应用的范围会不断的扩大,且Linux嵌入式系统也会随着时代的变化而愈加成熟。

参考文献

[1]刘云心,张尧学.一个基于linux的嵌入式实时操作系统[J].计算机工程与应用,2012(07):64-66.

[2]李善平,刘文峰,王焕龙.linux与嵌入式系统[M].北京:清华大学出版社,2011.

作者单位

福建农林大学计算机与信息学院 福建省福州市 350000

猜你喜欢

处理技术中断
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
浅议大数据的产生与发展现状
简析常用园林生态水处理技术
浅析城市生活污水处理技术现状及发展趋势
Java千万级别数据处理与优化
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析
基于FPGA中断管理的研究及硬件化设计