APP下载

从架构、原理到设计的多维融合嵌入式系统知识体系构建

2017-05-12张凯龙

计算机教育 2017年4期
关键词:知识体系嵌入式系统教学模式

(西北工业大学 计算机学院,陕西 西安 710129)

摘 要:分析嵌入式系统知识体系特点与内涵,阐述从架构、原理至设计的知识体系的构建思路,探讨重构嵌入式系统课程教学内容的具体方法,提出一种多维融合的新的知识体系和教学模式。

关键词:嵌入式系统;知识体系;多维融合;共性模型;教学模式

1 背 景

嵌入式系统技术的发展已开始迈入微型化、信息物理融合以及智能化的时代,是物联网、智能制造等众多领域进行技术变革和跨越式发展的重要支撑。深入、全面地学习嵌入式计算机系统知识是进入嵌入式系统领域的首要步骤,也是进一步开展具体领域嵌入式系统设计的技术基础[1-4]。

嵌入式系统具有完整、庞大的独特知识体系,该课程的内容体系组织和教学方法在近年来已被广泛地讨论和研究[1,4]。随着知识体系的不断演化,如何有效地梳理相关知识点以构建完整的知识框架,如何在不失一般性的前提下突出每个知识点的嵌入式特性,如何穿透每一个知识点的内外部机理并实现不同知识点的融会贯通,以及如何实现从理论学习到实践能力转化等,都已经成为嵌入式系统课程教学改革中亟待重新考虑的问题。与此同时,专业课学习的目的不应仅停留在掌握知识内容本身,还应致力于知识体系的完善、对优秀思想的借鉴、思维方式的培养以及综合能力的提升。为此,在前期教学研究的基础上[2],笔者结合多年来对“嵌入式系统”课程教学的探索、教材编著以及承担的教学改革工作,总结、探讨了“从架构、原理到设计,从共性模型到具体实现、从宏观特性到微观原理、从硬件逻辑到软件机制等”的多维融合知识体系构建方法和课程教学模式。

2 知识体系特点分析

2.1 知识高度综合且又“大象无形”

嵌入式系统以计算机技术为基础,其知识体系具有高度综合、知识与技术密集等特征。不同于内容具体的专业课程,嵌入式系统的知识体系并不是单一的、具体的,而是蕴含于形形色色的嵌入式系统中,大象无形。究其原因,不论是处理器子系统、存储子系统等硬件的架构、接口和类型,还是所采用嵌入式操作系统、软件架构、编程语言及开发方式等,都具有丰富多样的形式。围绕特定软硬件所构建的知识体系强调了该类软硬件的具体设计、外部功能和特性,不具备代表性,也不利于学习者全面、深刻地进行学习。为此,在重构课程内容时就需要突出共性和系统性,既能以共性归纳和模型抽象的方式来讨论知识原理,又能以多维角度进行理论、原理、设计的有机融合。

2.2 “嵌入式”特性不断演化和丰富

嵌入式系统是一种特殊的计算机系统,它在计算结构上与通用计算机相似,但又存在差异。嵌入式系统的差异性主要体现在面向具体应用、软硬件可定制、资源相对受限等,同时在计算性能、可靠性、体积、重量、功耗等方面具有特殊要求,这使得嵌入式系統的软、硬件都呈现出丰富的“嵌入式”内涵。

2.2.1 硬件体系与设计

处理器子系统是嵌入式系统的核心,可以基于MPU、MCU、DSP或So(P)C等不同的嵌入式处理单元设计。其中,除了MPU与通用处理器较为相似、通用性较强以外,其他处理器的微架构、指令集、片内资源等均各具特色,要独立且又对照地分析和讨论。嵌入式存储子系统在数据管理方面大都具有特殊性,其分级的存储子系统体系一般由处理器的片内、片外存储资源构成,并涵盖RAM、ROM、FIFO以及NVRAM等多种存储器类型,实现形式丰富。另外,随着新型混合存储器的应用,存储子系统的组成也开始朝着简约化的方向发展,这也进一步影响着嵌入式软件架构、启动过程和资源管理等机制的设计。除此之外,嵌入式系统所使用的内部、外部总线以及形形色色的I/O接口等也都有其独特性。显然,课堂上首先需要对嵌入式系统的这些特性进行深入讨论。

2.2.2 软件架构与机制

在通用软件体系中,软件基于操作系统运行,软件设计者无需关注系统底层的软硬件细节。然而在嵌入式系统领域,软件设计一方面需要关注软件的体系架构、启动与引导方式、代码和数据的存储机制、软件的分区运行、特定I/O接口的驱动等系统层面的内容;另一方面,由于应用软件的算法和逻辑大都和系统层软硬件存在密切的交互,因此不同层软件的开发者需要熟悉或在不同程度掌握系统软硬件的知识,如BSP的开发者要熟悉硬件总体设计、机制以及嵌入式操作系统的基本属性与交互接口,驱动软件开发者需要熟悉具体硬件的逻辑、资源及特定的驱动程序设计方法等。

嵌入式软件设计结构被基本地划分为基于裸机的软件和基于嵌入式操作系统的软件。随着多核高性能硬件、网络组件、智能硬件以及实时、可靠等应用需求的发展,嵌入式软件的体系结构不断演化,逐步形成了网络化软件架构、基于嵌入式中间件的软件架构以及基于虚拟机管理程序的嵌入式软件结构等。与此同时,软硬件紧密耦合使得嵌入式软件的机制更为灵活,设计者可通过拓展软件逻辑来弥补硬件的缺陷或优化系统性能。例如,可以通过在嵌入式文件系统中部署磨损均衡等机制来提高Flash的使用寿命,在软件逻辑中增加滤波逻辑来消除硬件中可能无法避免的抖动及毛刺信号,又或者在软件中通过智能的软件判断来消除错误或降低系统功耗等。嵌入式软件体系的诸多演化将使得嵌入式软件组件以及软件的设计方法也将随之发生改变,相关知识需要不断更新。

2.2.3 设计与开发方法

嵌入式系统的设计首先要考虑软硬件界面的划分,是一个软硬件协同的规划和设计过程,而嵌入式硬件和软件的设计方法各有不同且又密切联系。嵌入式硬件设计的内容主要取决于体系结构、数字电路设计等先修课程,而并非自成一体。其共性基础是数字电路设计技术,在具体系统设计中还可能会使用到模拟电路、高频电路、电磁兼容、低功耗等设计技术。嵌入式软件的设计具有相对独立性和完整性,开发过程一般包括交叉编译、远程调试、交叉编译以及Monitor代理、JTAG调试接口等相关的软硬件原理和机制,设计方法也不断演化和丰富。另外,随着传统软件工程方法日益受到挑战,模型驱动开发(MDD)等新的嵌入式软件设计方法不断发展,并在近年来被越来越多地关注和应用。这些都应该是新型嵌入式系统知识体系的组成部分。

嵌入式系统的功能和性能验证具有软硬件融合特性以及运行时特性。“软硬件融合”意味着软件功能只有通过在目标硬件上的一体化调试、测试和验证才能证明其正确性;“运行时”特性则表示调试、测试等验证操作不应对系统的正常运行过程造成干扰。这在使用了中断机制或具有实时性约束的嵌入式系统中尤其突出。另外,对于信息物理系统还可能需要进行基于场景的仿真验证。

综上所述,只有在不断完善和清晰梳理知识脉络的基础上,突出各个知识点的嵌入式特性与原理,并以系统化的方式来综合分析这些知识点之间的内在关联,才能构建出一个立体的、多维融合的知识体系。

3 构建多维度的立体知识体系

采用多维度的方式来构建立体的嵌入式系统知识体系,将有效地穿透各个知识点,结合材料、物理等基础知识,促进整个知识体系的融会贯通。这既有助于学习者系统、深入地掌握相关原理和机制,也能训练学生从多个视角分析问题的综合能力和多维度思维。

3.1 基于计算机技术脉络梳理知识结构

抛开具体的应用功能,各类嵌入式系统本质上首先是各种各样的以数字处理单元为核心的计算装置,具有多样、完整的计算架构。因此,在梳理嵌入式系统知识架构的基础上,根据上述诸多“嵌入式”特性对知识点进行扩展、深化和完善才可以构造出符合嵌入式系统技术特征的知识体系。经过多年的教学探索和总结,我们提出如图1所示的“嵌入式系统”课程知识体系框架[5]。

图1中,绪论部分以讨论嵌入式系统的基本概念和内涵为主题,从基础研究、技术形态、核心内涵及演化历程等方面分析了嵌入式系统知识体系的总体结构、组成和特点。第二章梳理了嵌入式硬件相关的基础知识,重点是与后续内容密切相关的电路符号、器件以及硬件子系统组成、典型硬件形式、硬件设计基本方法等。该章内容有助于建立起对硬件的基本认识,以及提升初学者阅读电路原理图以及设计硬件电路的能力,是开展后续学习的重要基础。第三、四章分别分析了嵌入式处理器子系统和存储子系统的架构、原理与特性,探讨共性原理和个体特性。之后,围绕最小计算系统的设计和扩展方法,在第五、六章重点阐述电源、复位、时钟等外围电路以及典型接口与总线的特性、机理和设计方式。至此,嵌入式硬件部分的知识构成已比较完整,以此为基础可以过渡到嵌入式软件的相关内容。第七章对嵌入式软件的经典体系架构及衍生结构进行总结和分析,并结合嵌入式系统的启动过程重点讨论Boot Loader、BSP、虚拟机监控程序等基础软件组件。第八、九章分别分析和讨论嵌入式操作系统共性模型与机制、具体实现,以及图形库、文件系统、数据库等典型的嵌入式软件组件。第十章以软件与硬件、宏观与微观、系统/工具软件与应用软件相结合的维度,以方法与实例结合的方式,阐述嵌入式应用软件的基本结构、典型设计机制等内容。最后,结合嵌入式系统的开发特点,对典型的调试、测试、仿真等方法进行论述,补齐本知识体系的最后一块拼图。

3.2 从共性模型到具体对象的渐进式教学

针对上述特点和问题,除第一章之外,笔者在内容安排上尝试了尽可能从各知识点的共性模型入手,逐步過渡到具体原理和技术,同时采用了理论与实例相结合的内容组织方法。

3.2.1 总结嵌入式系统的硬件形式

紧扣IEEE Std 1003.13?-2003给出的嵌入式系统定义,将嵌入式系统的形式归纳为3种基本形态,即嵌入通用计算机型、基于领域标准模块集成的嵌入式硬件以及面向具体应用设计的专用嵌入式应用。这3种硬件的专用性、设计成本、适用性都依次增强,集成度、性能等也不断提升。在归纳这些特性的基础上,以典型的工业控制计算机、单板计算机以及智能手机嵌入式硬件为具体示例来分析这些不同类型嵌入式系统的硬件架构与设计特点。

3.2.2 梳理硬件子系统模型和特性

化整为零,以模块化的方式分解大系统,有助于清晰、深入地讨论每一个知识板块。嵌入式系统硬件中的处理器子系统、存储子系统、I/O子系统及时钟子系统等各具特点,需要采用不同的方式进行讨论。例如,对嵌入式子系统的讨论要重点围绕嵌入式处理器展开,进而要从处理器的微架构、指令集、寄存器资源、I/O、功耗等角度共性地描述不同类型嵌入式处理器的基本模型。基于此,可以进一步将这些模型、机制映射到ARM、MIPS、PowerPC等典型处理器体系结构以及代表性的处理器芯片实现,分析这些模型、机制在具体芯片实现中的设计方式及其外部特性。首先应讨论如何建立存储子系统的分级存储体系以及基于片内存储资源和片内、片外存储资源相结合的典型存储结构。之后,可以从嵌入式系统启动、数据存储和访问特性的角度来分析和讨论该子系统的体系与特点。另外,嵌入式系统的I/O是非常多元的,组织内容时应该从I/O结构、寄存器等共性机制着手,而时钟子系统的讨论则可从单时钟电路、多时钟电路逐步进展到可配置的时钟树机制等。

3.2.3 归纳嵌入式软件体系与结构

将嵌入式软件结构划分为裸机软件和基于嵌入式操作系统的嵌入式软件是合理的,但这种方式仍然过于简单。受不同因素的影响,嵌入式软件体系不断演化和丰富。例如,考虑软件的可移植性就形成了可移植的嵌入式软件结构;又如,在整合特定领域共性软件服务的基础上,形成了基于软件中间件的嵌入式软件结构等。近年来,随着多核处理器及嵌入式虚拟化技术的发展,具有隔离安全特性的分区式嵌入式软件体系也被越来越多地采用,嵌入式软件设计开始朝着分层和分区的复杂结构发展。因此,归纳这些经典的、新兴的嵌入式应用软件结构也就成为梳理嵌入式软件体系的重要方面。在嵌入式应用软件设计方面,课程内容中既要讨论轮询、带中断的轮询等典型软件结构的原理和特性,也要讨论典型的实现形式,如一次执行、无限循环、中断等。

3.2.4 提炼EOS内核中的共性机制

操作系统的发展历程本身就是一部解决计算需求和问题的历史。嵌入式操作系统的发展也不例外,其源自通用操作系统技术,又密切结合了嵌入式系统应用的需求。类似于嵌入式处理器,嵌入式操作系统的种类丰富多样,在体系、机制、功能、性能等方面各具特点。为了便于学习者全面地理解、掌握其主要原理和技术,课程内容中就应该归纳和提炼不同操作系统的共性特征,而不是以某个具体EOS作为唯一的学习对象。经归纳,EOS部分的内容主要可归类为架构模型和服务机制两个主要方面。EOS架构模型主要包括微内核/超微内核架构、功能模型、衍生模型及主流的开发平台框架,而服务机制则包括内核、任务及任务状态、任务调度与管理、中断与异常、实时服务、任务间通信与协同、存储管理等机制。在此基础上,后续课程内容就可以“由简至繁”地选择一组典型的嵌入式操作系统进行分析,实现理论原理与技术实现的呼应与融合。

3.3 多角度、多层次的知识原理综合探讨

嵌入式系统的诸多知识点之间都存在着密切、有机的联系,以多角度、多层次综合的方式对相关的知识点进行单点纵深穿透和多点横向关联对于提高课程质量将是非常有意义的,这对于研究型专业人才的思维和能力培养尤为重要。在之前模块化、模型化的基础上,进一步基于“从宏观特性到微观机制、从理论原理到具体设计以及软件与硬件相结合”的指导思想进行内容梳理,可以深度发掘各个知识点的内涵及其延伸。例如,对时钟电路机制的讨论可以简要地从正弦波振荡电路以及RC、LC、石英晶体振荡电路的原理和结构入手。在阐明相关物理原理的基础上,进一步分析和讨论复杂系统中的多时钟电路、处理器时钟树以及时钟的配置、管理等机制。对存储器子系统部分,首先要阐述各类存储器的内部机制、外部接口和访问特性,进而简要阐明不同类型存储元的微电路结构,如E2PROM采用的FLOTOX管、Flash采用的新型隧道氧化层MOS管、FRAM采用的PZT型CMOS管等。透过对这些微电路的物理结构、半导体材料属性以及热电子、能量势垒等物理效应的分析,将能更为清晰地分析存储器机制与特性。以Flash为例,微电路特性决定了存储元的访问速度会随着擦写次数的增加而降低,存储元隧道二氧化硅层中陷落的电子越来越多,其擦除周期越来越长,且在数十万次擦写后最终失效。因此,Flash中的各个存储元都应该被均匀地擦写。考虑这一特征,传统的磁盘型文件系统也不再适合于Flash存储介质,因此,就需要设计具有磨损均衡和位纠错能力的访问软件或文件系统。

以前后台或多任务嵌入式软件中的数据共享问题为例进行分析[5-6]。中断服务程序打断正在访问共享数据的后台任务进行共享变量的写入操作,将会导致共享数据被破坏进而引起系统的逻辑错误,这称之为数据共享问题。显然,只要保证后台任务能够不被中断地、“一次性”地完成共享数据的访问,就能够避免或解决数据共享问题。然而,当我们从微观、硬件或系统软件等多维度综合分析各种解决方案时,一些在形式上看似可行的方案却又行不通。这或者因为数据宽度大于寄存器宽度,或者因为一条高级语言代码对应于多条汇编指令,或者因为开关中断时可能存在逻辑漏洞,又或者因为编译器的优化功能删除了解决问题的有效代码等[6]。因此,嵌入式系统中的数据共享与硬件体系、中断机制、编译器等密切相关,要彻底地解决类似问题,设计中就需要从硬件结构、微观特性、算法逻辑、工具软件等多个角度来进行综合考虑。这也说明以采用多维度的方式进行学习和讨论嵌入式系统技术是非常必要的。

3.4 发展历程中的经典示例与他山之石

嵌入式系统技术领域的技术以及设计、实现系统的途径丰富多样,通常不会出现类似于通用计算机领域中WINTEL架构的技术垄断。这为嵌入式系统技术及其应用领域的拓展提供了非常广阔的创新空间。实际上,在计算技术体系的发展中创造和创新一直层出不穷,也涌现出诸多励志的事例。例如,铁电存储器的概念是由MIT的研究生Dudley Allen Buck在其硕士论文中率先提出的。瑞典梅拉达伦大学的博士生Adam Dunkels自行设计了LwIP(轻量互联网协议)、μIP(微型互联网协议),已演化为著名的物联网操作系统Contiki。20世纪90年代末,清华大学在研制国内第一台产品化虚拟轴机床数控系统时,因为无法找到适合其嵌入式Linux操作系统的图形库,而自行设计、开发了MiniGUI,现在MiniGUI已成为被广泛使用的著名嵌入式图形库系统。在知识体系中穿插地引入这些经典事例,一方面会有助于润色课程内容,让知识体系更为饱满和生动。另一方面,也有利于学习者了解技术背后的历史和来龙去脉,让学习者从这些事例閱读中汲取精神的营养,受到激励和鼓舞,进而以创新的思维和积极的态度去迎接挑战。

4 结 语

笔者所提出的多维融合知识体系适合于计算机科学与技术、物联网工程等相关专业本科生或研究生的培养体系。多年的教学实践和反馈分析表明,采用上述知识体系和教学模式可以有效地促进学生对相关知识的掌握并提高课程的整体教学质量。下一步将在不断完善课程内容的基础上,继续对教学模式和方法进行探索和优化。

基金项目: 2016年度西北工业大学教学与考核模式改革课题项目(校教字[2016]485号);2016年度西北工业大学专项教材计划项目(校教字[2016]216号)。

作者简介:张凯龙,男,工学博士,法国国立巴黎高等矿业学校(MINES ParisTech )博士后,副教授,中国计算机学会嵌入式系统专委会常务委员、系统软件专委会委员,研究方向为机器人与实时智能系统、自适应嵌入实时计算等技术,主讲“嵌入式(计算机)系统”“Real-Time Intelligent System Design”等课程,kl.zhang@nwpu.edu.cn。

参考文献:

[1]王苏峰, 宁洪, 陆洪毅, 等. 嵌入式系统课程体系及其创新实践的探索[J]. 计算机教育, 2010(7): 45-48.

[2]张凯龙, 周兴社, 张彦春, 等.“嵌入式计算”课程的教学探索与思考[J]. 计算机教育, 2009(4): 65-67.

[3]韩德强, 孙燕英. 北京工业大学嵌入式系统精品课程建设[J]. 计算机教育, 2006(8): 12-14.

[4]蒋银珍, 王宜怀. 计算机专业的嵌入式系统课程教学探讨[J]. 计算机教育, 2011(18): 46-48.

[5]张凯龙. 嵌入式系统体系、原理与设计[M]. 北京: 清华大学出版社, 2017: 1, 448-458.

[6]西蒙. 嵌入式系统软件教程[M]. 陈向群, 等译. 北京: 机械工业出版社, 2005: 49-68.

(编辑:彭远红)

猜你喜欢

知识体系嵌入式系统教学模式
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
“认知-迁移”教学模式在高年级阅读教学中的应用
CS2013指导下的程序设计课程实践教学实施方案设计与翻转实验教学实践
构建知识体系的专题课程教学改革实践和探索
智能信息处理实验课程建设
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
数学支架式教学模式的探索