NJ8888 发表于 2017-9-20 20:39:56

ARM linux对于gpio中断响应能保证多少?

我和同事合作,他坚持认为他能保证50us之内响应我给他的中断,对此我持怀疑态度,我虽然看到能响应,但我不确认每次都能在这个时间内响应。假设除了系统自己调用开销外,还有些系统初始化配置的外设外,没有其他应用程序。我在想,至少他开了网络功能吧,如果有网络包来,肯定会有处理开销。

NJ8888 发表于 2017-9-20 21:00:25

因为与具体cpu频率相关,我只想问假设cpu相当快,比如800MHz时,外设比如有网络,可能不定时有网络包(不一定是给本ARM的),这样CPU响应GPIO被延误的时间可不可能延误几个毫秒

yerrmin 发表于 2017-9-20 21:06:15

他能保证让他做呗,别人也没法确定吧
网络中断的优先级未必比GPIO中断高

takashiki 发表于 2017-9-20 21:26:24

rt-linux是Linux的一个分支,这货是硬实时系统,所以lz的同事的说法我认为是可能的。

NJ8888 发表于 2017-9-20 21:28:36

takashiki 发表于 2017-9-20 21:26
rt-linux是Linux的一个分支,这货是硬实时系统,所以lz的同事的说法我认为是可能的。 ...

普通linux

zxq6 发表于 2017-9-20 21:35:06

如果是驱动级响应,我觉得是有可能的,如果是应用级响应,我觉得可能不稳定。当时,是我瞎猜的,别作为参考。

浮华一生 发表于 2017-9-20 22:04:44

有一种叫"中断后半部"的东西中断来了   不一定要费好多时间 或者将时间完全花费在中断里面中断处理最最最重要的东西, 比如设置一个标志之类的, 后面利用内核的调度来完成不那么重要的事情.这种调度的优先级肯定又比你普通的线程高

NJ8888 发表于 2017-9-20 22:14:27

浮华一生 发表于 2017-9-20 22:04
有一种叫"中断后半部"的东西中断来了   不一定要费好多时间 或者将时间完全花费在中断里面中断处理最最 ...

你的解释不适合我,我关心的是我的中断多少时间能被响应。我的系统希望最短间隔2ms的中断能响应,我认为linux保证不了,但同事(写linux的)和头头说能行,也有同事同意我看法认为做不到,不能保证中断被响应。因为本来一些事物有FPGA做就行,领导非要是物理层和协议层分开,FPGA做物理层的事。我的看法是FPGA把部分时间严格的协议处理掉。

jeffwei 发表于 2017-9-20 22:27:01

如果不是RT-LINUX,一定不可靠的。参考TI AM335X的SDK做吧,用RT-LINUX。水平高的可以试试RT-THREAD+Linux。

浮华一生 发表于 2017-9-20 22:37:54

NJ8888 发表于 2017-9-20 22:14
你的解释不适合我,我关心的是我的中断多少时间能被响应。我的系统希望最短间隔2ms的中断能响应,我认为l ...

2ms 我觉得应该可以 如果是硬件中断的话. 具体内核的我不懂, 但至少中断会引起调度的吧   又不是抢占式或者基于优先级的 感觉应该可以   不放心就用RT-LINUX

浮华一生 发表于 2017-9-20 22:39:20

NJ8888 发表于 2017-9-20 22:14
你的解释不适合我,我关心的是我的中断多少时间能被响应。我的系统希望最短间隔2ms的中断能响应,我认为l ...

而且从成本与易操作性而言 我也偏向于你的领导协议层的解析通用处理器做起来比FPGA更顺手

wye11083 发表于 2017-9-20 22:43:31

NJ8888 发表于 2017-9-20 22:14
你的解释不适合我,我关心的是我的中断多少时间能被响应。我的系统希望最短间隔2ms的中断能响应,我认为l ...

fpga做mac的话就不是纯硬了,一般必须要上soc了。你头头的理念是很正确的,硬件就该干硬件要干的事,不能到软件那瞎掺和。你想啊,你在硬件做了一部分mac的工作,然后软mac要调你硬件,你说你是做还是不做?显然逻辑上有毛病啊。再说万一软mac要发一个紧急的命令,结果phy被你硬mac占了,后果就不说了。。

至于中断响应,如果就是写的中断处理函数(硬件直接调用,不走系统),那么可以达到us级别。如果是os,一般来说这类没有mmu的soc应该是系统中断之后,挨个调用挂载的中断处理函数,这也是us级。但是至于用户回调函数就一般不是系统直接调了,而是跑完一堆东西之后才可能会创建的一个线程。这就不确定了。比如你点一下鼠标,系统可能要过一会儿才响应。

今天下午我跟一个同事讲字节地址映射和字地址映射讲了一个小时,口干舌燥,讲完之后又跟他讲phy和mac的区别,又讲了半个小时。还好这人要离职了,唉。一说三不知,还是做硬件的,连掩码,寻址,地址映射之类的都不懂,连phy和mac是什么都不知道。他是boss招进来的,要是我招,一问三不知,赶快给我消失吧,连培养的条件都达不到。

redworlf007 发表于 2017-9-21 10:40:52

wye11083 发表于 2017-9-20 22:43
fpga做mac的话就不是纯硬了,一般必须要上soc了。你头头的理念是很正确的,硬件就该干硬件要干的事,不能 ...

做硬件的不懂这些很正常呀,设计原理图、PCB、搞定辐射,剩下的不就是软件的工作么。

wye11083 发表于 2017-9-21 10:52:16

redworlf007 发表于 2017-9-21 10:40
做硬件的不懂这些很正常呀,设计原理图、PCB、搞定辐射,剩下的不就是软件的工作么。 ...

做fpga的不懂这些很正常?做单片机的不懂这些很正常?你转行别搞硬件了

redworlf007 发表于 2017-9-21 12:19:18

wye11083 发表于 2017-9-21 10:52
做fpga的不懂这些很正常?做单片机的不懂这些很正常?你转行别搞硬件了

FPGA不知道,做单片机、ARM控制板不懂很正常呀,公司搞平板的硬件工程师,对你说的那些完全不懂,硬件搞好,剩下就是软件的事情了,分工很明确:硬件工程师、驱动工程师、软件工程师。

wye11083 发表于 2017-9-21 12:35:09

redworlf007 发表于 2017-9-21 12:19
FPGA不知道,做单片机、ARM控制板不懂很正常呀,公司搞平板的硬件工程师,对你说的那些完全不懂,硬件搞 ...

你说的那是纯硬,也就是画图布线。fpga已经属于混合范畴了,不单单是画个板子。就算单片机,难不成你从来没有用过字节,字,整型?以及之间的各种互转?最起码的偏移量计算总得会吧。

讨论这个话题意义不大。做fpga的最基本的要求就是把各种数据、地址的计算给玩到烂,要不然你还没玩好地址,地址已经把你玩坏了。说到这,你倒是给我提个醒,我有必要出一些基础知识到笔试中,要是连地址计算都不会,根本没有面试的必要了。

norman33 发表于 2017-9-21 12:43:51

二、节拍率
节拍率其实就是系统定时器产生中断的频率,所谓频率即指中断每秒钟产生多少次,即Hz(赫兹)。不同的体系结构的系统而言,节拍率不一定相同。
节拍率(Hz)的值可以在文件include/asm-x86/param.h中看到,定义如下。
#defineHz 1000

默认linux节拍率是 1000hz 也就是linux系统是以1ms的节拍来干活的 你到是去问问你的领导 他还觉得上层应用还能响应过来么?

redroof 发表于 2017-9-21 12:49:15

如何定义"响应"? 如果是简单的驱动另外一个io口来应答,肯定可以,你在硬中断里干就行。如果要在任务级做什么动作,那肯定不保证

redroof 发表于 2017-9-21 12:51:45

norman33 发表于 2017-9-21 12:43
二、节拍率
节拍率其实就是系统定时器产生中断的频率,所谓频率即指中断每秒钟产生多少次,即Hz(赫兹)。 ...

在硬中断函数里干事不受这个节拍限制,任何时候都能响应。只是很受限而己,你不能被io阻塞

panjun10 发表于 2017-9-21 12:52:26

m$都能保证1ms linux无压力

redroof 发表于 2017-9-21 13:14:21

panjun10 发表于 2017-9-21 12:52
m$都能保证1ms linux无压力

没有人给你保证。
你不知道跟你在一个系统里面运行的其它程序的行为。
大概率满足1ms内是很容易的,但不可能打包票

redroof 发表于 2017-9-21 13:22:49

panjun10 发表于 2017-9-21 12:52
m$都能保证1ms linux无压力

不信你装个百度全家桶,再装360全家桶,没事了杀杀毒,你看看你的程序响应速度能不能达到1ms,我估计10ms都不能保证

ysyt_3 发表于 2017-9-21 14:15:02

确实,就在驱动层直接回应,然后把这事件告诉上层应该没问题,如果上面应用层处理,确实危险

大傻师 发表于 2017-9-21 18:14:05

弱弱的问一下,把中断优先级设高,然后在ISR里面作处理这样不行么?

redroof 发表于 2017-9-21 18:34:44

大傻师 发表于 2017-9-21 18:14
弱弱的问一下,把中断优先级设高,然后在ISR里面作处理这样不行么?

当然可以。
问题是中断里面有很多事不能干。
比如中断里面不能调用任何IO函数(比如你读文件,会隐含的把自身进程挂起,等IO设备完成读写后再唤醒你的进程。但是中断不能被挂起),不能造成任何内存缺页,等等

jcrorxp 发表于 2017-9-21 18:58:41

redroof 发表于 2017-9-21 18:34
当然可以。
问题是中断里面有很多事不能干。
比如中断里面不能调用任何IO函数(比如你读文件,会隐含的把 ...

哈哈 鼠标就是速度很快的响应嘛~但是卡机的时候鼠标都不见了哈哈.

落叶知秋 发表于 2017-9-21 20:55:40

普通Linux系统内核是抢占式的,用户态不能保证实时性,要求实时性一般打实时补丁或是修改内核

伍师傅32 发表于 2017-9-21 22:20:14

只要是都在内核里面实现,合理编写驱动代码,2ms 肯定没问题的。内核里面中断发生后都是上半段挂个标志,然后就放开了。网络的包再多,也不会占用中断响应的时间,况且把外部IO的中断优先级配高一些就更加没问题了

redroof 发表于 2017-9-22 10:06:54

伍师傅32 发表于 2017-9-21 22:20
只要是都在内核里面实现,合理编写驱动代码,2ms 肯定没问题的。内核里面中断发生后都是上半段挂个标志,然 ...

所有驱动并不都是你写的,如果有个笨蛋驱动在哪里死等延时,你没有任何事情能做。
linux理论上你可以自己检查所有驱动的代码,看看有没有哪个驱动的某个内部操作会耗时超过2ms。但我不认为在事实上你能做到这一点。
99%以上概率做到2ms应该很容易。但如果要100%保证,你还是老老实实用专门的实时内核吧~

fengyunyu 发表于 2017-9-22 10:21:06

100%很难。不过是不是一定限定在2ms,估计也没那么严格。

abutter 发表于 2017-9-22 14:41:22

有其他 IO 吗?举例存储配置文件的时候。

hexenzhou 发表于 2017-9-22 21:21:28

最多可以做到us级别相应中断,在Linux的驱动的上半部处理,我是做驱动的!

star_tale 发表于 2017-9-23 11:40:29

普通linux没保障的,可以测测,有时会延时个几ms
要想保证中断响应时间,实时操作系统啊
除非自己能搞
页: [1]
查看完整版本: ARM linux对于gpio中断响应能保证多少?