王一光
摘要:嵌入式系统是各大高校广泛开设的一门实用性很强的专业课程,该课程对于学生未来从事嵌入式行业的职业发展非常重要。传统的嵌入式教学方法通常把教学的重点集中在嵌入式操作系统本身,也就是更倾向于软件层的讲解和介绍。而在中间层和硬件层方面涉及的内容相对较少,这使得学生容易在学习的过程中脱离实际并将嵌入式系统课程学成一门纯粹的理论课或C语言编程课。因此,文章在分析嵌入式系统课程特点的基础上,提出在教学过程中可以采用软硬件结合或理论联系实际的嵌入式系统教学方法。
关键词:嵌入式系统;教学方法;软硬件结合;理论联系实际
近年来,为了适应信息技术、物联网以及互联网等行业高速发展的需要,大部分高等院校都开设了嵌入式系统、嵌入式单片机或者嵌入式操作系统等课程。开设此类嵌入式相关课程的目的主要是使学生能够在本科阶段对该领域及相关技术有一个预先的了解,为将来从事该行业打下良好的理论及实践基础。但随着嵌入式系统相关课程的开展也逐渐暴露了一些在教学方法方面存在的问题,比如课程内容过于偏重原理介绍,忽视了理论与实际的结合、以软件编程(操作系统方面)作为主导使嵌入式教学变成了典型的编程语言教学等。因此,本文在上述问题的基础上归纳总结了如下几个关于嵌入式系统教学的改进方法和措施。
一、注重对于嵌入式系统硬件的讲解
众所周知,嵌入式系统不是一个简单的软件系统或者操作系统,无论是单片机、DSP还是FPGA等都是嵌入式系统的承载媒体或介质。脱离了承载的硬件进行嵌入式系统教学容易使学生脱离实际进行理论学习,而且可能使学生产生诸如“嵌入式系统开发就是C语言编程吗?”“嵌入式系统和Windows系统有什么区别?”“嵌入式系统的硬件就是一块电路板吗?”等疑问。因此,本课程在教学过程中应有意识地在每堂课中穿插加入关于嵌入式系统硬件设计的内容,包括GPIO(LED灯、按键、PWM)、串行通信接口(RS232、RS485、SPI、I2C)、温度传感器、USB、WDG(看门狗)、定时器、液晶显示、数模/模数转换、Flash存储和网络通信等功能模块。学生可以在学习嵌入式系统原理的同时更清楚、直观地认识嵌入式系统的各个硬件组成部分及其功能。这样,一方面对于已经完成的如“数字逻辑电路”“C语言程序设计”“模拟电路技术基础”和“单片机原理”等课程是一种巩固和加强;另一方面可以使学生对嵌入式系统产生更加真切的认识,避免出现“学完不知道学的是什么、也不知道用于何处”等诸如此类的问题。
二、在开展嵌入式系统试验的过程中注重各功能模块的试验教学
在嵌入式系统教学的过程中试验环节是必不可少的,学生不仅可以通过试验对所学的理论知识进行巩固,而且可以将理论知识运用到实际中去,更真切地理解嵌入式系统的原理。但在以往的教学过程中,试验的重点更侧重于软件环境的搭建、开发板环境的搭建、应用程序的移植、内核的裁剪移植和根文件系统的制作等。在实际中缺乏对前述的GPIO、串行通信接口、温度传感器、USB、WDG、定时器、液晶显示、数模/模数转换、Flash存储和网络通信等功能模块进行单独的、有针对性的试验训练和练习,而所缺失的功能训练环节对激发学生的学习兴趣是非常有益的。并且,单个功能模块的功能调试相对于整个嵌入式系统的调试来说相对比较简单,学生很容易通过简单操作看到实际效果,比如LED小灯闪烁、液晶屏显示温度以及与电脑进行简单串行通信等。每实现一个新的功能都会给予学生新的兴趣点,这样可以在一定程度上提高学生学习嵌入式系统的积极性和效果。因此,在嵌入式系统试验教学的过程中,增加一定的针对嵌入式系统硬件功能模块的试验环节对于提高教学效果和学生兴趣是非常必要的。
三、采用理论授课与实际操作同时进行的方式
作为一类学生比较陌生的操作系统,嵌入式操作系统在学习初期上手的难度较大。特别是其采用命令行操作式的交互方式,与传统的Windows图形操作方式有较大的差别。全新的用户、文件系统、进程、线程的概念以及网络管理、内存管理、进程调度、进程间通信、网络接口和虚拟文件系统等内核相关内容对于大多数学生来说理解起来都存在一定的困难。因此,为了实现更好的教学效果,在条件允许的情况下可以选择在机房授课的方式,通过多媒体教学系统和虚拟机软件(VMware),在讲解的同时进行演示操作并可以随时方便快捷地解决学生在学习过程中出现的问题。
四、采用课程设计的方式使学生完整地参与一个嵌入式项目的开发过程
仅有理论教学的嵌入式系统课程很难获得良好的效果。一个完整的嵌入式项目开发过程(从设计、编程到调试、实现的全过程)可以使学生将之前所学的相关知识综合运用、融会贯通。美国加州大学伯克利分校从事嵌入式系统教学多年的Edward A. Lee教授认为“在六周的嵌入式相关教学课程之后,学生须要利用九周甚至更长的时间参与一个课程设计项目,从列表中选择一个他们感兴趣的项目进行研究。而且,在这个研究过程中对学生进行指导的不是讲授嵌入式系统课程的教师,而是一些真正从事实际嵌入式项目的技术人员”。由此可以看出,欧美发达国家的高等院校在进行嵌入式教学的过程中会利用较长的时间(嵌入式课程理论教学时间的1.5倍)来引导学生参与完整的嵌入式课程设计并接受具有丰富实践经验的嵌入式专业技术人员的指导,这对学生形成完整的知识体系、提高实际动手能力都是很有帮助的。同时,可以采用分组的方式使学生进行团队合作,充分培养他们的团队协作能力和团队合作精神。因此,我们通过采用更偏重实际的嵌入式课程设计使学生获得更多的相关知识和实际经验。
下面以本人在课程设计中采用的嵌入式基站控制系统项目为例进行说明:该系统以实现大量移动通信基站的安保、安防以及远距离自动无人值守监控功能为目的进行设计,可以利用视频和传感探测单元等对本地的异常报警事件进行储存或通过3G无线网络将实时信息上传控制中心,从而实现远程集中监控的设计目标。该系统软件环境采用Linux嵌入式实时操作系统,硬件采用飞思卡尔IMX.53X系列微处理器作为核心控制单元,通过与多通道视频控制器(TW2835)相结合构成一个集视频监控、任务调度、网络通信和数据采集为一体的多功能操控平台。
考虑到培养学生的动手能力和团队合作精神,此课程设计以六人为一个小组,每个小组推选一名负责人,负责进行分工和协调。根据嵌入式系统教材的内容和教学大纲的要求,将整个嵌入式基站控制系统课程设计分为如下6个部分:1)人机界面:通过LED指示灯和音频对系统的工作状态、报警和故障进行指示以及实现远程呼叫、对讲功能;2)视频监控:采用420线NTSC制式的CCD球式或枪式摄像机CATV型视频接入,将视频录像数据进行本地保存并采用覆盖方式存储;3)有线网络数据通信:通过有线网络与远程上位机系统进行视频数据、语音数据、业务数据以及指令的交互通信;4)无线网络数据通信:采用支持CDMA标准的3G通信模块实现无线网络通信功能;5)RS-485/RS-232通信:与球式摄像机的云台、空调监控模块和UPS等动力环境监控模块进行通信;6)报警事件本地存储:将报警事件信息及相应的视频录像数据保存在本地的Flash或SD卡中,随时可以远程对本地存储的报警数据进行管理。
五、采用多种方式对学生的嵌入式系统学习过程进行评价
与传统的理论教学为主的专业课程不同,嵌入式系统课程本身更偏重于实践操作。因此,采用传统的期末“一张考卷”的成绩评定方式对学生的学习效果和能力进行评价并不尽合理,同时也容易影响学生参与嵌入式系统教学、试验和课程设计的积极性。因此,可以考虑适当降低理论部分在学生嵌入式系统学习成绩中的比重,甚至可以考虑取消理论考试,取而代之以试验考试或者课程设计的表现作为决定学生期末成绩的主要依据。比如,可以将最终评定方式的比例选择为理论考试占20%、试验成绩占40%、课程设计成绩占40%。当然,也可以对上述比例进行适当的调整,但主要的原则应该是鼓励学生主动地提高自身的动手和试验操作能力,使其在毕业后能够较快地融入到嵌入式领域的工作中。
参考文献:
[1]贺丹丹,张帆,刘峰.嵌入式 Linux 系统开发教程[M].清华大学出版社, 2010.
[2]杨霞.嵌入式系统及应用课程教学研究与实践 [J].计算机教育, 2008, 5: 71-74.
[3]Lee E A, Seshia S A, Jensen J C. Teaching embedded systems the Berkeley way[C].Proceedings of the Workshop on Embedded and Cyber-Physical Systems Education. ACM, 2012: 1.