打印

裸奔和os其实没啥可争的

[复制链接]
楼主: wangkj
手机看帖
扫描二维码
随时随地手机跟帖
61
hotpower| | 2007-12-8 13:26 | 只看该作者 回帖奖励 |倒序浏览

是呀~~~扶贫也是需要代价的~~~回调应该比切换更裸些~~~

而且回调"穿"和"脱"都更方便些~~~

使用特权

评论回复
62
gooog| | 2007-12-8 23:08 | 只看该作者

还是比较怀疑所长

在一年内写出200w行程序。

一年的工作时间算300天的话,一天要写6000多行程序,什么天才也不行啊。

使用特权

评论回复
63
hotpower| | 2007-12-8 23:19 | 只看该作者

楼上肯定是搞统计学的~~~

使用特权

评论回复
64
农民讲习所| | 2007-12-9 00:02 | 只看该作者

确切统计:40W

使用特权

评论回复
65
and| | 2007-12-10 09:41 | 只看该作者

40万行都是手写的吗?用了多少时间?

..

使用特权

评论回复
66
农民讲习所| | 2007-12-10 09:50 | 只看该作者

手写的

以前有很多类似设计,只是移植到2410上,另外还设计了一个PC资源管理程序,这个花了三个月。前后一年。

使用特权

评论回复
67
jack.king| | 2007-12-13 14:57 | 只看该作者

所长:你是我的偶像!

呵呵.我是菜鸟!
   但是二姨里面很多高手都是我的偶像.我现在也不知道什么时候开始用用OS
一直都在裸奔.
    近来的论坛把我已经搞晕了.

使用特权

评论回复
68
infree| | 2007-12-13 17:06 | 只看该作者

最近这个话题讨论来讨论去,感觉是越来越乱呵

个人的感觉是初学者,先学“裸奔”,对MCU编程了解的比较深入了再上OS。
对于先学习下,想找份好工作的人,建议两个方式都要会,并且都要精通才行,尤其是上了OS很容易迷惑人,一些底层的东西被封装起来,如果拿来别人移植好的平台就用,可能许多东西就不会考虑到,最经典的就是听我同学说过他的一个同事做数据库编程,居然认为执行数据库操作是0时间。

使用特权

评论回复
69
tjsheep| | 2007-12-13 22:32 | 只看该作者

其实os只是把一部分合适的程序结构封装起来,

裸奔的背后,其实就是一个小巧的,未封装的,专用的os,如果想把MCU设计标准库化,工具化,最后提供给客户的可能是个lib,但是如果加上一定的调度思想,其实也就是提供了一个os,各位高手没有必要急着和os划清界线。至于高手提到的谁冒泡就敲谁,本质上也是一个callback的思想,就是不要把自己写的程序当作主线,而是把系统的需求当作主线。这样无论怎么划分程序结构模块都不会觉得支领破碎了。总之,优美的程序背后,一定是有一个优秀的编程思想。理论化的编程思想就是os,而经验化的编程思想就是优美的裸奔。而能够提炼其中微妙的可以称之为师,而可以完美实现之的可以称之为匠了……

使用特权

评论回复
70
forthlab| | 2007-12-13 22:55 | 只看该作者

LS说的好

    

使用特权

评论回复
71
wangkj|  楼主 | 2007-12-14 09:13 | 只看该作者

us级相应,只能是中断

关于US级相应时间,
用os提供的中断或者裸奔的中断都能解决。

复杂项目用os的最高等级中断,但是,达到目标可能比较困难,需要对该
os彻底了解,自由修改的程度。这个项目的价格很高才值得做。

简单项目用裸奔,则很容易解决--所有的硬件资源你都掌握中,冲突好解决。
甚至把不合适的硬件替换掉都可能。

us以下的相应时间不单纯是软件的问题了,应该硬件配合,甚至用fpga的
硬件逻辑实现。

ms级相应时间,linux2.6内核就能做到。win俺不懂,不知道。另外,恐怕ecos,ucos之类的小系统也没问题。

用不用裸奔,具体看项目,就是看值不值。没有做不到,只要给足够的钱。

使用特权

评论回复
72
zenyin| | 2007-12-14 09:19 | 只看该作者

倒!不争了!有本事连0S都自己来写!

这是个矛盾,微型机讲求通用,单片机择重专用,二者有逐渐靠拢的趋势
   要用辩证法去看待这个问题,再通用的系统做具体任务的时候的都是专用的
  例如我此刻的计算机此刻就是一部打字机,没有最好的,只有最协调的!就像两把扳手,做具体的事好用慎手肯定是死扳手用起安逸,但要翻修家用机电设备,可能一把活扳手方便性通用性就好了!

使用特权

评论回复
73
sanwa_chen| | 2007-12-14 09:54 | 只看该作者

裸奔有理,OS无罪!

裸奔有理,OS无罪!
喜欢裸奔的裸奔,裸出自己的特色,要象所长那样期望大家裸奔的一个模式,一看就是一个单位的就不容易实现了,工作量大啊!
在目前做8位机的系统里还没有遇到非要上OS不可解决的事情,甚至连用OS一定方便过自己裸奔的情况也没有。
解决问题,做出产品是最终考虑,手法各异,目的一致!

使用特权

评论回复
74
ocon| | 2007-12-15 22:37 | 只看该作者

又得出一个结论:OS是一种技术,裸奔是一门艺术~

使用特权

评论回复
75
little江| | 2007-12-16 00:15 | 只看该作者

确实没啥好争的

使用特权

评论回复
76
不起眼| | 2007-12-17 19:31 | 只看该作者

不用OS,俺也能实现多任务切换。算是个“开裆裤”吧

#include<setjump.h>
jmp_buf jumper0,jumper1,jumper2,jumper3;
void Task0()
{
    static int n=0;
    if(setjmp(jumper0)>0)
    {
        while(1)
        {
             if(setjmp(jumper0)==0) longjump(jumper1,1);  //任务切换
             n++;   //一段任务代码
             if(setjmp(jumper0)==0) longjump(jumper1,1);  //任务切换
             n++;   //一段任务代码
        }
    } 

}
void Task1()
{
    static int n=0;
    if(setjmp(jumper1)>0)
    {
        while(1)
        {
             if(setjmp(jumper1)==0) longjump(jumper2,1);
             n++;
             if(setjmp(jumper1)==0) longjump(jumper2,1);
             n++;
        }
    } 

}
void Task2()
{
    static int n=0;
    if(setjmp(jumper2)>0)
    {
        while(1)
        {
             if(setjmp(jumper2)==0) longjump(jumper3,1);
             n++;
             if(setjmp(jumper2)==0) longjump(jumper3,1);
             n++;
        }
    } 

}
void Task3()
{
    static int n=0;
    if(setjmp(jumper3)>0)
    {
        while(1)
        {
             if(setjmp(jumper3)==0) longjump(jumper0,1);
             n++;
             if(setjmp(jumper3)==0) longjump(jumper0,1);
             n++;
        }
    } 

}
void InitTask()
{
    Task0();
    Task1();
    Task2();
    Task3(); 
}
main()
{
    InitTask();
    longjmp(jumper0,1)
}

//以上代码在keil c中调试通过
//非占先式任务切换
//任务内变量必须是静态的,子程序不用
//任务内不要用寄存器变量

使用特权

评论回复
77
hkap| | 2007-12-18 09:51 | 只看该作者

楼上这个结构不错,不知实际项目用过吗?

有个例程学习下更好

使用特权

评论回复
78
不起眼| | 2007-12-18 11:47 | 只看该作者

实际使用的是它的汇编版本

   原理都一样

使用特权

评论回复
79
55953797| | 2007-12-18 15:03 | 只看该作者

#include ?

#setjump.h 具体是?

使用特权

评论回复
80
dld2| | 2007-12-18 15:23 | 只看该作者

77楼很有意思

关键是longjump的实现。
有变成OS的苗头。

使用特权

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

本版积分规则