嵌入式系统Web在线仿真实验平台设计

时间:2022-10-20 09:47:45

嵌入式系统Web在线仿真实验平台设计

摘要:为解决嵌入式系统在线仿真实验教学平台系统操作复杂性和实验板状态可视化问题,提出优化编译功能,设计“一键式”远程在线编译的方法。该方法屏蔽了嵌入式交叉编译细节,支持学生通过浏览器操作完成代码编译。融合虚拟现实技术,设计并实现基于Unity3D的可视化模块,通过实时监控部署在远程服务器端的实验板的输出端口,采用3D渲染的实验板模型进行可视化显示输出。教学实践表明,89.72%的学生认为实验平台操作便捷、实验显示效果好。该方法有效降低了实验入门难度,提高了学生的实验效率和体验度。

关键词:嵌入式系统;在线仿真实验;3D可视化;在线编译

嵌入式系统作为计算机、电子信息及自动化等信息类工科专业的核心课程,具有理论学习难度大、实践操作性强等特点[1]。实验教学作为该课程的重要环节,重点培养学生的动手实践能力。传统的教学模式需要在固定时间和地点统一组织学生“一人一板”开展实验,在时间和空间上都有很大的局限性。部分院校因为学生较多,需要分批进行实验,甚至为了节省实验时间,实验内容以演示或验证性为主[2]。此外,这种模式下的教学,如果遇到突发性疫情,将无法继续开展教学工作。针对上述教学模式中的不足,结合互联网技术,嵌入式系统在线仿真实验教学平台应运而生[3-4]。嵌入式在线仿真实验平台为学生提供了开放的嵌入式系统实验环境[5-6],学生可自行选择合适的时间、地点通过在线方式开展实验。新的实验形式解决了传统教学模式存在的不足,但为了达到良好的实验效果,在技术上需要解决的问题主要包括:(1)编译环境配置复杂。目前学生比较熟悉Windows系统作为开发和编译环境,而嵌入式系统实验编译环境一般采用基于Linux的交叉编译的方式,对于不熟悉Linux系统操作的学生需要投入大量的时间学习常用操作命令,在一定程度上增加了实验的入门难度,容易降低学生实验兴趣。(2)远程在线实验无法观察实验板数码管和LED灯的状态,导致部分实验内容受限。远程在线仿真实验平台往往只能通过命令行的方式与实验板进行交互,并通过命令行输出的信息查看实验结果。学生无法观察到实验板的显示状态,所以只能部署仅仅通过命令行操作就能完成的实验内容,限制了实验内容的多样性和创新性[7]。鉴于上述问题,需要系统设计的创新来突破这些局限,从而使基于在线仿真实验平台的教学质量有质的提升[8-9]。本文设计并实现了一种基于3D可视的嵌入式系统Web在线仿真实验平台,该平台的主要优势包括:(1)设计了一种“一键式”远程在线编译方法,该方法屏蔽了编译细节,学生只需在浏览器中编辑代码,选择编译类型,即可编译生成可执行文件。不需学生花时间配置编译环境,熟悉Linux系统和操作命令,只需重点关注课程实验内容,降低了实验门槛。(2)融合虚拟现实技术,设计并实现了一种基于Unity3D的可视化模块[10]。该模块实时监控部署在远程服务器端的实验板的输入输出端口,获取数码管、LED灯等显示组件的状态,并基于HTTP协议将数据传递到前端浏览器[11],通过3D渲染的实验板模型进行可视化显示输出。

1系统设计

在线仿真实验平台主要实现学生通过Web浏览器访问实验环境,开展嵌入式系统实验,并通过3D虚拟硬件仿真运行效果。图1是嵌入式系统在线仿真实验平台的总体架构图,该系统由实验服务和Web服务构成,左侧部分连接实验板的调试系统,与实验板进行实际交互,为实验服务。右侧部分为Web服务,负责实验服务部分与用户之间的交互,将用户指令传递给实验服务并将实验服务返回的结果通过浏览器展示给用户。实验服务部分主要实现两个功能。(1)代码编译。该模块通过接口服务接收用户发送过来的代码文本,然后调用本地编译环境的编译指令,得到编译返回结果并返还给用户。(2)运行程序。该模块通过接口服务接收用户发送过来的指令(Linux指令),然后通过SSH协议发送给连接的实验板,并将返回的运行指令结果以及实验板上的LED和数码管状态返回给Web服务。Web服务部分主要包含三个功能。(1)用户管理服务。Web服务负责管理用户的信息,判断用户的身份,防止用户直接调用实验服务提供的接口,防止实验服务直接暴露在网络中,增加了实验服务的安全性。(2)实验数据管理。该模块记录并保存用户实验时的数据,教师可以为学生实验打分,学生可以查看之前实验的数据,对实验进行复习。(3)仿真页面模块。该模块将Unity引擎嵌入到Web页面中[12],通过调用实验服务接口获取实验板的实时状态,然后将返回的结果以LED灯和数码管的形式显示到前端页面上,模拟了真实实验板的实时状态。实验服务和Web服务之间采用HTTP协议,通过JSON数据包封装进行数据通信。图2是系统的功能逻辑结构图,左侧部分为实验服务结构(也称虚拟机开发服务),右侧部分为Web服务结构。

2核心模块设计

本系统在现有的嵌入式在线实验平台的基础上降低了实验系统操作复杂性,简化了编译操作方式。利用Unity3D技术可以直观地展示实验板的状态,学生通过仿真实验平台可以获得和实验室相同的实验体验。

2.1“一键式”代码编译机制

1)实验板编译环境。实验板使用MY-IMX6-EK314,其内核版本是Linux3.14.52。由于嵌入式平台空间有限、资源匮乏,无法安装并运行平台所需要的编译器,因此在编译代码的过程中,采用了交叉编译的思想。交叉编译的本质是在一个平台上生成另一个平台上的可执行代码,将代码放到通用主机平台上编译,然后再传到嵌入式平台上运行[13]。经过多次测试,选择运行最稳定的Ubuntu16.04作为代码编译平台。实验中的代码编译主要分为两类,应用程序编译和驱动程序编译。应用程序为用户态的,典型的有控制台打印输出、用户空间文件读写,驱动程序为内核态的,可以读取或赋值嵌入式实验板的寄存器,获取控制实验板的输入和输出。用户态程序编译较为简单,只需要调用编译链将需要编译的代码文件编译成对象文件链接到一起。而驱动程序编译在编译过程中不仅需要链接本地文件,还需要进入到内核源码目录与内核中的对象文件进行链接。2)“一键式”在线远程编译。由于编译环境为Ubuntu16.04,不是目前使用最为广泛的Windows系统,学生直接在Linux系统下进行编译操作,相比于在Windows系统下有更多的困难。同时编译操作需要手动在控制台中输入命令,配置编译路径和环境变量,如果学生只有在集成好编译链的集成开发环境进行编程的经验,那么在该嵌入式实验板的交叉编译平台下进行代码的编译会存在一定的上手难度。所以在设计的嵌入式平台中,采用了远程在线编译技术。如图3所示,在线远程编译系统整体分为前端和后端两个部分。前段为Web浏览器端,获取学生输入的代码文本和编译选项。后端为Web服务器端,负责接收代码文本,并将代码在编译环境中进行编译,编译成功后,将编译生成的可执行文件通过FTP服务上传到实验板中。后端在本地编译环境中为每个用户建立了独立的工作空间,防止不同用户的代码因为命名相同等问题而改变或丢失。同时程序通过使用Java提供的Process类与操作系统的Shell进行交互,通过事先输入到代码中的编译指令进行编译操作,同时读取指令的返回值来判断编译是否成功,并将编译返回的信息发送给前端,告知学生出现了错误。在线远程编译免去了学生在Ubuntu上进行编译操作,只要有Web浏览器,即可进行代码的编写和编译。学生不用额外花时间安装Ubuntu系统、配置编译环境、熟悉命令,而是将重心移到实验本身。如图4所示,用户在浏览器中,输入编辑好的代码,点击提交编译按钮,嵌入式实验板即可得到编译后的可执行文件。

2.2基于Unity3D实验板可视化设计

实验中需要用到的硬件资源包含数码管、LED灯、按键,学生在实验的时候能够观察到数码管和LED灯的显示情况,以及能够通过按下按键实现按键控制的逻辑。由于LED灯和数码管实际上是实验板的IO输出端口,按键是IO输入端口,因此可以通过读取实验板的IO寄存器来获得实验板的硬件资源对应的IO端口输入和输出的值,从而获取实验板当前数码管、LED灯和按键的状态[14]。我们在实验板上部署了监控程序,通过周期性读取实验板IO寄存器的值来实时监控实验板的状态,然后将检测到的值通过UDP(userdatagramprotocol)协议传递给与实验板相连的服务器上,服务器作为后端将获取到的实验板信息值缓存下来,浏览器前端通过请求接口获取实验板的状态信息,然后后端将实验板信息传递给前端,前端根据获取到的值对页面进行重新渲染,最终实验板的状态就能够通过Web浏览器真实地展现在学生眼前。实验板3D效果图5所示。由于寄存器的读取是内核态的,而基于Socket的UDP协议通信程序是用户态的,因此我们开发了IO寄存器读写驱动模块,使得用户态应用程序可以按照定义好的格式操作指定的驱动文件,实现制定IO寄存器的读写[15]。监控程序单线程运行,对IO寄存器进行周期性地读写,并通过UDP协议与服务器进行通信,不会过多占用硬件资源而影响实验板的正常运行。

3系统测试与教学实践

针对可视化模块的测试,设计了数码管驱动开发及应用实验和GPIO编程实验,学生在客户端编辑代码,并上传到实验板进行编译、运行,浏览器端加载3D实验板模型,实现数码管的可视化输出,程序读取实验板系统时间,并通过数码管进行显示。图5(a)为时分的可视化显示结果。图5(b)所示为GPIO实验的截图,实验内容为每隔1s点亮实验板上的一个LED灯。结合嵌入式系统课程内容,基于3D可视的嵌入式系统Web在线仿真实验教学平台设计了8个实验,如表1所示。2020年春季学期,选课人数共有21人,实验平台服务器端共部署4块实验板,平台运行时间为每周一到周六,周日关闭平台进行维护。顺利完成疫情期间嵌入式系统实验课的教学工作。由于目前公开文献中的嵌入式虚拟实验平台主要以虚拟实验环境为主,在实验平台架构和功能上不能满足我校嵌入式系统相关课程的需求。对课程组实验平台优化前后的使用情况对比分析(图6)发现,实验1—5的新平台使用时间减少,由于新增实验及实验难度依次增加,新平台使用时间整体呈上升趋势。相比编译优化前和优化后的“一键式”编译,学生平均实验时长有所减少,并且时长差有所减少,原因在于编译优化前学生需要配置交叉编译链等步骤,存在部分学生不熟悉配置步骤。其中实验6的ZLG7290数码管驱动开发实验、实验7的ZLG7290数码管应用开发实验和实验8的GPIO编程实验由于需要观察实验板工作状态,所以原来只能采用线下方式进行,在本文基于3D可视的嵌入式系统Web在线仿真实验平台可以实现在线实验,有效地丰富了实验内容。图6学生实验平均时长实验成绩是实验完成质量、实验报告等综合评定的结果,能够反映学生的学习效果和教师的教学效果。2019年秋季学期共有121人上课,采用非3D可视线上和线下结合的教学方式,由于线上实验不支持可视化显示实验板状态信息,关于数码管和GPIO实验需要完全使用线下实验箱完成。2020年春季学期共有21人上课,受到疫情影响,全部采用基于3D可视的线上实验平台开展实验教学。学生成绩统计结果如图7所示,2019年秋季学期线下实验和2020年春季学期的线上实验的教学效果基本相当,表明该实验平台基本可以代替线下实验箱完成嵌入式系统实验课程的教学任务。2020年秋季学期共有146人上课,采用基于3D可视的线上实验和线下实验结合的教学方式,根据最新实验成绩统计,优良率均高于前两个学期。基于3D可视的嵌入式系统Web在线仿真实验平台能够最大化还原实验场景,学生可以在课下利用碎片时间,通过该实验平台投入更多的学习时间,在课上对实验做进一步验证并对扩展实验进行探索,从而获得更好的实验成绩,达到提高教学质量的目的。通过对2020秋季学期上课的146名学生进行实验体验效果问卷调查,其结果如图8所示,89.72%的学生认为集成一键式编译和3D可视化的线上实验平台操作便捷、实验结果显示效果非常好。可见该实验平台在一键式编译和基于3D可视化方面的优化设计获得了绝大多数学生的认可。

4结语

本文提出了一种嵌入式系统在线仿真实验教学平台的设计与实现方案,该系统通过简化编译过程使得学生更加关注实验内容本身,通过可视化实验板模型,学生可以实时观测到实验现象,获得与在实验室做实验的体验感。实践证明本系统在满足学生随时随地实验的基础上,优化了系统交互性,能够增加实验内容的丰富性,降低实验门槛。在培养学生动手实践积极性和能力方面发挥了重要作用。

作者:李辉勇 牛建伟 豆渊博 符宗恺 单位:北京航空航天大学计算机学院