搜索
bottom↓
回复: 65

生于有效创新,死于盲目仿制

[复制链接]

出0入0汤圆

发表于 2009-7-4 16:18:53 | 显示全部楼层 |阅读模式
今天,是djyos的半岁生日,谨以此文予以纪念之。
半年来,djyos受到太多的饿帮助和关心,尤其是cu论坛,在djyos最艰难的时刻,给予了最多的帮助,在此对所有关心支持djyos发展的人,致以深深的谢意。
半年来,许多关心djyos的朋友,都提出了一个问题:djyos凭什么成功?能不能成功?故撰此文。

中国是否需要国产操作系统,这已经不是问题了,问题是,如何才能拥有自己的操作系统?
1.        仿制,前路茫茫
学习→仿制→消化→超越,这向来是后来者跟踪并超越先进的捷径,然而,这种方法在通用操作系统(PC或嵌入式)上却行不通,为什么呢?
ucosii的作者Labrosse先生在其书中说“写个实时内核那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛” 。这句话并不全面,而且误导了不少人,他们引而伸之地认为:“写个操作系统那么难吗?不就是实现线程和进程管理、信号量管理等API函数嘛” 。事实如何呢?写个成功的操作系统真的就那么简单吗?我们来看看一个典型、有一定复杂度的软件开发过程,如图1所示。

(原文件名:仿制与创新图1.jpg)

图 1
什么是仿制呢?用类似的底层算法,实现一套功能大同小异的API函数,即使每一行代码都是你自己写的,也叫仿制。
常听到有人说,现在写一个操作系统比20年前容易多了,这句话实际指的是仿制一个操作系统。容易在哪里呢?现在有发达的网络,漫天飞舞的开源资料可以借鉴,而20年前,当linus先生仿制UNIX完成linux的时候,或者Labrosse先生仿制RTOS制作ucosii的时候,是没什么开源资料可参考的,被仿制的对象几乎是唯一的参考资料。而今天,人家连函数原型都已经定义好了,又有那么多参考资料,虚拟机、开发板这些软硬件开发平台又是那么容易得到,难怪现在3个月就能写出一个不错的内核出来了,甚至连一些中学生都跃跃欲试。我们目前看到的漫天飞舞的操作系统中,绝大多数就是只完成“编写代码”这部分工作的仿制品。
所以,Labrosse先生的话应该改为“仿制个实时内核那么难吗?不就是不断地保存、恢复CPU的那些寄存器嘛” 。引而伸之地可以说,“仿制一个操作系统那么难吗?不就是实现线程和进程管理、信号量管理等API函数嘛” 。然而,仿制只能仿一个外形,并不能复制他们在市场上的成功,操作系统业界多年没有成功的新苗冒出来了,也是这个原因。
为什么说仿制必败呢?不可否定,新编写的操作系统,在前人的基础上,可能可以写出更精巧的上下文切换函数、更高效的API函数、更低的资源消耗、更快的中断响应,但是,一个操作系统的质量并不完全由这些因素构成,数十年、海量用户的使用和反馈为基础的稳定性和可靠性,以及用户长期积累的信心才是根本。如果一个新出的操作系统,只是实现原有操作系统类似的功能,你到哪里捕捉你的第一只螃蟹?即使有了第一只,那第二只、第三只呢?
所以说,如果没有根本性的创新,仿制一个操作系统是死路一条,即使以谷歌的实力,也只是在Linux基础上开发Adroid,而不是新仿制一个操作系统。
2.        信心,源自创新
都江堰操作系统(下文简称djyos),是一个全新的操作系统,它在操作系统的几个重要方面:调度器、中断管理、设备管理、资源管理等方面,都又非常突出的创新,甚至是理论创新。djyos花了5年时间设计,才初具雏形,因为它完成的是如图1所示全过程的工作全新操作系统,这5年间,经过无数次的反馈,方案被无数次推翻,许多策略被多次重新定义,许多代码被多次重写,才有你所见到的2万行代码。而不是像一些仿制的操作系统一样,调度策略、api设置都是享用现成的操作系统策略,只完成“代码编写”部分的工作。由于djyos在构成操作系统的多数主要方面都跟现有操作系统有着巨大的不同,因此很难参考现有系统的设计,反而为了在创新的同时尽可能照顾现有习惯而不得不有所顾忌。djyos的创新主要体现在以下方面,这些都是传统操作系统没有的。
(1)在调度器方面,可以说是彻底革新,它几乎颠覆了传统的软件设计模式。对嵌入式编程来说,几乎是革_命性的进步,它以事件为核心的调度方式,改变了过去操作系统要求程序员模拟计算机的思维方式的编程模式,使之可以按人类的思维方式编写应用程序;它使程序员可以摆脱线程和进程的束缚,djyos没有跟线程相关的API。特别是在嵌入式领域的程序员,有许多是行业背景很深的专家,但往往缺乏计算机操作系统方面的知识,他们在djyos下编程,则可以无需学习晦涩难懂的线程知识。
(2)天然匹配多核和分布式计算,djyos的调度算法是以事件为核心的,应用程序只管为事件编制处理程序,而线程和CPU核则被当做处理事件必须的资源,由操作系统分配给事件,这种算法天生使多核编程更加简单,多核利用率更高。众多周知,目前CPU正往多核化发展,嵌入式CPU甚至DSP也是如此,比如ADI公司的blackfin561就是一颗只有几十KB内存的双核DSP,djyos有计划移植到blackfin561上,有望成为第一个在只有几十KB内存的CPU上实现对双核的完美支持的RTOS。
(3)创新的加载方式和中断管理模块,可以实现比所有操作系统都快的中断响应时间,并且在CPU启动后数十uS以内,应用程序的关键部分就可以实现对目标系统的控制,在操作系统加载过程中,就可以响应应用程序的中断ISR。
(4)实时的内存管理,在操作系统组件中,通常认为malloc函数是非实时组件,因为即使有充足的内存,malloc函数的执行时间也不可预计,不符合实时系统要求执行时间和结果均可预计的原则。但是djyos的内存管理,只要在系统设计时配备充足的内存,malloc的执行时间是快速而且可以预计的,而在只运行一个应用程序的实时系统中,内存不枯竭是容易做到的。
(5)为项目经理和系统工程师量身定制的系统架构,为工程师量身定制的API设置,特别利于系统工程师划分项目模块,利于项目经理组建和管理团队,利于工程师编写利于维护的代码。
(6)欲了解更多的特长,请到www.djyos.com下载《都江堰操作系统与嵌入式系统设计》一书。
3.        价值,来自用户
仿制必败,并不意味着创新必胜,创新只是必要条件而非充分条件,只有能为用户创造价值,才是充分条件。djyos的创新优势在于,它不是为了创新而创新,它的每一个都是为了给用户创造价值。我们来看看操作系统界的几个“怪”现象:
1、        互联网上搜索一下wince和linux的技术指标对比,几乎linux完胜。
2、        来自Gartner公司的数据证实,自从2003年起微软就一直稳居嵌入式操作系统全球市场份额榜首。
3、        嵌入式linux强调免费且硬件成本低的成本优势,而wince最成功的地方,恰恰是成本最为敏感的、出货量巨大的消费电子产品。
4、        《电子产品世界》2008年在工程师中做的调查表明,开发linux应用程序的工程师数量是wince的2.5倍。(注:linux工程师的平均工资还远高于wince工程师)
这些数据表明,linux能在技术指标上完胜wince,说明linux是有了不起的创新的,但是,linux以多得多的人力成本,所开发的产品市场占有率却远比wince低!不能不说,linux的创新知识linuxer们自娱自乐的玩具而已!应用这些创新能创造的价值,需要消耗太多的人力资源去学习和掌握linux,这些消耗足以抵消创新的价值。
是什么使人愿意花高价购买wince的license,并付出更高的硬件成本呢?wince之所以取胜,在很大程度上来自快速方便的开发,快速推出产品,技术风险小,人力成本低。在windows系统衍生工具的支持下,图形化的开发,事件触发式编程令人倍感方便。与wince通过应用程序(对操作系统来说,EVC等开发工具属于应用程序)间接实现事件出发式编程相比,djyos的事件触发确实原生的,即djyos调度器就是按照事件进行调度的。所以,你只要有一个支持ansi C的编译器,只要会C语言,再加一个文本编辑器,就可以实现事件触发式编程。原生式的事件触发编程,从理论上,其执行效率和代码尺寸也应该比用应用程序间接实现的要高。
djyos的核心算法不但在通用嵌入式操作系统中有优势,此外,djyos还是一个RTOS,除跟wince在手持设备上竞争外,还可以与VxWorks等实时系统竞争,在RTOS领域,djyos在研发方便性上的优势更加突出。在性能上,按djyos“九九加一”原则设计的中断管理架构,使部分中断可以永不禁止状态,从而实现最快的中断响应延迟。我们知道,实时系统中,实时性要求最高的部分功能,往往是用中断实现的,最快的中断响应速度,意味着djyos具有最高的实时性。

4.        成功,扬长避短
在软件领域,革_命性的创新的另一个拦路虎是惯性,作为革新的操作系统,你将很难做到与现有应用程序的兼容,你将立即面对行业惯性的压力,这种惯性来自于用户以及工程师的使用习惯和应用程序的兼容程度。如果在桌面系统上,这个压力尤其显著,移动设备次之,工业产品却几乎不受这个惯性影响。诚如我在《都江堰操作系统与嵌入式系统设计》一书中指出,开发高可靠的产品,对使用外来代码会非常谨慎,而且,由于这些产品的特异性大,甚至很多是定制产品,直接可用的公共代码资源很少,即使有,也不是应用程序的形式提供,而是库函数的方式提供。再者,高可靠性工业控制产品中,一般只运行一个程序,而这个程序的绝大多数代码,都是产品研发组自己开发的,对运行外来应用程序的需求几乎没有。所以,在工业领域,操作系统只要把常用的公共软件模块如网络模块、gui模块做好了,就基本满足用户需求了。嵌入式操作系统是一个细分市场,所以不会形成桌面系统寡头控制的局面,在桌面系统上,是windows和unix系操作系统双寡头局面,这种情况绝不会出现在嵌入式领域。这就给了后起之秀一个机会,只要你的产品好,工程师认同,你就有机会。嵌入式操作系统的目标用户是工程师,而工程师是一个善于学习的群体,容易接受新事物的群体,这也是djyos的机会。所以,djyos扬长避短,避开在通用计算机/服务器上与windows、linux、unix正面交锋,首先寻求在嵌入式领域寻找突破点,djyos要与非实时操作系统如嵌入式linux、wince竞争,以及实时操作系统如vxworks、qnx等竞争。djyos提供三种运行模式,si模式是为资源非常匮乏的单片机准备的,dlsp模式是为资源相对丰富的中大型工控系统准备的,mp模式是为移动计算设备准备的,djyos将首先从工控领域取得突破。djyos先天优异基因,将为它带来机会。
5.        开源,加速推广
一个全新的操作系统写出来了,要经过让人们接触、了解、熟悉、接受、使用的过程,这是走向成功的必经之路,在这个成熟的市场格局之下,这点尤为重要。djyos通过以下方法实现。
(1)通过宣传使人们能够接触到djyos。
(2)公开全部充满注释的源代码,以及完善的文档,让人们能够了解和熟悉djyos。
(3)djyos本身优秀的设计理念内涵,以及高可靠性的设计,使人们能够接受并扩大传播。
嵌入式软件的规模越来越大,越来越复杂,软件中潜藏的bugs也会越来越多,隐藏得越来越深,需要源代码来协助定位bug的需求也就越来越迫切。2005年以来, Windows CE、VxWorks、QNX都相继开源,有些是向公众开源,有些是向客户开源。我想,他们开源的初衷,并不是想像Linux那样,让公众修改他们的代码,而是市场压迫下不得不开源。所以,我认为,操作系统尤其是嵌入式操作系统,不管是免费的还是收费的,不开源就是没有出路的。对于自主操作系统来说,开源还有更重要的意义,可以藉此消除行业质疑,是证明你自主研发的最有力证据。
然而,开源后呢?一个新系统,摆一堆源代码在那里,然后你说你的系统有多么多么的先进,会有人看吗,会有人相信吗?用户把几万行代码拿到手里,根本就云里雾里。你必须有说明文档,这些文档必须详细,必须有良好的组织,必须易于阅读。djyos的5年研发过程中,有2年在写配套的书《都江堰操作系统与嵌入式系统设计》,该书并不是简单地作为djyos的说明文档,还融汇了许多软硬件系统架构设计方面的思想,而这些思想又构成了djyos设计的基石。可以说,光这份文档的制作时间,就超过仿制一个普通操作系统内核所需要的时间。

本文转载自 chinaunix论坛,http://linux.chinaunix.net/bbs/

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-7-4 16:58:05 | 显示全部楼层
1.POSIX支持怎样?没有这个的话,很多软件都要重写。
2.对CPU的cache的利用率怎样?现在限制CPU速度的是CPU访问内存的速度.

出0入0汤圆

发表于 2009-7-4 17:14:57 | 显示全部楼层
不知道在操作系统方面有什么理论创新? 这么重大的理论创新,LZ为什么不发表论文啊?可以流芳千古的事情,为什么不去做呢?

出0入0汤圆

发表于 2009-7-4 17:38:33 | 显示全部楼层
不知道为什么对加上国产之类的词有点免疫...

出0入0汤圆

发表于 2009-7-4 18:18:05 | 显示全部楼层
没有失败,就没有成功.
希望LZ的操作系统能成功.

出0入0汤圆

发表于 2009-7-4 21:27:06 | 显示全部楼层
这个一定要顶一下!

出0入0汤圆

发表于 2009-7-4 21:51:22 | 显示全部楼层
强烈支持!!

出0入0汤圆

 楼主| 发表于 2009-7-4 22:02:55 | 显示全部楼层
2楼啊,论文值几个钱?除了用于评职称,拿学位,成果鉴定,以及从我党那里骗吃骗喝外,还有其他用途吗?

如果你真的想知道djyos是否有有价值的创新,可以到我主页下载《都江堰操作系统与嵌入式系统设计》看,不要不了解情况就加以否定。

出0入0汤圆

发表于 2009-7-4 22:27:32 | 显示全部楼层
2楼,作者踏踏实实花费这么多精力,不管你认不认同其OS,也不必这么刻薄吧
敲这些风凉话显得没涵养~~~

出0入0汤圆

发表于 2009-8-8 08:53:05 | 显示全部楼层
支持楼主!

出0入0汤圆

发表于 2009-8-8 09:23:12 | 显示全部楼层
我也支持。我才刚开始使用系统,看了下楼主写的书,很好,就是长了点,后面没看完。

出0入0汤圆

发表于 2009-9-9 11:51:15 | 显示全部楼层
支持楼主! 只是好奇地弱弱地问:为什么叫这个名字啊?

出0入0汤圆

发表于 2009-9-9 12:52:58 | 显示全部楼层
djyos 有出版纸书吗?

出0入0汤圆

发表于 2009-9-9 12:58:46 | 显示全部楼层
曲低则失败
曲高则和寡,还是失败

成功的关键不是系统是否优秀,而是推广手段是否奏效,目前成功的操作系统,没有一个在技术上是比较好的,都是能用而已。

出0入20汤圆

发表于 2009-9-9 13:29:56 | 显示全部楼层
强烈支持,不知道能不能移植到我那个A_片下载器上,如果有兴趣的话,可以联系我,我们免费给你提供一套硬件平台.

出0入0汤圆

发表于 2009-9-9 13:37:11 | 显示全部楼层
wenming 老王

强烈支持,不知道能不能移植到我那个A_片下载器上,如果有兴趣的话,可以联系我,我们免费给你提供一套硬件平台.  
__________________________

又在这里腐蚀青年了。。。

出0入0汤圆

发表于 2009-9-9 13:40:24 | 显示全部楼层
人啊 要推广 还是要找对人 找对手段

顶顶楼主 不容易

希望楼主能更加有魄力,作出更加好的运用成果。

出0入0汤圆

发表于 2009-9-9 14:15:19 | 显示全部楼层
花了点时间看了一下《都江堰操作系统与嵌入式系统设计》中的事件和调度器的部分,就这一部分说一下我的感觉。书里面描述的事件和现在的进程没有太大的区别。系统方面比较大的区别在于不允许直接操作线程。可是书里并没有对这个决定进行细致的分析,这样的决定可能对系统的稳定性和易用性造成很大的影响。比如说书中说到:”禁止自杀和他杀,djyos 不提供杀死线程(进程)的操作,因为这是操作系统的专
利。那么,线程就长生不死了吗?也不是,djyos 是事件驱动的,如果一个事件已
经完成,应用程序可以使用y_event_done 系统调用来告诉操作系统,操作系统会
决定是否要杀死线程。“ 这样的设计会有一些什么样的影响?

书中很多设计上的决定都没有使用数学模型来分析,这样的决定很难说是正确的。希望能看到相应的数学模型和理论分析,因为如果一个算法在正确的数学模型里可以被证明,那么就可以保证实现的系统没有问题,可是反过来并不是这样。另外,在4.3.9.1里描述的调度算法并没有什么创新,都是一些传统算法。

另外我对7楼说的“2楼啊,论文值几个钱?除了用于评职称,拿学位,成果鉴定,以及从我党那里骗吃骗喝外,还有其他用途吗? ”持保留意见。发_论文的目的是让同一领域的人来验证自己的想法是不是正确的,正是所谓的PEER REVIEW。 这很重要,否则光靠论坛中的合作,不足以找到足够多的具有相关理论和知识背景的人来检验你的想法。

出0入0汤圆

发表于 2009-9-9 14:29:38 | 显示全部楼层
再次纯支持LZ。想说一声的就是:应用,应用,还是应用!没人用的东东注定活不下去!

出0入0汤圆

发表于 2009-9-9 14:56:22 | 显示全部楼层
超级支持和赞同楼主。

虽然还没有仔细研究你的djyos,但是对你的关于仿制的观点非常赞同,冲着你真心花精力研究os的精神,我坚信你的djyos会越来越好。

我觉得楼主的方针和政策都是非常好,一般人写os,只是玩玩,证明自己能力,仿造了出来就不管了。

感觉楼主有种挖地100米,打好地基的味道。

做个标记,以后慢慢研究,还希望楼主能够高度精选吸纳众多工程师的需求啊,到时候,大家对djyos的描述就会是:性能强劲,超级好用,强烈推荐,入门必学,历久不衰,与时俱进,和谐。

出0入0汤圆

 楼主| 发表于 2009-9-9 21:40:33 | 显示全部楼层
14楼老王:你的A_片下载器是什么样的板子?

出0入20汤圆

发表于 2009-9-9 21:47:54 | 显示全部楼层
我10.1以后就把硬件测试完毕了,是AT91SAM9G20为核心的板.

出0入0汤圆

 楼主| 发表于 2009-9-9 21:58:27 | 显示全部楼层
17楼:谢谢你的支持,花这么多时间看我的书,还写这么精彩的评论。
    关于禁止自杀和他杀的问题,djyos还禁止类似tasksleep和taskresume之类直接控制线程(djyos中是事件)启动和停止的操作。我们知道,c语言中很忌讳goto,但同样引起跳转的if语句却通行无阻,为什么呢?盖因goto是无缘无故地随意地跳,而if却显式地描述了为什么跳和跳到哪里。tasksleep一样,暂停了本线程,跳到(标准术语是切换)另一个就绪的线程中,这难道不能看成是一种无缘无故的、随意的模块间转移吗?我们把这种转移称做大GOTO。既然函数内的goto都那么受排挤,而我们凭什么要支持这种模块间的大GOTO呢?所以,djyos中,凡不说明原因的自杀、他杀、暂停、恢复等操作,一律禁止。除事件主动调用y_event_done可以结束线程外,事件处理函数的自然返回,djyos也会自动插入一个y_event_done调用。djyos并不是不允许事件暂停执行,而是要求程序员像if语句一样,显式地告诉系统,你为什么停止和启动,为此,djyos提供了众多的同步功能。
    禁止他杀还有另一层意思,因为djyos禁止事件间(可能是组件间)的直接操作,他杀跟这个脱不了关系。
    关于数学模型的问题,djyos做的只是换一种用法使用传统技术,并没有任何超出60年代及更早时候就确立了的OS理论,无需单独再用数学模型进行证明。

出0入0汤圆

发表于 2009-9-9 22:11:45 | 显示全部楼层
楼主还是去努力钻研吧!哎!老是在这里宣传也不是办法哈!我期待着你的成功!把时间和精力花在上面吧!呵呵!

出0入0汤圆

发表于 2009-9-9 22:55:00 | 显示全部楼层
回22楼:我说的是用数学模型证明相应决定的正确性,而不只是调度算法。比如说禁止他杀和自杀,这个决定对于多线程的程序有什么影响?会不会导致一些程序Starvation? 或者是其他的东西?这些影响只能使用数学模型才能够给出结论。另外,现有的并行计算使用的模型都是基于传统的可以休眠自杀他杀的概念,如果用了你的设计,对并行计算的数学模型有什么影响?如果禁止了他杀和自杀,很多现有的设计并行系统的方法都要改变了。

和你的系统相反,LINUX是模仿UNIX的实现,所以它不需要进行太多的理论创新就可以做得很好。对于比较新的理论或者是设计,LINUX社区也是通过发表论文来进行讨论的。

理论的研究可能比较枯燥,可是要证明一个系统是稳定可用的,光是实现出来是不够的。我并没有深入的去了解你的系统,不过我觉得可证明的可靠性对于一个实时操作系统来说是很重要的。我本身不是做操作系统研究的,所以能提出的东西有限。还是那句话,应该找具有相关知识背景的人来讨论,只是通过论坛来讨论理论上的知识我觉得比较困难。

出0入0汤圆

发表于 2009-9-9 23:40:36 | 显示全部楼层
哈哈……楼主这些软文已经快成月经贴了……

老实说,楼主对技术的钻研态度,我还是有点尊敬的,但对技术以外许多问题的论调,老实说,真的只能当的上“胡扯”二字了……

不说太多,随便举个例子:

楼主拿 WinCE 和 Linux 说事,却对 WinCE 为什么会“胜过” Linux 进行了根本的歪曲,以下是我知道的事实:

1、绝大多数时候,以 WinCE 说事的人,举出的例子都是“市场份额”而非“装机量”,很显然,Linux 是完全免费的,零乘以任何有限量,结果都为零,于是,WinCE哪怕全世界只卖出1美元,那它的“市场份额”相比 Linux,都是 100%:0%……

2、若以装机量论,实际上,WinCE 只有在少部分 PDA 和少部分智能手机中有被使用,远远不是[非 WinCE 系统](我没说一定是 Linux)的对手,而一旦智能设备脱离了图形界面,就几乎全都是 Linux 的天下了……

3、最关键的一点,即使以整个 Windows 家族而论,维系它的权威的,仍然仅仅只是[用户习惯],而非[任何]与技术、研发相关的东西……

实际上,从我许多次的切身经历看来,对于把电脑当工具的 Windows 用户来说,只要能够在最初的一个月里确实让他维持使用 Linux,则一个月后,即使让他换回 Windows,他都不会愿意——因为 Windows 实在有太多的问题了:系统有效启动(就是真正可以运行起程序的情况,而非仅仅只是显示一个光板桌面后听硬盘嘎吱)和程序加载速度慢、诡异的虚存和缓存管理算法导致关键时刻系统总会像哮喘病发作一样的“憋住”几秒钟(玩过实时制网游的人_大概都有体会)、无数的病毒和木马困扰(这个就不多说了,最简单的一点,Linux可从来没有过把管理员用户当普通用户交给用户使用的“好习惯”,更不会发生什么正常的工作用软件向用户要求管理员权限之类的腌臜事儿)……最关键的是,Linux 可以通过 WinE,完美运行 95% 以上的 Windows 二进制程序(包括大多数 3D 游戏),并且还可以非常简单的做到与 Linux 程序的无缝衔接,又能让各程序运行在互不干涉的独立环境下(就仿佛在WinNT内核的系统下通过 ntvdm 运行 DOS 程序一样),但 Windows 却不能通过虚拟机以外的方法运行几乎任何 Linux 二进制代码……说的直白点,在很多情况下,Linux + WinE 对 Windows 程序的兼容性,甚至比 Windows Vista 对 WinXP 程序的兼容性还高……

出0入0汤圆

发表于 2009-9-9 23:54:43 | 显示全部楼层
楼上说的不错,只是WINE的功能还没那么强大吧。我现在平时用的是LINUX+VMWARE。 那些必须的WINDOWS程序就在VMWARE里跑。多个虚拟机,专机专用,也更安全些。

出0入0汤圆

发表于 2009-9-10 06:50:44 | 显示全部楼层
支持 【23楼】 microcreat  说的。

针对STM32的移植,日志有了好几篇了,建议还是先做出来。

出0入0汤圆

发表于 2009-9-10 09:03:27 | 显示全部楼层
楼上早上起来发帖的时间有点早,嘿嘿

要是djyos能够支持普通的fat文件系统,又有一个好的tcpip在里面的话,支持者应该会比现在多很多倍。

大家现在还在纠结在fatfs,lwip,uip等等

出0入0汤圆

发表于 2009-9-10 11:02:27 | 显示全部楼层
【25楼】 watercat
3、最关键的一点,即使以整个 Windows 家族而论,维系它的权威的,仍然仅仅只是[用户习惯],而非[任何]与技术、研发相关的东西……
========================================================================================================================
不仅如此,我觉得Windows无法抛弃的原因还有上面为人们熟悉的为数众多的软件形成的生态系统,我们可以完全不用windows,但是有的时候却不得不使用只在Windows上运行的软件,仿真器,调试器 等众多的工作中必须要用的软件~~~

出0入0汤圆

发表于 2009-9-10 12:20:26 | 显示全部楼层
【26楼】 sleepyscorpio

        楼上说的不错,只是WINE的功能还没那么强大吧。我现在平时用的是LINUX+VMWARE。 那些必须的WINDOWS程序就在VMWARE里跑。多个虚拟机,专机专用,也更安全些。

=======================================

用用看就知道了,除了对一些PRC公司设计的奇异软件支持度不够外(据我的分析,大部分这种情况,都是由于其附带的非授权功能),我所用到的所有英文软件都能正常在 WinE 下面用,我所玩过的所有国外游戏都能在 WinE 下面玩;

另外,WinE 的隔离方式是类似于 chroot 的类型(当然实际上并不是),并且可以做到每一个 Windows 程序启用一个独立的仿真环境,而每个仿真环境只需要区区 5MB 的磁盘空间

说到底,开源软件最大的特色,就在于总能给人“士别三日,当刮目相看”的感觉

【25楼】 watercat

不仅如此,我觉得Windows无法抛弃的原因还有上面为人们熟悉的为数众多的软件形成的生态系统,我们可以完全不用windows,但是有的时候却不得不使用只在Windows上运行的软件,仿真器,调试器 等众多的工作中必须要用的软件~~~

=======================================

是的,所以才需要通过 WinE/VBOX 这样的解决方案实现无缝连接和平稳过渡;

不过至少对我来说,我的项目用到的 ARM7/9/CM3/CA8 和 AVR8/32,都可以在 Linux 上通过 Linux native 程序实现编程调试,所以,也就无须那许多了……

出0入0汤圆

发表于 2009-9-10 12:40:46 | 显示全部楼层
【30楼】 watercat  

不过至少对我来说,我的项目用到的 ARM7/9/CM3/CA8 和 AVR8/32,都可以在 Linux 上通过 Linux native 程序实现编程调试,所以,也就无须那许多了……

=======================================

请教下watercat,在您的ARM7/9/CM3/CA8 和 AVR8/32平台上,都可以在 Linux 上通过 Linux native 程序实现编程调试。我想问下,您的这些平台上,资源都很丰富 足以支持比较快速地编译程序?
我用的S3C2440 450MHz主频
64M SDRAM
64M Flash
这样我不敢在板上用Linux native 程序实现编程调试,怕那个速度让人无法忍受!

另外,还请具体讲讲您说的那个过程~~
先行谢过了~~

出0入0汤圆

发表于 2009-9-10 13:15:06 | 显示全部楼层
请教下watercat,现在装linux个人用,一般都用什么版本的?请问你是用哪个版本?

出0入0汤圆

发表于 2009-9-10 13:28:13 | 显示全部楼层
【31楼】 lofeng

请教下watercat,在您的ARM7/9/CM3/CA8 和 AVR8/32平台上,都可以在 Linux 上通过 Linux native 程序实现编程调试。我想问下,您的这些平台上,资源都很丰富 足以支持比较快速地编译程序?
我用的S3C2440 450MHz主频
64M SDRAM
64M Flash
这样我不敢在板上用Linux native 程序实现编程调试,怕那个速度让人无法忍受!

另外,还请具体讲讲您说的那个过程~~
先行谢过了~~

======================================

不使用OS+MPU的代码(就 ARM7/CM3 来说,通常就是整个程序,就 ARM9/CA8 来说,通常只是 boot 和 loader),通过 GCC 交叉编译进行开发,通过 OpenOCD 进行下载或烧录

使用 OS 的代码,直接在板子上本机编译本机运行,对于 ARM9,用 Gentoo 的 ARM 当前版,对于 CA8,用 ubuntu 或 Android 的 ARM 版

另外,64M SDRAM 对于较复杂系统的本机构建肯定不够,我会在开发用板子上挂一块微硬盘作虚存

速度方面,没你想得那么慢

出0入0汤圆

发表于 2009-9-10 13:29:41 | 显示全部楼层
【32楼】 thinkingman

请教下watercat,现在装linux个人用,一般都用什么版本的?请问你是用哪个版本?

==========================================

个人的桌面级应用的话,ubuntu 应该是目前的首选

不过研发级应用,最好有一台装 Gentoo 的机器

出0入0汤圆

发表于 2009-9-10 13:37:48 | 显示全部楼层
樓主要是低調行事


恐怕效果會更好點

大家看你的起點就不一樣

出0入0汤圆

 楼主| 发表于 2009-9-10 15:21:21 | 显示全部楼层
针对STM32的移植,日志有了好几篇了,建议还是先做出来。  
__________________________

说得有理,光吆喝是不行的,得拿出真把式出来。
无奈最近病患不断,这几天还搞得住院了,6天了,只是医院离家很近,时常溜回来上上网。
按医生说,明天应该出院,出院后,很快就会发布stm32版本的。

出0入20汤圆

发表于 2009-9-10 15:27:42 | 显示全部楼层
我一直喜欢开发的时候,挂上NFS,使用本地编译.

出0入0汤圆

发表于 2009-9-10 16:22:15 | 显示全部楼层
【36楼】 djyos
你也是大人弄到最后也生病了?同病相怜啊。。。我现在小孩好了,大人也还行。但孩子妈妈正在病。这个时节真令人头痛。

出0入0汤圆

发表于 2009-9-10 16:25:19 | 显示全部楼层
【37楼】 wenming 老王
是的,做linux下的开发,还是用NFS好些。

不过有些东西也挺麻烦,建立个完全的交叉编译环境太麻烦,例如依赖于很多库的时候,特别是QT。这个时候用native的环境反而容易搭建些。

出0入0汤圆

发表于 2009-9-10 19:02:17 | 显示全部楼层
非常感谢【34楼】 watercat

出0入0汤圆

发表于 2009-9-12 11:52:21 | 显示全部楼层
水猫厉害  崇拜!

出0入0汤圆

发表于 2009-9-13 03:31:21 | 显示全部楼层
牛,我今天去都江堰

出0入0汤圆

发表于 2009-9-17 11:13:29 | 显示全部楼层
请问楼主“都江堰”有移植到AVR32上的版本吗?AP7000或A0系列都可以哦

出0入0汤圆

发表于 2009-9-17 20:03:53 | 显示全部楼层
LZ是否考虑移植到君正的芯片上去呢?


我看都有2440的系统!

要是能植到君正的芯片上去,则更上一件好事啊

出0入0汤圆

 楼主| 发表于 2009-9-17 21:51:58 | 显示全部楼层
楼上两位:我手头现在没有avr和君正的开发板啊。

出0入0汤圆

发表于 2009-9-19 09:54:20 | 显示全部楼层
支持楼主,你辛苦了,系统一定会非常成功的。

出0入0汤圆

发表于 2009-9-19 10:19:22 | 显示全部楼层
到处移植也是一个耗费精力的事情,建议LZ一是对内核进行强化,二是寻找对口的应用。

出0入0汤圆

发表于 2010-5-10 22:19:26 | 显示全部楼层
回复【7楼】djyos 都江堰操作系统
2楼啊,论文值几个钱?除了用于评职称,拿学位,成果鉴定,以及从我党那里骗吃骗喝外,还有其他用途吗?
如果你真的想知道djyos是否有有价值的创新,可以到我主页下载《都江堰操作系统与嵌入式系统设计》看,不要不了解情况就加以否定。
-----------------------------------------------------------------------

对论文的理解竟然如此,也能看出你对理论的重视程度是0。没有创新的理论支持,你的操作系统的创新性在哪里?
为什么论文可以平职称拿学位,你认为科学院的那帮人都是比你还蠢的蠢材?

出0入0汤圆

 楼主| 发表于 2010-5-11 08:28:15 | 显示全部楼层
回复【48楼】homecom
回复【7楼】djyos 都江堰操作系统
2楼啊,论文值几个钱?除了用于评职称,拿学位,成果鉴定,以及从我党那里骗吃骗喝外,还有其他用途吗?  
如果你真的想知道djyos是否有有价值的创新,可以到我主页下载《都江堰操作系统与嵌入式系统设计》看,不要不了解情况就加以否定。
-----------------------------------------------------------------------
对论文的理解竟然如此,也能看出你对理论的重视程度是0。没有创新的理论支持,你的操作系统的创新性在哪里?
为什么论文可以平职称拿学位,你认为科学院的那帮人都是比你还蠢的蠢材?
-----------------------------------------------------------------------

此话针对2楼的刻薄言论而出,该言论中所说的“论文”,难道不是指“骗吃骗喝”的论文吗?

出0入0汤圆

发表于 2010-5-13 20:54:52 | 显示全部楼层
水猫先生怎么也被踢了?

出0入0汤圆

 楼主| 发表于 2010-5-14 16:12:14 | 显示全部楼层
水猫被踢了?我刚刚听说(听楼上说的),这种问题该问阿莫老大。

出0入0汤圆

发表于 2010-5-14 16:15:11 | 显示全部楼层
支持lz 虽然不懂 但思路肯定是正确的

出0入0汤圆

发表于 2010-10-22 14:55:14 | 显示全部楼层
创新是对的,人家的算法也是很好的。那么关键在于什么是“创新”

事件驱动可以算一个创新(虽然国外很多系统都是这样的,但至少国内来讲很多人还是用TASK,甚至连TASK都没有)
事件驱动的编程或技术就不能算是创新了,为什么呢?
前者是Idea,不管什么基础人都可以有,但后者要做到创新,就不是简单的说不抄袭人家代码就是创新了,而应有理论模型。

出0入0汤圆

发表于 2010-10-22 15:19:19 | 显示全部楼层
我一来,这个帖就要沉了

出0入0汤圆

 楼主| 发表于 2010-10-23 23:11:05 | 显示全部楼层
回复【54楼】helloworld21cn
创新是对的,人家的算法也是很好的。那么关键在于什么是“创新”
事件驱动可以算一个创新(虽然国外很多系统都是这样的,但至少国内来讲很多人还是用task,甚至连task都没有)
事件驱动的编程或技术就不能算是创新了,为什么呢?
前者是idea,不管什么基础人都可以有,但后者要做到创新,就不是简单的说不抄袭人家代码就是创新了,而应有理论模型。
-----------------------------------------------------------------------

谢谢你的关注,只是你并不了解DJYOS的创新点在哪里。

出0入0汤圆

发表于 2010-10-27 14:33:56 | 显示全部楼层
只要是有思考的讨论,总是有益的。
DJYOS的创新点以我的理解来讲:2个字,一篇长文章
事件->事件模型->事件调度
首先说事件模型:事件模型 vs Task,区别应从两方面来讲:思维方式,实现模型。个人观点主要是思维方式的区别。也就是作者所讲是面向机器的思维方式,还是面向自然思维的方式。
从应用的角度讲面向事件编程更自然些,但不全然。比如Task模型把系统理解为一个并行任务处理系统,若干个任务分别处理不同的事情,这些事情可以按自然的方式去分解,好比一个团队协同工作,没什么不好理解的。作者的观点只是针对了一个“小”的多任务模型,这个所谓“小”多任务模型在有限的资源条件下,应用开发者需要考虑太多关于资源的问题,以至于不能很好的关注到应用需求与任务的匹配,所以显得“机器”化,而非需求驱动形式。
面向事件编程的优点说了不少,我就说几个缺点,不针对TASK模型比较。
(1)事件的发生是不可规划的,因此具有突发性的问题,对于资源小的系统来说,容易出现死锁。
(2)事件是有继承多态性的,对于相应的事件处理线程的编写来说存在一个两难的选择:可重用性和复杂性的选择。
举按键事件来说:假设系统有64按键,分成8组,要求每个按键事件都需要进行统一的处理后,再进行分组事件的处理,然后才是该特定按键的处理。可重用性的处理方式,应该为每个层次编写不同的事件处理线程,以冒泡的形式进行逐层处理,这相对复杂了。若64个键都用同一类线程处理程序,则程序有可能太长了,而且无法面对需求变更的情况。若64个按键登记64种线程处理程序,那就是“愚蠢”的做法了。
(3)事件引发的资源浪费问题
在实际系统中,并不是所有事件都需要响应的,或者,有时候要响应,有时候不需要响应。按事件->事件处理线程模型,则意味着需要在事件处理线程里进行判断,必然导致资源的浪费。最简单的例子还是按键事件,假如按了无效按键....,当然这种问题可以通过一些手段解决,但从思维模型来说,就不是很”纯"了。

接着说两种模型的实现模型的区别:
其实不管什么模型,事件驱动还是任务驱动,面向对象还是模块化结构等等,实现模型的区别都可以理解为 Message Dispatch(消息分发)模式的区别。
对于任务驱动来说,消息首先由操作系统获取,然后根据登记的等待任务(wait)分发到相应任务处理,假设多个任务同时等待该消息,则由激活优先级高的任务进行处理。对于事件驱动来说,消息根据消息的类型进行分发,消息分发到预先登记的消息处理线程。

出0入0汤圆

发表于 2010-10-27 14:39:27 | 显示全部楼层
算法上来讲,包括内存算法,调度算法,我个人认为:学习重于创新。
这些算法里,比较成熟的有太多了,分别针对不同的情况:单核和多核,哈佛结构、有MPU,无MPU。
我觉得应根据情况,“拿来主义”
比如文件系统,根据是采用SD卡还是板载芯片,就应采用FAT或Flash专用文件系统.没有必要自己去从头实现一个。

出0入0汤圆

发表于 2010-10-27 15:15:02 | 显示全部楼层
无效按键问题有一种特殊情况:
在系统忙的情况下,由于反应迟缓,导致操作者重复按键,重复的那个按键应该是无效的,如果被当成有效按键处理,则可能有意外发生。因此有些事件应在特定的时候被丢弃。

出0入0汤圆

发表于 2011-8-23 11:11:13 | 显示全部楼层
回复【6楼】ivws 点点滴滴
-----------------------------------------------------------------------

给力的说法啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我支持楼主!!!!!

出0入0汤圆

发表于 2011-10-11 12:51:31 | 显示全部楼层
赞!支持!!!

出0入0汤圆

发表于 2011-11-6 21:06:13 | 显示全部楼层
关注

出0入0汤圆

发表于 2011-11-6 21:19:37 | 显示全部楼层
十分关注

出0入0汤圆

发表于 2011-11-6 22:25:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-7 00:17:49 | 显示全部楼层
回复【48楼】homecom
-----------------------------------------------------------------------

对论文的理解竟然如此,也能看出你对理论的重视程度是0。没有创新的理论支持,你的操作系统的创新性在哪里?
为什么论文可以平职称拿学位,你认为科学院的那帮人都是比你还蠢的蠢材?  --------------------------------------------------------------------------难道科学院的那帮人不是蠢材?!跟在国外大牛后边捡面包渣的一群人,还不算蠢材?!还有工程院院士,都是什么水平,最起码有几个我是不服气,你知道我什么毕业?小学两遍,中学上了本地4所,全是初中,18岁初中毕业,那是老师看我18了不好意思不给我发毕业证了,我实际只是初一水平!你们这个体系,让我这样的白丁都瞧不上,你还狂个屁!!你以后看到的所谓学术论文,其中就有我这个白丁代写的!支持djyos,支持都江堰,支持中国真正自己的东西!!!
 
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 03:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表