嵌入式软件规范 软件工程(嵌入式)
摘要:什么是嵌入式软件开发 嵌入式软件开发主要针对计算能力有限的CPU进行的软件开发,比如INTEL的CPU芯片时钟频率可以达到1G HZ,虽然INTEL的CPU运算能力强大,但是体积大,发热大,不适合使用...
发布日期:2021-05-02什么是嵌入式软件开发
嵌入式软件开发主要针对计算能力有限的CPU进行的软件开发,比如INTEL的CPU芯片时钟频率可以达到1G HZ,虽然INTEL的CPU运算能力强大,但是体积大,发热大,不适合使用在某些场合,比如你的手机里面安装一个奔腾芯片再加一个大风扇,可能吗?这个时候就要使用一些体积小,功耗低,运算能力有限的专用CPU,比如手机上使用的CPU处理器大概频率在30M左右(好象是这个频率),在这种CPU上运行的操作系统就是嵌入式操作系统,这些操作系统占用比较小的硬件资源,但是却有相对较高的执行调度效率,我理解是这样的应该从应用的场合来定义嵌入于宿主设备,智能地完成宿主设备功能的计算机就是嵌入式计算机,或简称为嵌入式。
嵌入式计算机的构成:可以是单片的微控制器(MC-micro-controller),在我国习惯于称做单片机;也可以是由微处理器(MP-microprocessor)另加存储器及外部设备构成;还可以在MC/MP的基础上附加数字信号处理器(DSP)核心部件,构成多核MP/MC。
新一代嵌入式计算机的主要特征:是继承了整个PC机时期的技术成就,特别是进入90年代后的全球万维网(Web)技术(产品有可接入万维网的手持式PDA设备等)和多媒体技术(产品有高质量数字音响、数字视盘播放器,数码静态相机、数码视频摄像机等等)。
这类嵌入式的目标是想把桌面PC机上成熟的技术拆解下来,放入手持设备或移动设备,供用户随时随地进行消费。
全球网中行之有效的众多通信协议,多媒体的MP3、JPEG、MPEG等所采用的标准数据格式及各种库函数都使用32位格式和32位的编程软件,所以嵌入式也注定要使用32位的微处理器。
为顺应形势发展的需要,32位手持设备用的嵌入式操作系统应运而生,著名的有Windows CE、Epoch、 Palm OS等等,可见今日嵌入式的立点水平是很高的。
新一代嵌入式主要面向手持或移动消费类设备,电池供电和低价位是重要考虑因素,这就从根本上决定了它不可能照搬PC机上原来使用的微处理器。
下面先介绍嵌入式32位微处理器的技术进步,然后再举一些新型嵌入式微处理器的实例,使读者对新一代嵌入式有一个较清晰的认识。
由上述可见,当前嵌入式所用MP多是32位RISC DSP双核或RISC/DSP单核结构。
过去比较著名的RISC生产厂家起着基石作用。
许多新兴的嵌入式厂家购买他们的RISC专利嫁接到自己的DSP核上。
一些著名的生产CISC微处理器的厂家不甘心丢失嵌入式市场,也纷纷向RISC及DSP靠拢。
从1981年Ready System发展了世界上第1个商业嵌入式实时内核(VRTX32),到今天已经有近20年的历史。
20世纪80年代的产品还只支持一些16位的微处理器,如68k,8086等。
这时候的RTOS还只有内核,以销售二进制代码为主。
当时的产品除VRTX外,还有IPI公司的MTOS和80年代末ISI公司的PSOS。
产品主要用于军事和电信设备。
进入20世纪90年代,现代操作系统的设计思想,如微内核设计技术和模块化设计思想,开始渗入RTOS领域。
老牌的RTOS厂家如Ready System(在1995年与Microtec Research合并),也推出新一代的VRTXsa实时内核,新一代的RTOS厂家Windriver推出了Vxwork。
另外在这个时期,各家公司都有力求摆脱完全依赖第三方工具的制约,而通过自己收购、授权或使用免费工具链的方式,组成1套完整的开发环境。
例如,ISI公司的Prismt、著名的Tornado(Windriver)和老牌的Spectra(VRTX开发系统)等。
进入20世纪90年代中期,互联网之风在北美日渐风行。
网络设备制造商、终端产品制造商都要求RTOS有网络和图形界面的功能。
为了方便使用大量现存的软件代码,他们希望RTOS厂家都支持标准的API,如POSIX, Win32等,并希望RTOS的开发环境与他们已经熟悉的UNIX,Windows一致。
这个时期代表性的产品有Vxwork,QNX, Lynx和WinCE等。
嵌入式软件 c语言编码规范有用吗
嵌入式软件开发偏重于硬件,软件开发偏重于软件,嵌入式软件主要是将软件植入嵌入式系统中,而软件开发是将软件开发出来直接在电脑上可操作。
嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求软件代码紧凑,可靠,大多对实时性有严格要求。
嵌入式软件开发应该学什么
这样的条件就可以学习嵌入式了,现在,是否懂硬件其实关系不大,以国内顶级的实训环境和企业氛围规范、电子、信息等专业),以就业为导向,以技能为核心嵌入式的学习并不像想象的那么难,主要是因为有硬件开发板,一般人敬而远之,其实对于理工科的本科毕业生(如自动化,只是现在没有大量的人才供他们挑选。
对于求职的毕业生而言,嵌入式领域是一个较新的空间,很多技术出现的时间不长,多数人没有条件接触或进入该行业,需要接受专门的培训与专业人员的指导,才能了解具体的开发流程。
因此,增加项目经验,只有这样才能弥补横在企业与求职者间的鸿沟,安博中南区牛耳IT实训基地率先推出了嵌入式软件工程师培养工程,并整合众多企业用人需求和计划,要进入嵌入式系统开发领域工作,必须参加一些专业培训机构的课程,并寻找项目实践的机会,懂一定的C语言知识。
在众多的培训机构中,嵌入式的人才很多都是半路出家,由其他的行业转行过来,企业其实是不满意的,由于没有系统掌握嵌入式的相关知识,对于这部分人、提升学员职业素质,从真实案例入手,引入国际著名厂商、机构培训产品,不断开发适应企业人才需求的培训项目,为中国IT业培养和输送嵌入式软件工程师,以及其他IT行业急需的实战型、综合型人才 展开
公司软件项目开发流程公司软件项目比较规范的开发流程是什么,每个...
一般来说跟硬件相关的都是用c c++写的。
你还是看下百科吧嵌入式软件的分类 1. 嵌入式操作系统:嵌入式操作系统EOS(Embedded Operating System)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。
EOS负责嵌入系统的全部软、硬件资源的分配、调度工作,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
嵌入式操作系统通常以商业运作为主,从上世纪80年代起,商业化的嵌入式操作系统开始得到蓬勃发展。
现在国际上有名的嵌入式操作系统有Windows CE 、Palm OS 、Linux 、VxWorks 、pSOS、 QNX、OS-9 、LynxOS等,已进入我国市场的国外产品有WindRiver、Microsoft、QNX和Nuclear等。
我国嵌入式操作系统的起步较晚,国内此类产品主要是基于自主版权的Linux操作系统,其中以中软Linux、红旗Linux、东方Linux为代表。
2. 嵌入式支撑软件:支撑软件是用于帮助和支持软件开发的软件,通常包括数据库和开发工具,其中以数据库最为重要。
嵌入式数据库技术已得到广泛的应用,随着移动通信技术的进步,人们对移动数据处理提出了更高的要求,嵌入式数据库技术已经得到了学术、工业、军事、民用部门等各方面的重视。
嵌入式移动数据库或简称为移动数据库(EMDBS)是支持移动计算或某种特定计算模式的数据库管理系统,数据库系统与操作系统、具体应用集成在一起,运行在各种智能型嵌入设备或移动设备上。
其中,嵌入在移动设备上的数据库系统由于涉及数据库技术、分布式计算技术,以及移动通讯技术等多个学科领域,目前已经成为一个十分活跃的研究和应用领域。
国际上主要的嵌入式移动数据库系统有Sybase、Oracle等。
我国嵌入式移动数据库系统以东软集团研究开发出了嵌入式数据库系统OpenBASE Mini为代表。
由于我国在 3. 嵌入式应用软件:嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。
由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。
嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。
目前我国市场上已经出现了各式各样的嵌入式应用软件,包括浏览器、Email软件、文字处理软件、通讯软件、多媒体软件、个人信息处理软件、智能人机交互软件、各种行业应用软件等。
嵌入式系统中的应用软件是最活跃的力量,每种应用软件均有特定的应用背景,尽管规模较少,但专业性较强,所以嵌入式应用软件不象操作系统和支撑软件那样受制于国外产品垄断,是我国嵌入式软件的优势领域。
[嵌入式技术] 如何规范写嵌入式系统开发文档
一个系统设计完成以后,它不应该仅仅是一些源代码,还应该包括各种各样的开发文档。
这对以后自己对系统的维护和升级都有很好的参考作用。
一个系统开发完成,它究竟应该包含那些文档,这些文档一般是怎么完成的,应该包含哪些内容?这就是系统开发的规范化问题。
系统开发的规范化不仅有利于自己,也有利于公司,更有利于新手。
规范化的设计让工程师工作更高效,这已经是不用争论的事实。
现在在大型软件工程开发方面,这已经做得相当好。
但在单片机和嵌入式系统的开发方面,规范化的工作却有待我们共同探讨。
在国内,一些公司的研发人员也有一种误导——快写代码,快让我看见功能,不要你做其他的,完成功能就好。
这些都把我们的设计导入一种误区:大部分时间都在写代码,改代码。
嵌入式实时系统复杂度的提高,设计工程师在定义和分析系统初始要求时必须认真考虑软硬件的协同关系。
通常设计工程师还必须权衡系统的灵活性、速度、成本、计划和可用工具之间的关系。
本文打算描述嵌入式系统和实时系统的关键特性,并探讨在选择或开发硬件和软件组件的基础上开发高效嵌入式系统的解决方案,同时详细说明嵌入式系统和实时系统开发所特有的关键工艺技术。
我所知的realtime-uml的设计软件:TNI公司的ControlBuild Embedded ,Rational :Rose RTiLogix :RhapsodyArtisansw :Artisan StudioTelelogic :Tau.TNI公司的ControlBuild Embedded全流程解决方案,涵盖了整个嵌入式控制软件设计的全部过程:从用户需求、规格说明、设计、代码生成、仿真校验直到验收。
在设计的最初阶段使用可执行的(形式化的)、可视化的规格说明书和用户进行沟通,消除设计人员和用户之间的歧义。
利用仿真对设计进行校验测试,并在整个设计过程中进行递进式的校验,在设备安装之前发现可能存在的大量设计错误和问题,大大缩短现场调试的时间支持功能性设计, 图形化IEC61131-3 语言,符合EN50128 安全标准重复使用设计 自动生成设计文档 容易使用,快速建模 为各种软、硬件平台自动生成C 代ROSE进行分析设计RoseRT是Rational 在收购objecttime以后的推出的,该工具主要是基于一个叫做ROOM的模式,所有可执行RoseRT的界面感觉比较复杂,代码生成也可以,但效率无法评价。
仅提供了系统的动态和静态模型文档。
Rhapsody目前国外好多大公司都是用Rhapsody进行嵌入系统的建模,进行软件设计的。
Rhapsody是一个模型驱动的开发环境,它以UML2.0为基础,使大小不同的项目都能够通过可视化建模的方法分析、设计、实现和测试自己的工作,构建和配置实时嵌入式应用。
Rhapsody专为嵌入式市场的特殊需求设计和优化,包括实时系统的行为语义,实时操作系统的支持,无操作系统的实时应用支持,遗产代码的逆向工程、设计级的调试、高效的代码自动生成(C、C++、Ada、Java)和文档自动生成等。
很不错的工具,可以把UML图直接转换成C++或C代码。
但它也会在系统中引入它的一个程序框架,用以支持顺序图、状态图的运行、调式和仿真。
它带来的好处显而易见,但同时,它对很多嵌入式应用又形成阻力。
例如,如果你新增功能是在原来的已有的过程式软件包上打个补丁,新的框架和原系统的怎么配合?那么你得真正消化和吸收这个附加的框架,这个难度应该不底于探索MFC结构。
对于一个完全新的项目,Rhapsody很不错。
对于扩功能打补丁的项目,三思呀。
不知道Rose Real-Time 在这方面的表显如何?Rhapsody 有很多 diagrams, 设计人员直接通过画图,code generation 就生成优质代码,很有意思.Rhapsody 真正把开发人员与设计人员区别开来,这就要求设计人员完全按照软件工程思想来实施,这对项目无疑是个很好的维护可以有N多的 OS adapter , 方便移植.总的来说对于开发上层应用的项目来说
嵌入式高手请进 软件 硬件
1,、硬件有 前途,但是足有前途的是软硬件兼修的;2、电子工程、通信工程等偏硬件专业,软件、计算机专业;大学的话,排名前几的都还不错。
考研的话也很有帮助,尤其在找工作方面;但是学这个专业的,如果没有点自主学习的精神,再好的大学也是白搭,这也是大学中最需要学习的一样东西。
您对这个真的产生兴趣的时候,专业学校学历都不会是障碍,现在外面的许多培训机构都还是不错,只是贵了点。
3、至于学习步骤嘛,大一跟老师学习咯,基础课还是认真学,对后面深入学习很有帮助;然后就是多上论坛 ,去图书馆借些这方面书籍,能懂多少懂多少,对这一行多了解些,不然说得多您不一定能领会;还有时间的话,就去参加比赛,学校一定会组织的,这种机会不要放过,因为跟一群人一起学习,绝对比孤军奋战效果好;学的多啦,您自己就可以为别人回答您现在提这样的问题,毕竟不同的人总有自己接受知识的特点。
4、如果您现在还没有上大学的话,那就不要担心什么企业工作之类的啦,想的太远不是个好习惯;您都还不清楚自己到底喜不喜欢这一行,想那么多干啥;世界上还有很多东西值得您去喜欢,眼界放开点,兴趣最重要。
下面附上一篇,能看懂多少,看你啦:嵌入式以下几方面:(1)嵌入式硬件(2)BSP bootloader(3)内核 驱动(4)上层应用 以我在嵌入式系统的从业8年多的情况大体是这样,仅供参考 如果在一个层面上有六年及以上工作经验的话,以六年为准。
(1)嵌入式硬件 ---8000-12000,正常价为10000(2)BSP bootloader ---10000-20000,正常价为15000(3)内核驱动 ---10000-15000,正常价为12000(4)上层应用 ---8000-10000,正常价为8000 别外和行业还有关系,比如,做手机公司还要相对高些。
这些情况一般是在外企公司或国内大公司的情况。
小公司很少能开到这个价。
因此说什么公司用什么样的人,是有一定道理的。
还有这四层都是很有前途的,关键要根据自己的特长选择做那一层面,一个学计算机专业的人去搞硬件有点不太好搞,在基础这块就要比电子工程类专业的欠缺。
以上这些仅供参考,但目前国内能真正在嵌入式系统这块做上六年的都很少很少。
国内嵌入式系统是从当年的Motorola的68K体系结构的DragonBall开始的,那个时间就是1999年,2000年底-2001年夏才达到了最高时期,以后才是ARM开始接替。
嵌入式软件方面最重要的课程包括:(1) 嵌入式微处理器结构与应用 这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。
我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。
若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书(xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。
有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。
还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。
其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。
一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。
在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。
特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。
当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。
很多嵌入式职位招聘时都要求熟悉汇编。
(2) 嵌入式操作系统类课程 除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。
(3) 嵌入式开发的其它相关软件课程 搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。
主要的相关领域包括:A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。
为此,我院已预订了一位能开设数字图像处理课程的博士。
B、通信协议及编程技术:这包括传统的TCP/IP协议和...
什么是嵌入式软件和非嵌入式软件
嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造。
嵌入式系统是指用于执行独立功能的专用计算机系统。
它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。
嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以此满足系统对功能、成本、体积和功耗等要求。
最简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的ROM 中仅有实现单一功能控制程序,无微型操作系统。
复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能。
实质上与PC的区别仅仅是将微型操作系统与应用软件嵌入在ROM、RAM 和/或FLASH存储器中,而不是存贮于磁盘等载体中。
很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。
非嵌入式软件和嵌入式软件正好相反,其是指可以跨平台甚至跨系统使用的软件系统。
...