关于计算机嵌入式系统课程的理论和实践教学改革的尝试
2024-12-03陆红红文艺茹董玉玟卢艺崔艳军
摘要:计算机嵌入式系统简称嵌入式系统,是一种完全嵌入受控器件内部为特定应用而设计的专用计算机系统,其体积小、低功耗、可定制的特性,使其在当今这个万物互联的时代得到海量应用,小到电子手表,大到通信基站,貌似不可见却几乎无处不在。广阔的应用和市场催生了大量的人才需求,为了更好地培养嵌入式系统方面的应用型人才,本文结合多年的企业嵌入式系统开发和管理经验,对嵌入式系统理论和实践课程的教学方法和流程进行了尝试性改革,让学生用更贴近企业流程和实践的方式去学习,缩小学校教学和企业实际操作之间的天然鸿沟,力争培养出在企业可以更快上手的应用型人才。
关键词:互联网;嵌入式系统理论与实践
引言
在当今这个万物互联的时代,运用嵌入式系统的设备已经成为日常生活中不可或缺的一部分,小到可穿戴的手表,大到智能汽车;从家庭使用的扫地机器人,到战场上参战的无人机,几乎到处可见嵌入式系统的身影。我国的新兴产业,如移动互联网、云计算、大数据、物联网、智能制造、移动医疗服务、智能安防等,对嵌入式系统工程人才需求也有大幅增长[1]。为了让教学更好地服务生活,培养实用型人才,各高校都将嵌入式系统相关知识的学习纳入人才培养计划。
IEEE(美国电气和电子工程师协会)对嵌入式系统的定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统。嵌入式系统的硬件设备并不是我们通常理解的PC形象,它并没有一个固定的形象,很难从产品外形上直接发现其身影,因为其自身并没有固定的形态,而是隐藏在其他产品的内部,也正因为如此,其拥有优越的可裁剪特性,在降低产品功耗的同时也降低设备成本。一般来说,嵌入式系统包含软件和硬件两个部分,嵌入式系统的软件部分就是我们通常所说的BSP(board support packet)驱动,主要是将硬件功能用软件语言包装成上层应用可调用的函数接口,属于硬件到软件的功能封装和转化,是硬件之上的第一层软件,是软件层面的最底层软件。
嵌入式系统课程是高等院校电子和信息专业一门非常重要的课程[2],重在培养学生的动手能力、解决复杂工程问题的能力,但传统的教学模式通常侧重于理论教学,难以激发学生的兴趣和主观能动性[3]。近年来,一些高校对嵌入式系统课程的教学进行了多方位的改革尝试[4-7],均取得一定的成果。本文将企业规范的嵌入式系统开发流程和要求与高校教学的目的和方法充分融合,开发出一套适用高校嵌入式系统课程的与企业开发流程紧密结合的新教学模式,使得学生能学习到更具实用性的嵌入式系统理论知识和开发模式,以便学生走上工作岗位后能更高效、更顺畅地适应企业要求,从而增加高校教学的实用性。
1. 嵌入式系统课程的知识体系概览
嵌入式系统课程是涉及电子、计算机、网络、通信等多专业交叉的综合性课程[8]。嵌入式系统体系从知识架构上可以归为两大类,即硬件知识和软件知识。其中,软件包含BSP驱动软件以及部分应用层软件,各层之间涉及的知识体系如图1所示。在低年级所学的基础课程,如电子线路、模拟电子线路、数字逻辑电路、硬件语言等属于硬件类知识,查看或设计嵌入式系统产品设计原理图以及PCB图的时候会用到此类知识。VHDL、verilog等硬件编程语言主要用来仿真或针对EPLD/FPGA等可编程器件的开发,BSP驱动所涉及的最主要的基础课程就是C语言,此外还有Python语言等,同时辅以汇编语言、Makefile、Shell等工具语言进行的自动化编译和开发。一些较复杂嵌入式系统设备还自带操作系统,这个操作系统也属底层驱动的范畴,属于CPU驱动,但并不是所有嵌入式处理器都可以称为CPU,不带操作系统的一般被称为嵌入式微处理器(micro processor unit,MPU)或嵌入式微控制器(micro controller unit,MCU单片机),高校嵌入式系统知识教学主要是围绕单片机类的MCU进行的。因为操作系统代码相当庞大,功能非常复杂,可展示性不强,因此一般在商用设备中使用,不太适合用于教学,而让单片机运行出一个可视化的功能仅仅需要简短的代码驱动即可,非常适合按小时为计时单位的课堂教学和实践。
2. 当前嵌入式系统课程教学普遍存在的问题
嵌入式系统课程是在完成众多基础课程的学习之后开设的一门应用型课程,该课程所依赖的每一门独立基础课程的学习难度都在中等偏上,且学习过程中非常依赖实践来强化学习和理解。如果该课程的教学模式设置不合理,就可能导致教学过程中出现各种意想不到的问题,从而影响教学效果,最常见的现象就是学生入职工作岗位后,发现在学校所学的知识和工作实践中用到的知识之间存在着偌大的壕沟。学生最普遍和突出的感受就是:大量在学校学习的知识在工作中貌似并没用到,而在工作中要用的知识在学校好像又没学到;即使某些知识还有印象,但对细节掌握不清;或者同样的知识点在老师教学过程中的侧重点以及覆盖面与工作中的似乎并不一致,教学要求和实际应用的要求差别也很大。这些感受明显违背高校教学的初衷,需要进一步改进。
产生这些感受的主要原因是由教学阶段和工作阶段两者间的各种差异造成的。(1)行动目标不一样:教学以知识传授为目的,工程应用以实现功能、解决问题为主。(2)时间投入度不一样:由于在学校期间需要同时进行多门课程的学习,因此不可能像在公司那样长时间纯粹地去学一个知识点。(3)学习方法不一样:学校主要以教师讲授为主、实验为辅,而工程实践中全靠在实践中积累经验。(4)学习深度不一样:学校在教授知识时需考虑覆盖面,因此不允许在课堂上无限制地深究细节,而具体到工作中,个人有足够灵活的时间对某知识点进行深挖,而且只有对知识点掌握足够深,才能解决开发过程中遇到的各类问题,最终得到正确的功能。此外,解决故障的过程会很好地加深对该知识点的掌握和理解。(5)上下级知识的学习契机不一样:在学校,因为课程安排的原因,对于嵌入式系统的知识树上各科的学习不可能同时进行,而是需要分布在几个学期中先后学习,因此经常造成学生遗忘先前已学知识的现象;而在工作中,一个系统中的各层级的知识是需要同时研究和掌握的,因此彼此间能够促进学习和理解,更易于掌握。(6)过程管理不一样:在课堂上开发一个功能,完全以目标为导向,只要能实现功能就算完成任务;而公司在开发过程中有很多额外的要求,如开发流程规范上的要求、流程管理合规性以及工作效率等各方面的要求,因此实践过程中需要考虑得更多。(7)考核方法和要求不一样:在学校,对于课程的考核以笔试为主、实践为辅,而且实践时对于功能的验收属于一过性的,只要给老师展示的时候功能运行正常就可以通过;而在公司,没有笔试的环节,在实现功能的同时还需要考核代码的封装性、可读性、稳定性、可移植性、运算复杂度等各种因素。
以上差异存在于教学过程的某一个或多个环节,各教学环节存在的问题归纳如表1所示。
3. 教学过程的改进
为减小学校应用教学和企业实践之间的差异,针对表1提出的高校嵌入式系统课程教学各环节存在的问题,借鉴企业的开发管理过程,融合企业管理办法和流程,提出相应的改进办法,如表2所示,从课程设置、教学过程、考核方式等三个环节进行嵌入式系统课程教学方法的改进。
3.1 课程设置
嵌入式系统是一门实操性很强的课程,之前的教学计划中理论课时占比偏高,实践占比偏低,大概2:1的时间比例,较多的理论课时导致这门偏实操的课程沿用了理论课程的教学模式,从而导致教学目标的偏离。在该环节的教学改革中,充分考虑了学生作为嵌入式系统开发新手需要的学习过程,以及开发过程的完整性,提高实践课时的占比,将当前的理论课时与实践课时的占比从2:1改为1:1的设置。
3.2 教学过程
在嵌入式系统课程的课堂内容中,为了强化课程间的衔接关系,在课堂上增加了对嵌入式系统课程与其他相关课程的关系梳理,帮助学生及时建立课程之间的神经链接,并在教学过程中引用实例验证,使抽象概念具体化,深化理解。
编码是嵌入式系统课程中非常重要的环节,代码走读是学生学习如何从一个机器语言的学习者转换成使用者的最有效的方式,因此在课堂上通过充分分析例程,增加了对学生代码走读能力的培养和检验。
嵌入式系统课程在实践的时候,如果仅仅以完成功能为主要目标,那就会与公司的开发流程和规范产生较明显的脱节。对于一个软件开发者,功能的实现只是目标之一,代码的规范性、可调性、封装性、移植性、稳定性、兼容性、可读性、可维护性以及代码复杂度等均是衡量代码质量的指标,是需要在实践过程中考虑的。因此,在学习过程中培养考虑这些性能的意识和习惯,在验收的时候增加了代码性能方面的评分标准。
为更好地衔接教学和工作,在教学过程中,不仅需要关注功能是否完成,还要关注代码的稳定性,以及内存泄漏、时间复杂度、CPU执行效率等软件质量考核指标,保证代码的运行效率,在学习阶段就要对学生植入关注代码质量指标的理念。除了以上正向的理念培养,还要通过设计不合理的代码,进行反向教育,让学生亲身体验代码设计不合理带来的烦恼,加深理解。
3.3 考核方式
嵌入式系统课程传统的考核方式以笔试为主,笔试分占80%左右,实践占总分的20%,这样的占比导致部分学生出现重笔试、轻实践的心理,因此有必要将实践的总分提高。经过分析讨论,我们在教学过程中将实践得分占比提高到50%。但要注意的是,由于互联网的发展,很多芯片驱动在网上都能下载到代码,有的通过人工智能就可以把芯片的功能开发出来,因此要让学生完成功能展示并不难,甚至出现了个别学生可以展示很复杂的功能,然而这些学生却连一行代码都解释不了。因此,要将考核方式从功能展示为主转化为代码讲解为主,在验收时对功能要求做微小调整,让学生现场改造功能,以检查学生对代码的掌握程度,除了考核功能,还需要让学生讲解他们在设计代码时对代码质量指标的考虑。
4. 实施效果
原先大部分嵌入式系统教学仍然处于以理论学习为主、课程设计为辅的局面,这导致学生的实践能力得不到提升,缺乏对嵌入式系统课程的学习兴趣[9-10],而改进后的教学方法,将原先的以教为主、学生被动接收的模式改为教学和实践并重的模式。经过一年的实践,从教学效果上来看,学生上课的积极性和对编程知识的掌握度均有所提高,同时由于在教学实践过程中引入了公司的开发流程和管理要求,让学生对实践的参与度更高了。考核模式的修改大幅提高了学生对实践课的重视度;验收方法的改革,给学生以正向的动力去自主学习,学习效率得到了明显的提高。
结语
本文参考企业规范的嵌入式系统开发流程对嵌入式系统教学的过程和方法进行了修正,通过对课程设置、教学过程、考核方式三个环节进行教学改革,开发出一套更能帮助学生学习和理解知识的新教学模式。通过一学年的教学实践,新的教学方法很好地改变了学生们对实践课时的重视程度,大大提高了他们的动手实践能力,通过实践也加强了他们对知识的掌握和理解。
参考文献:
[1]王国霞,李擎,崔家瑞,等.嵌入式课程群多层次创新实训平台研制[J].实验技术与管理,2021,38(3):163-167,235.
[2]马明星,张玉婷,雷祥.嵌入式课程设计模式探索[J].电脑知识与技术,2017,13(6):177-178.
[3]钟剑丹.基于竞赛驱动的嵌入式课程教学模式探究[J].科教导刊(电子版),2024(5):110-112.
[4]姚睿,崔江,周翟和,等.云桌面下嵌入式技术课程实验环境建设与教学模式探索[J].实验技术与管理,2019,36(7):50-53.
[5]刘凯,张蕾.“游戏化课堂”教学模式探索与实践——以《嵌入式创新设计》课程为例[J].长沙民政职业技术学院学报,2013(4):63-65.
[6]张良,易伶俐.核心价值观如何进课程——联合国教科文组织的嵌入式设计模式及其意蕴[J].比较教育研究,2021,43(11):73-79.
[7]柴艳峰,张睿,张蔷,等.基于开源项目的计算机组成原理课程“嵌入式”教学模式探索[J].计算机教育,2024(2):164-168.
[8]孙青,李辉勇.面向学生工程能力培养的嵌入式系统设计实训课程教学改革实践[J].计算机教育,2020(3):136-140.
[9]陆庆,肖堃,聂晓文.嵌入式课程实验教学体系的改革与创新[J].实验科学与技术,2011(S1):201-203,216.
[10]胡仕刚,曹会祎,吴笑峰,等.基于开发板的嵌入式系统课程教学模式探索[J].信息通信,2016(7):160-161.
作者简介:陆红红,硕士研究生,研究方向:计算机嵌入式开发;通信作者:崔艳军,硕士研究生,cuiyanjun_njust@hotmail.com,研究方向:光电技术人工智能。