APP下载

面向系统能力培养的嵌入式系统课程教学模式改革与实践

2019-01-23谢耀滨

计算机教育 2019年1期
关键词:开发板嵌入式体系

刘 威,常 瑞,谢耀滨

(解放军信息工程大学 网络空间安全学院,河南 郑州 450002)

0 引 言

随着系统能力培养理念的逐步推广,嵌入式系统在计算机专业课程群中的重要性越发凸显[1]。作为对专用计算机系统的全面讲解和综合实践,嵌入式系统课程的教学内容几乎涉及整个本科期间的计算机硬件课程体系,从硬件电路设计、处理器编程结构到汇编语言、嵌入式软件设计、嵌入式操作系统、驱动程序设计等。嵌入式系统课程本身可以看成是计算机组成原理、微机原理与应用、操作系统等课程知识的横向拓展和综合应用,这种先天优势使嵌入式系统课程可以成为本科阶段系统能力培养的重要抓手。但是,长期以来,这种优势都没有得到足够的重视,多门课程中所学的理论知识和实践技能无法通过本课程融合起来,外化成为系统能力,甚至作为一门普通的专业课程而言,嵌入式系统也很难达到同类课程的平均教学效果[2]。

1 嵌入式系统教学存在的问题

嵌入式系统是融合理论知识、应用方法、工程技能和实践经验的综合性课程,具有典型的工科特性,其目标是培养在工程领域具备系统设计、分析、验证能力的综合性工程技术人才。目前高校嵌入式系统课程的教学效果往往不尽如人意,分析成因,除了嵌入式领域具有技术更新快、工程实践性强、涉及的知识领域跨度大、对学员的基础知识水平和综合应用能力要求高等客观因素以外,还存在以下3个主要原因,严重制约嵌入式系统课程的教学效果和本科系统能力培养的质量。

1.1 知识体系不合理

嵌入式系统涵盖专用计算机这个庞大体系,设备的多样性决定了课程内容跨越多个知识领域,带来多样化的选择空间,导致课程知识体系设计不合理。

1)教学理念没有与时俱进。

部分高校的嵌入式系统教学从微机原理和单片机原理应用等课程发展而来,基于ARM cortex M系列微处理器设置课程知识体系,仅仅把课程视为单片机原理课程的升级,满足普及ARM体系结构和接口编程应用[3],对当前广泛使用的ARM+Embeded Linux平台少有涉及,忽视嵌入式系统课程在计算机系统能力培养方面的重要作用,造成学生在操作系统移植、驱动程序开发等领域的知识缺失。

2)受学时和教材限制,设计的知识结构不完备,体系涵盖不全面。

由于嵌入式系统涉及的知识体量过于庞大,现有的嵌入式系统教材都无法详细涵盖从处理器体系结构、底层硬件设计、接口程序开发到操作系统移植、驱动程序设计等一系列知识点,因此只能有所侧重和取舍。有些教材[4]侧重底层硬件设计和应用程序开发,对操作系统移植、驱动程序设计等内容涉及较少;而有些教材[5]则偏重嵌入式操作系统相关知识,在硬件设计部分描述的篇幅有限,因此,在教学中按纲授课、照本宣科必然导致学生存有知识盲点。

1.2 教学模式单一程式化

使用传统的“课上讲授、课后实践”教学模式,在有限的授课时间内,教师很难系统完整地把体量庞大的教学内容传授给学生。教师往往只能退而求其次,根据专业需求和职业设定对教学内容进行取舍,导致学生在某些知识层面上存在盲点。传统的教学模式以单一的课堂讲授方式为主,往往学生记住了知识点但不知道在实践中如何使用,能力无法得到提升。此外,讲授的方式很难激发学生的学习热情,进一步增加了课程的教学难度。

1.3 实践平台缺乏普适性和创新性

嵌入式系统的实践教学是学员综合运用计算机各课程知识,融入创新理念,建立系统思维的重要平台。实践教学不仅起到强化巩固学生计算机知识体系的作用,而且担负着培养学生创新实践能力的重要任务[6]。教学使用的开发板或实验箱通常只能支持知识体系中的一部分实验,当前大部分高校的嵌入式系统实践教学通常依托于非定制的嵌入式开发板或者专用的实验箱开展,实验设备主要分为两类,一类是嵌入式微控制器+实时操作系统,另一类是嵌入式微处理器+嵌入式Linux/Android,这两类实验平台均只能涵盖课程知识体系中的部分内容,无法做到完整覆盖。此外,传统的嵌入式实践教学以验证性实验居多,通常只依托开发板进行的综合性、创新性设计开发作辅助教学,没有充分发挥实验平台培养系统能力的作用。

2 嵌入式系统课程知识体系设计

为解决传统嵌入式课程知识体系设计不合理的问题,应按照从底层硬件电路、处理器编程结构与软件到嵌入式操作系统的思路,从整体上规划嵌入式课程的教学内容,设计全覆盖、多层次的内容体系,并依托该体系构建通用可组合的模块化教学内容[7]。

2.1 课程知识体系

完整的嵌入式系统课程知识体系见图1,按照从底层硬件到上层应用的顺序,包含3部分内容:嵌入式硬件电路、处理器编程结构与软件、嵌入式操作系统。

图1 嵌入式系统课程知识体系

嵌入式硬件电路部分包括最小系统设计、存储系统设计和接口电路设计。

处理器编程结构与软件部分包括处理器编程结构、异常处理机制、汇编指令集、汇编语言程序设计、接口应用程序开发。

嵌入式操作系统包括Bootloader、嵌入式操作系统内核、文件系统、驱动程序开发、嵌入式GUI和应用程序设计。

部分内容分别有对应的知识目标和工程目标:

知识目标1:了解嵌入式系统开发的流程,熟悉ARM Cortex M/A微处理器外部引脚,掌握存储系统设计方法,掌握基于ARM微处理器的最小系统设计方法,掌握常用接口电路设计应用。

工程目标1:掌握使用protel DXP/Cadence等设计原理图和绘制PCB板的方法,能进行常见器件的焊接拆卸操作,了解最小系统调试和接口故障排查的方法流程。

知识目标2:熟悉ARM处理器的编程结构、异常处理流程,掌握ARM指令集和Thumb指令集,了解ARM汇编程序设计方法;掌握应用程序结构和设计方法。

工程目标2:熟悉Keil/DS-5集成开发环境,掌握基于JTAG的软件调试方法。

知识目标3:了解Bootloader结构和启动流程,熟悉嵌入式Linux内核裁减与移植方法,了解常见的嵌入式文件系统;了解嵌入式驱动程序设计方法,了解基于嵌入式Linux的应用程序设计方法。

工程目标3:掌握构建交叉编译环境的方法,了解内核和应用程序调试技术。

2.2 通用可组合的理论教学模块

围绕知识体系开展理论教学是现行课程教学的普遍方式,但对嵌入式系统课程来说,不同高校、不同专业对学生的知识能力培养目标存在较大差异,如电子工程相关专业和软件工程专业对嵌入式驱动程序开发和嵌入式硬件电路设计的教学目标可能完全不同,此外,课程的学时设置、前导后续课程安排等因素也将影响教学实施,经常会出现无需讲授或者无法讲授的情况。为了保证知识体系的普适性,基于通用可组合的设计原则,按照层级划分可以将理论教学内容细化为模块,教学模块与章节内容的对应关系见表1,实施者可以依据不同应用条件进行取舍和组合。

表1 嵌入式课程理论教学模块

3 协同式课堂教学组织

嵌入式系统课程知识体系涵盖大量的知识点,如果课程学时数小于60,依靠传统的课堂教学模式则没有足够的时间完成知识的传递,更无法实现由理论知识向实践能力的迁移。为了解决庞大知识体量与有限课内学时之间的矛盾,需要线上线下协同开展教学,以弥补课内时间的不足。

随着移动互联网应用的普及和线上学习资源的丰富,依托互联网获取知识逐渐成为当前高校学生的主要学习方式之一[8-9]。网络给学生提供了非正式学习的最佳方式,很多碎片知识可作为正式学习的很好补充[10]。由于嵌入式系统在各领域的应用广泛,相应的学习资源既有国内外知名高校的在线课程,也有企业的视频教程,还有个人的分享博客。丰富的资源在带来多样化选择的同时,也决定了处于了解、认识阶段的学生很难从中挑选出适合知识体系、教学进度和实验平台的在线资源。为了避免浪费学习时间,教师应对线上教学资源进行筛选,必要时还可以进行编辑和整合,按照教学进度依次提供给学生。

以系统能力培养为主要目的的课程教学,其重点应该落在树立系统观和创新实践能力培养上。嵌入式系统课程的特点是以应用为核心,有大量的实践方法和技能,单纯依靠课堂讲授效果较差,需要有对应的实践操作来强化理论教学效果,让理论知识外化为实践能力。实施协同式教学时,教师应该优先向学生提供实践操作类的视频教程。对于大部分理论知识,学生通过观看教学视频和通过阅读书籍所达到的效果相差无几,而对于实践操作,视频能够方便快捷地传递实践步骤和操作细节,能成倍提高学生的学习效率,从而节省大量的课上讲解演示时间。学生提前熟悉实践内容,也有利于在学习理论知识时做到有的放矢,理清相应知识点的应用场合,明白其重要性。教师在讲授理论知识时也需有针对性地进行强化,达到最佳的学习效果。

协同式教学将课堂教学与网络自学两种方式融合,课堂教学传授理论知识,强调应用细节;网络自学提供操作细节,强化知识迁移,课堂的正式教学和课余的非正式学习融合在一起,共同为系统能力培养提供方法和渠道。

4 多平台融合的实践教学

按照处理器架构和开设实验类型,嵌入式系统实践教学平台基本上可以分为两类,一类基于嵌入式微控制器,不运行操作系统或者运行轻量级嵌入式实时操作系统,典型的有基于STM32F4处理器的正点原子探索者、野火挑战者等,教学重点落在IO接口设计及程序开发以及嵌入式实时操作系统,如µCOS的使用等;另一类基于嵌入式微处理器,运行嵌入式Linux或者Android系统,典型的包括基于Eynos4412处理器的友善之臂tiny4412、讯为Itop4412,基于S5PV210处理器的友善之臂tiny210开发板等,实验重点是嵌入式操作系统的裁减移植、bootloader与文件系统生成、驱动程序设计等。

目前高校嵌入式系统实践教学通常依托于某款嵌入式开发板开展,基于微控制器和基于微处理器的开发板支持开展的实验各不相同,难以相互替代,单一类型的开发板均存在无法覆盖的知识盲点。以ARM架构为例,Cortex M开发板偏重于控制型应用,对接口类实验支持较好,但是由于处理器内只有MPU而没有MMU,无法运行嵌入式Linux等操作系统,在日常广泛使用的UBoot、嵌入式Linux/Andriod等相关知识上存在缺口;Cortex A开发板偏重于系统型应用,实验内容均围绕嵌入式操作系统展开,对外预留的可用接口较少,使用基于操作系统的驱动程序开发代替裸板运行的接口程序设计,缺乏对硬件电路连接和接口程序设计的支持。

实验内容完全覆盖整个嵌入式系统知识体系,需要综合应用不同类型的开发板,如在面向计算机科学与技术专业的嵌入式系统实践教学中,联合使用Cortex M和Cortex A系列的两块开发板,可以协同发挥查找补齐知识短板、树立系统观念、培养创新能力、深化协作精神等作用。

实践平台由基于Cortex M系列STM32F4的智能车或四旋翼飞行器和基于Cortex A系列Eynos4412的嵌入式开发板两部分组成。智能车或四旋翼飞行器用做实验平台,支持知识体系中I、II部分的实践教学,能够给学生以直观认知,充分调动学生参与学习实践的积极性,激发创新热情。Eynos4412开发板用做实验平台,支持知识体系中II、III部分的实践教学,可以让学生基于嵌入式操作系统设计开发更为复杂的应用,拓展创新空间。

实验的顶层设计为基于嵌入式Linux的智能车或四旋翼飞行器控制平台。实验任务由两部分组成:自行小车上配备STM32F4模块、红外传感器、指示灯、摄像头、蓝牙模块、GPS模块等外设,可以实现小车的自动避障巡线;Eynos4412开发板上移植嵌入式Linux操作系统,实现对小车的远程控制、定位信息和图片视频显示。两者组合构成一个完整的实验系统,实验内容见表2。

该设计将两种不同类型的开发板融合在一起,实验内容按模块循序展开,各实验模块既相互独立,分别对应理论教学内容,又能最终组合在一起形成完整系统。这种把最终实践目标分解为单元目标,并最终形成复杂系统的方式,能有效激发学生的学习热情,促使学生在不断完成小目标的成就机制吸引下最终达到完成复杂嵌入式系统设计实现的目标。在教学时,教师可以根据学员的知识基础和能力水平、理论教学的内容安排,自由组合实验模块,不需要学员掌握的实践部分,教师可以直接提供电路连接、源代码和操作步骤。在实验中鼓励学员依托两类平台自行设计应用,融入自身创意搭建出原型系统,有效形成正反馈,从而加速创新实践能力的培养进程。

表2 融合多平台的实验内容设计

5 结 语

在面向系统能力培养的嵌入式系统课程教学模式改革的3个组成部分中,完整的知识体系有利于组织多层次复合型的教学训练;模块化的内容划分可增加教学的灵活性和体系的适用性;协同式课堂教学组织方式能有效提高学习效率并改善教学效果,多平台融合的实践教学涵盖多方面能力的训练,有利于培养创新实践能力。全覆盖的知识体系和模块化的教学内容,能够通过协同式教学组织方式快速有效地传授给学生,以多平台融合的实践教学强化知识迁移,形成系统设计分析和应用能力。

新模式在解放军信息工程大学的两届计算机科学技术专业的嵌入式系统设计课程中进行实践,取得了良好的效果,有效提高了学员的系统分析设计应用能力。全国性的学科竞赛是检验系统能力培养效果的有效方法之一,依托本课程的教学,学校先后组织学员参加全国大学生智能互联创新大赛、全国大学生物联网设计竞赛、全国大学生计算机体系结构创新设计竞赛等多个赛事,2016年,“个人穿戴防丢失系统”和“智能交通系统”两项作品获得全国物联网设计大赛赛区一等奖,“通用密码算法加速平台”获得计算机体系结构创新设计竞赛全国三等奖;2017年,“移动存储设备保护系统”和“家庭电力自主管理系统”分获物联网设计大赛全国一等奖。2017年,按新模式实践授课的班级实现全员参赛,近70%的参赛队获得赛区级以上的奖项,充分显示了新模式在系统能力培养上的绝对优势。

猜你喜欢

开发板嵌入式体系
构建体系,举一反三
搭建基于Qt的嵌入式开发平台
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
嵌入式软PLC在电镀生产流程控制系统中的应用
“曲线运动”知识体系和方法指导
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器