引言
按照教育部的划分,“计算机类专业”包括计算机科学与技术、软件工程、网络工程,“信息技术相关专业”包括地理信息系统、电气信息工程、电子信息工程、电子信息科学与技术、光信息科学与技术、生物信息学、通信工程、微电子学、信息安全、信息对抗技术、信息工程、信息与计算科学、自动化。这些专业可以合并称为“电子信息类专业”。一方面,我们为这些学科能为中国学子创造大量接受高等教育的机会而高兴;另一方面,这些专业的一些毕业生专业特色不明显,导致竞争优势不强,需要调整陈旧的教学内容与培养模式。
在IEEE计算机协会和ACM共同制定的CC2004版计算机类课程体系中,嵌入式系统已经被列为核心课程之一[1]。嵌入式系统的开发应用覆盖航天、航空、交通、网络、电子、通信、金融、智能电器、智能建筑及军事等各种领域。这促使了嵌入式系统课程在信息类专业中的推广和普及,也带动了社会上嵌入式系统培训的升温。嵌入式系统开发正在朝着“无所不能”与“无所不在”的方向迅速发展。即便在金融危机影响之下,其产业规模仍将继续稳步增长。
随着社会对嵌入式系统人才培养需求的增加,目前嵌入式系统的教学大致分为以下两类:
第一类在电子工程、通信工程、自动化等偏硬件专业开展。这些专业强调硬件功底,要求掌握硬件设计原理,能够在硬件设计与工程应用中有更好的发展。
第二类在软件工程、计算机科学与技术、网络工程、信息安全等专业展开,主要从事嵌入式操作系统和应用软件的开发[2]。如果学程序设计的人对硬件原理和接口有较好的掌握,完全可以完成系统引导和硬件驱动程序的设计。嵌入式产品的增值很大程度上取决于嵌入式系统软件。
1 嵌入式系统教学开展情况与存在的问题
电子信息类专业的专业主干学科为电子科学与技术、信息与通信工程和计算机科学与技术。该类专业涉及的各学科一直保持快速发展的势头,并在一定程度上出现了相互融合的趋势。最有代表性的是通信与网络技术、嵌入式系统技术、信号处理技术、微电子技术的快速发展和相互渗透,以嵌入式系统作为上述技术的载体。
从计算机科学与技术的角度看,嵌入式技术是后PC 时代计算机技术发展的一个重要方向,嵌入式系统作为重要的计算机软硬件平台,将应用到越来越广泛的领域;从信息与通信工程的角度看,利用嵌入式系统平台来实现信号处理、网络通信、移动计算等,是非常有前途的技术应用方向;从电子科学与技术的角度看,嵌入式系统综合运用了电子技术,还集成了软件技术,并向可编程片上系统(SOPC)和片上系统(SoC)方向发展[3]。
目前几乎所有本科院校的电子信息类专业都开设了嵌入式系统课程。对教学方面的促进一方面来自市场人才需求的推动,另一方面也得益于中国计算机学会、中国电子学会等机构的大力推广。另外,伴随着人才市场的巨大商机,一些社会上的嵌入式系统培训机构如雨后春笋般涌现。
但是,嵌入式系统人才还远远不能满足社会的需求,各大高校在这方面的教学还存在很多的问题:
第一,没有合理的课程体系。目前我国高校的电子信息类专业的教育普遍以微型计算机的架构为主,学生更多接触的是PC架构上应用层面的知识,和嵌入式系统开发相关的硬件课程开设比例很小。在开设了嵌入式系统相关课程的学校,嵌入式系统专业课程和传统的程序设计、微机原理等课程是割裂开来的,单独开设,没有形成合理的课程体系。这使得教学培养方案的制定者难以安排,教师无法在规定的课时内贯彻嵌入式系统开发所需的知识,学生没有足够的精力学习额外的课程,结果导致对嵌入式系统浅尝辄止,毕业后无法胜任嵌入式系统的研发与实施工作。
第二,教学实验装置陈旧。例如,很多学校的微机原理与接口实验装置,用的基本还是淘汰了的8086/8088系列实验箱,好点的学校可能换成了Pentium/Celeron实验箱,但基本还是MSDOS/Windows平台的实验,存储器和接口芯片基本还是过时的型号,学生学习的时候很难对硬件有深入的掌握,将来的工作中也应用不到。
第三,知识结构及教学模式存在问题。作为嵌入式系统开发需要的三大技术支柱——计算机体系结构、计算机操作系统、计算机网络,国内的教学内容极度陈旧,跟不上最新技术的发展。程序设计只会Windows平台下的软件开发,微机原理课中还在开设8086/8088的内容,操作系统原理和计算机网络教学基本是理论讲解,没有实践操作。在其主干知识结构中没有体现嵌入式系统的需求,学生想转入嵌入式系统的学习,在知识结构方面有很大的缺失。
第四,师资队伍不能满足要求。虽然目前绝大多数的本科院校开设了嵌入式系统方向的教学,但能够承担嵌入式系统教学任务的师资力量严重不足。一方面是一些重点高校,率先开设了一些嵌入式系统前沿课程,虽然具有丰富的教学经验,但苦于嵌入式系统方面的理论还不够深入、系统,这方面的课程教学还是流于工程技术文档的传授,不能体现技术的普适性;另一方面,一些开设课程较晚的普通高校,嵌入式系统的教学基本还处于摸索阶段,老师边学边教,效果并不好。
第五,随着这几年嵌入式系统成为热点,嵌入式系统的相关课程相继在电子信息类专业中开设,然而嵌入式系统课程讲授的大都还只是微处理器相关的技术文档和程序设计文档,共性的基础理论和方法论还涉及太少,没有得到提炼。另外,课程的开设基本是在大三下学期或大四上学期单独开设,学时相对有限,大部分学生无法在很短的时间内掌握嵌入式系统的基本知识和设计方法,更谈不上深入的技术和研究了。特别是对于计算机专业的学生来说,一方面学生认为计算机基础课程的学习(例如计算机导论、程序设计基础、微机原理等课程),很多书本知识过时陈旧,没有相关的实验体会,学来无用,浪费了学时;另一方面在高年级的时候,面对市场的需求,转而投入嵌入式系统的学习,结果又发现在计算机硬件基础、嵌入式程序设计语言方面欠缺太多,造成在嵌入式系统方面的学习困难。
2 嵌入式系统融入基础和专业教学的思路
嵌入式系统技术越来越热,各种产品中嵌入式微处理器的应用也越来越多,更多的RISC芯片为大家熟悉,主流系列有ARM(包括XScale)、MIPS以及SH等,还有一些DSP、专用SoC等芯片也有较多的应用。在FPGA设计领域,原来FPGA的开发需要丰富的硬件基础知识和逻辑电路的门级设计能力。伴随FPGA的发展,现在的FPGA开发已经软件化了,逻辑关系的设计可以使用表达式(不限硬件语言),接口类型就像设定编程过程中变量的数据类型定义一样方便。特别是“IP Core”技术、嵌入式CPU技术和内嵌片上系统技术,使得整个FPGA的设计变成了简单的软件编程设计,即使是大到CPU芯片设计的门槛也大大降低。
近来随着嵌入式系统和传统课程教学的矛盾加剧,使得这方面的教学改革更加迫切。即使是对嵌入式系统的定义也有多种说法,让人莫衷一是。嵌入式系统的相关技术为大多数的学科所使用,得到了很好的交叉应用,但嵌入式系统本身还无法形成独立于计算机学科之外的新学科。争论的焦点在于嵌入式系统和PC到底有什么区别,有人认为嵌入式系统就是非PC的计算机,而有人不认同这样的定义,但又苦于无法提出反驳的支持实例。除开学科的发展,在课程设置方面,最近甚至不少人认为微机原理这门课程将要消亡,提出以ARM体系完全取代X86为代表的WinTel架构的教学。
Intel对嵌入式系统产业更加重视,它将在XScale(Intel购买的ARM微处理器的一个分支,Intel将其卖给了Marvell公司)方面获取的经验转入到自己的嵌入式系统微处理器研发中,特别在移动上网本成功之后推出了一系列基于嵌入式系统的Atom微处理器,中文称为“凌动”平台。Atom处理器是Intel历史上体积最小和功耗最低的处理器。Atom基于新的微处理架构,专门为小型设备设计,旨在降低产品功耗,同时也保持了同酷睿2双核指令集的兼容,产品还支持多线程处理。所有这些集成在面积不足25 mm2的芯片上,内含4 700万个晶体管,而11个这样大小的芯片面积才等于1美分硬币面积。
目前,Intel凌动处理器Z5xx 系列和Intel系统控制器中心US15W 开发套件提供了一个可满足各种嵌入式应用的多功能平台,包括车载信息娱乐系统、医疗、互动客户端(网亭和POS 客户端)、游戏和工业控制,专为嵌入式产品和应用而开发的Intel嵌入式显卡驱动程序和视频BIOS 也支持此平台。预计明年Intel将会把内存和图形控制器集成到新的Atom微处理器中,成为集成度更高、功能更强、小尺寸、低成本的嵌入式系统平台。Intel凌动处理器推动了低功耗设计的发展,可将Intel微架构的优点融入限热的无风扇小型嵌入式应用。这种功耗优化的处理器基于45 nm制程技术而设计,采用13 mm×14 mm超小型封装,提高了每瓦性能。它具有嵌入式生命周期的支持,并与32 位Intel架构软件和其他芯片兼容。
可以说Intel凌动处理器Z5xx系列和Intel系统控制器中心US15W开发套件的出现,为嵌入式系统和传统PC架构的教学提供了很好的融合机会。本文基本的思路就是使用Intel凌动嵌入式系统改革微机原理的课程和实验,打破嵌入式系统和PC泾渭分明的界限,将嵌入式系统的理论与技术贯穿到整个电子信息类专业的基础和专业教学中。
嵌入式系统在电子信息类专业的教学改革基本的思路如下:
首先,改革课程体系。嵌入式系统已经以不可抗拒的发展速度在前进,嵌入式系统已经无处不在,基于此,最近提出了物联网的概念。所以,应该在本科阶段的计算机文化基础、计算机导论里面加入嵌入式系统的架构、软硬件设计方法以及应用实例等方面的介绍;最好在Linux GNU CC环境下进行程序设计基础课程教学,让学生在开始学习程序设计语言的起步阶段即熟悉Linux环境下的程序设计、编译和调试,熟悉PC上的C语言编程和嵌入式C语言编程的区别;数据结构这门课程也必须体现在PC上的实现和在嵌入式C语言下实现的区别;对微机原理课程进行改革,在计算机系统的介绍中加入嵌入式系统的介绍,讲述嵌入式系统和PC综合后的分层结构、设计方法与理论、嵌入式系统和PC的区别和共性,在介绍微处理器设计抽象的基础上分别讲解CISC和RISC指令集。微机原理教学重点以Atom指令集融合讲解X86指令和具有嵌入式系统特征的指令(例如低功耗电源管理等),介绍最小系统的引导、驱动原理以及启动代码实验,操作系统裁剪、内核编译与安装实验。基于凌动处理器Z510和Intel系统控制器US15W(或Intel最新Atom系列微处理器)介绍具有嵌入式系统和PC双重特征的存储器扩展与使用,以及输入输出接口、DMA、定时器、中断管理、串并行接口、总线技术以及其他新型接口,在x86汇编以及Linux GNU CC环境下设计微处理器指令、定时器、中断管理、总线设备驱动等实验。这些实验既可以体现传统微机原理的实验,又体现了嵌入式系统里操作系统引导、软硬件可裁剪、低功耗电源管理、便携式可移动等特点,让学生在计算机原理的课程学习阶段就打下嵌入式系统的基础。在基础课程里溶入嵌入式系统的知识,学生在高年级就可以有很好的基础去学习嵌入式系统软硬件设计,对嵌入式系统的学习就可以上升到系统级。
其次,采用先进的专业培养模式。可以参考佐治亚理工大学计算机学院提出的Threads培养方案[4],把学生的培养过程分为线程和角色两个构件,线程是学生的计算身份、学习内容与轨迹,角色代表学生的学习定位。把专业的教学按照线程的模式设计,不同方向按照知识点的内在联系形成交叉课程体系,而不是垂直体系,规定某个方向为主干课线程,允许学生中途改变学习的线程,以适应不同方向的选择。我们可以在Threads方法的基础上加入知识点的考核判断,判断学生的学习线程状态,可以根据他对基础知识的掌握程度,推荐他适合的下一步某个线程的学习。另外必须跟踪新技术的发展,更新课程的实验装置,淘汰过时的设备,在新的平台上重视实践和创新实验的开设,让学生毕业后可以快速适应社会的需求。
然而,有了好的课程体系和培养模式,最终是否能够实施成功,教学的效果能否体现出来,还是决定于教师的理论水平和专业技能。我们需要加大教师的培养力度和理论实验教材的建设。注重嵌入式系统师资的培训,将专业教师派到企业直接参与项目的开发,或者由各级学会组织相关的培训,让教师在嵌入式系统理论和技术的掌握上得到实质的锻炼。通过这种方式使得专业课教师能够紧跟时代的步伐,时刻引领新知识、新技术,避免知识的陈旧化,广泛开展嵌入式系统教学的研讨,按照将嵌入式系统融入到基础和专业课程中的思路,精心组织系列教材的编写。
结语
在中国计算机学会以及中国电子学会嵌入式系统专家委员会的带动下,我们正在推出基于Linux GNU CC的程序设计语言基础教材、嵌入式系统理论与技术教材,以及有关Atom平台的计算机原理与接口技术的理论教材和实验装置等。