在嵌入式系统设计过程中,选用操作系统应注意哪些问题

作者&投稿:茶绍 (若有异议请与网页底部的电邮联系)
嵌入式系统设计过程中,选用操作系统应注意哪些问题~

嵌入式应用系统开发可包括以下过程:1.原理设计及论证 对嵌入式系统的硬件原理进行设计,主要涉及到使用什么方案、器件的选型 、器件之间的连接关系、系统电磁、发热等方面的考虑,以及对功能性能本身的实现原理的实现,同时还要考虑后期的软件设计以及产品维护等情况。 对于软件的考虑还需要结合设计目标考虑是否使用操作系统,如果项目软件规模较小可以不使用系统,系统复杂、或有现成的类似方案,或有熟练的使用系统的开发人员,则可以考虑嵌入操作系统。 若有可能,对设计结果(原理图)进行论证,改进其中不合理或者有问题的部分,纠正缺点。2.布板将原理图转换为PCB图,主要涉及到器件布局、布线等工作。最终结果是可以生产的板图。工作完成后,需要将板图或按厂家要求导出相应格式的文件提交给厂家生产。3.设计软件当原理完成后,就可以按照原理图进行软件的设计了。一般情况下如果PCB板未完成生产和焊接,只能使用仿真环境进行软件编写和调试。有PCB板焊接好的样板后,就可以在实际环境下调试软件了。另外一种方法是使用现成的开发板,降低了原理和布板环节的风险和时间成本 。4.测试软件和硬件在调试过程中可能会需要反复修改,即便正式版定型后,也需要进行批量测试,测试的项目可能包含电磁兼容性、功率、软件功能和性能等项目。若有不能通过的项目,需要进行项目修改后再次进行,直到通过为止。

要把软件做得非常灵活又要便于维护是一个很困难的事情。灵活的软件他的结构就复杂,维护起来就困难。有得必有失,关键就在于如何处理这两者,使得大于失。软件的设计开发应遵循以下六大原则:1. OCP全称:“Open-Closed Principle” 开放-封闭原则说明:对扩展开放,对修改关闭。优点:按照OCP原则设计出来的系统,降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能。增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试。如何实现“开-闭”原则在面向对象设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。换言之,定义一个一劳永逸的抽象设计层,允许尽可能多的行为在实现层被实现。解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。 对一个事物抽象化,实质上是在概括归纳总结它的本质。抽象让我们抓住最最重要的东西,从更高一层去思考。这降低了思考的复杂度,我们不用同时考虑那么多的东西。换言之,我们封装了事物的本质,看不到任何细节。在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。对实体进行扩展时,不必改动软件的源代码或者二进制代码。关键在于抽象。2. LSP全称:“Liskov Substitution Principle” 里氏代换原则说明:子类型必须能够替换它们的基类型。一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。3. DIP全称:“Dependence Inversion Principle”依赖倒置原则说明:要依赖于抽象,不要依赖于具体。客户端依赖于抽象耦合。抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。优点:使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。怎样做到依赖倒置?以抽象方式耦合是依赖倒转原则的关键。抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证在任何引用到基类的地方都可以改换成其子类,因此,里氏代换原则是依赖倒转原则的基础。在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处便十分有限,这时可以用具体耦合反而会更好。层次化:所有结构良好的面向对象构架都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供一组内聚的服务。依赖于抽象:建议不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:1、任何变量都不应该持有一个指向具体类的指针或者引用。2、任何类都不应该从具体类派生。3、任何方法都不应该覆写它的任何基类中的已经实现的方法。4. ISP全称:“Interface Segregation Principle” 接口隔离原则说明:使用多个专一功能的接口比使用一个的总接口总要好。从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。过于臃肿的接口是对接口的污染,不应该强迫客户依赖于它们不用的方法。优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。如何实现接口隔离原则不应该强迫用户依赖于他们不用的方法。1、利用委托分离接口。2、利用多继承分离接口。5. CARP or CRP全称:“Composite/Aggregate Reuse Principle” 合成/聚合复用原则 or “Composite Reuse Principle” 合成复用原则说明:如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要自己再重新创建。新对象通过向这些对象的委派达到复用已有功能的。简而言之,要尽量使用合成/聚合,尽量不要使用继承。优点:1) 新对象存取成分对象的唯一方法是通过成分对象的接口。2) 这种复用是黑箱复用,因为成分对象的内部细节是新对象所看不见的。3) 这种复用支持包装。4) 这种复用所需的依赖较少。5) 每一个新的类可以将焦点集中在一个任务上。6) 这种复用可以在运行时间内动态进行,新对象可以动态的引用与成分对象类型相同的对象。7) 作为复用手段可以应用到几乎任何环境中去。缺点:就是系统中会有较多的对象需要管理。6. LOD or LKP全称:“Law of Demeter” 迪米特原则 or “Least Knowledge Principle” 最少知识原则说明:对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。如何实现迪米特法则迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。3) 在类的设计上,只要有可能,一个类应当设计成不变类。4) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。


还有个单一职责原则:
SRP简介(SRP--Single-Responsibility Principle): 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化。 使用SRP注意点: 1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责;
2、在没有变化征兆的情况下应用SRP或其他原则是不明智的;
3、在需求实际发生变化时就应该应用SRP等原则来重构代码;
4、使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;
5、如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构; SRP优点: 消除耦合,减小因需求变化引起代码僵化性臭味

嵌入式应用系统开发可包括以下过程:
1.原理设计及论证
对嵌入式系统的硬件原理进行设计,主要涉及到使用什么方案、器件的选型 、器件之间的连接关系、系统电磁、发热等方面的考虑,以及对功能性能本身的实现原理的实现,同时还要考虑后期的软件设计以及产品维护等情况。
对于软件的考虑还需要结合设计目标考虑是否使用操作系统,如果项目软件规模较小可以不使用系统,系统复杂、或有现成的类似方案,或有熟练的使用系统的开发人员,则可以考虑嵌入操作系统。
若有可能,对设计结果(原理图)进行论证,改进其中不合理或者有问题的部分,纠正缺点。
2.布板
将原理图转换为PCB图,主要涉及到器件布局、布线等工作。最终结果是可以生产的板图。工作完成后,需要将板图或按厂家要求导出相应格式的文件提交给厂家生产。
3.设计软件
当原理完成后,就可以按照原理图进行软件的设计了。一般情况下如果PCB板未完成生产和焊接,只能使用仿真环境进行软件编写和调试。有PCB板焊接好的样板后,就可以在实际环境下调试软件了。
另外一种方法是使用现成的开发板,降低了原理和布板环节的风险和时间成本 。
4.测试
软件和硬件在调试过程中可能会需要反复修改,即便正式版定型后,也需要进行批量测试,测试的项目可能包含电磁兼容性、功率、软件功能和性能等项目。
若有不能通过的项目,需要进行项目修改后再次进行,直到通过为止。


对于机顶盒的开发,请你结合嵌入式系统的设计流程叙述一下将采取的设计...
7,第一版出来后就根据测试计划开始测试了,当然前提是软体部门已经搞定一版可供测试的软体。第一版问题都会比较多,慢慢享受debug的过程吧。过程中别忘了把原厂拉进来,还是那句话,别想着自己一个人搞定。8,测试完了,debug完了(理想状态),就开始第二版了,线路图,layout修改,软体修改,机构...

[嵌入式技术]如何规范写嵌入式系统开发文档_嵌入式开发要求
本文打算描述嵌入式系统和实时系统的关键特性,并探讨在选择或开发硬件和软件组件的基础上开发高效嵌入式系统的解决方案,同时详细说明嵌入式系统和实时系统开发所特有的关键工艺技术 我所知的realtime-uml的设计软件:TNI公司的Embedded,Rational:RoseRTiLogix::Artisan:Tau TNI公司的Embedded全流程解决方案,...

嵌入式开发要学什么?嵌入式开发要学哪些东西?
还有一些像ARM9,或者CortexA8、A9系列的可以运行Linux或者安卓操作系统的嵌入式软件系统开发,由于需要学习的内容较多,学习时间较长,那么学习起来就有一定的难度,工资也相对高一些。课程内容主要包括:①C,Java核心编程:c语言核心编程,Java核心编程;②Linux核心操作与算法:Linux系统使用,Linux-c编程...

嵌入式系统的定义是什么?有哪三个基本要素?
嵌入式系统的定义是什么?有哪三个基本要素?相关内容如下:嵌入式系统是一种特定类型的计算机系统,它被设计用来执行特定的任务或控制特定的设备。与通用计算机不同,嵌入式系统通常被嵌入到其他设备或系统中,以完成特定的功能。嵌入式系统的定义包括以下三个基本要素:1. 特定应用:嵌入式系统是为特定应用...

软考嵌入式系统设计师考什么?
软考嵌入式系统设计师,包含两个考试科目:基础知识与应用技术;基础知识科目在上午考试,应用技术科目在下午考试。软考嵌入式系统设计师各科目考试内容有所不同。根据软考嵌入式系统设计师考试大纲,各科目考试范围如下:考试科目1:嵌入式系统基础知识1.计算机科学基础1.1数制及转换·二进制、八进制、十进制和十六进制等常用数...

嵌入式开发和底层开发有什么区别两者的概念是什么
嵌入式开发涉及到为这些系统设计和编写软件,以实现特定的功能。这类开发通常面向资源受限的硬件,需要考虑功耗、内存占用和实时性等方面的问题。常见的嵌入式开发语言包括C、C++,而嵌入式系统的软件可以包括实时操作系统(RTOS)或裸机编程。底层开发:底层开发是指在计算机系统中进行与硬件直接交互的开发过...

简述嵌入式系统
嵌入式计算机系统同通用型计算机系统相比具有以下特点:1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的 系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内 部,从而有利于嵌入式系统设计趋于...

单片机和嵌入式系统有啥区别?
单片机与嵌入式系统的区别:(1)单片机基本结构 单片机由运算器、控制器、存储器、输入输出设备构成。(2)嵌入式系统成部分:嵌入式系统一般由以下几组嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序。嵌入式系统设计的第一步是结合具体的应用,综合考虑系统对成本、性能、可扩展性、开发周期...

什么是嵌入式操作系统?
嵌入式系统的发展对嵌入式操作系统提出了更高的要求。因此,对嵌入式操作系统的结构、设计、用户界面等诸多方面进行深入研究,将有助于嵌入式系统的应用和发展。 2.嵌入式操作系统的特点 2.1 嵌入式系统的开发人员对操作系统的依赖性 早期的硬件设备很简单,软件的编程和调试工具也很原始,与硬件系统配套的软件都必须从头...

嵌入式系统硬件初始化过程分为三个主要环节,按照自下而上、从硬件到软 ...
【答案】:C 嵌入式系统硬件初始化是设计一个完整的板级支持包(BSP)需要完成的工作之一,它可以分为3个主要环节,按照自下向上、从硬件到软件的次序依次为片级初始化、板级初始化和系统级初始化。

乔口区19852128605: 在嵌入式系统设计过程中,选用操作系统应注意哪些问题 -
潜券复方: 嵌入式应用系统开发可包括以下过程:1.原理设计及论证 对嵌入式系统的硬件原理进行设计,主要涉及到使用什么方案、器件的选型 、器件之间的连接关系、系统电磁、发热等方面的考虑,以及对功能性能本身的实现原理的实现,同时还要考...

乔口区19852128605: 嵌入式系统在硬件设计,操作系统的选择,以及软件的设计要遵循哪些原则 -
潜券复方: 要把软件做得非常灵活又要便于维护是一个很困难的事情.灵活的软件他的结构就复杂,维护起来就困难.有得必有失,关键就在于如何处理这两者,使得大于失.软件的设计开发应遵循以下六大原则:1. OCP全称:“Open-Closed Principle...

乔口区19852128605: 嵌入式应用系统开发过程包括那些,操作系统的移植是必要的吗 -
潜券复方: 嵌入式应用系统开发可包括以下过程:1.原理设计及论证 对嵌入式系统的硬件原理进行设计,主要涉及到使用什么方案、器件的选型 、器件之间的连接关系、系统电磁、发热等方面的考虑,以及对功能性能本身的实现原理的实现,同时还要考...

乔口区19852128605: 嵌入式为什么要有操作系统
潜券复方: 在8位或16位嵌入式系统应用中,由于CPU资源量比较少,任务比较简单,程序员可以在应用程序中管理CPU资源,而不一定要专用的系统软件.如果嵌入式系统比较复杂并且采用32位CPU时,情况就完全不同了.32位CPU的资源量非常大,...

乔口区19852128605: 嵌入式系统开发目前普遍使用的操作系统在哪里下载比较好,谢谢 -
潜券复方: 现在基于32位处理器的linux操作系统使用 2.4.X或2.6.x内核,这是针对带有mmu处理器的操作系统,若您的处理器没有mmu,则可以选择uclinux,uclinux是针对不带mmu的处理器而专门设计的!若想搞嵌入式开发,最好手里有开发板,开发板的配套光盘里你需要的内核、源码、等丰富的资源!不同厂商的产品资料不同,基本上都是围绕开发板的!

乔口区19852128605: 对于嵌入式系统的性能分析,通常在下列哪些不同的抽象层次上? - 上学...
潜券复方: 嵌入式系统的核心选择非常重要.要选一款刚好性能够用、能力稍稍超过要求的芯片,这个需要从硬件的速度、外围设备丰富程度、可扩展性、可加密性等方面综合考虑,在同类芯片中横向选择最市场化的(最常见、容易购买、价格低、国内厂...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网