1 嵌入式体系的常识体系
嵌入式体系的运用规模能够大略分为两大类:电子体系的智能化(工业 操控、现代农业、家用电器、轿车电子、测控体系、数据收集等),计算机运用的延伸(MP3、手机、通讯、网络、计算机外围设备等)。从这些运用能够看出, 要完结一个以MCU为中心的嵌入式体系运用产品规划,需求硬件、软件及职业范畴相关常识。硬件首要有MCU的硬件最小体系、输入/输出外围电路、人机接口 规划。软件规划有固化软件的规划,也或许含PC机软件的规划。职业常识需求经过协作、沟通与总结取得。
概括地说,学习以MCU为中心的嵌入式体系,需求以下软硬件根底常识与实践练习
①硬件最小体系(电源、晶振、复位、写入调试接口);
②通用I/O(开关量输入/输出,触及各种二值量检测与操控);
③模/数转化(各种传感器信号的收集与处理,如红外、温度、光敏、超声波、方向等);
④数/模转化(对模拟量设备利用数字进行操控);
⑤通讯(串行通讯接口SCI、串行外设接口SPI、集成电路互联总线I2C、CAN、USB、
嵌入式以太网、ZigBee技能等);
⑥显现(LED、LCD等);
⑦操控(操控各种设备,包含PWM等操控技能);
⑧数据处理(图形、图画、语音、视频等的处理或辨认);
⑨各种详细运用。
万变不离其宗,任何运用都能够归入这几类。而运用中的硬件规划、软件规划、测验等都有必要遵从嵌入式软件工程的办法、原理与根本原则。所以,嵌入式软件工程也是嵌入式体系常识体系的有机组成部分,只不过它融于详细项意图开发进程之中。
以上实践练习触及硬件根底、软件根底及相关范畴常识。计算机言语、操作体系、开发环境等均是到达这些意图的东西。有些初学者,简略把东西的运用与所要达 到的真实意图相混杂。例如,有的学习者学了很长时刻的嵌入式操作体系移植,而不进行实践嵌入式体系产品的开发,到最后也做欠好一个嵌入式体系小产品,违背 了学习方针,乃至抛弃嵌入式体系范畴。这便是进入了嵌入式体系学习误区,下面临此作一些剖析。
2 嵌入式体系的学习误区
关于嵌入式体系的学习办法,因学习阅历、学习环境、学习意图、已有的常识根底等不同,或许在学习次序、内容挑选、实践办法等方面有所不同。可是,应该明 确哪些是必备的根底常识,哪些应该先学,哪些应该后学;哪些有必要经过实践才干取得;哪些是与详细芯片无关的通用常识,哪些是与详细芯片或开发环境相关的知 识。
由于微处理器与微操控器品种繁复,也或许由于不同公司、组织出于本身的利益,给出一些误导性宣扬,特别是我国嵌入式微操控器制作技 术落后,使得人们对微操控器的开展,在知道与了解上存在差异,导致一些初学者进入嵌入式体系的学习误区,浪费了名贵的学习时刻。下面剖析或许存在的几个误 区。
2.1 操作体系的困惑
假如说,学习嵌入式体系不是为了开发其运用产品,那 就没有详细方针,比如学习办法这样的问题也就不用谈了。实践上,这正是许多人想学,又不知从何开端学习的要害问题所在,不知道自己学习的详细方针。所以, 看了一些训练广告,看了书店中品种繁复的嵌入式体系书本,或上网以“嵌入式体系”为要害词进行查询,就参与训练或看书,开端“学习起来”。关于有计算机阅 历的人,往往挑选一个嵌入式操作体系就开端学习了。这有点像“瞎子摸大象”,只了解其一个旁边面。这样怎么能对嵌入式产品的开发进程有全面了解呢?针对许多 初学者挑选“XXX嵌入式操作体系+XXX处理器”的嵌入式体系入门学习形式,笔者以为是不适宜的。笔者的主张是:首先把嵌入式体系软件与硬件根底打好 了,再依据实践需求,挑选一种实时操作体系(RTOS)进行学习实践。要记住:RTOS是开发某些类嵌入式产品的辅助东西,是手法,不是意图;许多类嵌入 式产品,并不需求RTOS。所以,一开端就学习RTOS,并不契合“由浅入深、按部就班”的学习规则。
RTOS本身由于品种繁复,实践 运用何种RTOS,一般需求由作业单位确认。根底阶段首要学习RTOS的根本原理与RTOS上的软件开发办法,而不是学习怎么规划RTOS。以开发实践嵌 入式产品为方针的学习者,不要把过多的精力花在规划或移植RTOS上面。正如许多人运用Windows操作体系,而规划 Windows操作体系的只需Microsoft。许多人“研讨”Linux,但不运用它,浪费了时刻。人的精力是有限的,学习有必要有所挑选。
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作为蓝本,取得嵌入式体系常识体系的通用根底。其根本原则是:入门时刻较短、硬件本钱较低,常识要素较多,学习难度较低。
3 根底阶段的学习主张
依据以上评论,下面临广阔巴望学习嵌入式体系的学子提出几点根底阶段的学习主张:
①嵌入式体系软件硬件密切相关,必定要打好软硬件根底。其实,只需找到正确的办法,加上尽力,任何理工科学生,乃至非理工科学生,都能学好嵌入式体系。
②挑选一个芯片及硬件评价板(入门芯片最好简略一点,例如8位MCU)、挑选一本好书(最好有标准的比如)、找一位好教师(最好是有阅历且热心的)。硬 件评价板的价格必定要在1000元以下,不要太贵,最好能有自己着手的空间。不花一分硬件钱想要学好嵌入式体系不实践,由于这是实践性很强的学科。好书, 能够让人少走弯路,不被误导。好教师也能够是做过一些实践项意图学长(必定要找做过几个成功项意图学长或教师做辅导,不然阅历不足也或许误导),有教师指 导,学习进程会加速(人工智能学科里有个术语叫无教师辅导学习形式与有教师辅导学习形式,无教师辅导学习形式比有教师辅导学习形式杂乱许多。
③许多人怕硬件,其实嵌入式体系硬件比电子线路好学多了。只需深化了解:MCU的硬件最小体系,对I/O口、串行通讯、键盘、LED、LCD、 SPI、 I2C、PWM、A/D(包含一些传感器)、D/A等逐一试验了解,逐渐实践,再经过着手做一个实践的小体系,底层硬件根底就有了。各个硬件模 块驱动程序的编写是嵌入式体系的必备根底。学习嵌入式体系的初期,这个进程是有必要的。
④至于嵌入式实时操作体系RTOS,必定不 要一开端就学,这样会走许多弯路,也会使你对嵌入式体系感到害怕。等你软件硬件根底打好了,再学习就感到简略了解。实践上,许多嵌入式运用并不需求操作系 统。也能够依据实践项目需求,再学习特定的RTOS。不要被一些嵌入式实时操作体系训练班的宣扬所误导,而忽视实践嵌入式体系软硬件根底常识的学习。
⑤要防止片面地单纯从“电子”或“计算机软件”视点知道嵌入式体系。前面说过,嵌入式体系是软件与硬件的综合体。因而,要逐渐从MCU的最小体系开端, 一点一点了解硬件原理及底层硬件驱动编程办法。要经过标准的比如,了解软件工程封装、可复用等思维。经过标准编程,堆集底层构件(component), 也便是一个一个模块;可是要封装得比较好,可复用。
⑥重视试验与实践。这儿说的试验首要指经过重复来验证别人的作业,意图是学习根底常识,这个进程必定要阅历。实践是自己规划,有详细的“产品”方针。假如花500元左右,自己做一个具有必定功用的小产品,且能安稳运转1年以上,就能够说挨近入门了。
⑦关于入门芯片的挑选。不要选太杂乱的微操控器作为入门芯片,不能逾越学习进程。不要一会儿学习几种芯片。能够经过一个芯片入门,并具有一个实践阅历 后,依据实践需求挑选芯片开发实践产品。留意,不要把微处理器(MPU与微操控器(MCU)概念相混杂,微处理器仅仅微操控器的内核。
⑧关于嵌入式操作体系的挑选。能够比及具有必定实践根底后,挑选一个简略、简略了解原理的嵌入式操作体系进行学习。不要一开端就学习几种操作体系,了解了根本原理,实践中确有实践需求再学习也不迟。人总是要不断学习的。
⑨关于汇编言语与C言语的取舍。跟着:MCU对C编译的优化支撑,关于汇编言语能够只了解几个必要的句子,而直接运用C言语编程。但有必要经过第一个程序 了解芯片初始化进程、中止机制、程序存储状况等,差异于PC机程序的内容。别的,为了测验的需求,最好把握一门PC机编程言语。
⑩要清晰自己的学习意图,并留意学习办法。要清晰学习意图是打根底,仍是为了习惯作业需求而进行的短训。学习办法方面,要依据学习意图挑选适宜的学习途 径,留意理论学习与实践、通用常识与芯片相关常识、硬件常识与软件常识的平衡,要在了解软件工程根本原理根底上了解硬件构件与软件构件等根本概念。
以上主张,仅供初学者参阅。当然,以上仅仅根底阶段的学习主张。要成为杰出的嵌入式体系规划师,还需求在实践项目中训练,并不断学习与堆集阅历。