搜索
bottom↓
回复: 32

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

[复制链接]

出0入0汤圆

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2017-9-20 21:00:25 | 显示全部楼层
因为与具体cpu频率相关,我只想问假设cpu相当快,比如800MHz时,外设比如有网络,可能不定时有网络包(不一定是给本ARM的),这样CPU响应GPIO被延误的时间可不可能延误几个毫秒

出0入0汤圆

发表于 2017-9-20 21:06:15 | 显示全部楼层
他能保证让他做呗,别人也没法确定吧
网络中断的优先级未必比GPIO中断高

出0入93汤圆

发表于 2017-9-20 21:26:24 来自手机 | 显示全部楼层
rt-linux是Linux的一个分支,这货是硬实时系统,所以lz的同事的说法我认为是可能的。

出0入0汤圆

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

普通linux

出0入22汤圆

发表于 2017-9-20 21:35:06 来自手机 | 显示全部楼层
如果是驱动级响应,我觉得是有可能的,如果是应用级响应,我觉得可能不稳定。当时,是我瞎猜的,别作为参考。

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2017-9-20 22:27:01 | 显示全部楼层
如果不是RT-LINUX,一定不可靠的。参考TI AM335X的SDK做吧,用RT-LINUX。水平高的可以试试RT-THREAD+Linux。

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入442汤圆

发表于 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招进来的,要是我招,一问三不知,赶快给我消失吧,连培养的条件都达不到。

出0入36汤圆

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

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

出0入442汤圆

发表于 2017-9-21 10:52:16 来自手机 | 显示全部楼层
redworlf007 发表于 2017-9-21 10:40
做硬件的不懂这些很正常呀,设计原理图、PCB、搞定辐射,剩下的不就是软件的工作么。 ...

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

出0入36汤圆

发表于 2017-9-21 12:19:18 | 显示全部楼层
wye11083 发表于 2017-9-21 10:52
做fpga的不懂这些很正常?做单片机的不懂这些很正常?你转行别搞硬件了

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

出0入442汤圆

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

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

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

出0入36汤圆

发表于 2017-9-21 12:43:51 | 显示全部楼层
二、节拍率
节拍率其实就是系统定时器产生中断的频率,所谓频率即指中断每秒钟产生多少次,即Hz(赫兹)。不同的体系结构的系统而言,节拍率不一定相同。
节拍率(Hz)的值可以在文件include/asm-x86/param.h中看到,定义如下。
#define  Hz 1000

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

出300入477汤圆

发表于 2017-9-21 12:49:15 来自手机 | 显示全部楼层
如何定义"响应"? 如果是简单的驱动另外一个io口来应答,肯定可以,你在硬中断里干就行。如果要在任务级做什么动作,那肯定不保证

出300入477汤圆

发表于 2017-9-21 12:51:45 来自手机 | 显示全部楼层
norman33 发表于 2017-9-21 12:43
二、节拍率
节拍率其实就是系统定时器产生中断的频率,所谓频率即指中断每秒钟产生多少次,即Hz(赫兹)。 ...

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

出0入0汤圆

发表于 2017-9-21 12:52:26 来自手机 | 显示全部楼层
m$都能保证1ms linux无压力

出300入477汤圆

发表于 2017-9-21 13:14:21 来自手机 | 显示全部楼层
panjun10 发表于 2017-9-21 12:52
m$都能保证1ms linux无压力

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

出300入477汤圆

发表于 2017-9-21 13:22:49 来自手机 | 显示全部楼层
panjun10 发表于 2017-9-21 12:52
m$都能保证1ms linux无压力

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

出0入0汤圆

发表于 2017-9-21 14:15:02 | 显示全部楼层
确实,就在驱动层直接回应,然后把这事件告诉上层应该没问题,如果上面应用层处理,确实危险

出0入0汤圆

发表于 2017-9-21 18:14:05 | 显示全部楼层
弱弱的问一下,把中断优先级设高,然后在ISR里面作处理这样不行么?

出300入477汤圆

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

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

出0入0汤圆

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

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

出40入42汤圆

发表于 2017-9-21 20:55:40 | 显示全部楼层
普通Linux系统内核是抢占式的,用户态不能保证实时性,要求实时性一般打实时补丁或是修改内核

出0入0汤圆

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

出300入477汤圆

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

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

出100入101汤圆

发表于 2017-9-22 10:21:06 | 显示全部楼层
100%很难。不过是不是一定限定在2ms,估计也没那么严格。

出0入12汤圆

发表于 2017-9-22 14:41:22 | 显示全部楼层
有其他 IO 吗?举例存储配置文件的时候。

出0入0汤圆

发表于 2017-9-22 21:21:28 来自手机 | 显示全部楼层
最多可以做到us级别相应中断,在Linux的驱动的上半部处理,我是做驱动的!

出0入0汤圆

发表于 2017-9-23 11:40:29 | 显示全部楼层
普通linux没保障的,可以测测,有时会延时个几ms
要想保证中断响应时间,实时操作系统啊
除非自己能搞
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 06:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表