郭国法,宫瑶,张开生
(陕西科技大学 电气与信息工程学院,西安710021)
在信息技术和网络技术飞速发展的电子科技时代,嵌入式系统已经渗透到现代生活的方方面面,包括硬盘驱动器、遥控器、汽车防锁刹车、农业大棚温湿度控制、智能家居等。整个社会对掌握嵌入式技术的创新性人才求贤若渴,各高校对嵌入式系统课程教学越来越重视,因此培养出合格的创新性嵌入式技术人才迫在眉睫。但目前嵌入式课程教学实验平台多采用成熟的嵌入式开发板[1],仅以验证性实验为主,并且开发板芯片与功能硬件已经确定不容更改,学生在其实验平台上只能依照厂商提供的板载程序运行,观察实验现象,不利于学生掌握硬件原理、程序编译和调试的方法,不能进行深度嵌入式系统的开发,动手实践能力不足,同时传统的课程教学实验平台也不能较好地引导学生接受和掌握单片机与嵌入式系统相关知识,尤其是从单片机学习过渡到嵌入式系统学习的过程显得尤为艰辛,究其根本,原因是缺乏一种快速引导学生进入嵌入式学习的实验平台。
针对这种情况,采用软硬件资源完全开放的CDIO模式嵌入式课程递阶教学平台,CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)教学理念,倡导在工程基础知识、个人能力、人际团队能力和系统工程能力4个层面上进行综合训炼[2-5]。嵌入式课程递阶教学平台应用CDIO工程教育理念于理论教学与实验教学中,从实验项目策划设计到实验项目运行为教学实践全过程,采取多核硬件板与模块化软件设计相结合的方式,以满足不同层次的学生对嵌入式课程学习阶段的需求为目的,设置了相应的验证设计、综合设计及创新设计的进阶教学实验,让学生以主动的、实践的方式渐进式学习嵌入式课程,帮助学生快速从单片机的学习过渡到嵌入式系统学习当中,逐步具有设计开发嵌入式系统的能力,很好地解决传统嵌入式教学平台不能分层次递阶教学和实践的问题。
嵌入式课程递阶教学平台主要由计算机和目标实验板两部分组成。目标实验板硬件采用多核心板适配通用功能拓展底板的双层结构设计思想,上层为核心板,下层为功能模块拓展底板,底层板与核心板的连接采用插拔的组合方式,插座的引脚与底层板的连接是固定的。底层板为通用功能模块拓展底板,使用过程中保持底层板不变,通过更换核心板使其分别当作嵌入式课程入门级单片机学习平台或者高层次的嵌入式系统学习平台使用,整体形成递阶式开放结构。
教学平台初期用于基于51系列单片机无操作系统教学模块,后期用于结合嵌入式操作系统的ARM7学习进程。在软件上,系统选用ARM公司推出的KeilμVision4作为开发工具,提供各个实验模块程序的主要框架及模块化程序函数调用入口。嵌入式操作系统选择性能稳定、可移植性好且功能强大的μC/OS-II操作系统。递阶教学平台模型框图如图1所示。
图1 嵌入式课程递阶教学平台模型图
上位机通过USB线与目标实验板串口相连,软件采用由VB编写的嵌入式递阶教学平台实验窗口,将嵌入式课程教学所需的理论基础资源整合在上位机实验窗口下,构建一个完整的素材库,包括嵌入式课程教学PPT及实验演示视频、芯片和元器件数据手册、功能模块源代码库、嵌入式系统开发工具软件。软件系统平台还提供两个接口:教师接口和学生接口。教师接口用于添加素材库资源,学生接口便于学生进行理论化知识的学习和图形化编程的开发。学生根据自身掌握嵌入式知识的情况,有选择地访问上位机平台实验窗口中共享的素材库资源,在线学习理论化的嵌入式系统基础知识,也可将功能模块源代码下载到目标实验板上,完成相应实验项目。
核心板由嵌入式微处理器、芯片最小系统、拓展板接口3部分组成,最小系统包括支持微处理器工作的时钟模块、Flash模块、复位模块[6-8]。核心板由易到难主要设置3种微处理器,分别为单片机AT89C51、STM32F103C8微处理器以及32位的ARM7微处理器LPC2103,并且将芯片全部I/O引脚引出来与通用功能拓展底板上留有的引脚接口相连。表1为单片机与嵌入式芯片对比表,通过3种学习难度递增的微处理器搭配底板形成层次教学平台。图2为硬件平台原理框图,其中虚线部分为需要安插的上层核心板位置。这3种芯片价格低廉、通用性强、功能完整,包括存储器、定时/计数器、可编程的I/O端口、可编程全双工串行端口、中断源,不同的芯片内集成了16位或32位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,易于二次开发,能够满足教学平台基础实验和项目综合设计性实验的使用需求。
图2 硬件平台原理框图
表1 单片机与嵌入式芯片对比表
底层功能模块拓展板的设计主要以加强外围功能接口应用的学习为目的,设计了课程教学基础实验所需的多种不同功能模块和定向专业拓展模块。图2中实线部分为通用功能模块,主要包括:电源模块、I/O模块、串口模块、键盘模块、A/D转换模块、LED模块、LCD模块等。同时,底层板预留有可扩展I/O接口,学生可通过将自行设计的功能模块纳入下层拓展底板,构建个性化嵌入式系统。
定向专业拓展模块底板包括:ZigBee模块、蓝牙模块、传感器模块、GSM模块。各个功能模块为独立单元,由微处理器直接控制,同时各模块之间也可根据实验项目要求进行组合与拓展,来适配电子、控制、电气等不同专业学生的特定嵌入式系统综合实验与开发。
在软件教学过程中经常会忽略模块化程序的深度应用,而模块化编程是组织良好程序结构的有效方法之一。复杂的工程都是由若干相对独立的功能模块嵌套组合而成,模块化编程设计可以化繁为简,并且为程序模块间的相互调用以及数据传递提供了便捷的途径,有助于程序的调试,增强了程序的可读性。
基于CDIO模式的嵌入式递阶教学平台采用ARM公司推出的KeilμVision4进行程序编译。针对底层板上不同的功能硬件,例如串口模块、键盘模块、A/D转换模块、LED模块等,教学平台将各个功能模块源程序模块化封装后生成的特定功能模块函数或文件集中存放在上位机教学平台实验窗口素材库中,便于使用者下载、编译。
在系统软件平台中,程序模块化封装过程略——编者注,由学生完成软件环境相关设置,并对芯片的各个功能进行配置,根据实验目的构思软件架构,有选择性地从模块素材库中下载所需的模块源文件。源文件由教学平台提供,根据功能的不同,编写模块源文件所需要的宏定义或结构体,提供C语言模块程序接口,方便学生调用。各功能模块程序由教学平台封装后得到唯一的封装函数或文件,并且仅实现对该功能模块硬件的驱动。不同的功能模块程序可以相互嵌套、调用和编译。考虑到预处理程序能够提供条件编译的功能,可以按不同的条件编译不同的程序部分,产生不同的目标代码。基于此,在同一模块的源文件中使用条件编译,软件系统根据宏定义及芯片配置,有选择性地编译单片机程序的代码部分或者嵌入式系统程序的代码部分,实现单片机核心板与嵌入式核心板源程序代码共享,提高两种代码的对比学习,有助于学生对知识的理解。
以矩阵键盘数码显示实验为例,实验系统包括硬件模块和软件模块。硬件模块包括2×8矩阵键盘输入模块、数码显示模块和74 HC595级联模块。软件模块包括74 HC595级联模块硬件驱动程序、数码管显示程序、按键扫描程序、取键值程序。
74 HC595_Send Dat()为74HC595级联模块驱动程序函数,负责发送一个字节的数据到74 HC595。Key.c文件对应2×8矩阵键盘功能模块目标代码,包括键扫描程序和取键值程序,此Key.c文件是教学平台窗口下提供2×8矩阵键盘驱动的预编译程序,平台软件系统需要根据实验所选微处理器为单片机AT89C51芯片或嵌入式LPC2103芯片的配置,以及I/O硬件接口设置对原始Key.c文件中的预编译目标代码重新宏定义,再条件编译生成新的模块化封装文件Key.c。Num show.c文件实现数码管显示功能,它的软件系统条件编译过程同Key.c,这里不再赘述。
学生实验时,在递阶教学平台软件系统工具软件窗口下打开KeilμVision4并新建工程,将已经依据实验要求重新条件编译生成的功能模块Key.c和Num show.c文件添加到工程中。打开main.c文件,依照键盘显示程序流程图编写主程序,定义头文件Key.h与Num show.h,并将其添加到main.c中。编译显示函数main.c时,只需根据接口的定义合理嵌套74 HC595_Send Dat()、键扫描函数和取键值函数,然后通过调用数码管显示函数Num show()对结果进行显示,最终准确快速地完成整个程序代码的编写过程。
嵌入式课程递阶教学实验平台是基于CDIO思想,即从构思、设计到实施、运作这一工程教学理念来实现嵌入式课程教学与实践一体化。整个教学平台以“实验”为核心,旨在让学生在学习实践过程中,逐步地从8位51系列经典单片机基础过渡到功能齐全的综合性单片机,最后递阶到ARM7体系,学习过程从简单到复杂、逐步深入[9-10]。
初级教学阶段对应于CDIO模式中的构思阶段,以运行LPC2103、STM32F103C8芯片模块程序,学生观察实验结果为主。将51单片机微处理器的硬件核心板与嵌入式微处理器的硬件核心板对比使用,采用统一的软件结构搭建起嵌入式的学习平台,保证能够快速进入嵌入式学习中。
第二阶段为设计阶段,教学平台为学生构思、搭建实验硬件电路提供完整的资料与环境支持。通过对嵌入式教学实验系统各个模块:UART、USB、LCD、触摸屏和矩阵键盘等常用接口操作实践,模仿改编实验程序,熟悉ARM7的无操作系统基础应用,为后续应用系统的开发做好铺垫。
在实施和运作阶段,从教学平台实验素材库提供的应用开发实验(例如D/A、A/D实验,LCD显示实验,触摸屏实验)切入,探索研究交叉编译环境的建立、调试方法和编程技术。熟练掌握51、ARM7基本编程,同时,学习编写系统的Bootloader程序以及实现μC/OS-II操作系统在STM32F103C8芯片上的移植和WinCE操作系统的移植,实现了操作系统各接口电路驱动程序和应用程序的编写也作为教学实验平台的一个重要功能。
CDIO模式化设计的递阶实验系统有利于教师改革教学方法,从传统的纯理论教学改为理论与实践并重的项目教学,取得了较好实践效果。
教学平台基于AT89S51芯片、STM32F103C8芯片和LPC2103芯片,设置了基础教学实验,适用于多核实验平台和无操作系统实验平台的基础实验,包括:LED 8流水灯实验、LCD显示实验、2×8键盘显示实验、液晶显示实验、外部中断实验、串口通信实验、A/D与D/A转换实验[11]。基于简单操作系统的综合实验包括:μC/OS-II操作系统移植;μC/OS-II操作系统任务的创建、挂起、恢复、删除实验;任务的中断和时钟实验;任务的同步和通信实验等。实验软件部分按照模块化进行设计,在实验教学中,使用软件模块化让学生可以自主选择实验项目内容,如:输入接口实验,可以根据自己的能力选择独立按键和矩阵键盘中的一个或者多个;输出接口实验,同样可以选择LED、数码管、点阵和液晶中的一个或者多个,这样有利于充分发挥学生的主观能动性,让学生自主设计实验项目以完成综合性、设计性实验[12]。
基于学生不同的研究方向可以设计创新性实验,有ZigBee模块配套的岛屿安防系统实验、基于温湿度传感器的农业大棚环境监控系统设计实验等。
嵌入式课程递阶教学平台经过调试和测试,实现了多核心板适配多功能扩展底板的使用模式,各个实验模块工作均比较稳定。实践教学结果证明,教学平台提供了丰富的接口资源,可进行二次开发,完全能够满足实验课程的要求,并帮助学生快速从单片机的学习过渡到嵌入式系统学习当中。基于CDIO理念设计了一系列配套的实验,以符合大众学生为目的,设置了普遍需要的基础实验以及综合实验,针对嵌入式专业的学生设置了更为专业的基本的嵌入式操作系统实验,以满足不同层次的学生。教学平台针对性强,教学效果明显,拥有广阔的教学应用前景,更重要的是能够增强高校大学生的形象思维与创新能力,为学生今后进一步深造或踏入社会进行相关系统的开发奠定扎实的基础。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]刘泉,李方敏,吕锋,等.现代嵌入式实践教学平台在实践教学中的应用[J].理工高教研究,2006,25(2):96-97.
[2]郭明良,王朋,郭松林.基于CDIO模式的电类本科实践教学体系构建[J].中国电力教育,2014(2):158-159.
[3]刘会英,盖玉先,徐宁.探索适合我国国情的CDIO工程教育模式[J].实验室研究与探索,2011,30(7):119-120.
[4]朱向庆,黎东涛,苏超益,等.适合于项目教学法的三合一单片机实验箱设计[J].实验技术与管理,2013,80(7):55-59.
[5]王朋,郭明良,王越明.“单片机原理及应用”课程的CDIO教学模式探索[J].中国电力教育,2014(14):83-84.
[6]王朋.“单片机原理”实验教学体系建设[J].电气电子教学学报,2010,32(5):107-108.
[7]桑静,徐金宏,赵伟.嵌入式辅助教学平台的构建[J].科学技术与工程,2010,10(36):9115-9117.
[8]王高鹏,朱宁西.基于LPC2368嵌入式实验平台的构建[J].微计算机信息,2008,24(6-2):18-20.
[9]章民融,徐亚锋.嵌入式教学关键点的研究和嵌入式实验教学平台的设计[J].计算机应用与软件,2009,26(3):160-162.
[10]李东.提高单片机应用系统可靠性的研究[J].信阳师范学院学报:自然科学版,1999,12(3):354-357.
[11]蒋跃文.以设计实验为主线的单片机实验平台的开发与应用[J].苏州大学学报:工科版,2010,30(1):28-31.
[12]贾萍,丁向荣,胡美兰.“教、学、做”一体化单片机教学实验平台的设计与应用[J].实验技术与管理,2012,29(6):139-142.