以工程能力培养为导向的嵌入式系统课程教学
2021-01-09窦亚玲刘金平
窦亚玲 刘金平
摘要新工科建设推动工科专业的新一轮改革。以工程能力培养为导向,结合“嵌入式系统”课程的实践性特征,对理论与实验学时进行了重组,并通过“去教材”、项目化课程内容等方法重构了嵌入式课程体系;教学过程中从五个层面实施对学生工程能力的培养进程。实际教学效果良好。
关键词 工程能力 嵌入式系统 项目式驱动
中图分类号:G424文献标识码:ADOI:10.16400/j.cnki.kjdk.2021.25.046
Embedded System Course Teaching Oriented by Engineering Ability Training
DOU Yaling, LIU Jinping
(School of Information Science and Engineering, Hunan Normal University, Changsha, Hunan 410081)
AbstractTheconstructionof newengineeringdisciplinespromotesanewroundofreformofengineeringdisciplines. Guided by the cultivation of engineering ability and combined with the practical characteristics of embedded system course,the theoretical and experimental class hours are reorganized,and the embedded curriculum system is reconstructed by means of "de teaching materials" and project-based curriculum content; In the teaching process, the training process of students’ engineering ability is implemented from five levels. The actual teaching effect is good.
Keywordsengineering ability; embedded system; project driven
0引言
新工科建设[1]推动高等院校工科专业的教学改革与创新,越来越多的教改探索聚焦在遵循工程教育规律、与时代特征匹配的新培养模式。近年来,嵌入式系统技术发展迅猛,专业知识内涵与外延不断扩展,嵌入式应用技术产品不断迭代重构。嵌入式系统课程教学面临的挑战是客观的,为培养适应新技术与新经济发展要求、具有可持续竞争力的创新人才,教学改革更是迫在眉睫。
“嵌入式系统”是一门实践程度要求很高的工科专业课程,却存在知行时间脱节、空间分离现象。[2]一方面,理论课和实践课课时分配不合适,重理论课轻实践课,到头来课程考核沦为知识点的死记硬背;另一方面,理论课和实践课脱节,因为课时的分离,很难做到知行合一满足工程能力培养的需要。
“嵌入式系统”的实验教学始终是教学的核心环节。一方面,实验设备更新换代周期短,投入大;另一方面,实验资源易受场地、时间等客观条件限制。虚拟仿真实验方案[3]将实验环境从实体设备迁移到互联网仿真平台,一定程度上打破时空限制,提高实验资源利用率,易于维护更新迭代。然而,目前大部分开设嵌入式系统课程的高校依然很难构建虚实结合的实验环境。
嵌入式技术的核心是软件和硬件相结合,[4]“嵌入式系统”课程涉及的知识点庞杂,课程涉及计算机系统相关的硬件知识和软件编程技术,先导课程之间的衔接存在困难,如何在有限学时中,设计以工程能力培养为导向的课程体系与培养进程成为该课程教学的重要挑战。
1构建工程化的嵌入式系统课程体系
嵌入式工程课程体系通常涉及4大进阶模块。[5]信息科学与工程学院开设的“嵌入式系统”课程是大学三年级阶段的一门专业课,2019-2021三个学年,累计授课400余人,涉及计算机科学与技术、软件工程两个专业,专业课程总课时都是64学时,课程教学采用ARM Cortex M4系列STM32F407Tx芯片定制开发板。
1.1理论与实验学时重组
嵌入式系统是实操性为主的课程,理论知识与实践操作是有机统一的。传统的课程设计中将理论学时和实验学时在时间和空间上分割。比如教师在教室里讲述ARM程序状态寄存器中不同標志位的含义,学生通过记忆去理解,而无法实时通过编写汇编代码去验证。又比如GPIO的实验环节是操控LED灯,教师在理论课上分析了原理,到了实验课上,学生通常已经对原理记忆模糊。
学时重组就是打破理论课与实验课的界限,以4学时为嵌入式系统课程的基本教学单元,4学时中间只设定一次规定的课间休息。为方便教学管理,授课地点从多媒体教室搬迁到独立的实训室,教、学、实践实现实时融合与互动。
1.2芯片数据手册与原理图替代传统教材
“嵌入式系统”课程的教材具有两个“痛点”:一是教材更新跟不上技术换代,二是嵌入式系统的专用性特点限制了教材的通用性。官方芯片数据手册是嵌入式工程师做开发的主要技术资料。引导学生直接使用数据手册,有利于培养工程能力。
课程中所用到的官方数据手册包括:CortexM3与M4权威指南(中英文)、STM32F4xx参考手册(中英文)、EEPROM与FLASH的官方芯片及其课程中用到的传感器手册等。
课程中所使用的基于STM32F407Tx芯片的开发板是定制版,厂商提供全套原理图PDF,方便学生直接查阅。
1.3课程内容项目化模块设计
在2019-2021三年的教学实践中,结合学科专业特点对课程内容不断调整,形成可持续发展的培养工程能力的课程体系。表1给出课程体系的基本项目与说明(所涉及的芯片等产品可根据需要自行更新或另行选择,只需要同步更新配套资料即可)。编号KB表示课程基本模块,KS表示课程限选模块;重要程度与难易程度是针对课程考核给出的参考值,“+”数量表示程度,数量越多程度越深;扩延度是根据每个课程项目实践完成的时间给出的需要占据课后学习时间的参考数据,“+”数量表示需要利用课后时间的长短,数量越多时间越长。
对应的给出不同模块的项目要求说明:
KB-1自行安装Keil5,创建工程项目实现:Cortex M4寄存器、处理器模式、状态的所见即所得。
KB-2:在Keil5工程中编写ARM汇编启动代码,采用“做中学”的方式学习ARM通用指令包括存储器访问、寄存器数据处理、分支等以及基于Keil编译平台的伪指。运用指令完成汇编语言与C语言混合编程实例。
KB-3:掌握寄存器编程与固件库编程两个嵌入式系统开发模式,在Keil工程中编程实现通过GPIO寄存器方式控制LED灯;进一步安装基于STM32的固件库,编程实现通过GPIO固件库函数控制LED灯。完成不同模式的工程开发的比对分析。
KB-4:理解STM32F4中断实现机制,以外部中断EXTI为例,基于STM32固件库编程实现按键中断控制LED灯。
KB-5:理解STM32F4时钟系统,任务1是采用SYSTICK系统时钟中断,实现毫秒和微秒级时延,结合KB-3实现流水灯的精准时间延迟控制;任务2是在KB-3基础上设置GPIO复用(AF)模式,实现定时器(TIM)输出PWM波形实现蜂鸣器BUZZER播放乐曲。
KB-6:理解UART串口通信协议,编程实现上位机PC与下位机STM32F407Tx开发板通过UART发送接收数据,同时能够根据原理图完成物理接线与开发板跳线正确设置。进一步连接蓝牙模块,实现上位机手机发送数据控制下位机开发板上LED与蜂鸣器BUZZER工作(见表1)。
KS-7:理解IIC通信协议,阅读芯片与从设备读写时序,利用固件库编程实现主设备STM32F407Tx与从设备EEPROM(AT24C02)数据读写操作。
KS-8:理解SPI通信协议,阅读从设备数据手册理解读写、与FLASH特有的擦写指令,利用固件库编程实现主设备STM32F407Tx与从设备FLASH(W25Q128)通过SPI协议进行大量数据读写操作。
KS-9:理解CAN总线通信协议,编程实现消息帧自发自收的回环测试,进一步完成两个终端间通过CAN总线协议收发消息帧。
KS-10:任务1需要完成uCOS移植,创建uCOS工程项目,进一步完成任务函数、任务创建、实时调度、分时调度、时间管理的代码实现。任务2需要完成uCOS任务并发控制包括互斥信号量、时间标志组的代码实现。
2嵌入式系统课程体系中工程能力培养
课程教学过程中,教师对教学定位是工程项目实训。全程贯穿工程能力的培养。以嵌入式系统课程教学为例,从以下五个层面实施:
第一层面:工欲善其事必先利其器。
软件运用,硬件操作,代码编写规范等方面与实际工程项目要求接轨。课程笔记NotPad++,代码编写采用Source Insight,代码编译平台是Keil编写与编译平台同步。可执行代码通过Jlink下载到开发板上运行。整个过程与实际工程开发一致。
第二层面:课程任务项目驱动。所有理论知识为解决实践项目而存在。以按键中断为例给出学生在项目驱动过程中的主体作用:
Step1:下达任务,按键控制LED灯。
实施效果:按下K2,LED0亮了,再次按下,LED0灭了。
Step2:怎么实现,对应的GPIO口是什么?
学生查看原理图,做好日志记录。
Step3:控制方案选择:轮询可以吗?弊端在哪?
学生主动提出中断控制。
Step4:ARM Cortex M4的中断机制是什么?
学生查看数据手册,明确外部中断EXTI的控制流程图。
Step5:如何编码实现?STM32固件库哪些函数可以编码实现流程图?
教师通过VNC与学生同步敲代码,指导学生在SI中一边学习固件库函数一边完成初始化代码。
Step6:中斷响应函数是什么?怎么写?
教师带出中断向量表,学生从STM32启动源代码中找到外部中断对应的向量地址,通过VNC教师同步示范中断响应函数的规范写法,学生完成代码规范书写。
Step7:学生连线下载烧录代码,测试按键结果。
Step8:结合现场实际,以学生为主体分析解决问题,教师梳理总结知识要点,完成项目任务。
第三层面:学生工作量要足够,量的累积才有质的改变。教学全程学生需要建立三个完整工程,累计代码作业与实验16人次,日志文档人均100页,硬核编码量(l)3000+。课程没有采用任何实验教材,每个学生的日志文档形成一本有特色的实验案例。
第四层面:工程项目需要协作精神,但更基本是每个人务实求真。课程采用定制开发板,原则上一人一板,可以协同讨论技术问题,但代码编写任务实现拒绝“摸鱼”与“打酱油”行为。三年一线教学实践观察结果:绝大多数学生主观意愿是独立自主完成项目。
第五层面:教师在整个教学过程中从知识的广播员演变成解决工程项目问题的引导者,从旁侧观察者进阶成拨灯指路者,客观上激发了教师在学生工程能力培养过程中的驱动力。
3总结
以2021学年为例,给出以工程能力培养为导向的教学考核方案并对教学效果进行定量分析。考核方案中实行两组“一”。
3.1“一人一板一日志”
实训日志包括设计方案、实施步骤、效果视频、结果分析。发布在CSDN,视频分享到主流视频学习网站如B站学习区。此部分在考核中占比40%。
3.2“一人一卷一考核”
考核试卷均为设计大题,全部来源10大项目模块的实践内容。此部分在考核中占比60%。
教学效果数据定量分析表明:计算机科学与技术、软件工程专业的卷面及格率超过70%,优良率高达30%,卷面成绩与实训过程表现成正相关。两个专业169名授课学生中90%表示能够接受4节课为基本学时单元;89%表示认同数据手册替代教材;100%认可在做中学,理论与实践融合,以项目模块驱动的教学方式。课程结束意见反馈中,95%学生留言:课程干货满满,有较大收获;10%-20%学生表示有意向继续深入学习,尝试将嵌入式系统开发作为专业发展方向。
相关教师认为,教与学双方的兴趣和热情得到提升,学生实操能力切实提高,工程能力得到培养。
*通讯者:刘金平
基金项目:“《嵌入式系统》可持续发展教学生态环境的构建(202048JG30)”;“结合工程认证理念探索一流软件工程人才培养途径(202048JG29)”
参考文献
[1]徐曉飞,沈毅,钟诗胜,等.新工科模式和创新人才培养探索与实践——哈尔滨工业大学“新工科‘型’方案”[J].高等工程教育研究, 2020(2):18-24.
[2]李江昊,刘丰,王伟.理论实践强结合性课程知行合一教学改革与探索[J].计算机教育,2020(6):179-183.
[3]李辉勇,牛建伟,符宗恺等.基于虚实结合的嵌入式系统虚拟仿真实验教学改革与实践[J].计算机教育,2020(10):179-182.
[4]孙青,李辉勇.面向学生工程能力培养的嵌入式系统设计实训课程教学改革实践[J].计算机教育,2020,(3):136-140.
[5]窦亚玲,周龙,蔡美玲“.嵌入式系统”教学生态环境的构建探索与实践[J].科教导刊,2020(35):112-113.