PCB论坛网

 找回密码
 注册
查看: 802|回复: 0

嵌入式系统的知识学习及误区(2)

[复制链接]
发表于 2013-3-12 14:39:22 | 显示全部楼层 |阅读模式
2.2 硬件与软件的困惑          以MCU为核心的嵌入式技术的知识体系必须通过具体的MCU来体现、实践。但是,选择任何型号的MCU,其芯片相关的知识只占知识体系的20%左右,80%左右是通用的软件硬件及相关知识。80%的通用知识,必须通过具体实践才能获得,所以学习嵌入式技术一般要选择一个系列的MCU。
          系统含有硬件与软件两大部分,它们之间的关系如何?有些学者,仅从电子的角度认识嵌入式系统。认为“嵌入式系统=MCU硬件系统+小程序”。这些学者大多具有良好的电子技术基础知识。实际情况是,早期MCU内部RAM小,程序存储器外接,需要外扩各种I/O,没有像USB、嵌入式以太网等这样较复杂的接口。因此,程序占总设计量比例小于50%,使人们认为嵌入式系统(单片机)是“电子系统”,以硬件为主,程序为辅。但是,随着MCU制造技术的发展,不仅.MCU内部RAM越来越大,Flash进入MCU内部改变了传统的嵌入式系统开发与调试方式,固件程序可以更方便地调试与在线升级,许多情况下与开发 PC机程序的方便程度相差无几,只不过开发环境与运行环境不是同一载体而已。这使得嵌入式系统的软件硬件设计方法发生了根本变化。
          有些学者,仅从软件开发角度认识嵌入式系统,甚至仅从嵌入式操作系统认识嵌入式系统。这些学者大多具有良好的计算机软件开发基础知识,认为硬件是生产厂商的事。他们没有认识到,嵌入式系统产品的软件与硬件均是需要开发者设计的。笔者常常接到一些关于嵌入式产品稳定性的咨询,发现大多数是由于软件开发者对底层硬件的基本原理不理解。特别是有些功能软件开发者,过分依赖于底层硬件的驱动软件,自己对底层驱动原理知之甚少。实际上,一些功能软件开发者,名义上在做嵌入式软件,其实仅仅是使用嵌入式编辑、编译环境而已,本质与开发通用PC机软件没有两样。而底层硬件驱动软件的开发,若不全面考虑高层功能软件对底层硬件的可能调用,也会使封装或参数设计得不合理或不完备,导致高层功能软件调用困难。可以看出,若把嵌入式系统的开发孤立地分为硬件设计、底层硬件驱动软件设计、高层功能软件设计,那么一旦出现问题,就可能难以定位。实际上,嵌入式系统设计是一个软件、硬件协同设计工程,不能像通用计算机那样,软件、硬件完全分开来看,而要在一个大的框架内协调工作。
          学习嵌入式系统是以软件为主还是以硬件为主,或者如何选择切入点,如何在软件与硬件之间取得平衡?对于这个困惑的建议是:要想成为一名真正的嵌入式系统设计师,在初学阶段,必须打好嵌入式系统的硬件与软件基础。以下是从事嵌入式系统设计二十多年的美国学者JohnCatsoulis在《Designing Embedded Hardware》一书中关于这个问题的总结:嵌入式系统与硬件紧密相关,是软件与硬件的综合体,没有对硬件的理解就不可能写好嵌入式软件;同样,没有对软件的理解也不可能设计好嵌入式硬件。
          2.3 片面认识嵌入式系统
          嵌入式系统产品种类繁多,应用领域各异。在第1部分中,把嵌入式系统的应用范围粗略分为电子系统的智能化与计算机应用的延伸两大类。从初学者角度,可能存在分别从这两个角度片面认识嵌入式系统的问题。因此,一些从电子系统智能化角度认识嵌入式系统的学习者,可能会忽视编程结构、编程规范、软件工程的要求、操作系统等知识的积累。另一些从计算机应用的延伸角度认识嵌入式系统的学习者,可能会把通用计算机学习过程中的概念与方法生搬硬套到嵌入式系统的实践中,忽视嵌入式系统与通用计算机的差异。
          实际上,在嵌入式系统学习与实践的初始阶段,应该充分了解嵌入式系统的特点,根据自身的已有知识结构,制定适合自身情况的学习计划。目标应该是打好嵌入式系统的硬件与软件基础,通过实践,为成为良好的嵌入式系统设计师建立起基本知识结构。学习过程中,具体应用系统可为实践载体,但不能拘泥于具体系统,应该有一定的抽象与归纳。例如,初学者开发实际控制系统时没有使用实时操作系统,但不要认为实时操作系统不需要学习。又例如,初学者可以一个带有实时操作系统的样例为蓝本进行学习,但不要认为任何嵌入式系统都需要实时操作系统,甚至为一个十分简明的实际系统加上不必要的实时操作系统。因此,片面认识嵌入式系统,可能导致学习困惑。应该根据实际项目需要,锻炼自己分析实际问题、解决问题的能力。这是一个长期的学习与实践过程,不能期望通过短期培训完成整体知识体系的建立,应该重视自身实践,全面地理解嵌入式系统的知识体系。
          2.4 入门芯片选择的困惑
          嵌入式系统的大部分初学者需要选择一个微控制器(MCU)进行入门级学习,面对众多厂家生产的微控制器系列,往往不知如何是好。
          首先是关于位数问题,目前主要有8位、16位和32位MCU。不同位数的MCU各有应用领域,这一点与通用微机有很大不同。例如做一个遥控器,不需要使用 32位MCU,否则MCU芯片价格就已经超过遥控器价格需求。对于首次接触嵌入式系统的学习者,可以根据自己的知识基础选择入门芯片的位数。建议大多数初学者选择8位MCU作为快速入门芯片,了解一些汇编与底层硬件知识,之后再选16位或32位芯片进行学习实践。
          关于芯片选择的另一个误区是认为有“主流芯片”存在,嵌入式系统也可以形成芯片垄断。这完全是一种误解,是套用通用计算机系统的思维模式,而忽视了嵌入式系统应用的多样性。关于学习芯片选择还有一个误区,即误认为选择工作频率高的芯片进行入门学习,更先进。实际上,工作频率高可能给初学者带来不少困难。
          实际嵌入式系统设计不是追求芯片位数、工作频率、操作系统等因素,而是追求稳定可靠、维护、升级、功耗、价格等指标。初学者选择入门芯片,是通过某一: MCU作为蓝本,获得嵌入式系统知识体系的通用基础。其基本原则是:入门时间较短、硬件成本较低,知识要素较多,学习难度较低。

万贯五金机电网已开通公众平台官方微信,添加朋友:wwwwanguancom ;公众平台搜索:万贯五金机电网,也可扫描图中二维码。最新行业资讯指尖掌握:实时为你推送最新行业资讯,与行业供应商或者采购商互动交流,更多精彩互动为你推送。。。
此外,对网络营销感兴趣的朋友,可以关注公众平台搜索:网络营销那些事 ,我们将会每天分享一篇网络营销方面的知识、技巧、新闻等内容。让每个订阅者获益。(本文由成都乐盛商贸公司整理提供)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|手机版|PCB设计论坛|EDA论坛|PCB论坛网 ( 沪ICP备05006956号-1 )

GMT+8, 2024-5-22 19:10 , Processed in 0.122699 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表