1.1.3 嵌入式系统设计需考虑的问题
外部约束是设计嵌入式系统遇到的较大的困难。下面列出嵌入式系统设计过程中需考虑的一些主要问题。
(1)需要多少硬件。我们在设计嵌入式系统时不仅需考虑选择何种微处理器,还需考虑存储器容量、I/O设备及其他外围电路。要在满足系统性能要求的前提下,满足系统经济性要求:系统硬件太少,将不能满足性能要求;硬件太多,又会使产品变得过于昂贵,并降低可靠性。
(2)如何满足实时性要求。通过提高微处理器速度来使程序运行的速度加快,从而解决实时性问题的方法是不可取的,因为这是以增加系统成本投入为前提的。同时,仅仅提高微处理器的速度有时并不能提高程序运行速度,因为程序运行速度还受存储器工作速度的限制。因此应精确设计程序以满足实时性要求。
(3)如何降低系统的功耗。对于用电池供电的嵌入式系统而言,功耗是一个十分重要的考虑因素;对于不用电池供电的嵌入式系统而言,高功耗会带来高散热量。降低嵌入式系统功耗的一种方法就是降低它的运算速度。但是单纯降低运算速度会导致系统不满足实时性要求。应认真设计嵌入式系统,以便通过降低系统非关键部分的速度来降低系统功耗,同时满足系统的实时性要求。
(4)如何保证系统可升级。系统的硬件平台可能使用在不同代的产品中,或者使用在同一代但不同级别的产品中,且仅需做一些简单的改变。我们希望通过修改软件来改变系统的功能。如何才能设计一种硬件平台使它能够提供未来程序需要的功能呢?
(5)系统调试复杂。调试嵌入式系统比调试通用个人计算机上的程序困难得多。我们通常需运行整台设备以产生测试数据,而数据产生的时间往往是非常重要的。也就是说,不能离开嵌入式系统运行的整个环境来测试嵌入式系统。另外,嵌入式系统有时没有配备键盘和显示器,这导致我们不能了解系统的运行情况,也不能干预系统的运行,从而导致难以测试嵌入式系统。
(6)开发环境受限。嵌入式系统可用的开发环境(用于开发硬件、软件的工具)比通用个人计算机上的少。我们通常在通用个人计算机上将程序代码编译成机器码,然后将编译好的机器码下载到嵌入式系统中。为了调试这些代码,通常必须依靠运行在通用个人计算机上的程序来观察嵌入式系统的运行情况。