单片机应用系统是由是新系统?

02-1602-1602-1602-1602-1602-1602-1602-1602-1602-16最新范文01-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-0101-01《谈学单片机有前途还是嵌入式系统有前途》1
> 《谈学单片机有前途还是嵌入式系统有前途》1
《谈学单片机有前途还是嵌入式系统有前途》1
  以后有这方面的项目找楼主帮忙行不?&&有偿的帮忙当然可以。在商言商,时间就是金钱。  深练三十年,精炼需一生。&&不错。  单片机的功夫在单片机之外~~~~~顶啊顶~总结下就是单片机适合单干,嵌入式适合团队,完毕!&&不仅仅如此。嵌入式的业务不会很多,即使有,估计都是以公司为单位承接的。而单片机的业务量却很多,我每个月都有做不完的项目。大部分的老板,只要单片机能做的,当然首先是考虑单片机的,因为成本,开发周期,稳定性都比带操作系统的要好。什么情况下单片机不能做,在彩屏显示等需要复杂界面的情况下,而这个时候,老板还有两个选择,一个是单片机加电脑上位机,另外一个才是嵌入式。而正常情况下,老板会优先考虑第一种方案,其次才是嵌入式加TFT彩屏或者触摸屏。所以,我把搞嵌入式简单等同于搞电脑编程的,事实上,搞过嵌入式的,大部分都赞同我的观点。  我感觉单片机的成长的高度可能有限,而嵌入式的高度更高,更利于以后职业的发展。&&单片机的成长空间是无限的,我做这行有六年多了,我觉得离天花板还很远,估计我这一辈子都不会满足的。单片机在程序上,你会越做越规范,越做越清晰,越做越模块化。在型号上,有各种各样的厂家,每个厂家又有各种各样的系列。在外围驱动上,那更加是五花八门。当你做的项目越多,你的资料库会越丰富,就像你往银行里存的钱一样。以后开发的项目速度会越来越快,稳定性越来越可靠。同时你的客户会越来越多。  单片机只是其中一种应该,如果是高端计算的话,用单片机肯定不够的。。我觉得楼主指的嵌入式应该是指嵌入式应用之类的吧,也就是不用懂得硬件方面内容的工作吧!?  楼主的话还是很有道理的,特别是像我这样从上位机应用软件这边做过来的过来人,越来越深刻的感受到。这个是中国的悲哀,也不见得做硬件,软硬结合的嵌入式就是比C++更有技术含量,或许在国外做C++的薪水还更高,但是在这悲催的天朝确实是做软件是青春饭,越做越没前途,特别是到了30岁以后都得转型。。。写过这么多程序,始终觉得应用软件是最难写的。。但是却又是被人看的低,工资又少,逻辑又复杂,还是最容易被加班。。悲哀,为那些当初存在着程序梦想的苦逼孩纸们感到悲哀。&&谢谢你的回复。你是目前回复字数最多的一个,  另外,我不知道大家是如何理解我这句话&单片机的功夫在单片机之外。&搞单片机不纯粹是一个技术工具,还是一个平台,在这个平台上,你会有机会接触各行各业的老板,各行各业的信息。在这个平台上,你可进可退,进,机会成熟的时候,可以做一些有量的产品。退,可以继续搞项目工程。(对于&单片机的功夫在单片机之外&的解释)  我们学校现在要我们参加嵌入式培训,好像很有前途的,单片机的经历对学习嵌入式有不少好处吧&&单片机的经历不但对学习嵌入式当然有帮助,对学习电脑都有帮助,因为这是最底层的东西。即使以后不搞单片机,对我们日常生活都有帮助,帮助你了解各种智能家电的原理。  呵呵。我也是工作多年的经验感慨,之前是做VC开发的,在有名的企业也干过,只是中国做软件的行业太不规范了,青春饭,看着之前公司的那些真正的软件高手30好几了都还啥都没混到还是个光棍,真的是备受打击。。没办法只能转行。。现在也有了些单片机和嵌入式的经验,但是也只是从程序方面去考虑这些项目,确实自己现在还是很不专业。前些时间去面试了很多公司,感觉一般做汽车电子,军工,通信,普通民用产品(比如美的)这类公司可能对单片机要求多点,因为可能考虑成本,实时性,稳定性方面的要求。但是一般做项目型的公司(就是从客户手上拿项目,或者是做特殊产品卖关系户),人家就不要搞单片机的,直接上ARM系统,能够把东西堆出来就行,确实感觉也是像楼主说的那样,这类公司不专业,没前途。因为是做关系客户,做的产品也不够好,能够应付过去就行了。。。。  但是我现在也还是有个疑惑。。现在也有很多同事是搞单片机的(51系列),跟他们聊天,包括网上看到的一些内容,感觉搞这个的也貌似没啥前途,做硬件的3年工作经验的比做软件3年工作经验的拿的钱少多了,我估计应该也是他们走的路线走错了。像楼主您这种层次的,说实话我真没见过,也不知道是咋样成长起来的。楼主能介绍些技术成长路线么?具体性的指点下我们这种想转型的菜鸟。。比如进哪类公司好,做神马行业好,看神马书好,学神马具体技术好....大概要花多长时间的成长期。。  弱弱的问下楼主,进工厂做这个,好么?&&谢谢你的关注。要解除这些疑惑,首先要弄清楚公司的本质。有两种公司,一种是做量的公司。另外一种是做设计的公司。  做量的公司,永远都是以市场业务为核心的,在这样的公司里名义上是做单片机开发,实际上是做维护或者技术支持,好一点的就是做做产品升级,一年之中能有一个新产品让你开发,就已经很不错了,在这样的环境里,换成谁,谁都觉得单片机没前途。  设计类的公司,老板肯定也是这一行的技术牛人,他在开公司的时候就想到了,把你们都培养成技术牛人,如果以后给不了满意的薪水,你们迟早要自己出来单干,很纠结,怎么办?铁打的营盘流水的兵,要么就不开公司,要开就要设计好合理的分工制度。分权才方便管理嘛。因此把公司分成家电组,工控组,医疗保健组,汽车电子组,安防组,消费玩具组,等等,然后又把技术人员分成软件工程师,硬件工程师,测试工程师。当然,接项目谈价钱等核心肯定还是老板牢牢捉住。编写程序的时候,公司肯定会要求按照固定的模式来操作。变量命名要统一,每一行代码要有中文注释等等,无论以后谁来都能接手。在这样的公司里上班,技术会有一定的积累,但是客户资源没有积累,空间还是有限。  综上所述,进公司上班只能是暂时的,想一辈子在别人的公司里有作为,是不可能的。技术成长路线很简单,就是接项目做,不断地接项目做,在实战中积累经验,丰富你的资料库,积累你的客户资源,积累你的行业口碑。  怎么样才能接到项目?当然是利用互联网来多发布广告,可以在58同城,赶集网,好喇叭,兼职网等网站发布免费的广告,自己也要建一个对外宣传的个人网站,500元左右就可以搞一个,很划算。当你的项目越做越多,老客户与相关的朋友就越多,以后这些老客户给你的项目,你都做不完。我现在基本很少发广告了,因为很多熟人会帮我介绍。  找单片机开发的工作难啊,要本科,要几年的工作经验,像我这样刚出大学的专科生情何以堪啊&&不怕。我就是大专毕业的,毕业于桂林航天工业高等专科学校,现在改名为桂林航天工业学院。我还认识一个在广州搞单片机的绝世高手,他叫林文,中专毕业的,他一年赚几十万,买车买房,老婆小孩都有了,才30多岁。事实上,等你接项目做的时候,没有人会关心你的学历,人家只在乎你的技术。我最近找了一个合伙人,他是初中毕业的,我现在要带他从零开始学, 他很有学习的欲望,我很相信他学好单片机一点问题都没有。我这个初中毕业的合伙人,他之前是在工地做包工头的,现在32岁了,照样从零开始跟我学单片机。  PLC与单片机呢 有什么区别于未来前景&&PLC内部就是由单片机做成的一个产品,用在工控大型设备上比较多。PLC能做的,单片机都能做,单片机能做的,PLC未必能做。单片机比PLC便宜多了。如果你现在还是在学习阶段,还不能明确未来工作是不是要用到PLC,那么,毫无疑问,学单片机绝对比PLC更加有前途。如果以后工作岗位上要用到,到时候再学PLC,也不会很难。  楼主你接的项目一般都是什么?&&工控,仪器等项目比较多。以前还帮别人做过上位机开发,不过最近,我不接上位机开发的项目了,我只做自己最擅长的部分,电子电路,也就是单片机这部分。    前辈 ,你是从什么时候开始学习单片机的?我现在三十岁,学习单片机会不会年纪大了?&&不会。我的合作伙伴今年32岁,初中毕业,照样从零开始学。江民软件的创始人,38岁才开始学计算机编程,关键看你的学习能力与态度。  我在学校的时候就开始学单片机了,而且当时我是我们专业里单片机最厉害的。毕业设计的时候,我是为数不多,真正做出实物来的学生。然后一毕业刚好就找到搞单片机开发的工作,我算是比较幸运的。想想我以前专业的同学,82个人,目前只有两个人搞单片机的,一个是我,一个是我的徒弟。  我也有个兄弟在深圳搞单片机,不过好久没联系了。我想哪天我也去深圳玩一玩,拜访一下吴总你,不介意吧?&&我没你想象的那么高大,我就是一个自由职业者,称不上吴总,别人都叫我小吴。我在网上可能比较活跃,平时是比较内向的,大部分时间都是自己关起门来搞电子。如果不是业务关系,你那么热情来拜访我,我真的是有压力,为了避免你对我的这种好感&见光死&,你还是别来。我还是要谢谢你那么看得起我。  我们要参加比赛,一放暑假十几个人都跑光了, 我一个女生每天去实验室学单片机,从零开始,前途一片迷茫。&&女生学单片机,很少,支持一下。  学校来了好几家嵌入式培训机构,鼓吹我们都去学&&在学校,基础与动手实践是最重要。对于电子专业来说,如果单片机还没学好,就去学嵌入式,真是不应该。  学什么都一样,最主要是脚踏实地的学,。楼主能推荐点相关的英文资料吗?我觉得专业性强一点的英文资料很欠缺&&要相关的英文资料干什么?如果是为了单片机而学英语,那么到处都是英文资料,随便下载一些IC的资料来阅读,不懂的就在百度上翻译。我以前读书的时候,是过了英语四级,出来工作之后,因为要看IC资料,一开始的时候,阅读还是很吃力,不过我凡是遇到不懂的单词,都会马上在百度上翻译看懂,虽然速度有点慢,有时候看懂一个IC资料,要花三四天时间,但是我坚持下来两三年后,阅读就不成问题了。关键还是要有耐心与坚持。  说的好,想当个体户就学单片机,单片机硬软并重,嵌入偏软件&&。精辟。嵌入式其实就是PC编程,跟电子没什么关系。是属于两个不同的领域。搞电子的发展方向不应该是嵌入式。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一如果说单片机就是一个相关信息你可能不会认可,其实它和我们用的电脑的在本质上没有区别,只是5步和100步的区别,想当年比尔.盖茨也给类似的东西搞过编程,当时机器的显示器是几个LED显示灯。
单片机到底是什么呢?就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
比尔.盖茨就是比尔.盖茨,他在关键的时候选择了开发操作系统而不是接着对各种程序开发下去,毕竟操作系统是一切软件的平台,就象地球是我们生存的平台。虽然现今运行的WIN系列的核心基础是MS-DOS,虽然...
如果说单片机就是一个相关信息你可能不会认可,其实它和我们用的电脑的在本质上没有区别,只是5步和100步的区别,想当年比尔.盖茨也给类似的东西搞过编程,当时机器的显示器是几个LED显示灯。
单片机到底是什么呢?就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
比尔.盖茨就是比尔.盖茨,他在关键的时候选择了开发操作系统而不是接着对各种程序开发下去,毕竟操作系统是一切软件的平台,就象地球是我们生存的平台。虽然现今运行的WIN系列的核心基础是MS-DOS,虽然MS-DOS是比尔.盖茨花钱买来的,开发MS-DOS的那个天才工程师后来在一个酒吧里面死于一次打架斗殴!英年早逝了,不过卖MS-DOS的那20000美元早就花光了。
如果比尔.盖茨不懂技术他也就不会去买什么MS-DOS,也就没有后来的他的微软帝国,这就是我们为什么要学习技术的主要原因,不懂技术可以做混世魔王或者别的什么,但是不会特别辉煌!从对待生命的态度来说,说到底,人其实只分为两种,第一种:悠哉游哉不求人生价值的实现,永远都达不到自我的真正自由;第二种:孜孜不倦以求成功,对失败的认识就是失败是成功之母!这就是学习一些专业技术的意义了,换句话说:生存还是死亡,做一只悠哉游哉快乐的猪其实已经是死了,因为那是毫无意义的快乐,是一种堕落的逃避的快乐,是对生命的放弃。
不好,已经跑题了。还是回到正题上来:
单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB 板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
其他答案(共1个回答)
、 RAM、 ROM 、 EPROM 并行及串行输入输出I/O接口电路、定时器/计数器、中断控制器等部件集成在一块半导体芯片上,构成一个完整的微型计算机。
单片机就是单片计算机.一般我们使用的微型计算机核心是CPU,它要插在有外围支持电路的主板上,才能工作.他是通用计算机.它具有CPU和外围电路、有存储器(内存),...
单片机已经无处不在,与我们生活更加相关并渗透入生活的方方面面。单片机的特点是小,也就是其集成的特性,其内部的结构是普通的计算机系统的简化。在增加一些外围电路之后...
ARM不是单片机,准确来讲ARM是一种处理器的IP核。英国ARM公司开发出处理器结构后向其他芯片厂商授权制造,芯片厂商可以根据自己的需要进行结构与功能的调整,因...
单片机的工作电压。如5V
没有哪个是最流行的,只有最适合你使用的。
如果要以用量来考虑,对于初学者而言使用做多的是Atmega16,因为这芯片有AVR-Atmega系列的所有特真,最适合...
答: 觉得路由器坏掉了或者是设置问题建议换个路由器比较好,如果我的回答对你有帮助请点好评谢谢。
答: 一些厂商开支支持多跳网络技术,或者用几个小路由器组成无线网络,以求覆盖到整个家庭
答: 需要WINDOWS 2000SERVER 发布
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区单片机、电路板
连接器、接插件
其他元器件
在单片机中嵌入操作系统的利弊
在单片机中嵌入操作系统的利弊
摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的嵌入式实时操作系统μC/OS-II的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在应用中应当注意的一些问题。  关键词:实时操作系统;μC/OS-II;单片机  引言  早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提
  摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的嵌入式实时操作系统μC/OS-II的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在应用中应当注意的一些问题。  关键词:实时操作系统;μC/OS-II;单片机  引言  早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所日益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的μC/OS-II。  μC/OS-II的特点  1.μC/OS-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。  2.μC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的是如果数据处理程序简单,这样做就未必合适。因为μC/OS-II要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。  3.μC/OS-II和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。μC/OS-II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,μC/OS-II把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是μC/OS-II即支持优先级法又支持时间片轮转法就更合适了。  4.μC/OS-II对共享资源提供了保护机制。正如上文所提到的,μC/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),μC/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量,而一旦得到了此信号量,那就只有等使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,例如当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信
息,从而可以避免这个现象。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以在使用μC/OS-II时,必须对所开发的系统了解清楚,才能决定对于某种共享资源是否使用信号量。  μC/OS-II在单片机使用中的一些特点  1.在单片机系统中嵌入μC/OS-II将增强系统的可靠性,并使得调试程序变得简单。以往传统的单片机开发工作中经常遇到程序跑飞或是陷入死循环。可以用看门狗解决程序跑飞问题,而对于后一种情况,尤其是其中牵扯到复杂数学计算的话,只有设置断点,耗费大量时间来慢慢分析。如果在系统中嵌入μC/OS-II的话,事情就简单多了。可以把整个程序分成许多任务,每个任务相对独立,然后在每个任务中设置超时函数,时间用完以后,任务必须交出CPU的使用权。即使一个任务发生问题,也不会影响其他任务的运行。这样既提高了系统的可靠性,同时也使得调试程序变得容易。  2.在单片机系统中嵌入μC/OS-II将增加系统的开销。现在所使用的51单片机,一般是指87C51或者89C51,其片内都带有一定的RAM和ROM。对于一些简单的程序,如果采用传统的编程方法,已经不需要外扩存储器了。如果在其中嵌入μC/OS-II的话,在只需要使用任务调度、任务切换、信号量处理、延时或超时服务的情况下,也不需要外扩ROM了,但是外扩RAM是必须的。由于μC/OS-II是可裁减的操作系统,其所需要的RAM大小就取决于操作系统功能的多少。举例来说,μC/OS-II允许用户定义最大任务数。由于每建立一个任务,都要产生一个与之相对应的数据结构TCB,该数据结构要占用很大一部分内存空间。所以在定义最大任务数时,一定要考虑实际情况的需要。如果定得过大,势必会造成不必要的浪费。嵌入μC/OS-II以后,总的RAM需求可以由如下表达式得出:  RAM总需求=应用程序的RAM需求+内核数据区的RAM需求+(任务栈需求+最大中断嵌套栈需求)•任务数,所幸的是,μC/OS-II可以对每个任务分别定义堆栈空间的大小,开发人员可根据任务的实际需求来进行栈空间的分配。但在RAM容量有限的情况下,还是应该注意一下对大型数组、数据结构和函数的使用,别忘了,函数的形参也是要推入堆栈的。  3.μC/OS-II的移植也是一件需要值得注意的工作。如果没有现成的移植实例的话,就必须自己来编写移植代码。虽然只需要改动两个文件,但仍需要对相应的微处理器比较熟悉才行,最好参照已有的移植实例。另外,即使有移植实例,在编程前最好也要阅读一下,因为里面牵扯到堆栈操作。在编写中断服务程序时,把寄存器推入堆栈的顺序必须与移植代码中的顺序相对应。   4.和其他一些著名的嵌入式操作系统不同,μC/OS-II在单片机系统中的启动过程比较简单,不像有些操作系统那样,需要把内核编译成一个映像文件写入ROM中,上电复位后,再从ROM中把文件加载到RAM中去,然后再运行应用程序。μC/OS-II的内核是和应用程序放在一起编译成一个文件的,使用者只需要把这个文件转换成HEX格式,写入ROM中就可以了,上电后,会像普通的单片机程序一样运行。   结语  由以上介绍可以看出,μC/OS-II具有免费、使用简单、可靠性高、实时性好等优点,但也有移植困难、缺乏必要的技术支持等缺点,尤其不像商用嵌入式系统那样得到广泛使用和持续的研究更新。但开放性又使得开发人员可以自行裁减和添加所需的功能,在许多应用领域发挥着独特的作用。当然,是否在单片机系统中嵌入μC/OS-II应视所开发的项目而定,对于一些简单的、低成本的项目来说,就没必要使用嵌入式操作系统了。  参考文献1 邵贝贝译. μC/OS-II 源码公开的实时嵌入式操作系统. 中国电力出版社2 Labrosse. μC/OS-II The Real Time Kernel &
  摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的嵌入式实时操作系统μC/OS-II的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在应用中应当注意的一些问题。  关键词:实时操作系统;μC/OS-II;单片机  引言  早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所日益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的μC/OS-II。  μC/OS-II的特点  1.μC/OS-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。  2.μC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的是如果数据处理程序简单,这样做就未必合适。因为μC/OS-II要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。  3.μC/OS-II和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。μC/OS-II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,μC/OS-II把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是μC/OS-II即支持优先级法又支持时间片轮转法就更合适了。  4.μC/OS-II对共享资源提供了保护机制。正如上文所提到的,μC/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),μC/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量,而一旦得到了此信号量,那就只有等使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,例如当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信
息,从而可以避免这个现象。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以在使用μC/OS-II时,必须对所开发的系统了解清楚,才能决定对于某种共享资源是否使用信号量。  μC/OS-II在单片机使用中的一些特点  1.在单片机系统中嵌入μC/OS-II将增强系统的可靠性,并使得调试程序变得简单。以往传统的单片机开发工作中经常遇到程序跑飞或是陷入死循环。可以用看门狗解决程序跑飞问题,而对于后一种情况,尤其是其中牵扯到复杂数学计算的话,只有设置断点,耗费大量时间来慢慢分析。如果在系统中嵌入μC/OS-II的话,事情就简单多了。可以把整个程序分成许多任务,每个任务相对独立,然后在每个任务中设置超时函数,时间用完以后,任务必须交出CPU的使用权。即使一个任务发生问题,也不会影响其他任务的运行。这样既提高了系统的可靠性,同时也使得调试程序变得容易。  2.在单片机系统中嵌入μC/OS-II将增加系统的开销。现在所使用的51单片机,一般是指87C51或者89C51,其片内都带有一定的RAM和ROM。对于一些简单的程序,如果采用传统的编程方法,已经不需要外扩存储器了。如果在其中嵌入μC/OS-II的话,在只需要使用任务调度、任务切换、信号量处理、延时或超时服务的情况下,也不需要外扩ROM了,但是外扩RAM是必须的。由于μC/OS-II是可裁减的操作系统,其所需要的RAM大小就取决于操作系统功能的多少。举例来说,μC/OS-II允许用户定义最大任务数。由于每建立一个任务,都要产生一个与之相对应的数据结构TCB,该数据结构要占用很大一部分内存空间。所以在定义最大任务数时,一定要考虑实际情况的需要。如果定得过大,势必会造成不必要的浪费。嵌入μC/OS-II以后,总的RAM需求可以由如下表达式得出:  RAM总需求=应用程序的RAM需求+内核数据区的RAM需求+(任务栈需求+最大中断嵌套栈需求)•任务数,所幸的是,μC/OS-II可以对每个任务分别定义堆栈空间的大小,开发人员可根据任务的实际需求来进行栈空间的分配。但在RAM容量有限的情况下,还是应该注意一下对大型数组、数据结构和函数的使用,别忘了,函数的形参也是要推入堆栈的。  3.μC/OS-II的移植也是一件需要值得注意的工作。如果没有现成的移植实例的话,就必须自己来编写移植代码。虽然只需要改动两个文件,但仍需要对相应的微处理器比较熟悉才行,最好参照已有的移植实例。另外,即使有移植实例,在编程前最好也要阅读一下,因为里面牵扯到堆栈操作。在编写中断服务程序时,把寄存器推入堆栈的顺序必须与移植代码中的顺序相对应。   4.和其他一些著名的嵌入式操作系统不同,μC/OS-II在单片机系统中的启动过程比较简单,不像有些操作系统那样,需要把内核编译成一个映像文件写入ROM中,上电复位后,再从ROM中把文件加载到RAM中去,然后再运行应用程序。μC/OS-II的内核是和应用程序放在一起编译成一个文件的,使用者只需要把这个文件转换成HEX格式,写入ROM中就可以了,上电后,会像普通的单片机程序一样运行。   结语  由以上介绍可以看出,μC/OS-II具有免费、使用简单、可靠性高、实时性好等优点,但也有移植困难、缺乏必要的技术支持等缺点,尤其不像商用嵌入式系统那样得到广泛使用和持续的研究更新。但开放性又使得开发人员可以自行裁减和添加所需的功能,在许多应用领域发挥着独特的作用。当然,是否在单片机系统中嵌入μC/OS-II应视所开发的项目而定,对于一些简单的、低成本的项目来说,就没必要使用嵌入式操作系统了。  参考文献1 邵贝贝译. μC/OS-II 源码公开的实时嵌入式操作系统. 中国电力出版社2 Labrosse. μC/OS-II The Real Time Kernel &
型号/产品名
泛联科技有限公司
泛联科技有限公司}

我要回帖

更多关于 什么是单片机最小系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信