发新帖我要提问
123
返回列表
打印

有偿求一个国产51_OS

[复制链接]
楼主: 冷漠
手机看帖
扫描二维码
随时随地手机跟帖
41
zyok| | 2009-2-26 22:12 | 只看该作者 回帖奖励 |倒序浏览

路过

使用特权

评论回复
42
| | 2009-2-27 09:13 | 只看该作者

顶10000000000000000000000000000遍....

 highgear 发表于 2009-2-25 23:23 侃单片机 ←返回版面    

26楼: 兰州烧饼-- 鉴定完毕。 

一看1952烧饼们的所谓任务,就知道1952烧饼们狗P不懂。
一个结论:1952烧饼们根本没有做过什么实际的东西。如此简单的东西,如同那个crc 一样,被1952烧饼们当作不得了的技术。我相信,这里起码有一半以上的人,做过比这复杂若干倍的东西。

1952烧饼们无非玩弄一下小伎俩:你看,我的_task_ 2没有中断吧,什么?os还在跑,在中断?扯淡!这是美国的os,你们算什么!哪里有中断?没有么!即使有我还可以把中断完全关闭! 什么,关闭了数据采集怎么办?数据采集在跑啊,你没看见_task_ 1么?这是美国的os啊!美国牛啊....不用os怎么可能做出来啊,我1952牛啊!美国的os都懂啊!所有提问题的人都蠢啊!反正,你在5000ms中断了运行数据采集,我可以攻击你傻,你不中断不运行数据采集,我也可以攻击你蠢!我1952牛啊....... 
 

使用特权

评论回复
43
HWM| | 2009-2-27 09:18 | 只看该作者

我还没吃早饭,有烧饼吗?最好配点豆浆。

使用特权

评论回复
44
冷漠|  楼主 | 2009-2-27 21:39 | 只看该作者

回39楼 ayb_ice 。

我贴的那段演示程序只给您一人看的,发现也只有您一人看得懂。感谢。

假设2个直接相关任务A和B,也就是说A和B是共享互斥资源的2个任务,假定如果B先占有资源,——例如本项目A和B将共同需要的一个环形缓冲池资源,那么它设定信号量将资源上锁,禁止他人使用。这时即使A具有高优先权,并且中断ISR事件触发令A进入就绪态,即使是抢占式内核,将任务切换到A,A也无法使用B占有的资源,——因为B没有释放资源。结果即使抢占式内核,这种抢占切换几乎没有效率。

还有个问题是公认的,就是如果正好在任务B还剩时间t0即将完成时,发生抢占切换,如果抢占时间大于t0,还不如不抢占。因为系统抢占切换要比任务自动放弃切换的时间大得多。
一系列问题,OS都管理了:

1、天花板优先权协议,B(或者任何直接相关任务)一旦占用资源,系统就将它的优先权自动抬高到最高,这样即使A事件触发就绪,系统也不会启动切换,直到B使用完资源进行了开锁释放。其优先权回到初始状态。

2、复杂了半天,和协作式内核调度差不多了。

3、本项目实际是2个生产者-消费者模型,一个是采样-处理模型,一个是处理-存盘模型。2个模型使用2个环形缓冲池。

4、A任务利用节拍中断ISR中的钩子函数,10ms运行一次,节拍是系统心跳,不可能被关断的。又是不可屏蔽最高优先级,所以A即使在任务C独立占有CPU资源40ms时,A任务仍不会丢失执行次数,——系统节拍不会被任何任务打断。

5、实际只有2个用户任务。B任务将在C任务运行期间丢失4次执行次数。这里加一个计数型信号量就行了。一旦C任务释放CPU资源,计数型信号量将进行追补。本来按10ms周期处理的,追补时连续处理,直到赶上丢失的4个节拍。这是环形缓冲池的作用保证的,这里具体应该设计为10 (组采样数据缓存)。

使用特权

评论回复
45
x_tin| | 2009-2-27 22:22 | 只看该作者

"任务C独立占有CPU资源40ms时" 还不是被中断节拍打断了。.....

使用特权

评论回复
46
ayb_ice| | 2009-2-27 22:38 | 只看该作者

实际上合作式的RTOS好处多多

很多的复杂问题都可以迎刃而解,因为不会有竞争,也就不会有冲突,每个任务都实时占有CPU,(当然还是要和中断共享),合作式的RTOS唯一的不足就是实时性稍差,但嵌入式系统任务是固定的,也是可知的,可以合理的分配中断或对合作式RTOS稍加改进而达到要求,其实一个系统中一般只有一至二个任务具有较高的实时要求,这个是很容易解决的,从大部分MCU都不具备中断嵌套就可以看到这一点。任何RTOS的最快响应都比不上直接用最高优先级的中断响应快。。。

使用特权

评论回复
47
highgear| | 2009-2-28 01:23 | 只看该作者

搬个板凳继续看冷嬷表演。

搬个板凳继续看冷嬷表演。

那么多空话和废话,1952们的乱咬,从书中找一堆不求甚解的"术语"都无法掩盖你们gouP不懂的事实。你的那段“只有一人看得懂“的程序,已经告诉大家太多的信息,群众的眼光是雪亮的,毕竟都是搞技术的。可惜啊,你们没有做过真正的mcu程序,水平太低,看不明白hotpower, 所长,ayb_ice等人对于mcu里中断与os的论断以及其中的现实意义。

"裸奔行吗?即使允许中断也不行。" 
" ayb_ice 的意思是此项目要求无法实现?
那么我下一帖把示意程序贴上来。(好奇,看看别人为什么行?)" 唉,还是美国的月亮圆啊!

“现在买了美国的51_OS,它很容易就实现了。它是怎么做的?我们为什么不行?学长当年也是用的美国人的OS完成的“  我们? 哈哈。

使用特权

评论回复
48
常来21ic| | 2009-2-28 09:25 | 只看该作者

一日一顶

看热闹,偶最想知道  “有偿”  的份量是多少

使用特权

评论回复
49
wswh2o| | 2009-2-28 10:36 | 只看该作者

呵呵

真是对牛弹琴呀,郁闷吧

使用特权

评论回复
50
xsl.| | 2009-2-28 16:30 | 只看该作者

不好意思,我看到了你的程序,呵呵.

"只给您一人看的"

--不好意思,我看到了你的程序,呵呵.

"...这时即使A具有高优先权,并且中断"ISR事件触发令A进入就绪态"....这种抢占切换几乎没有效率"

--在OS中,ISR不会在这种情况下切换到A,因为A等待的"资源"未准备好.(A还是处于挂起状态!).  

一般OS都会这样处理,B的优先级别将得到提升,使B尽快执行完毕,释放A所等待的资源. ----这是对"优先级翻转"问题的处理方法!

LZ可以找一下在很多OS理论课本中都讨论到的"进程间优先级翻转问题".


特别对于RTOS:
在实时系统中,A属于最高优先级实时任务,B属于次优先级.
RTOS有一套算法,保证AB共享资源(资源mm)时,不会发生"B比A优先执行的情况" .因为在B请求资源mm时,系统优先考虑最高优先级别的任务(任务A).

类似于这样处理:

1, B向OS请求内存控制权时,(用mm表示)

task_B()
{
 ...
 sys_Get_mm(2ms); 请求为期2毫秒时间的控制权;
 ...

}

2, RTOS在接到sys_Get_mm(T)系统请求时:

sys_Get_mm(T)
{
    ...
    if(A任务在2ms内不会再次执行)
          将mm控制权交给B, 并恢复B执行;
    else
           将B任务挂起,并将B的请求信息置于资源mm的等待队列中(比如注明B需要与mm约会2ms); 
    ...
}

3, 在系统节拍中,RTOS都会去维护资源mm的等待队列,一旦在mm有足够的时间,就将B任务置于就绪状态. 所谓足够的时间,就是A在2ms内不会跟mm约会!

4, 正确理解OS(或RTOS),才能更好地利用OS来简化程序的设计.

比如:
   B在使用系统请求sys_Get_mm(T)获得控制权后,我们(程序员)必须保证B能在T时间能释放资源mm. 否则,再好的OS,再好的mm,也被你搞得乱套了.



鉴于篇幅问题,这里不多介绍,还是自己再研究一下书本吧.

比如下面这两本:
一本是 汤老师<操作系统原理>,一本是 贝贝博士的<ucOS-ii>,随便一版.

使用特权

评论回复
51
ayb_ice| | 2009-2-28 21:18 | 只看该作者

优先级反转

一般是在争抢公共资源的时候才会发生.

使用特权

评论回复
52
yxwsz| | 2009-2-28 21:58 | 只看该作者

浪费

浪费精力、浪费时间、浪费资源、浪费眼球。。。。

使用特权

评论回复
53
冷漠|  楼主 | 2009-3-1 18:35 | 只看该作者

修改一下,明显的错误。

5、实际只有2个用户任务。B任务将在C任务运行期间丢失4次执行次数。这里加一个计数型信号量就行了。一旦C任务释放CPU资源,计数型信号量将进行追补。本来按10ms周期处理的,追补时连续处理,直到赶上丢失的4个节拍。这是环形缓冲池的作用保证的,这里具体应该设计为10 (组采样数据缓存)。
**************************************************************

5、.......本来应按10ms周期处理的,追补时连续处理,直到赶上与生产者任务A同步。........。

使用特权

评论回复
54
zizzfish| | 2009-3-2 10:35 | 只看该作者

刚开始看LZ的说明,好像很难。

但是看到LZ贴出的程序发现LZ对OS跟本不了解。

5、.......本来应按10ms周期处理的,追补时连续处理,直到赶上与生产者任务A同步。........。

在OS里,任务之间的同步是靠消息的。想用时序是不可能的。

使用特权

评论回复
55
bob.xue| | 2009-3-2 16:45 | 只看该作者

"赶上与生产者任务A同步"

奔~~~~~~~~~~~~~~~~~~~~~~~~~~! 向前奔~~~~~~~~~~~!

使用特权

评论回复
56
冷漠|  楼主 | 2009-3-3 10:41 | 只看该作者

原来是这样。恍然大悟,获益匪浅。

感谢诸位指教。

冷漠大概只能看得懂 ayb_ice ,因为他用实验程序说话。


23楼说的极有道理,能否写出实际程序?



“如果没有实验,所有理论说法都是对的(错的?)。”

都认为自己对,冷漠应该听谁的?



使用特权

评论回复
57
mohanwei| | 2009-3-3 13:33 | 只看该作者

建议楼主搭个小实验板或者买个“开发板”

把自己所想的功能转换成代码,动手试一试,切身体会一下系统的运转……
……
最后推敲实际的需要什么样的功能

技术开发都必须有一个螺旋式的上升过程的(有时候没有,是因为你或者高手们之前已经旋过N圈了……)

使用特权

评论回复
58
冷漠|  楼主 | 2009-3-3 14:26 | 只看该作者

有幸结识楼上师傅。

真是相识恨晚。学51是要从亲自动手实验才能学好是吧。
那么从实验板做起,在没有师傅指导的条件下自学,大概需要多长时间才能学到不用OS就能随心所以设计这个项目的程度?
我自认为我有这个学习毅力。只是公司里搞硬件人的太多了。

看来我是走错路了,先学会了用OS,裸奔反而不灵。否则的话,这个项目不用买那么贵的OS,能省一大笔开发费,我就能获得至少1/5的提成。(没多少)

结果他们设计了一个很大的板子,我直接在OS平台下编制任务,直到交货了,我都不知道8051怎么工作的。

我还以为嵌入式OS就像桌面OS一样,用户只管简单操作,OS里面如何管理都不用关心呢。

唉,反正稀里糊涂也设计交货了。还得了一笔奖金。

管它呢,OS本来就是让俺这样不懂硬件的人用的,下回还这么混呗。在乎那点提成呢,反正是公司的钱,我也得不着,学会硬件也涨不了工资。老板看我会用OS反而给我加薪。公司里懂硬件的一堆,工资却少得可怜,真是物以稀为贵。

其实忽悠老板呢,本来OS就不会难用。谁知道他们学硬件的怎么那么难入门。

看楼上既懂硬件又懂软件又懂OS。真是一个顶我们公司3个!要到我们公司来,我们可能都要被炒鱿鱼。

下次还请多多指教,当然要付劳务费的。

使用特权

评论回复
59
常来21ic| | 2009-3-3 15:46 | 只看该作者

结贴!呵呵 没有太多口水,祝楼主好运

使用特权

评论回复
60
bob.xue| | 2009-3-3 18:46 | 只看该作者

结论: LZ==1952; stop;

使用特权

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

本版积分规则