嵌入式系统的学习误区---苏州大学王宜怀
扫描二维码
随时随地手机看文章
关于嵌入式系统的学习方法,因学习经历、学习环境、学习目的、已有的知识基础等不同,可能在学习顺序、内容选择、实践方式等方面有所不同。但是,应该明确哪些是必备的基础知识,哪些应该先学,哪些应该后学,哪些必须通过实践才能获得的,哪些是与具体芯片无关的通用知识,哪些是与具体芯片与开发环境相关的知识。
由于微处理器与微控制器种类繁多,也可能由于不同公司、不同机构出于自身的利益,做出一些误导性宣传,特别是我国嵌入式微控制器制造技术的落后及其他相关情况,使得人们对微控制器的发展,在认识与理解上存在差异。导致一些初学者,进入了嵌入式系统的学习误区,浪费了宝贵的学习时间。下面分析几个可能的误区。
1.嵌入式系统学习误区1-操作系统的困惑
如果说,学习嵌入式系统不是为了开发其应用产品,那就没有具体目标了,许多诸如学习方法问题也就不必谈了。实际上,这正是许多人想学,又不知从何开始学习的关键问题所在,不知道自己学习的具体目标。于是,看了一些培训广告,看了书店中书架上种类繁多的嵌入式系统的书籍,或上网以“嵌入式系统”为关键词进行查询,然后参加培训或看书,开始“学习起来”。对于有计算机阅历的人,往往选择一个嵌入式操作系统就开始学习了。不好听的比喻,有点象“瞎子摸大象”,只了解其一个侧面。这样如何能对嵌入式产品的开发过程有个全面了解呢?针对许多选择“xxx嵌入式操作系统+xxx处理器”的嵌入式系统入门学习模式,我的建议是:首先把嵌入式系统软件与硬件基础打好了,再根据实际需要,选择一种嵌入式操作系统进行学习实践。要记住:嵌入式操作系统是开发某些类嵌入式产品的辅助工具,是手段,不是目的。许多类嵌入式产品,并不需要嵌入式操作系统。所以,一开始就学习嵌入式操作系统,并不符合学习“由浅入深、循序渐进”的学习规律。
2.嵌入式系统学习误区2-硬件与软件的困惑
有一些有电子阅历的人,仅从电子角度认识嵌入式系统选择FPGA来学习嵌入式系统。实际上,这也是嵌入式系统的一个方式、一个侧面。而大多数嵌入式系统的设计以MCU为核心进行。原因很简单,生产可靠的MCU,需要近千道工序,非通用硬件能够替代。既然大多数嵌入式系统的设计以MCU为核心,下面就谈这种模式所可能遇到的学习困惑。
有些学者,仅从电子角度认识嵌入式系统。认为“嵌入式系统=MCU硬件系统+小程序”。这些学者,大多学习背景是具有良好的电子技术基础知识。但对于嵌入式系统来说,没有深刻认识到,嵌入式系统在发展,早期的MCU内部RAM小、程序存储器外接,需要外扩各种I/O,没有象现在这样USB、嵌入式以太网等较复杂的接口,因此,程序占总设计量小于50%,使人们认为嵌入式系统(单片机)是“电子系统”,以硬件为主、程序为辅。但是,随着MCU制造技术的发展,不仅MCU内部RAM越来越大,Flash进入MCU内部改变了传统的嵌入式系统开发与调试方式,固件程序可以被更方便地调试与在线升级,许多情况与开发PC机程序方便程度相差无几,只不过开发环境与运行环境不是同一载体而已。这些情况使得嵌入式系统的软件硬件设计方法发生了根本变化。
相反,有些学者,仅从嵌入式操作系统认识嵌入式系统,或只从软件开发角度认识嵌入式系统。这些学者,大多具有良好的计算机软件开发基础知识,认为硬件是生产厂商的事,没有认识到,嵌入式系统产品的软件与硬件均是需要开发者设计的。我常常接到一些关于嵌入式产品稳定性的咨询电话,发现大多数是由于软件开发者底层硬件的基本原理不理解,对底层硬件的驱动软件设计不周到造成的。特别是,有些功能软件开发者,过分依赖于底层硬件的驱动软件设计完美,自己对底层驱动原理知之甚少。实际上,一些功能软件开发者,名义上再做嵌入式软件,实际上,仅仅使用嵌入式软件编辑、编译环境而已,本质是在开发通用PC机软件。而底层硬件驱动软件的开发,若不全面考虑高层功能软件对底层硬件的可能调用,也会使得封装或参数设计得不合理或不完备,导致高层功能软件的调用困难。从这段描述可以看出,若把一个嵌入式系统的开发孤立地分为硬件设计、底层硬件驱动软件设计、高层功能软件设计,一旦出现了问题,就会出现责任不清,难以定位。实际上,嵌入式系统设计是一个软件、硬件协同设计工程,不能象通用计算机那样,软件、硬件完全分开来看。
面对学习嵌入式系统以软件为主还是以硬件为主,或是如何选择切入点,如何在软件与硬件之间取得一些平衡。有些人认为,学习嵌入式系统可以只学习软件知识或学习嵌入式系统可以只学习硬件知识。对于这个困惑,可以概括回答:
嵌入式系统与硬件紧密相关,是软件与硬件的综合体,没有对硬件的理解就不可能写好嵌入式软件,同样没有对软件的理解也不可能设计好嵌入式硬件。