本文针对嵌入式软件开发实训教学环境的构建提出了一套完整的解决方案。该方案全部采用开源技术,能够在机房环境中快速、灵活地部署嵌入式软件开发实训环境,具有低成本、稳定可靠、可移植性强,教学和实训操作一体化程度高等优点。作者将该方案应用到实际教学中,取得很好的效果。
一、引言
1.嵌入式软件开发实训教学的现状
嵌入式软件开发由于涉及的硬件复杂,开发环境构成复杂,对厂商及开发平台依赖性高,其实训教学长期以来缺乏一套行之有效的教学环境构建方法,这使得嵌入式软件开发的实训教学环节往往与理论教学脱节严重,直接影响理论教学的效果和学生开发技能的培养。
2.解决方案
为了解决当前构建嵌入式开发实训教学环境所面临的问题,本文在后续章节中提出了一套完整的解决方案:围绕服务端、宿主机和目标终端及教学网络四个主体构建软硬件环境。该方案能够在机房中快速部署嵌入式软件开发环境和电子教室,并根据教学需求灵活地适应不同的目标平台,从容应对物联网及嵌入式领域开发技术的快速发展和变化。
二、所需开源技术简介
PXE(Pre-boot eXecution Environment)[1]提供了一种使用网络界面(Network Interface)启动计算机的机制,使得计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
本文中,服务器环境和宿主机环境的快速构建和备份均依赖PXE技术来实现。目前的计算机系统网卡普遍具备PXE功能,故本方案具有良好的可移植性。
illa
Clonezilla (再生龙)[2]是一款由台湾国家高速网络与计算中心开发并维护的磁盘及分区镜像软件,采用GPL开源软件许可证发布。
Clonezilla支持通过PXE环境部署,其多播模式为我们提供了一种在大量客户机之间以裸机拷贝方式快速备份/恢复磁盘及分区的手段。
lization
虚拟化技术在本方案中的作用主要是提供一种同时运行两个操作系统的机制。需要双系统的原因有以下三个方面:
3.1很多嵌入式设备厂商提供的配套集成开发环境只能在Windows下运行,而目标嵌入式系统通常为Linux类;许多嵌入式系统软件的构建需要在Linux环境下进行交叉编译;
3.2日常教学资料大都依赖Office、Adobe等Windows平台工具;
3.3功能完备、操作简单的电子教室软件以Windows平台居多。
如果教学中使用的嵌入式目标平台不需要使用依赖Windows的集成开发环境,则整个实验教学环境可以全部由开源软件构成;否则,需要使用虚拟化技术在宿主机上运行一个Linux作为嵌入式开发环境。这两种情况的宿主机环境构成如下表所示:
本文所用的教学环境为II类型。
Linux GCC 工具链
由自由软件基金会FSF主持的GNU操作系统项目提供了GCC工具链。采用ARM IP核的厂商大都提供配套自家芯片的交叉编译工具链,但通常以二进制形式或付费软件形式发布。从教学的角度看GNU/Linux的GCC是构建嵌入式开发环境的最佳选择。
三、嵌入式软件开发实训环境的构建
1.构成
嵌入式软件综合教学实训环境由服务器(Server)、宿主机(Host)和目标终端(Target)以及教学网络构成,如下图所示:
服务器承担两大职能:一是对局域网进行管理,提供DHCP、DNS、PXE启动、NIS等服务,维护正常教学环境;二是提供开发环境更新维护及远程编译服务。
宿主机为学生提供操作环境,学生可在宿主机上进行嵌入式操作系统和应用软件的编写、仿真调试、下载、测试等活动;另一方面,学生通过宿主机上的电教学生端接收教师的教学信息,在教师指导下完成上述活动。
目标终端通常是以单片机,ARM SoC等为核心,集成了多种外围功能电路的开发板。目标终端应配套相应的JTAG仿真器,具有下载调试程序、观察CPU指令级行为等功能。
教学网络为以上三者提供互联途径,在教学网络上运行的电子教室软件和服务器所提供的各种服务为学生构建了一个教学及实训操作一体化的环境。
2.教学网络环境的构建
2.1网络规划
为了便于教学与实验统一,同时方便维护,实验室网络应尽量简单。服务期、学生与教师使用的宿主机位于同一网段,学生机中的虚拟Linux系统采用桥接方式接入同一网段。学生宿主机及其中的Linux系统均由DHCP分配IP,教师机及各个服务器使用固定IP。
2.2设备要求
本方案能够很好地运行在当前主流配置的设备上。由于需要进行磁盘远程镜像操作,采用能够支持100M/1000M模式的交换机能够使本方案的可行度大大提高。服务器内存充裕的情况下应考虑使用Xen虚拟化技术[3]将各项服务隔离开来以确保服务的稳定性。
3.服务器环境的构建
3.1构建嵌入式软件开发教学及实验需要的服务项目
构建嵌入式软件开发教学实训环境所需服务项目有以下几项:
3.1.1 DHCP服务:实训室正常运作时,所有学生端宿主机通过DHCP服务获得IP地址;学生端或者服务器出现故障时,可通过PXE引导远程进行修复维护,而PXE引导需要DHCP服务支持②。3.1.2 TFTP服务:用于快速部署服务器、远程加载服务器内核或者Clonezilla内核对宿主机或服务器进行远程修复;实训环境正常运作时必须将该项服务关闭。
3.1.3 NFS服务:提供Linux主机间文件共享服务,为宿主机提供交叉编译环境或者在目标开发平台上挂载根文件系统。
3.1.4 Samba服务:用于向宿主机Windows环境提供文件共享机制。
3.1.5 NIS(Network Information Service)服务:用于统一管理学生Linux登录帐号。※③
3.1.6 DNS服务:提供本地主机的名称解析,方便教师对学生端进行管理。※③
3.2使用PXE、DHCP、TFTP和Kickstart快速部署CentOS服务器
Kickstart是Linux环境下一种通过安装脚本实现无人值守安装系统的工具,它通过读取Kickstart脚本自动完成对新系统的安装及配置。使用PXE+DHCP+TFTP+Kickstart快速部署CentOS服务器[4]的过程如下:
4.宿主机环境的构建
4.1使用PXE及Clonezilla快速部署宿主机环境
使用PXE+Clonezilla部署宿主机环境的过程与服务器相同,区别仅在于部署宿主机时,TFTP服务所提供的引导文件是一个Clonezilla内核,集成了Clonezilla镜像功能,能够根据配置或者用户指令快速地从镜像文件中恢复宿主机环境或者复制其他宿主机。
4.2使用VirtualBox虚拟机构建Linux开发环境
VirtualBox[5]相对于商业软件VMWare Workstation具有功能简单、免费的优点,但使用上需要注意:
4.2.1 需要在宿主机BIOS中打开CPU对直接虚拟化的支持才能使得虚拟机中的Guest系统获得较好的性能。Intel使用VT-x[6],AMD为AMD-V。
4.2.2 VirtualBox需要安装Guest Addition来支持与Windows共享剪贴板以及与宿主机共享文件夹等操作。
4.3交叉编译环境的构建
交叉编译工具链的构建既是实训教学的重点内容也是嵌入式开发最依赖的软件环境,GCC[7]本身就是一个具备交叉编译能力的开源工具链,在制作时需要针对目标CPU架构进行配置和打补丁,主要是浮点运算类型的选择(软件或硬件实现)、目标平台C语言库的选择和GCC所支持功能的裁切。本方案参照项目④给出的流程[8]构建GNU/Linux GCC交叉编译工具链,该项目更新及时,维护状态较好。
4.4教师端和学生端的构建
教师和学生使用Clonezilla克隆出来的完全相同的宿主机环境,保证教师的所有操作都是可复制的。二者唯一的区别在于教师的宿主机上使用电子教室的教师版客户端主控,而学生使用学生版客户端受控。
5.目标终端的仿真环境
目标终端上软件开发需要在宿主机环境中构建一个好用的仿真环境。对于嵌入式ARM开发教学而言,采用OpenOCD[9]+JLink[10]调试器并通过Eclipse集成开发环境提供的调试界面进行仿真调试是可行性和健壮性都比较好的一种方案。
四、教学效果及不足
采用该方案部署教学环境的实训室承担了物联网应用专业两个年级四门专业核心课程的实训环节的教学任务。学生在教师的带领下使用ARM Cortex-A8实验平台完成嵌入式交叉编译工具链的构建,Linux内核、根文件系统的裁切和编译安装,U-Boot启动加载器的裁切、编译和安装,Android系统设备驱动开发实训、Android应用程序开发等实训内容;在Windows宿主机环境下使用CC2530平台完成了ZigBee协议栈Z-Stack应用程序开发及8051单片机裸机应用开发等各项实训内容,取得良好的教学效果。
在教学中我们发现该方案也存在一定的不足:Clonezilla适用于磁盘级别的更新,对于宿主机开发环境的微调缺少相应的同步机制;整个实训环境的运行依赖服务器承担的多种服务项目,服务器缺少相应的安全机制会使整个教学环境比较脆弱。
五、结论
本文提出了一种利用开源技术构建嵌入式综合教学实验环境的方法。经过教学实践验证,本方法具有以下优点:
1.低成本
除宿主机操作系统可能会需要Windows操作系统外,方案中所使用的全部软件均为开源软件或免费软件。
2.教学实训一体化
本方案中宿主机环境既能用于接收教师讲授内容,又能独立作为开发端配合目标设备的使用,使得学生能够边学边练,学完就练,极大提高了教学效率。完整的服务器环境除了满足日常教学的需求,还能够拓展为开源镜像公共服务。
3.技术成熟,系统可靠稳定
本方案所依托的开源技术均高度成熟并获得广泛应用,所依赖的软件和服务更新稳定且易于获取,很好地满足了教学环境对系统稳定性的要求。
4.软硬件依赖性低,极强的可移植性
本方案对宿主机和服务器的软硬件要求不高,必要条件是网卡支持PXE功能,加上开源软件获取的方便性,本方案具备良好的可移植性。
综上所述,作者认为嵌入式教学环境的构建应该遵从如下一些原则:
1.注重服务器端环境的建设,这是开展好嵌入式教学的基础
服务器端环境的构建,为大量宿主机的管理和学生开发环境的快速搭建提供了必要的基础设施,让学生得以在有限的教学时间内利用性能受限的PC端练习嵌入式开发环节,这使得学生能通过实验深入到开发环节中,从而学习到真正的知识和技能。2.充分发挥开源软件的优势,摆脱嵌入式教学对商业软件的依赖
嵌入式系统的开发天然地依赖开源软件,因此,采取开源软件来构建目标机—宿主机—服务器—教学网络四位一体的教学及实验环境具有很高的自主性。
3.注意理论教学与实训教学的结合,掌控对学生环境更新和稳定的平衡
学生端需要一定的灵活性和稳定的本地环境来满足各种嵌入式开发工具的运用,不能象普通机房一样使用无盘系统或是磁盘还原系统。如何更好的平衡灵活性和学生端软件环境稳定性的要求,本方案进行了卓有成效的探索。
总体来说,本方案的实践较好地体现了以上这些原则的应用,对嵌入式软件开发实训环境的构建提供了一个可操作性极强的解决思路。
注释:
①iTALC是一个使用QT开发的开源电子教室软件,包括Master,Client和Libraries等组件,支持Linux及Windows平台。
②见3.3.2节图 3 PXE+DHCP+TFTP+Kickstart快速部署服务器
③5,6不是必须的。
④项目是Linux From Scratch项目的一个分支,专注于从上游(Up-stream)源码交叉编译适用于嵌入式设备(主要是ARM)的Linux环境。
作者:刘海波 来源:中文信息 2015年9期
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。