APP下载

高师院校嵌入式系统课程教学改革实践探析

2024-01-11冯迅云利军

电脑知识与技术 2023年17期
关键词:嵌入式编程内容

冯迅,云利军

(云南师范大学信息学院,云南昆明 650092)

0 引言

目前,全国高师院校计算机及相关专业都开设了嵌入式系统类课程。在传统教学中,该类课程的学习内容多以ARM9系列处理器为主,实验教学则依托三星公司S3C24xx 系列嵌入式芯片来开展。然而,这些内容现在已经跟不上市场发展的需求,不能满足培养适合当前市场生态技术型人才的需要了。

在传统嵌入式教学中,教师通常会花费大量时间对ARM嵌入式处理器的内部结构及其指令集进行详细讲解,但这部分内容不仅枯燥难懂,而且在学完之后学生仍然不能上手实践,这样会增加学习的挫折感,最终让学生失去学习动力。此外,在传统嵌入式系统类课程中,仍在使用ADS等软件作为开发工具[1],把ARM嵌入式处理器当作一个高级的单片机来进行教学,这与当前市场的实际应用情况不相符,当前市场更需要的是运行操作系统的嵌入式系统。

为了解决上述问题,本文提出一种新的教学方案,通过该方案的实施,可提升学生的学习兴趣,满足学生的学习需求,同时也能提高市场对人才需求的认可度。方案的主要内容包括:更换学习平台,依托新平台重新调整教学内容,强化基于Linux 操作系统下的嵌入式开发,在教学中使用网络广播等多种形式来改善教学效果,并注重过程性评价,改善学习质量的评价机制等。

1 重构课程内容

嵌入式系统以应用为中心,不同专业的培养目标、教学体系以及侧重点不尽相同,导致课程内容也有所差别。例如,电子工程专业主要侧重于硬件基础平台的设计;自动化、医疗仪器、测控等专业侧重于智能仪器、仪表的设计;软件专业则侧重于嵌入式应用软件开发。作为高师院校的计算机专业,应该结合当前教育的实际状况,注重对基本原理的学习,并及时跟踪市场技术生态的变化,不断调整课程内容,以培养出适应当前市场需求的技术型人才。为此,作者以多年从事嵌入式系统教学和工程项目开发的实际经验,结合当前市场主流的技术生态环境,对高师院校嵌入式系统类课程的教学内容进行了重新梳理。

1.1 重新选择学习平台

国内高校嵌入式系统类课程,自从21世纪初逐步开设以来,都把ARM 系列处理器当作了嵌入式系统教学的对象,尤其以ARM9平台为主要对象。这在当时几乎是唯一的选择,三星公司的S3C2410芯片甚至一度成为嵌入式系统的代名词。然而,随着技术的发展,特别是近年来伴随着智能手机市场的快速兴起,有力地推动了嵌入式领域各项技术的蓬勃发展。以嵌入式处理器为例,一大批功能丰富、功耗更低、速度更快、价格更便宜的芯片陆续投放市场。最近几年还出现了一批优秀的国内自主研发的嵌入式芯片,大大扩宽了教学上可选择的范围。

经过比较验证,权衡价格之后,本课程选定了NXP 公司的单核嵌入式芯片I.MAX6ULL 作为教学对象。该芯片基于较新的Cortext-A7 内核架构,曾被苹果公司广泛应用在IPad 及IPhone 等系列产品中。针对该芯片,选择了“广东东莞野火电子有限公司”推出的嵌入式开发板作为实验平台,型号为“I.MAX6ULL S1 Pro”[2]。基于该平台,学生可以学习到一些较新的技术,包括移植较高版本的Linux 内核及BootLoader,使用新型的文件系统,实现电容触摸屏等,让学生的学习能紧跟当前市场的技术潮流。

新教学平台的使用,彻底淘汰了三星S3C2410平台。因此,原有的教学内容也需要随之改变,淘汰ARM9 架构体系的教学内容,重新构建Cortext-A7 架构体系的教学内容。

1.2 重新构建教学内容

嵌入式系统类课程所涉及的教学内容较多,如何进行合适的选择,是决定教学效果好坏的关键。在传统教学模式中,一般都会追求内容的全面而缺乏针对性,这会导致学生感觉似乎内容都学到了却又什么都做不了。对于计算机专业的应用型课程,应强调对学生动手实践能力的培养。因此,本课程有针对性地选择了与实践紧密相关的内容进行重点学习,除此以外的知识点作为补充和自学。两者侧重点不同却又相辅相成,共同构建出嵌入式系统类课程的总体结构。

根据以上分析,新构建的嵌入式系统课程教学内容需要拆分成必学和选学两部分,以下是必学部分的内容[3]。

1)Linux基本命令。该内容是后续学习的基本保证,如果学生之前课程已学习过相关内容,可酌情删减或改为自学。

2)开发环境搭建。该内容是确保学生学习嵌入式开发能否顺利进行的关键,可根据学生自己电脑环境的不同而有所区别。

3)Linux 下C 语言的编程及交叉编译。该内容让学生熟悉Linux 下的C 语言编程。以前学生学习的C语言程序基本上是在Windows下运行的,现把编程环境转换到了Linux下,要让学生重新熟悉编程环境,同时要掌握程序的交叉编译方法。

4)Linux 内核的配置、裁减和移植。该内容让学生重新认识操作系统的基本概念,并通过对内核源代码的裁剪和编译,定制出自己需要的操作系统。

5)BootLoader的配置和编译。该内容仅让学生了解BootLoader 的基本原理及其制作过程就可以了,不必深入探究。因为一般情况下,BootLoader 会由芯片厂家的BSP提供支持。

6)根文件系统。该内容让学生了解根文件系统的基本构成和制作过程。同样也不必深入探究,因为根文件系统的定制目前可由多款第三方软件来实现。

7)Linux下的文件编程。该内容是课程的教学重点之一,要求学生掌握文件编程的具体方法。如果学生之前课程已学习过Windows下的文件编程,则本部分内容可酌情删减。

8)Linux下的进程控制及其通信。该内容是课程的教学重点之一,要求学生掌握进程控制及进程间通信的相关技术。在课时允许的情况下,可加入多线程编程的内容。

9)Linux下的网络编程。该内容是课程的教学重点之一,要求学生掌握网络通信的编程方法。如果学生之前课程已学习过Socket编程,则本部分内容可酌情删减。

10)Linux 下的串口编程。该内容是课程的教学重点之一,要求学生掌握Linux 下串口编程的相关技术原理,因为目前很多嵌入式系统的外围模块都以串口形式来进行通信。

11)内核模块开发。该内容为驱动程序开发作准备,让学生知道内核态程序开发与应用程序开发的区别,并深入理解内核程序开发的框架和流程。

12)字符型驱动程序开发。该内容是嵌入式系统开发中最重要也是最难的部分,需要较多的课时来保证教学效果。如果课时有余量,还可以增加“块型驱动程序”开发的相关内容。

13)Qt界面程序开发。该内容让学生了解嵌入式系统中常用GUI的开发过程。它需要学生具备C++编程的相关知识,教学上可以通过几个典型的案例来进行讲解[4]。此外,本部分内容也可视教学的实际情况,更换为安卓或鸿蒙。

以上13项必修内容需要在课堂上进行讲授,同时配合相关实验项目开展实验教学,锻炼并加强学生的动手实践能力。

以下是选学(自学)部分的内容:

1)嵌入式系统概述。该内容属于概念性知识,主要介绍嵌入式系统的定义及其应用领域等,可以安排学生自学。

2)CPU 内部结构及其指令集。该内容实际上是介绍嵌入式芯片的内部结构及其指令系统。把这部分内容留给学生自学,一是考虑到学生之前学习过单片机技术,这部分内容的学习方法与单片机大同小异;二是在后续开发实践中,基本都是在Linux操作系统中进行的,除了驱动开发之外,使用到该部分内容的时候很少,所以可以安排学生自学,在讲授到驱动开发部分时,再强化一下就可以了。

3)C++语言。该内容在Qt开发时会用到,考虑到学生之前已学习过C 语言,所以也把它也留给学生自学。

对于以上选学部分的内容,可以让学生通过多种途径进行学习。比如,教师提前布置任务,让学生利用假期的时间进行自学;或教师提前录制网络教学视频,让学生在课余时间进行学习等。

1.3 强调操作系统

目前的嵌入式系统可分为运行操作系统和不运行操作系统两种类型。本课程采用当前市场上较为流行的方案,即运行Linux 操作系统的方式来开展教学。其原因有三:一是市场方面,除了条件非常苛刻的航空航天、军工武器等领域外,在民用级消费类电子产品中,大多数嵌入式系统产品还是以运行通用操作系统为主;二是依托操作系统来进行程序开发,相对于直接在芯片上开发应用程序要方便得多,无论是开发效率还是程序的可移植性都比较高;三是在开发功能较多、较为复杂的应用程序时,通过操作系统的支持会让开发过程变得更加便利和高效。

基于上述原因,本课程加强了学生在Linux 操作系统下的开发能力。在教学上重点讲述Linux基本命令、Linux 下的程序开发、Linux 下字符型驱动程序开发、Linux 按键中断程序、Linux 网络应用开发以及Linux 内核定制等相关内容,为学生动手实践嵌入式Linux系统开发提供必要的理论和技术支持。

2 创新教学方法

对于工程类课程的教学,提倡运用培养“工匠精神”的教学模式[5],即边学边做的模式。从作者多年的教学实践经验来看,如果仅通过传统多媒体课堂教学形式来开展教学,效果不会很好。其原因有二:一是本门课程多数时候都在给学生讲解程序。在多媒体教室中,学生仅通过一块投影屏幕来观看整个教学过程,确实有困难。程序毕竟不同于文字和图片,成百上千行的代码不仅要一点点讲解清楚,还经常需要进行编译、运行等操作演示,在投影屏幕不大、分辨率不高的情况下,学生很难看清楚演示的具体内容。二是在教师进行讲解的时候,学生只能被动地看,不能跟着教师进行同步实践操作。等到实验课再去进行操作实践时,很多讲过的内容已经记不清楚了。

本课程的教学直接在实验室中使用电脑网络广播教学的方式来开展,让学生跟着教师同步进行操作。这样能有效地提升学生的学习效率和实践成功率,具体过程如下。

1)学生两人一组,方便讨论及协作。每组配备一台电脑、一块嵌入式开发板及相关实验工具。

2)教师使用的电脑要能够进行网络广播教学[6]。同时可配备一个摄像头,把教师在嵌入式开发板上的操作情况实时广播到学生端,让学生能同步看到教师的演示效果。

3)教师配备麦克风,教室内配备功放和音箱,确保每组学生都能清晰地听到教师的声音。此外,为了防止音响啸叫,还可配置一台音频移频器。

4)教师把讲授的内容进行分解,在讲解演示完成之后及时让学生进行操作,并检查每组学生完成的情况,及时解决学生遇到的问题。

5)教师授课时可采用录屏软件,把操作讲解的内容录制成视频,课后分发给学生或上传到视频网站,让学生在课后也能进行学习,有利于巩固所学内容,提高学习质量。

通过以上教学方法的改革,采用“手把手”的工匠教学模式,大大提高了学生的学习兴趣和学习动力,保证学习了质量。在条件允许的情况下,还可以开放实验室或把嵌入式开发板借给学生,让有兴趣的学生在课余时间也有条件继续学习。

综上所述,教学方法改革其实就是把理论课与实践课有机地结合起来,保证足够的课时,让学生能够边学边做,遇到问题及时解决,课后还能反复观看教学录像,保证了学习质量。通过这样的教学形式,只要学生具备学习上的内生动力,就肯定能够取得较好的学习效果。

3 改革教学评价方式

传统教学评价一般采用考试方式,但卷面考试方式只适用于考查学生对理论知识的记忆程度及分析理解能力,并不适合用来检测学生动手实践的能力。对于应用型的计算机专业课程,特别是对于像嵌入式系统开发这类课程,应该侧重于考查学生的动手实践能力,即对产品的开发设计能力,而不是对知识的记忆和分析能力。

基于上述原因,本课程采用设计作品的方式来进行期末评价,具体过程如下:

1)教师提前两周发布期末考查题目,让学生有充分的时间进行准备。

2)在题目中详细给出作品设计的具体要求,从环境的搭建开始,内容涵盖学习过的所有知识点,并量化好各知识点的评价分值。

3)学生先完成作品的设计制作,在调试完成后撰写出设计性实验报告,报告的内容涵盖作品的创意、需求分析及整个设计过程。

4)要求学生对自己的作品进行演示录像,录制的视频作为其中一项评分依据与设计报告一起提交。

5)最后要求学生进行现场答辩,在演示自己作品的同时能够回答教师及其他同学提出的问题,并能够按照教师提出的要求对作品进行现场修改。

6)学生最后的期末成绩依据上述各项量化指标给出分数,做到客观、公平、公正、公开。

此外,除了对学生的期末作品进行评价之外,还应注重对学生平时学习过程的评价,即过程性评价[7]。本课程的过程性评价由三部分组成:一是学生平时提交的实验报告;二是学生的考勤记录;三是期中考试的成绩。这样做的目的主要是考虑到对学生学习效果评价的多样性、综合性,让评价体系显得更加客观合理。

本课程的最终成绩评定采取“对半开”的形式,即过程性评价占比50%,学期末考查占比50%。这样做的目的是强调学习过程的重要性,对学生整个学习阶段所做努力的认可,同时也兼顾了产品开发设计的能力。

4 结束语

教学实践证明,通过上述教学改革实践,有效地调动了学生的学习积极性,学生学习的兴趣明显提升。在改革前学生期末试卷考核的平均分为70分,且在课程结束后基本上就无人再过问课程的内容。通过教学改革之后,不仅考核的平均分提高到了80分,更重要的是学生建立了长久的学习兴趣。有学生申报了学校科研训练项目,并参与了嵌入式系统相关教材的编撰工作。有学生主动报名参加全国大学生嵌入式系统设计竞赛,并取得了较好成绩。有学生在实习就业时选择了从事嵌入式系统开发等方面的工作,其掌握的知识技能也与用人单位的招聘条件基本相符,教学改革达到了预期目的。

猜你喜欢

嵌入式编程内容
内容回顾温故知新
编程,是一种态度
编程小能手
纺织机上诞生的编程
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
主要内容
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器