徐 友, 赵 涛, 沈亚斌
(南京工程学院, 江苏 南京 211167)
随着半导体技术、微电子技术和计算机技术的迅速发展,嵌入式系统技术的发展也呈高速发展,并广泛应用到电子通信、电气、工业控制等各个领域。嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可剪裁、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统[1]。目前,众多企业及相关科研单位对嵌入式开发人才需求迫切,因此,各个高校为适应社会需求而培养学生嵌入式系统设计和开发能力,相继开设了嵌入系统课程。嵌入式系统是将先进的计算机技术、半导体技术、微电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,而目前各所高校的嵌入式系统课程大多以选修课的形式开设,开设课时也相对较少,任何一个专业也不可能以嵌入式系统为培养目标来设置该专业的基础课程[2]。因此,在目前的教学背景下,如何引导学生学习嵌入式系统基础知识并逐步掌握嵌入式系统的基本开发方法,使得学生能够在今后的就业中能够发挥嵌入式设计和开发的特长,这就对嵌入式系统的课程教学提出了严峻的挑战,需要对嵌入式课程教学进行必要的改革和创新。
鉴于以上分析,本文就嵌入式系统课程教学内容、教学方式和实践教学等方面进行详细的分析和研究,提出嵌入式系统教学分别以Cortex-M4内核的STM32F104微处理器和μC/OS-II嵌入式操作系统为课程的硬件和软件教学内容和研究对象,在教学方式上提出了教师在课堂上直接对照嵌入式实验开发系统直观的进行讲解、现场编写嵌入式程序及演示实验结果、以项目开发和小课题设计为驱动的课程设计方法,激发学生的学习兴趣,提高课堂授课效率,以学生初步掌握嵌入式系统的基本概念、基本的软、硬件设计方法、培养学生工程实践能力为教学目标。
嵌入式系统的研究内容较为宽泛,其中主要包括嵌入式硬件设计和软件设计。嵌入式软、硬件设计的教学内容的选取原则应是适合本科生学习、与课程学时匹配、并具有较好的课堂展示效果。因此嵌入式课程教学内容的合理选取对课程授课效率和学生的学习效果起着至关重要的作用。
嵌入式系统硬件是嵌入式系统的重要组成部分,是嵌入式系统与实际环境交互的载体,其性能的优劣直接影响嵌入式系统的可靠性和实时性,决定嵌入式系统设计的成败,因此硬件设计在嵌入式系统设计中处于十分重要位置。在嵌入式硬件教学中,嵌入式课程的首先需要向学生介绍嵌入式系统的硬件在系统中的作用,并以日常生活中常见的嵌入式系统设备为例(例如手机、MP3播放器等等)直观的讲解嵌入式系统硬件结构,帮助学生建立嵌入式硬件系统的基本概念。在此基础上,嵌入式系统课程应着重讲授嵌入式系统硬件体系结构,如图1所示,并从硬件体系结构的三个层次给学生讲解嵌入式系统硬件设计。
1.嵌入式处理器,它是嵌入式系统的核心部件,负责整个嵌入式系统的运行。嵌入式处理器选型原则是硬件设计的重要教学内容之一,嵌入式系统课程应能引导学生了解处理器选型时应考虑的因素,如处理器性能、价格以及可获得的技术支持等等,培养学生根据种嵌入式处理器的特点和实际工程需要对处理器选型能力[3],为其后续嵌入式硬件设计的学习奠定基础。
2.嵌入式系统的外围电路,主要包括嵌入式系统存储器、时钟电路、数据端口、复位电路和系统电源电路等等,其中,时钟电路、复位电路和系统电源电路为嵌入式系统最基本单元,具有这三个基本单元和处理器单元的系统即可正常工作,也称其为嵌入式最小系统。嵌入式课程应能帮助学生了解嵌入式系统外围电路种类、功能及其设计方法,建立嵌入式最小系统的概念。
3.嵌入式系统外部设备,主要是指嵌入式系统与真实环境交互的各种设备,包括外存储设备(如Flash Card)、IO 设备(如键盘、鼠标等)、打印设备(如打印机)。
在学生了解嵌入式系统硬件的三个层次的基础上,嵌入式课程应选择一款适合课堂教学的处理器,并具体的讲解嵌入式硬件的各个电路的设计内容、设计方法和设计目标。
嵌入式课程硬件教学在选择处理器作为授课和研究对象时,应该考虑应用广泛且学习难度较低的嵌入式微控制器。在众多的嵌入式微处理器中,ST公司于2011年推出的基于Cortex-M4内核的STM32F104微处理器具有广阔的市场应用前景,广泛应用于工业控制、多媒体、精密仪器、家电等各个领域,STM32F104微处理器对于初学者来说具有开发简单、直观并且可获取丰富的网络支持的特点,因此本文以基于STM32F104微处理器的嵌入式系统为课程硬件教学内容,介绍STM32F104微处理器的主要特性,如处理的主频、字长等,并以框图形式介绍STM32F104微处理器的内部结构和片上的各个功能模块,如片上内存、片上AD和DA转换器、各种通信接口等。同时,任课教师应指导学生如何阅读芯片的英文数据手册,掌握英文数据手册的章节安排和阅读方法,提高学生英文文献的阅读水平,并能从中快速获取芯片的主要性能指标。
在嵌入式系统外围电路设计教学中,嵌入式课程必须着重强调系统的电源电路设计、复位电路设计以及时钟电路设计。嵌入式电源电路设计教学主要向学生介绍电源电路的两种类型,即线性电源和开关电源,以及两种电源电路的拓扑结构、工作原理和各自特点以及应用场合,并在此基础上向学生介绍2~3种常用的电源控制芯片,如线性电源常采用LM7805、AMS1117-3.3等线性稳压芯片,开关电源则常采用LM2596、MP2359等开关电源芯片,简单介绍各个电源芯片的主要参数,如输入电压范围、输出电流等参数等。嵌入式系统时钟电路设计的课程教学主要向学生介绍两种类型的时钟电路,即无源晶体和有源晶振电路,讲解这两种类型时钟的特点和应用场合以及时钟电路设计的注意的事项,并用多媒体给出两种类型电路结构,向学生分析电路中各个元件的作用。嵌入式系统复位电路教学需向学生介绍两种类型的嵌入式复位电路,即阻容式复位和专用复位芯片复位,介绍两种电路的特点,同时介绍几款常用的专用复位芯片(如MAX811),让学生掌握嵌入式系统复位电路的设计方法。
如果说嵌入式处理器是嵌入式系统的大脑,那么嵌入式系统的IO设备是嵌入式系统的四肢,是和现实世界交互的设备,嵌入式系统IO设备的教学需引导学生建立嵌入式系统中IO设备的概念,并举例说明嵌入式系统常用的一些IO设备,如嵌入式显示屏、键盘、打印机等。在IO设备的教学中,课程应首先介绍IO设备与嵌入式处理器的接口技术,分别介绍并行接口和串行接口,指导学生学习接口类型,并根据实际工程需要选择不同接口类型的IO设备,同时引导学生掌握各种接口的时序,并能够熟悉几种常用的接口类型,如I2C、Intel式并行口、SPI等接口以及各种接口的数据传输速率和物理接线数目等。
嵌入式软件是嵌入式系统的灵魂,与嵌入式硬件一起作为嵌入式设计的核心内容,因此,嵌入式系统软件设计是嵌入式课程授课的重要内容之一。嵌入式软件教学应注重培养学生的嵌入式软件开发能力,向学生讲解嵌入式系统的软件体系结构,如图2所示,即嵌入式软件可分为应用程序、应用程序接口、嵌入式操作系统、硬件设备驱动程序,加强学生对各个软件层次的把握。
嵌入式软件设计授课需要向学生讲授各软件层的功能与特点、嵌入式软件开发所需要具备的先行课程知识,明确嵌入式实时操作系统是嵌入式软件的核心,引导学生根据嵌入式系统的软件体系结构学会软件设计的分工。嵌入式课程应能够向学生介绍几种目前较为流行的嵌入式操作系统,让学生对目前常用的嵌入式操作系统的发展状况及其主要特点有所了解。目前,嵌入式实时操作系统可分为两种类型,即商用型和免费型,商用型操作系统有Vxworks、Wince、Palm OS等,商用型操作系统功能稳定、可靠,有完善的技术支持和售后服务,但是价格昂贵;免费型操作系统在价格方面具有较大的优势,主要以Linux为代表,嵌入式系统课程应要求学生能够熟悉并掌握一种嵌入式操作系统的基本原理和使用方法。μC/OS-II嵌入式操作系统是一种规模较小和源码开放的嵌入式操作系统,比较适合初学者学习和课堂教学,特别是学生在具备μC/OS-II操作系统基础和学习经验之后,再学习某些大型的操作系统(如嵌入式Linux)则可大大提高学习效率并获得较好的学习效果,因此本文选取μC/OS-II操作系统作为嵌入式操作系统的授课内容和研究对象,并以μC/OS-II操作系统为例讲授基于嵌入式系统的应用程序开发、驱动程序开发以及图形用户接口的使用方法。
同时,嵌入式软件教学需向学生介绍嵌入式软件开发工具和开发平台,其中主要介绍交叉开发系统调试结构和使用方法,如图3所示。
嵌入式交叉开发系统由宿主机系统、通信系统和目标机系统构成[4],嵌入式课程教学需要帮助学生直观的了解嵌入式软件开发的工作形式、嵌入式软件开发需要具备哪些条件和做哪些准备工作。同时,嵌入式课程需要向学生讲解1~2种嵌入式微处理器的上位机开发软件,目前STM32F104微处理器的软件开发普遍采用Keil μVision开发软件以及JLINK仿真器,则嵌入式课程需要向学生介绍Keil μVision开发环境设置方法、工程项目的建立方法、JLINK仿真器硬件连接方式以及驱动程序安装方法,使得学生能够自主构建基于STM32F104微处理器的嵌入式系统软、硬件开发平台,并能在此开发平台上新建工程项目、下载程序、仿真运行、断点跟踪调试等。
在嵌入式系统教学过程中,任课教师必须研究和制定一套有效的教学方式,合理安排课程授课内容顺序,注重知识的承前启后,对嵌入式系统的一些先行课的相关章节知识点需要进行必要的复习,比如在硬件设计中,需复习模拟电路、数字电路、微机原理及接口技术等课程的相关知识点,在嵌入式软件设计教学中,需复习C语言程序设计、操作系统、数据结构等课程,为嵌入式系统课程作必要的准备。
嵌入式硬件设计教学中,任课教师可在课堂上准备一些实验设备[5],将软、硬件实验直接融合到理论课程的教学中,在课堂上首先向学生展示一块嵌入式系统硬件电路板,如STM32F104应用开发电路板,让学生近距离观察电路结构和板上的各种元器件,并作简要介绍,使得学生能够直观的认识嵌入式系统硬件电路,然后以提问的方式引导学生对电路图如何设计和生成产生兴趣,授课教师此时可介绍嵌入式硬件设计步骤以及电路设计的相关软件,让学生了解嵌入式硬件原理图和印制电路板图(PCB图)设计过程和设计方法。在此基础上,授课教师在课堂上以一个简单的嵌入式电路系统为例,现场安装Protel电路图绘制软件,讲解并演示电路原理图和PCB图的绘制步骤和方法。
在电路图设计的演示之后,授课教师应给学生讲解硬件电路的调试过程和调试方法,让学生掌握嵌入式电源电路、时钟电路、接口电路的调试方法,并在课堂上现场演示硬件调试,最后以处理器的一个IO接口控制的LED灯闪烁为例,编写LED灯闪烁的例程,让学生直观的把握嵌入式系统调试方法。
嵌入式软件教学的主要内容是嵌入式操作系统的移植方法、使用方法和应用程序编写。授课教师在讲解嵌入式操作系统的使用方法时,可在课堂上利用多媒体教学手段基于μC/OS-II的操作系统编写应用程序,在操作系统的每个任务的主循环中添加断点,让学生直观的感受操作系统多任务切换机制,并以一个简单的软件例程,要求学生现场进行构思,开展广泛的交流,然后将学生构思的各种方案在多媒体上进行现场编程实现、输出结果,让学生对自己方案的正确性、合理性有直观的认识和理解,并促使其对方案进行修正,以使学生迅速掌握μC/OS-II的操作系统的使用方法和应用程序设计方法。
实验教学和实践教学是教学过程中重要环节,可提高学生对理论知识的理解和把握,培养学生工程实践能力、独立思考解决问题的能力。学生可以通过实验来验证理论课程知识,对于课堂上的例程,学生可以通过自己的学习和理解对其进行修改,然后进行实验,验证其修改正确与否,这是一种极其有效的学习方法。嵌入式系统课程设计是嵌入式系统课程的工程实践环节,旨在训练学生的动手实践能力和培养学生的方案论证能力、工程项目设计和开发能力,适应学生就业和社会需求。
嵌入式实验教学需要向学生详细介绍实验系统的拓扑结构、电原理图和系统的软件开发环境,并以一个简单的例程引导学生熟悉和如何使用实验系统的硬件电路和软件开发环境以及实验操作步骤。实验课程的章节内容安排应遵循由简入繁的原则,明确实验方法、实验步骤和实验目的,引导学生从一个简单的IO端口控制LED灯闪烁的例程开始学习,完成从新建工程、编写程序、下载程序调试、观看实验结果的实验过程,再以2~3个难度逐步增加的实验,明确实验目标(即实验成功后应看到的实验现象),激发学生的学习和动手实验的兴趣。学生在实验期间遇到问题,指导教师应积极引导学生检查问题并解决问题,而并非直接告诉学生答案,培养学生独立思考和解决问题的能力。在学生正确完成实验后,指导教师应积极鼓励学生采用多种不同的软件算法完成同一个实验,提高学生的编程能力和拓宽学生的视野。在完成实验的基础上,指导教师应鼓励学生在现有实验系统的基础上开发一些简单的电子设备,如数字电子钟、数字温度计、计算器等,让学生切身的感受到嵌入式技术的广泛用途。
嵌入式系统作为一门应用性很强的课程,进行项目化教学是课程设计教学改革的必由之路[6]。本文采用项目开发为驱动的课程设计形式,引导学生自主学习嵌入式硬件设计、操作系统移植、驱动设计、应用程序设计,以一个完整的项目开发作为课程设计任务,让学生全面掌握嵌入式系统设计的全部过程,巩固所学的理论知识。在课程设计选题方面,指导教师可提供一定数量设计课题,设计课题需具备较高的综合性和可行性,难度适中,要能够达到训练学生嵌入式方案论证能力和软、硬件设计能力的目的。学生也可根据自身的知识特点拟定课题,经指导教师审核修改后进行课程设计,同样,自拟课题也要达到综合训练的目的。课程设计的选题和实施应能培养学生的嵌入式方案论证和制定项目具体实施计划的能力,规范学生的嵌入式项目开发方法和开发步骤。
在嵌入式系统课程设计结束后,学校应提倡以学院为单位组织嵌入式系统设计大赛,进一步锻炼学生嵌入式工程实践能力,达到学以致用的目的。
本文在作者几年来嵌入式系统教学实践中,对嵌入式系统教学改革进行实践和研究,其主要任务是对嵌入式课程的特点进行分析和总结,并针对嵌入式课程教学的特点和要求对嵌入式课程教学内容、教学方式、实践教学进行分析和研究,探索嵌入式教学的有效途径。本文以STM32F104应用开发电路板为内容分析和讲解硬件设计流程,以易于学习和掌握的μC/OS-II嵌入式操作系统为主要的软件授课内容。在教学方式上,本文提出了利用多媒体教学手段在课堂上对照嵌入式STM32F104实验开发系统直观讲解、采用绘图软件演示嵌入式系统硬件电路的绘制过程和绘制方法、现场编写嵌入式程序及演示实验结果、以项目开发和小课题设计为驱动的课程设计方法,引导学生积极主动的思考和探索,激发学生对嵌入式系统的学习兴趣,提高嵌入式系统教学质量和课堂授课效率,培养学生的嵌入式软、硬件设计能力和嵌入式工程项目的研发能力,切实提高学生的嵌入式项目的工程实践能力。
[1]孙 弋,朱周华,等.ARM-Linux嵌入式系统开发基础[M].西安:西安电子科技大学出版社,2008.
[2]任 哲.嵌入式实时操作系统μC/OS-II原理及应用[J].北京:北京航空航天大学出版社,2009.
[3]黄 敏,郑 斌.嵌入式方向教学体系构建研究[J].当代教育理论与实践,2015,(1).
[4]Arnold Berger.嵌入式系统设计[M].北京:电子工业出版社,2002.
[5]沈亚斌,赵 涛,等.过程控制系统课程教学改革的探索与实践[J].安徽电子信息职业技术学院学报,2011,(6).
[6]钱丹浩.项目化嵌入式教学的开发系统平台构建[J].单片机与嵌入式系统应用,2010,(11).