本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。
嵌入式系统设计所面临的挑战
- 需要多少硬件?
- 如何满足时限要求,如何处理理多项功能在时间上的协调一致关系?
- 如何降低系统的功耗?
- 如何设计以保证系统可升级?
- 如何保证系统可靠地工作?
嵌入式系统设计者要求
- 懂得系统的整个构架
- 详细了解硬件的细节
- 软件设计满足:实时要求、低功耗、代码量小
- 详细了解领域知识
设计目标
- 成本
- 性能
- 功耗
- 区域?
- 可扩展性和可重用性
- 出错容忍度。
- 热特性
嵌入式系统的设计过程
嵌入式系统的设计过程 | 嵌入式系统的设计过程的基本流程 |
---|---|
示例:GPS 移动地图
移动地图从 GPS 获取位置,从本地数据库绘制地图。
架构设计
哪些主要组件符合规格?
- 硬件:CPU,外围设备等
- 软件:主要程序及其操作。
必须考虑功能和非功能规范。
设计硬件和软件组件
在开始编码之前,必须花时间设计系统。
有些组件是现成的,有些可以从现有设计中进行修改,而另一些则必须从头开始设计。
GPS 移动地图架构图
总体体系结构 | 硬件架构 | 软件架构 |
---|---|---|
软硬件的划分
- 嵌入式系统的设计涉及硬件与软件部件,设计中必须决定什么功能由硬件实现,什么功能由软件实现。
- 硬件和软件具有双重性
- 软硬件变动对系统的决策造成影响
- 划分和选择需要考虑多种因素
- 硬件和软件的双重性是划分决策的前提
通常由软件实现的部分
- 操作系统功能:任务调度、资源管理、设备驱动
- 协议栈:TCP/IP
- 应用软件框架
- 除基本系统、物理理接口、基本逻辑电路,许多由硬件实现的功能都可以由软件实现。
双重性部分
- 算法:加密/解密、编码/解码、压缩/解压。
- 数学运算:浮点运算、FFT。
软硬件技术对系统结构的影响
- 硬软件设计的趋势:融合、渗透
- 硬件设计的软件化:VHDL、Verilog、HANDL-C
- 软件实现的硬件化:各种算法的 ASIC
- 对系统设计的影响:协同设计
- 增加灵活性
- 增加了风险
嵌入式系统设计方法学
嵌入式系统设计方法的演变
- 以 PCB、CAD 和在线仿真器器为主要工具
- 以 EDA 和 EOS 为开发平台
- 以 IP 内核库为设计基础,用软硬件协同设计技术的系统级设计方法
传统的嵌入式系统设计过程
传统软硬件设计过程的基本特征: 1. 系统在一开始就被划分为软件和硬件两大部分 2. 软件和硬件独立进行行开发设计 3. 经常采用“硬件优先”的方法 隐含的一些问题: 1. 软硬件之间的交互受到很大限制:凭经验划分软硬件、软硬件之间的相互性能影响很难评估 2. 系统集成相对滞后,NRE 较大,越后期发现的问题可能会导致越严重的开销 3. 从上到下越早开始集成越好
因此:设计质量差、设计修改代价高、研制周期不能有保障
硬件/软件协同设计(HW/SW Co-design)
- 硬件/软件协同设计是指一种专用系统的设计,该系统由几个专用 IC 组成,这些 IC 与通用处理器上的软件过程配合使用(1994 年)
- 硬件/软件协同设计意味着通过并发设计来利用硬件和软件的协同作用,从而达到系统级目标(1997 年)
- 硬件/软件协同设计试图通过提供可以告诉设计人员系统是否满足其性能,功耗和尺寸目标的分析方法以及可以使设计人员快速评估许多潜在设计方法的综合方法,来提高嵌入式系统设计的可预测性(2003 年)
- 它从新兴学科(90 年代初)发展为主流技术(今天)
简单的设计流程:部分是硬件开发,部分是软件开发
结构说明图
从系统开始到系统完成的全过程: