大家好,我是杂烩君。
4月23日为世界图书日,本次给大家带来423世界图书日特别活动,免费赠送5本嵌入式系统架构相关书籍给大家(文末抽奖)。
如果你有志成为一个现代嵌入式系统工程师,那么在所有项目之初就需要确定系统的架构。系统的架构包含两方面,硬件和软件。硬件部分不但决定了系统的复杂性、成本,还决定了后面的软件逻辑如何实现。而且,一旦确定了,在项目过程中很难变化。
如果需要修改架构往往会导致项目的重大延误和成本损失。也许现阶段你还无法完整和周到地了解系统架构的重要性,但是我们需要对系统架构有足够的重视,在工作中要时时刻刻关注自己项目中的系统架构,以及为何要如此设计。随着经验的积累,自然会有所感悟。
我们先来比较一下嵌入式系统架构和非嵌入式系统的架构上有什么区别。
典型的嵌入式系统框图
典型的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系统了,只是最小系统件上的小小变化蕴含着无数人的智慧(妥协),不仅关系到硬件还关系到软件。在这里,我还要强调一下,在真实的项目中到底选择什么样的系统架构还不只是以上的问题,其中牵扯的因素会非常多,有技术层面的,有成本层面的。这里只做提纲挈领的工作,给大家一个初步的印象和依据。
嵌入式系统研发工程师必读宝典
理论+实战
一本书带你快速融入系统研发工作
(点击图书封面,查看详情)
作者:王蔚 姚思韡 编著
推荐理由:《嵌入式系统实战指南:面向IoT应用》出发点是嵌入式系统的实际应用,因此涉及面比较广,为了控制篇幅,很多内容点到为止,但可以起到抛砖引玉的作用。本书首先对嵌入式系统做了定义,然后围绕该定义展开。全书分为三篇,第壹篇侧重于基础应用知识;第二篇是基于第壹篇的高阶应用知识,主要针对嵌入式操作系统;第三篇相对独立,对目前非常流行的低功耗蓝牙原理和应用做了介绍。本书的每一篇都有多个对应的例程,并使用了多种常见的软硬件。
本书不但适合嵌入式系统行业的职场新手,也适合有一定经验的嵌入式系统研发工程师学习和参考,还可以作为自动控制、通信、应用电子、机电一体化等专业的教学用书。
RT-Thread官方推荐图书
附赠超值电子资源
(点击图书封面,查看详情)
作者:王宜怀 史洪玮 孙锦中 罗喜召 编著
推荐理由:嵌入式实时操作系统是嵌入式人工智能与物联网终端的重要工具和运行载体。《嵌入式实时操作系统:基于RT-Thread的EAI&IoT系统开发》以国产RT-Thread实时操作系统为背景,阐述实时操作系统的线程、调度、延时函数、事件、消息队列、信号量、互斥量等基本知识要素,并给出实时操作系统下的程序设计方法。全书分为基础应用(第1~7章)、原理剖析(第8~12章)及综合实践(第13~14章)三篇,如果读者只从事实时操作系统下的应用开发,可只阅读基础应用篇与综合实践篇;如果希望理解实时操作系统原理,则建议通读全书。
本书可作为应用开发工程师、高等学校研究生及高年级本科生的参考用书,也可作为实时操作系统技术的培训用书。
为了感谢大家对本公众号的支持,本次向机械工业出版社申请了4本 《嵌入式实时操作系统:基于RT-Thread的EAI&IoT系统开发》 + 1本《嵌入式系统实战指南:面向IoT应用》赠送给大家。赠书采用抽奖的方式。
参与方法:关注【嵌入式大杂烩】公众号,并回复关键词:嵌入式系统开发
,即可获取抽奖码。
开奖时间:4月23日20:00
温馨提示:中奖者请在开奖后24小时内在抽奖小程序上填收货地址或着把地址发到我的微信,否则视为放弃。
最后,感谢机械工业出版社的赞助!
猜你喜欢:
柔性数组在实际项目中的应用?
干货 | protobuf-c之嵌入式平台使用
实用 | 10分钟教你搭建一个嵌入式web服务器
在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总