杭州电子科技大学国家级计算机实验教学示范中心 肖柳 赵建勇
开展实验仿真教学是一项推进教育信息化、培养学生兴趣和创新能力的重要举措。针对嵌入式系统教学中存在的理论学习难、实操性强且实验教学受到时间、地点和硬件设备限制的问题,提出基于硬件装置的嵌入式系统实验仿真平台。该仿真平台采用硬件装置作为嵌入式程序运行平台,云端平台作为教学和仿真的操控平台,仿真平台支持程序远程下发和硬件状态实时查看。借助该仿真平台,教师可更好地开展实验教学,学生可按需随时随地自主进行嵌入式系统各类实验探究和学习。实践表明,该系统激发了学生学习兴趣,提升了教学灵活性和教学质量,为提升学生创新能力提供了有力支撑。
随着信息技术的快速发展和“中国制造2025”国家战略的实施,边缘计算技术在生产应用中越来越广泛,利用嵌入式系统进行控制的设备不断增加,如图像识别、仪表控制、数据处理等,对嵌入式软件开发的人才需求不断扩大[1]。长期以来,国内计算机专业人才培养偏重于上层应用,忽视了计算机系统底层原理的理解,导致底层嵌入式软件开发的高端人才极为匮乏。2020 年,教育部、工业和信息化部联合发布《特色化示范性软件学院建设指南(试行)》,重点强调发展包括嵌入式软件在内的软件产业。嵌入式软件的开发是基于对嵌入式系统软硬件的充分理解,而嵌入式系统课程作为计算机、电子信息及自动化等信息类工科专业的核心课程,涉及操作系统、硬件操作等,是典型的软硬结合综合体,具有理论学习难、实践操作性强等特点。
嵌入式系统的实验教学重点是培养学生的动手实践能力,加深学生对嵌入式软硬件知识的理解[2,3]。当前的教学模式是在规定时间和地点统一组织学生开展实验,在时间和空间上都有很大的局限性[4],而且这种模式下的教学,如果遇到突发性不利于线下教学的情况出现时,以上教学模式将无法继续开展实践教学工作,此种情况下让广大学生自行购买实验装置自行学习,又存在成本高、装置利用率低的问题。
全国各大高校积极探索创新教学模式,采用信息技术与课程教育相结合的方式[5]。仿真实验教学方式已在各实验课程中使用,杨昕欣等[6],况立群等[7]提出了一种纯软件仿真方法来完成嵌入式系统实验,陈彦明等[8]提出了采用Proteus 仿真软件仿真STM32F103(ARM)平台的混合在线教学方式,李辉勇等[9]等提出了嵌入式系统Web 在线仿真实验平台,重点解决远程编译问题,当前基于硬件运行机制的真实仿真实验平台尚处于初步阶段,高校的嵌入式系统实验普遍存在以下问题:基于本地化的实验装置,实验受场地制约;实验装置技术孤立,无法满足当前系统化的教学需求。
针对上述教学模式中的不足和现有远程实验方式现状,结合物联网、云计算等先进技术,借鉴虚拟现实、虚拟仿真等应用的新思路,研究嵌入式系统教学实验新模式[10],将大型开放式网络课程(Massive Open Online Courses,MOOC)[11]先进教学理念应用到到嵌入式系统实验教学中,为学生提供了灵活开放的嵌入式系统实验仿真平台。学生能从计算机客户端上远程进行实验操作和实验结果观察,实验结果为远程真实硬件运行数据,实验效果与本地实验完全相同。在该仿真平台模式下,学生可自行选择合适的时间、地点,通过远程方式开展实验学习,达到了嵌入式系统实践教学不受时间、空间限制的效果[12],提高了实验灵活性和课程学习效率,为实验教学环节提供了强有利的支持。
将大型开放式网络课程(Massive Open Online Courses,MOOC)先进教学理念应用于嵌入式系统实验教学,规划和设计基于硬件实验装置的在线嵌入式系统实验仿真平台及管理系统,综合嵌入式系统设备硬件环境、网络传输、物联网、云计算等技术,使得学生可远程在线完成嵌入式系统各类实验,不受时间、空间和内容限制。
教师在教室进行理论教学时,可通过仿真实验平台进行实验仿真和实景实验结果查看,打通教室和实验室的界限,让嵌入式系统课程教学不再纸上谈兵,有利于激发学生积极研讨和探索的兴趣,真正做到理论与实践密切结合,实现理论和实践的实时混合式教学。
学生能够充分利用课外时间开展嵌入式系统实践操作,优化教师实验课程内容和学时的安排。学生可以随时随地开展线上自主学习和实验,激发自主学习能力,培养学生嵌入式系统的开发能力,提升计算机系统开发人才培养质量。同时,通过“资源共享”与“远程开放”极大地提高了实验教学设备的利用率,降低了即时实验成本。
实验仿真平台由底端硬件实验装置和云端实验仿真应用平台共同组成,如图1 所示。实验装置可安装到机柜、机架、实验台等区域,通过有线网络接入到校园网络中,实现实验装置资源的全网共享。学生可通过网络形式实现全网范围内所有装置资源访问,云端实验仿真应用平台中有与实验装置对应的虚拟外设,其状态与真实硬件装置一致,其还可通过安装在实验装置近端的摄像头查看实验装置的运行状态。在云端实验仿真应用平台中,Web 服务主要是为学生和老师提供用户交互,数据存储主要存储实验装置相关配置信息,实验驱动主要完成底端实验状态的实时请求、更新和云端操控信号的下发,文件管理主要实现实验程序的远程下载。学生在进行远程实验时,首先根据实验内容设计实验程序,生成相应的目标代码,然后利用仿真平台提供的文件管理功能将目标代码下发到实验装置中运行。
图1 实验仿真系统总体设计Fig.1 Overall structure of experimental simulation system
实验装置运行目标代码后,实验仿真应用平台实时请求实验装置的LED 灯、数码管、显示屏等外设状态,实验装置将数据发送到云端仿真应用平台的交互页面中,页面中对虚拟外设的数据进行刷新。同时,实验仿真平台可将平台上的虚拟外设,如开关、按键等,操控信号发送到实验装置,实验装置接收到操控信号后进行相应状态改变,其变化后的状态实时发送到云端实验仿真应用平台。
实验仿真应用平台是整个仿真平台的核心部分,该应用平台采用Tomcat、MySQL、Springboot、Netty、MybatisPlus等工具开发,完成与底端实验装置和摄像机通信,读取实验装置外设状态,下发虚拟外设操控信号和目标代码到实验装置。实验仿真应用平台的前端为Web 页面,是学生进行实验的入口,学生可在此页面上完成实验内容。如图2 所示,在实验仿真应用平台中,保存有实验装置资源映射表,该映射表可修改和配置,进而适配更多种类的实验装置。实验装置资源包括LED 指示灯、物理按键和液晶显示等。
图2 仿真平台设计框架图Fig.2 Framework of simulation platform
在仿真平台中建设有数据库、配置表、实验装置表和实验驱动服务。数据库中存储了学生实验过程中的所有数据和学号信息等,配置表为实验装置配置信息,如IP 地址、端口、装置外设寄存器地址等,实验装置列表则为所有接入应用平台的装置列表,与配置表紧密关联,实验驱动服务则完成实验装置状态读取和操控光信号设置、视频拍摄和读取等。Web 网页通过系统接口实时获取实验装置状态,并实时显示。学生在仿真应用平台上操控实验装置时,Web 页面通过接口将数据发给仿真应用平台的后台,后台调用实验驱动服务将操控信号下发到实验装置。
嵌入式系统在线仿真机制设计包括装置管理和数据实时交互两部分组成。装置管理包括装置的可靠通信、文件烧录,数据实时交互包括资源的监控、指令下发功能。
(1)仿真平台和实验装置的可靠通信。仿真应用平台和实验装置的通信为有线网络通信,实验装置有静态IP 和端口号。为保证实验装置在任何情况下都能保证与仿真平台的通信,实验装置的通信在实验装置CPU 的硬件中断中执行。仿真应用平台与实验装置通信时,实验装置进入硬件中断,接受应用平台消息并解析,根据不同指令完成不同任务,如数据上报、文件烧录等。在此种方式下,即使学生开发的嵌入式软件程序存在死锁等异常情况,实验装置也能与仿真平台保持通信。
(2)目标代码的烧录。学生在计算机上安装嵌入式系统软件开发环境,按照要求完成开发环境配置,在示例代码中的“User Program”位置进行程序开发,网络通信部分保持不变。学生开发完嵌入式软件程序,编译生成目标代码,通过仿真应用平台选择生成的目标代码。仿真应用平台加载目标代码,发送文件烧录信号到实验装置,实验装置收到文件烧录信号后进入升级模式,并与仿真平台建立握手。仿真平台下发目标代码到实验装置,实验装置接受完目标代码,校验通过后进行烧录,并将烧录结果反馈到仿真平台,进而加载目标代码运行。
(3)数据的实时监控。实验装置的所有外设,都有对应的数据寄存器,将寄存器地址映射到实时内存的指定位置,通过读取或设置寄存器地址实现实验装置外设状态的读取或设置。在实验仿真应用平台中,保存每台实验装置的外设所对应在内存中的地址。实验仿真应用平台的实验驱动服务从实验装置的外设地址处读取外设数据,发送给Web 页面,实现实验装置的实时监控。
(4)指令下发。当需对实验装置进行操控时,实验驱动服务会将对应的操控信号和数据下发到实验装置中,实验装置解析操控信号,执行动作。例如,学生点击按键时,实验驱动服务将按键对应的操控信号下发到实验装置中按键对应的外设地址,如同在真实环境中按键一次。
该实验仿真平台已应用到杭州电子科技大学嵌入式系统教学中,在该仿真平台中,硬件实验装置所用的MCU是STM32F207,硬件实验装置中的外设包括按键、LED、LCD,该仿真平台的实验装置和应用平台如图3 所示,实验装置和实验仿真应用平台之间通信协议为Modbus TCP 协议,文件下发方式为字节流下载。
图3 实验仿真平台的实验装置和应用平台Fig.3 Experimental device and application platform of experimental simulation platform
在该实验仿真平台中设计了嵌入式系统课程相关的实验,包括裸机实验和基于OS 的实时操作系统实验。如表1 所示列出了实验仿真平台支持的实验。
表1 仿真平台支持的嵌入式系统实验实例Tab.1 Embedded system experiment examples supported by simulation platform
基于硬件实验装置的嵌入式系统实验仿真平台,很好地将云端仿真平台和硬件实验装置结合,实现了嵌入式系统的各类实验从特定的实验室到云平台的迁移,改变了指定时间和地点的实验教学模式。学生可以随时随地开展嵌入式系统学习和实验,大幅提高了实验灵活性。该系统能够将实验装置的使用时间延长,提高了设备利用率和共享率,同时,因采用云端方式进行实验,便于实验装置的维护和统一化管理,也有利于共享一流的实验装置、实验内容和实验教室。