打印
[嵌入式linux]

请教下linux中关于线程2ms执行一次的方法

[复制链接]
3053|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Torda|  楼主 | 2010-10-26 13:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用在一个控制系统中,要求至少是2ms执行一次。用目前的配置好像是20ms一个tick。将参数修改成大约1ms一个tick,好像就无法运行。

高手指点一下,该如何处理。

相关帖子

沙发
tiger84| | 2010-10-26 14:48 | 只看该作者
通用版本的Linux,arm一般选100HZ,也就是10ms,这个是有理由的。比如选1000HZ,速度貌似快了,但是系统方面中断就过于频繁了,开销都花在上面了。
个人认为,要想达到2ms,就不要使用通用Linux版本了。

使用特权

评论回复
板凳
sinanjj| | 2010-10-26 14:53 | 只看该作者
将参数修改成大约1ms一个tick,好像就无法运行
-------------明显就是承受不住了呗

使用特权

评论回复
地板
20061002838| | 2010-10-26 15:21 | 只看该作者
既然是控制系统,为什么要用linux呢?

使用特权

评论回复
5
Torda|  楼主 | 2010-10-26 16:55 | 只看该作者
2# tiger84

尝试将100修改成1000,根本就运行不起来。

使用特权

评论回复
6
Torda|  楼主 | 2010-10-26 16:57 | 只看该作者
4# 20061002838

用linux是希望用其中一些资源,这个控制系统比较复杂,还包括视频的东西,以及非常复杂的滤波运算。这些东西都是linux下的。

但是采集数据需要2ms一次,所以最好就是用linux,这样视频和算法的东西,就可以重用

使用特权

评论回复
7
chl00100| | 2010-10-26 20:46 | 只看该作者
主频多高?研究一下硬件平台的datasheet,看能不能在内核层写一个定时器中断程序;

使用特权

评论回复
8
sinanjj| | 2010-10-26 22:48 | 只看该作者
本帖最后由 sinanjj 于 2010-10-26 22:50 编辑
4# 20061002838  

用linux是希望用其中一些资源,这个控制系统比较复杂,还包括视频的东西,以及非常复杂的滤波运算。这些东西都是linux下的。

但是采集数据需要2ms一次,所以最好就是用linux,这样视频和算法的 ...
Torda 发表于 2010-10-26 16:57



我狂晕365度........


这明显应该是硬件分开做个缓存啊.......

设计硬件的时候应该考虑到的. 如果用的现成的板子, 也应改再括一块硬件采集缓存通信.

加不了几个钱的.....

使用特权

评论回复
9
xwj| | 2010-10-26 23:01 | 只看该作者
LZ 先要学会去写Drive

使用特权

评论回复
10
goosen| | 2010-10-27 19:47 | 只看该作者
若非要用linux,则考虑下
rtlinux、 xenomai/rtai 等作过实时改造的版本,或许能满足要求。

使用特权

评论回复
11
yxwsz| | 2010-10-27 23:04 | 只看该作者
建议LZ去看下RTAI,将这个东西移植到你的平台下,应该可以满足要求的;
前提是你的CPU速度要能够满足latency test

使用特权

评论回复
12
Torda|  楼主 | 2010-11-8 17:11 | 只看该作者
7# chl00100

主频260M,应该还是比较高。用定时中断的方式应该是可以的。目前正在学习如何在内核中加入这个定时中断。

使用特权

评论回复
13
Torda|  楼主 | 2010-11-8 17:15 | 只看该作者
8# sinanjj

需要2ms执行一次的程序中,需要做的事情是:采集外部数据,然后滤波,再控制。

由于滤波算法比较复杂,用单片机估计是搞不定的。如果分开做成2个系统的话,就相当于是:控制部分用一个CPU(估计要150MPIS以上)系统,视频部分用一个CPU系统,成本不是增加一点两点了。

而刚好我们目前用的系统中,有一个260M的ARM9,也有ASIC用来处理视频。如果能够在linux下搞定这个控制的话,成本就非常有优势了

使用特权

评论回复
14
Torda|  楼主 | 2010-11-8 17:15 | 只看该作者
本帖最后由 Torda 于 2010-11-8 17:26 编辑

9# xwj

直接在drive层面搞定的话,是写个定时器中断么,还是啥?

使用特权

评论回复
15
sinanjj| | 2010-11-8 18:57 | 只看该作者
8# sinanjj  

需要2ms执行一次的程序中,需要做的事情是:采集外部数据,然后滤波,再控制。

由于滤波算法比较复杂,用单片机估计是搞不定的。如果分开做成2个系统的话,就相当于是:控制部分用一个CPU(估计要15 ...
Torda 发表于 2010-11-8 17:15


"外部数据,然后滤波,再控制"这些如果做到2ms需要多快的速度?

如果明显小于260M, 那就是程序不够优化..............至于说程序优化, 那得知道你程序的大体构架.

使用特权

评论回复
16
有意思| | 2010-11-9 00:40 | 只看该作者
建议改方案,用个小51去处理这种ms级的事情
然后通过UART与Linux进行通讯传输数据进行处理

使用特权

评论回复
17
Torda|  楼主 | 2010-11-9 01:03 | 只看该作者
16# 有意思

采集的数据,需要进行运算的。然后运算的结果再输出给控制设备。如果用单片机做采集,运算做不了呀

使用特权

评论回复
18
yangbinge| | 2010-12-9 15:18 | 只看该作者
同意16楼

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业的方案开发: 、iphone智能配件 、串口WIFI模块 、3G DTU 、串口MP3模块、录音模块 、视频相关(图像拼接、人数、车牌、疲劳驾驶识别)

132

主题

484

帖子

1

粉丝