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