《 嵌入式系统设计与实践》一一第2章 创建系统架构

**第2章
创建系统架构**
即使是小型嵌入式系统也有很多细节部分,在哪里可以应用模式?这有一定的困难。这需要我们对整个系统有个比较好的了解,如哪些部分有直接的解决方案,哪些部分包含隐藏的依赖关系等。优秀的设计通常源于一个好的设计,并对其进行优化,理想情况下,设计是在开始着手实现之前进行的。系统架构图就是一个很好的理解系统的途径,也是软件设计的起点。
从零开始一个项目是比较难的。因为刚开始的时侯很难把一个产品的功能定义清楚,所以可能需要经过好几轮的精心推敲之后才能确定一些思路。当我们在白板上写下产品的功能后,就可以开始思考如何设计软件架构。硬件工程师也做着同样的事情(虽然他们关注不同的领域,但理想情况是他们可以和软件设计师协同设计)。很快,就会有一个软件架构设计和电路原理图。根据开发者已有的条件,刚开始设计的一些项目可能会基于其他一些项目已经有的硬件平台,在此基础上做一些小的改动。
嵌入式系统严重依赖硬件环境。不稳定的硬件会导致软件缺陷重重,从而极不稳定。在本节中,我们将首先从一般硬件的层面上构建系统架构,然后再上升到功能层面。另外一种不同(但更为常见)的方法是,首先确定系统功能,然后再决定需要哪些硬件来提供支持。我之所以从低层硬件接口软件开始,就是要强调这样一种观点,即最终的产品依赖稳定和可用的硬件特征。
当以这种自底向上的方法开始设计时,必须铭记在心的是这里的硬件只是原型。虽然最终得到硬件的规格要求,但在开始的阶段不妨先认为有些硬件已经可以满足要求了(比如,某些处理器可以完成手头的任何工作)。在一头扎进具体设计细节之前,可以以这个原型硬件为基础逐步设计系统、软件和硬件的架构。

时间: 2024-10-06 03:49:12

《 嵌入式系统设计与实践》一一第2章 创建系统架构的相关文章

《 嵌入式系统设计与实践》一一导读

前言 我热爱嵌入式系统.当我第一次让马达转动时,我着迷了.我很快从单纯软件开发进入到我可以触摸真实物体的一个领域.在我离开软件开发的时候,设计模式注1开创性的工作已经完成.我和我的团队通读了这本书,讨论这些模式以及可以在哪儿应用这些模式.随着我进一步深入研究嵌入式系统,我发现不能处理C++继承的编译器,在处理器极其有限的内存中去实现模式,以及一系列新的问题使设计模式看起来难以应用.但是我从来没有忘记在工程化方法中存在着模式.通过学习识别模式,我们可以反复地使用这些健壮的解决方案.本书大部分内容着

《 嵌入式系统设计与实践》一一2.2 从框图到架构

2.2 从框图到架构 至此,我们已经有了三种不同的架构设计图,那么下一步怎么做呢?也许会认为开始的时候有些代码没有考虑到,又或者我们会进一步去找出这些模块之间是如何交互的.在开始讨论这些交互(接口)之前,花一些时间讨论一件事情是值得的,那就是:哪些部分将发生变化?在目前这个阶段,所有的事情都是实验性的,因此系统的任何一个部分都可能发生变化. 给出了产品需求规格后,我们可能对系统要实现什么功能比较有信心.在我们的例子里,不管最终要做什么,都需要一个显示器,将位图数据发送给它最好的方式就是闪存.很多

《 嵌入式系统设计与实践》一一2.4 延伸阅读

2.4 延伸阅读 本章中讨论了众多设计模式中的一些模式.本书其他部分也会讨论一些设计模式,但是本书是关于嵌入式系统的,而不是关于设计模式的.试着从以下这些资源中选择一个进行进一步研究,以便更多地了解标准的软件设计模式. Gamma, Erich, Richard Helm, Ralph Johnson和 John Vlissides. 1995. 设计模式: 可复用面向对象软件的基础.Boston: Addison-Wesley. 这是最早的关于设计模式的著作.这本书采用了C++作为参考语言.

《 嵌入式系统设计与实践》一一2.3 一个可以实践的沙盒

2.3 一个可以实践的沙盒前面部分很好地覆盖了底层和中间层的模块,但还有一些算法模块需要考虑.好的架构设计的目标之一就是尽可能地让算法保持独立.常用的模型-视图-控制器(MVC)模式就是解决这个问题很好的方法.这个模式的目的是将应用程序的业务逻辑从用户界面中分离出来,这样可以独立地对它们进行开发和测试.在这个模式中,视图是提供给用户的界面,包括了输入和输出.在我们的设备中,用户可能不是一个人,它可以是一个硬件传感器(输入)和一个屏幕(输出).事实上,如果系统没有屏幕,但是它通过网络传送数据,这时

《软技能:代码之外的生存指南》一一第21章 创建大获成功的博客

第21章 创建大获成功的博客 软技能:代码之外的生存指南作为一名软件开发人员,可以用来推销自己的最佳媒介之一就是博客.我坚信每一个在乎自己职业生涯的软件开发人员都应该投资创建一个博客. 使用面对面的直接交往方式,你只能遇到有限的人,所以你需要另一种方式来推销自己,拓展自己的社交圈子.想想自己在过去的一年里认识了多少技术行业的专才.这一数字可能接近几百甚至上千,然而一个成功的博客能让数十万人认识你. 博客是推销自己的一种既廉价又简单的方式,对于让自己声名鹊起极具价值.成功的博客每天能够吸引数百甚至

《 嵌入式系统设计与实践》一一第3章 检视硬件

**第3章 检视硬件**嵌入式系统的设计可能是一件艰巨的任务.大多数软件工程师需要电气工程方面的速成课程,同时大多数电气工程师需要好的软件设计方面的速成课程.与来自不同学科的成员密切配合,可以让嵌入式系统的开发工作容易很多.比如,我有些非常好的朋友就是电气工程师.如果没有从头到尾地经历过一个包括硬件的产品开发周期,那么讨论关于其中的角色和职责可能就有点儿难.但是,我会从一个项目一般的流程开始,然后给出一些关于所需技能的具体建议,以帮助大家在团队中承担起重任,这些技能包括:阅读数据表(datash

《 嵌入式系统设计与实践》一一第1章 导论 1.0

**第1章导论**不同的人对嵌入式系统有不同的理解.对于从事服务器开发的人来说,在手机上开发的应用程序就是一个嵌入式系统.对于为8位微处理器写过程序的人来说,任何运行在操作系统上的应用程序都不是嵌入式的.我要告诉非技术人员的是,嵌入式系统就像微波炉或者汽车,虽然运行软件但不是计算机(大多数人认为计算机是通用计算设备).以下是对嵌入式系统给出的一个没有太多技术争议的定义:嵌入式系统是为了特定应用而专门构建的计算机系统.因为嵌入式系统要完成的任务比通用计算机系统窄很多,所以对于完成与手头任务不相关的

《 嵌入式系统设计与实践》一一3.5 调试工具箱(和灭火器)

3.5 调试工具箱(和灭火器) 到目前为止,我们对数据表.用户手册.原理图的所讨论都停留在纸上(或电子文件上).让我们在硬件上实践一下吧.等一等,在动手之前,请注意触摸硬件会让它遭受电击并将它损坏(特别是当你刚脱下羊毛外套的时候).3.5.1 保管好电路板 向硬件工程师要一些工具,用以保证电路板的安全.注意电路板应该放在哪儿.在需要移动时,始终将它放在存放电路板的那个袋子里.抗静电垫子很便宜,这也迫使人们不得不在办公桌上为硬件分配一个空间(即使不使用防静电手腕带,防静电垫子仍然是一个较好的改善,

《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)

3.6 测试硬件(和软件) 虽然我强烈建议准备好工具箱.数字万用表和示波器,但是,如果大家没有准备好独自拥有这些,那么将这些留给硬件工程师也在情理之中.作为一个软件工程师,更重要的是将用于测试硬件的软件尽可能构建得有利于方便调试. 嵌入式系统有3种常见的测试.第一种,在每次系统引导的时候都运行加电自检(POST),即使代码被释放.这个测试验证所有的硬件组件都已经就绪,可以安全地运行系统.加电自检(POST)测试得越多,开机时间就越长,因此需要权衡可能对客户造成的影响.自检完成后,客户就可以使用系