嵌入式计算系统将必须紧密工作的硬件和软件相结合。嵌入式系统设计人员已将擅长的设计方法发展到用软件来体现系统的部分功能。早期的硬件/软件协同设计领域的研究人员强调同时进行设计的重要性。系统体系结构一旦确定,硬件和软件可以相对独立地进行设计。协同设计的目标是做出恰当的体系结构决策,允许在以后的实现阶段中独立完成。好的体系结构决策需要恰当的分析方法,因为它们必须满足严格的度量标准,例如实时性能和功耗。图1-15显示了一般的协同设计方法。给定可行的规格说明,大部分方法进行初始系统分析来确定并行设计的可能性,并可能将规格说明分解为过程。硬件/软件划分选取体系结构,其中一些操作直接由硬件完成,而另一些则由运行在可编程平台上的软件完成。硬件/软件划分生成可以独立实现的模块设计。那些模块随后结合,进行性能或功耗测试,并调试以创建最终的系统。
(点击查看大图)图1-15硬件/软件协同设计的设计流基于平台的设计是片上系统通常采用的方法。平台允许若干用户将相同的基本平台定制成不同的产品。平台对于基于标准的市场尤其有用,在这种市场中,产品必须支持一些基本功能,而其他功能必须进行定制。如图1-16所示,基于平台的设计是一个两阶段过程。首先,平台的设计必须建立在系统总体需求(例如,某种标准)和平台应如何定制之上。平台一旦设计完,就可用于设计产品。产品利用平台的功能并添加自己的功能。图1-16基于平台的设计平台设计需要几个设计阶段:应用特征分析将系统需求和软件模型变为基于平台硬件体系结构的更明确的需求。设计空间搜索评估硬件选项。体系结构模拟帮助评估和优化体系结构的细节。必须为平台开发基础软件(硬件抽象层、操作系统端口、通讯、应用库、调试)。平台的使用比较复杂,因为平台需要用户编程环境。程序员已经习惯了标准平台上丰富的开发环境。那些环境以图形用户界面的方式提供了很多工具—编译器、编辑器、调试器、模拟器。然而丰富的编程环境通常只支持单处理器。多处理器编程更困难,而异构多处理器相比同构多处理器更复杂。平台开发人员必须提供工具使得软件开发人员能够使用平台。有此工具来自CPU组件,其他工具必须从头开发。由于调试访问是依赖于硬件的,因而它尤为重要和困难。进程间通讯也很复杂,但它是应用开发人员的重要工具。