[嵌入式linux] 请教下linux中关于线程2ms执行一次的方法

[复制链接]
 楼主| 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呢?
 楼主| Torda 发表于 2010-10-26 16:55 | 显示全部楼层
2# tiger84

尝试将100修改成1000,根本就运行不起来。
 楼主| Torda 发表于 2010-10-26 16:57 | 显示全部楼层
4# 20061002838

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

但是采集数据需要2ms一次,所以最好就是用linux,这样视频和算法的东西,就可以重用
chl00100 发表于 2010-10-26 20:46 | 显示全部楼层
主频多高?研究一下硬件平台的datasheet,看能不能在内核层写一个定时器中断程序;
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度........


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

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

加不了几个钱的.....
xwj 发表于 2010-10-26 23:01 | 显示全部楼层
LZ 先要学会去写Drive
goosen 发表于 2010-10-27 19:47 | 显示全部楼层
若非要用linux,则考虑下
rtlinux、 xenomai/rtai 等作过实时改造的版本,或许能满足要求。
yxwsz 发表于 2010-10-27 23:04 | 显示全部楼层
建议LZ去看下RTAI,将这个东西移植到你的平台下,应该可以满足要求的;
前提是你的CPU速度要能够满足latency test
 楼主| Torda 发表于 2010-11-8 17:11 | 显示全部楼层
7# chl00100

主频260M,应该还是比较高。用定时中断的方式应该是可以的。目前正在学习如何在内核中加入这个定时中断。
 楼主| Torda 发表于 2010-11-8 17:15 | 显示全部楼层
8# sinanjj

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

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

而刚好我们目前用的系统中,有一个260M的ARM9,也有ASIC用来处理视频。如果能够在linux下搞定这个控制的话,成本就非常有优势了
 楼主| Torda 发表于 2010-11-8 17:15 | 显示全部楼层
本帖最后由 Torda 于 2010-11-8 17:26 编辑

9# xwj

直接在drive层面搞定的话,是写个定时器中断么,还是啥?
sinanjj 发表于 2010-11-8 18:57 | 显示全部楼层
8# sinanjj  

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

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


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

如果明显小于260M, 那就是程序不够优化..............至于说程序优化, 那得知道你程序的大体构架.
有意思 发表于 2010-11-9 00:40 | 显示全部楼层
建议改方案,用个小51去处理这种ms级的事情
然后通过UART与Linux进行通讯传输数据进行处理
 楼主| Torda 发表于 2010-11-9 01:03 | 显示全部楼层
16# 有意思

采集的数据,需要进行运算的。然后运算的结果再输出给控制设备。如果用单片机做采集,运算做不了呀
yangbinge 发表于 2010-12-9 15:18 | 显示全部楼层
同意16楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

132

主题

484

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部