宋俊玉 黄淼
(河南大学计算机与信息工程学院 河南开封 475004)
嵌入式产品随着物联网的发展广泛地出现在人们日常生活工作当中;随着5G技术的发展,嵌入式会愈发应用广泛。当今社会对嵌入式人才的需求越来越迫切。嵌入式集计算机系统、通信原理、程序设计、电路等知识于一体,课程重点是加强学生理论联系实际的能力,培养应用型人才[1]。国内由于嵌入式起步较晚,高校嵌入式人才培养跟不上技术发展的潮流,与实际嵌入式开发需求脱轨,导致大学生就业没有专业开发能力,企业无法招聘到符合岗位需求的人才。为迎合社会需求,嵌入式教学改革要加大实践课程教学 ,特别是将创新项目实例引进教学,能够很大程度上提升学生的实践能力、设计能力和创新能力。同时不同学校不同专业应当根据自身特点,灵活调整教学内容,发挥各自的优势,培养出专业相关型嵌入式开发人才。本文就嵌入式课程实践教学以及培养应用型人才等问题进行了思考和探讨。
嵌入式开发课程作为一门应用开发类课程,需要学生具有电路基础、编程基础、模拟电路和数字电路、信号与系统、单片机原理和接口技术、微机原理等前导课程相关知识。实际教学过程中,由于任课老师之间缺乏沟通,可能导致课程安排不合理以及内容重复等问题,导致课时浪费。传统嵌入式教学主要以ARM+Linux为核心,介绍ARM的体系结构、ARM指令寻址方式和ARM指令集的使用以及Linux系统在嵌入式系统上的应用和QT/Embedded界面编程开发。嵌入式开发课程在理论上承接了“单片机原理与应用”、“微型计算机原理与接口技术”以及嵌入式前期课程“物联网与嵌入式系统开发”等课程,这些课程在内容以及结构上有重复和相似的地方,例如指令、寻址方式等方面,因此在理论教学上浪费较多学时,学生没有足够的精力去学习课程以外的知识,对嵌入式开发浅尝辄止,无法胜任嵌入式系统开发的工作[2]。
嵌入式开发属于定制开发,硬件可定制,软件可裁剪,这就要求开发人员对软硬件有深入的了解,只有在实际开发和实验才能真正地掌握嵌入式技术。嵌入式课程要求学生有将理论联系实践的能力。实践教学与理论学习相辅相成,然而目前高校的嵌入式课程仍然以理论教学为主,实践教学时间不足总学时的三分之一。目前嵌入式课程开设的实验有,嵌入式开发环境搭建:(1)WMware Workstation的安装、使用。(2)Radhat获取和在虚拟机中配置。(3)虚拟机NFS共享设置。(4)Windows超级终端配置和使用。嵌入式实验目标机配置:(1)烧写Linux操作系统的BootLoaderuboot。(2)配置烧写Linux操作系统内核-zImage。(3)烧写Linux根文件系统。基于QT的嵌入式图形界面实验、嵌入图形界面移植实验和嵌入式触摸屏实验。但这些实验主要是对教材范例和试验箱范例的验证,而没有一个完整的工程项目,工程开发的分析、设计、调试和运行是我们实践教学缺失的环节。而且在以教学为主、实验为辅的教学体系下,实验课程时间较少,实验内容枯燥,多为验证性实验,学生总是跟着教师指导和实验指导书走,无法吸引学生兴趣和发挥学生的想象力,因而取得的效果不好。在一些较为综合性实验中,学生表现的较差,具体存在的问题是代码编译无法通过,集成开发环境配置不好等问题。此外,由于教学设备限制,多是老师讲解操作方法,学生自己做,很少将实验过程给学生演示,学生在试验中具有盲目性,从而缺乏积极性,选择敷衍了事,严重影响实验效果。
嵌入式学习开发包括三个阶段“熟悉”、“尝试”、“开发”。“熟悉”即了解开发的环境和开发流程,熟悉开发平台和开发软件的使用。“尝试”阶段是指学生了解软硬件设计方法,开发一些小的模块和小项目,锻炼学生的实践能力。“开发”阶段是指学生在掌握软硬件开发能力的基础上,进行实际项目的开发,在这个过程中,不仅需要嵌入式开发能力,还要求学生综合运用所学课程和知识进行系统设计和开发的能力,培养学生独立思考、设计创新和团队协作能力。然而在大部分高校都停留在前两个阶段。带领学生进行嵌入式项目的开发,需要指导老师有扎实的专业背景和项目经验。目前,大部分高校在嵌入式方面师资力量严重不足,软硬件都有建树的老师较少,有工作研发经历的老师更是匮乏。
传统嵌入式系统开发课程考核以试卷形式为主,导致考试时突击背书就能拿到不错的成绩。理论考试碎片化的知识点并不能让学生真正掌握嵌入式开发。实验打分主要以学生提交的实验报告为打分标准,并不能反映学生真实的实验操作水平,同时嵌入式系统的整体方案设计能力以及在设计中与其他相关学科的结合能力无法考察。实践内容的考核多为模块化设计考核,缺乏实际项目开发能力的考核。
嵌入式开发课程具有多门前导课程应当与嵌入式作为一个完整的体系进行规划。任课教师和院系领导要加强交流,制定合理的教学方案,减少重复内容的讲述,同时相关的地方要做到相互呼应。在课程之间,软硬件协调之间,应当以知识为线索,贯穿整个教学过程。首先,在低年级首先开设C语言编程基础,此时大部分学生对于计算机的理解能力有限,同时开设电路基础,为以后的开发学习打好基础。在后续课程中,通过汇编语言学习和单片机的学习和实际开发,使得学生将软硬件结合起来,并具有一定开发能力。有了以上基础,学生再来学习嵌入式开发会水到渠成。可以适当合并嵌入式系列的实践课程,不仅能够增加实践教学的课时,又能提高各课程之间的联系,充分发挥课程相互促进的作用。
课程实践是嵌入式教学中的重要环节,在总学时不变的前提下,尽量缩减理论授课课时,增加实验课程的学时,甚至可以在机房实验室上课,在讲到具体知识点时,可以方便马上进行练习,以增加对课程内容的掌握,同时提升学生的兴趣。在授课内容上,由于有“物联网与嵌入式”、“微型计算机原理与接口技术”等前导课程,因此可以适当减少对硬件结构和指令系统的讲解,增加嵌入式开发流程和环境等与实践相关内容的讲解和演示,如虚拟机VMware的安装使用、NFS共享设置等。为了更好理解嵌入式系统工作原理,对Bootloader-Uboot的构成和作用做重点讲解,以及Linux操作系统内核-zImage和Linux根文件系统的介绍和制作过程演示,从而保证学生在实践过程中,得到更好的效果。同时学院应提供学生实践的必要硬件条件,除了开放实验室,还可以利用实验室现有的小型嵌入式实验板或者购买一批用于学生课下实践开发。嵌入式课程实践教学应当采用实验和项目实践相结合的形式。实验采用章节教学的方式,贯穿理论教学的全程,实践课程通常是放在理论课程和相关实验完成之后,进行综合实践训练,学生可自由组队,同时安排指导老师指导学生利用所学理论进行嵌入式系统开发,使所学知识能够融会贯通,应用于实践。
嵌入式开发具有跨学科性强、软硬件结合紧密、应用广泛等特点,因此要培养出来综合素质过硬,满足社会需求的嵌入式开发人员,除了要有与社会需求相关的最新教材和实验设备外,还需要一支强大的师资团队。这样的队伍需要具有扎实的专业基础同时还需要具有工程项目经验。有人提出直接找企业嵌入式开发人员进行授课,但是教学需要整体规划,考虑前导课程和相关课程之间的衔接,而且掌握原理对于学生后续发展非常重要,不能割裂理论和实践一味搞开发。可以面向社会招聘具有开发经验的“双资老师”,或者在周末等课余时间,请企业中的开发人员来学校进行宣讲,对社会实际需求和项目实际开发流程进行讲解,同时可以请他们带领学生进行课程设计、专业比赛,甚至毕业设计。另外可以为学校年轻任课老师提供更多学习交流机会,定期到嵌入式开发企业进行实地考察和学习。
针对嵌入式课程的特点,嵌入式开发课程的考核形式应该不拘一格,试卷考试可采用开卷考试,考查学生对基本概念的掌握,避免学生死记硬背。实验要当堂打分,学生完成实验并且回答老师提出的问题后方可获得本节实验课程的分数,加强考查学生嵌入式开发的整体设计、功能模块的使用以及在具体场景中的应用的能力。此外,为了提高学生整体方案设计能力、独立思考能力和课程结合能力,指导学生进行创新项目开发,项目结束时进行评定,并计入实验成绩。
嵌入式开发以应用为核心,软硬件可裁剪,功能可定制,对嵌入式的成本,体积,与可靠性有严格的要求[3]。在进行实际项目开发之前,首先通过章节实验确保学生对功能模块原理掌握并可以熟练应用,如显示屏、DAC、ADC、存储器、WiFi模块等,在完成模块化学习后,可以带领学生做一些小的产品,如红外报警系统等。在此基础上,引导学生开发创新项目。创新项目可由小组配合完成,既能提高学生积极性,又可以起到锻炼学生团队意识的作用,团队成员自由分工,每个人在团队中选择自己擅长的方面,同时相互配合,共同完成创新项目。下面以具体项目实例进行开发流程的讲解。
创新项目一方面要具有综合性,同时可以结合其他课程,如单片机等;另一方面,要具有创新性和趣味性,选择当下流行的技术如语音识别等。本项目选择一个以语音识别为核心的机器人,且结合单片机技术,使得机器人具备语音聊天和进行简单运动等功能。
进行实际的开发首先要选择合适的嵌入式开发板,本项目选择树莓派4B板,该版是一款基于ARM的微型电脑主板,采用ARM-Cortex-A72架构,功能强大,且具有丰富的外设以及接口。软件方面在wukongrobot开源项目的基础上进行二次开发,实现对语音机器人的运动控制。硬件方面选购合适的电源、小车部件、音响和麦克风等。实际开发通过串口或网络连接树莓派,直接在树莓派上配置和开发。首先进行语音模块的搭建和开发,利用百度、图灵等语音识别和处理API实现语音聊天并为语音控制奠定基础;第二步,通过编写特定程序实现对控制命令的识别处理;第三步,通过树莓派的GPIO口控制驱动电路实现小车的前进后退转弯等。有余力的同学还可以在此基础上进行进一步开发,如通过内网穿透软件实现远程控制机器人的目的。通过项目实例开发为以后的嵌入式开发打下坚实的基础。
高等学校的嵌入式开发课程需要与市场接轨,合理编排课程内容和形式。整合嵌入式系列课程的衔接,注重实践教学,带领学生进行更有趣且与社会联系紧密的创新性项目开发,提高学生积极性,培养学生综合开发能力和创新能力。