打印

**lz说湖南人好斗,

[复制链接]
楼主: wxj1952
手机看帖
扫描二维码
随时随地手机跟帖
141
myfaith| | 2007-12-3 19:58 | 只看该作者 回帖奖励 |倒序浏览

LZ只会唬人...

使用特权

评论回复
142
iC921| | 2007-12-3 21:09 | 只看该作者

人越多,楼越空

使用特权

评论回复
143
程序匠人| | 2007-12-3 21:34 | 只看该作者

刚把这帖推荐到首页,进来一看,有点失望

原来想补补OS的课,结果遇到lz大忽悠了。

这道题如果OS能做到,匠人也能裸奔做到,连c也不用,就用汇编(而且也许可以用最便宜的4位机芯片做到)。

使用特权

评论回复
144
程序匠人| | 2007-12-3 21:40 | 只看该作者

补充一个观点

os比裸奔高级,但是不代表用OS的人比裸奔的人高级;
c比asm高级,但是不代表用C的人比用ASM的人高级;
电子CAD比手工绘图高级,但是不代表用CAD的人比手工绘图的人高级;
傻瓜相机比非傻瓜相机高级,但是不代表用傻瓜相机的人比用非傻瓜相机的人摄影技术更高。

有时,情况可能正好相反。

不要把新技术和高技术当作炫耀的本钱。我们只是有幸站在了巨人的肩膀上而已。

(修改原因:漏字)

使用特权

评论回复
145
xwj| | 2007-12-3 21:46 | 只看该作者

呵呵,匠人姐姐好久没来了,咋一来就扔砖头呢?

使用特权

评论回复
146
程序匠人| | 2007-12-3 21:54 | 只看该作者

呵呵,强帖总是要留个名嘛

混个脸熟。

使用特权

评论回复
147
拾梦人| | 2007-12-3 22:03 | 只看该作者

应用级的例子不能提高国人地位

如题

如果我出一个军工的题目,比如:不限制使用的51CPU数量,给你一个信号源,你来做一个挑战极限采样速率、且稳定可靠的系统。这时候OS只会成为障碍,很简单,高频才能上OS,而高频又意味着硬件不可靠,在恶劣环境下,多核低频才是好的设计。而且这样的设计必须借助OS的理论才能实现,不光是一个片子内部的OS理论,还有集群理论,再好的单机OS都无能为力。

还是那句话,如果你甘心做一辈子低端应用,就拒绝裸奔吧。出题是没意义的。。。

使用特权

评论回复
148
hq_y| | 2007-12-3 22:04 | 只看该作者

匠人媚媚还需要混个脸熟吗?呵呵~~~~~~~~

os比裸奔高级,但是不代表用OS的人比裸奔的人高级;

同意;

c比asm高级,但是不代表用C的人比用ASM的人高级;

犹豫~~~~~~~

电子CAD比手工绘图高级,但是不代表用CAD的人比手工绘图的人高级;

不同意~~~~~~~`

傻瓜相机比非傻瓜相机高级,

好像现在都是数码相机了;
分成专业型数码相机和业余数码相机;


但是不代表用傻瓜相机的人比用非傻瓜相机的人摄影技术更高。

同意~~~~~~~`

使用特权

评论回复
149
wxj1952|  楼主 | 2007-12-3 22:05 | 只看该作者

哥们,才三天。

多留些日子才好。(多好的应聘机会....)题目不复杂,没有故意刁难似地来个一二十个任务让人裸奔/OS。

好像听谁说“此题无解,现实中根本不可能有2.8秒长的任务。出题不合理!”

我刚才想了一下:时间坐标是相对的,如果把题目中的时间坐标缩小100倍,也就是F05运行5ms,F07x运行7ms/或者不分割连续运行28ms,时钟变秒表,合理了?“有解”了?这样的程序解有什么不一样?
    马上又有人要站出来说我错了......


贴出答案后,不扔砖头,也把自己不同的答案贴出来,是真君子。非常赞同。
    不过应该贴在我前面,好处是:也许有猎头通过此帖寻人才呢。

   

使用特权

评论回复
150
dai_weis| | 2007-12-3 22:05 | 只看该作者

150楼了,留个纪念

好不容易弄到的,呵呵,这么高的楼找些干货不容易,别无他意,学习一下OS和裸奔的思想,尽管我还停留在裸奔上面,不过实在是MCU的内存太小客户太抠,放不下OS只能大冷的天奔跑了。

使用特权

评论回复
151
IceAge| | 2007-12-3 22:10 | 只看该作者

我还是没看懂题目的意思

这与 os 或者没有 os 有什么关系?当然,如果有 os, 这道为 os 量身定做的题很简单,不过裸奔也不难。我不想写程序了,给出一点思路:

假设只允许使用一个中断(两个这题就没有意义了),那么只要中断能重入即可。也就是说,只要保护好计时的 500 ms 任务的现场,就能满足要求。对 51,有一点小小的技巧,就是 reti 的处理, 调用一次可以恢复中断以重入。

Timer_Interrupt:
   acall _reset_timer        ; 开放中断, reset timer.    
   acall   Task_500ms ;调用 计时任务
   if (timeout(60)) goto _task_700ms
   ret

_task_700ms
   acall F071
   ....
   acall F075
   ret

_reset_timer:
   ...
   reti

这里裸奔的关键之处是让 F071 等变成了 背景 程序,定时器的作用仅仅是启动他们,之后相当于 定时中断 只运行 一个 500ms 的程序。如果认为 500 ms 太长,可以用状态机原理把它分成若干时间片。

不过,我个人认为:如果资源允许,os 显然会比 裸奔 更好,尽管初期需要花费相当的苦工,但未来会事半功倍。

使用特权

评论回复
152
平常人| | 2007-12-3 22:11 | 只看该作者

LZ把时间坐标缩小100倍,是不是准备给自己找台阶下?

?????

使用特权

评论回复
153
iC921| | 2007-12-3 22:19 | 只看该作者

估计匠人看到我的142楼更失望?

看上去,这个问题太让人关心了。可惜没那个水平,俺算是目不识丁呢……闪

使用特权

评论回复
154
aihe| | 2007-12-3 22:30 | 只看该作者

楼主意思就是,分片执行嘛

分片执行不用OS也能做,说实话什么是OS我也不清楚
只知道每个程序只能运行若干时间
看楼主的意思好像每个函数都是独占运行
如果不是独占运行的话,网上大多数大虾都能做
如果是独占运行,在运行函数1~4时,函数5不知道怎么运行
如果在运行1~4时,可以不运行5时,我会考虑这样
既然你运行2.8秒固定,我以后补偿可以吧
再说我拿个外接时钟芯片,一分钟报警一次也可以吧,不算两个MCU吧
其实,我觉得与OS相干不大
我是学不成者,希望各位不要见笑

使用特权

评论回复
155
wxj1952|  楼主 | 2007-12-3 22:59 | 只看该作者

看了144楼

农民周正龙用的什么照相机,让中国的高科技专家/顶尖级人才那么没面子。而且忽悠了全世界。

使用特权

评论回复
156
athlon64fx| | 2007-12-3 23:00 | 只看该作者

re:

无解就是无解,题本身都自相矛盾,还不承认。

1、用单CPU做一个精确的时钟。
2、以此时钟为基准,每秒钟运行一次一个500ms开销的任务,设其为F05()。

既然楼主把主帖改了,要改就改得完善一点嘛,一步到位,建议再改改, 好帖出答案。

使用特权

评论回复
157
zusen| | 2007-12-3 23:46 | 只看该作者

呵呵,不能被打断~~

就是说不能用中断,,,
敢问楼主,用到中断就算不上裸跑了?、
你本身规则已经超出来裸跑的定义了

就如OS里没有时钟节拍

使用特权

评论回复
158
mapleyang| | 2007-12-3 23:48 | 只看该作者

匠人是个mm?

咋可能呢?
为啥有人叫匠人姐姐,有人叫匠人mm的?

使用特权

评论回复
159
IceAge| | 2007-12-4 01:35 | 只看该作者

不能被打断? os 能做到的,裸奔绝对也能做到

os 的好处并不是体现在这样的地方,而是可以在搭建复杂的程序框架方面节省很多的精力。搂主的这个题目出的不好,不能很好的表达 os 的优势所在,不过,我想在一个论坛里,很难有一个题目能表达os 的优势。

不能被打断,也很简单,时钟任务夹在F071(),F072(),F073(),F074()之间既可。

int task_state = 0;
int timer = 60;

One_Second_Timer() 
{
  UpdateClock();
  switch (task_state) {
     case 0: 
         Task_500ms();
         if (--timer == 0) {
            timer = 60;
            task_state++;
         }
         break; 
              
     case 1: 
         F071(); task_state++; break;
     case 2: 
         F072(); task_state++; break;
     case 3: 
         F073(); task_state++; break;
     case 4: 
         F074(); task_state=0; break;
  }
}

使用特权

评论回复
160
IceAge| | 2007-12-4 01:39 | 只看该作者

timer = 60 应为 timer = 56

使用特权

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

本版积分规则