如果你希望成为一名现代嵌入式系统工程师,那么在项目的初始阶段就需要确定系统的架构。系统的架构涵盖了硬件和软件两个方面。硬件部分不仅决定了系统的复杂性和成本,还决定了后续软件逻辑的实现方式。一旦确定了架构,在项目进行中就很难进行修改。
对于需要修改架构的情况,往往会导致项目的重大延误和成本损失。也许你现阶段还不能完全理解和体会系统架构的重要性,但我们需要高度重视系统架构,在工作中始终关注自己项目中的系统架构,并思考为什么要进行这样的设计。随着经验的积累,你自然会对此有更深刻的认识。
我们先来比较一下嵌入式系统架构和非嵌入式系统的架构上有什么区别。
典型的嵌入式系统框图
典型的AP系统框图
先介绍一下什么是AP系统。AP是Application Processor(应用处理器)的简称。我们现代的手机、电视、机顶盒等设备,基本都是这种架构,这种架构和PC系统非常类似。上面两幅图中,实心部分是一个系统必须具备的,空心部分是外围的功能性器件,不是必须的,而且可以根据功能不同更换。
所以,如果只考虑上图中实心部分组成的系统,我们称之为“最小系统”。最小系统是确保系统能运行的最简单形式,当然最小系统一般没有任何功能,只是软件能在MCU或AP上跑而已。举个例子,20世纪最伟大的物理学家之一,斯蒂芬·威廉·霍金,他自从患上肌肉萎缩性侧索硬化症全身瘫痪后,就成了一个“最小系统”。但是,他凭着自己的意志和对理论物理的热爱,继续用他的天才大脑(强大的MCU)来思考宇宙中那些最深奥的问题。也许这不是一个最合适的例子,但我相信凡是工程专业毕业的同学一定能理解了。
我们就看最小系统的差异,其实非常得明显,嵌入式系统的最小系统里好像没有外置的程序存储器和RAM(SRAM和DDR都属于RAM)。那么,That’s all?
从表面看That’s all! 不过,培训工程师需要再细致一些。你一定知道RAM和程序存储器的差别,RAM是随机访问存储器的简称,不要被“随机访问”这个词唬到,无非就是想表达可以随意读写在RAM中的任何一个存储单元(比如一个字节)。就好比宾馆里,任何一层的房间,你可以随意出入(当然,前提是你是老板,还有客人不会投诉你)。
相对的程序存储器(比如Flash)是不能随意访问单个存储单元的,只能批量访问,常见的是按照页(Page)或者块(Block)的形式来读写存储器。还是好比一个宾馆,你只能一层一层地访问(这个时候,也许你的角色就是保洁员)。程序存储器有很多种类,常见的是Nor-Flash、NAND-Flash、硬盘等。后续我会混用Flash和程序存储器两个词,请不要困惑。
RAM也有很多种类,比如SRAM、SDRAM、DDR等,这里不做过多解释。在本书中不做特别说明的话,RAM就是指SRAM(Static Random-Access Memory,静态随机访问存储器)。除了访问方式不同,还有一个物理特性很重要,系统断电后RAM中的内容会丢失;相反,Flash中的内容是不会丢失的。所以,对这两类存储器,又有另一种叫法:易失性存储器(比如RAM)和非易失性存储器(比如Flash)。
这个时候你的内心一定非常纠结,为啥搞这么复杂?就不能用一种吗?看看我们有什么选择。如果我们全部用Flash,由于Flash访问速度太慢,尤其是写入数据的时候,和MCU的运行速度比起来简直是龟速,会拖累整个系统的速度。全部用RAM呢?
数据断电保存不了,而且还有一个最致命的问题——贵!你可以比较一下自己电脑里的RAM和硬盘的价格,用单位容量的价格去比,就大致知道他们相差上百倍。所以,把这两个东西结合在一起才是性价比最好的方案。生活就是不停地权衡和妥协啊!下图是根据速度和价格来对存储器划分的层次图。
不同的存储器的分层
什么内容掉电后还必须保存?当然是程序了,这就是为什么我会把Flash等同于程序存储器(有些数据也是不允许掉电丢失的,但是我们更关心程序)。那么RAM里放什么呢,自然是需要频繁访问的变量和“时间敏感”的程序。后面,我们还会碰到相关内容,这里就先不深入。
回到前面的话题,从最小系统看,嵌入式系统和AP系统好像只是存储器有没有放在芯片外面而已。那有必要分得这么开么?嗯。前面提到过系统架构不仅关系硬件还关系到软件,现在我们来看看软件上的差异。因为嵌入式系统的存储器一般是内置的(有些MCU为了节约本身的成本,会把Flash放在外面),存储器容量都做得比较小。
所以,一般也不会采用大多数人常遇到的操作系统,比如Android、Linux或Windows。操作系统对系统资源的占用还是非常多的,除了对CPU的主频要求外最重要的就是对存储器容量的要求。记忆中就是随着Windows的不断升级,我们的电脑硬件也不断地升级。
而一般嵌入式系统软件有两种模式,一种模式是什么操作系统都不跑,这样最节约系统资源,但是当软件复杂一些的时候,裸跑就很难应付。所以,还有一种模式是采用RTOS(Real Time Operation System,实时操作系统),这种操作系统是专门针对嵌入式系统的。其特点就是简单、占用资源少、响应快、可扩展性强。
谈到这里,其实大家应该隐隐地觉得为啥要区分嵌入式系统和AP系统了,只是最小系统件上的小小变化蕴含着无数人的智慧(妥协),不仅关系到硬件还关系到软件。在这里,我还要强调一下,在真实的项目中到底选择什么样的系统架构还不只是以上的问题,其中牵扯的因素会非常多,有技术层面的,有成本层面的。这里只做提纲挈领的工作,给大家一个初步的印象和依据。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !