APP下载

计算机类专业“嵌入式系统”课程的教学法研究

2021-02-28黎建

电脑知识与技术 2021年35期
关键词:嵌入式系统教学方法

黎建

摘要:嵌入式系统技术涉及多学科,应用非常广泛。文章针对大学计算机类专业开设“嵌入式系统”课程所存在的问题,进行了较深入地分析和研究,提出了改进教学的方法和具体措施。教学实践表明,使用改进后的教学方法,能够达到预期的教学效果。

关键词:嵌入式系统;ARM;Linux;教学方法;计算机类专业

中图分类号:G642        文献标识码:A

文章编号:1009-3044(2021)35-0271-03

Research on the Teaching Method of "Embedded System" Course for Computer Majors

LI Jian

(Guangzhou College of Technology and Business, Guangzhou 528138,China)

Abstract: Multi-disciplinary technologies are involved in the "Embedded System" Courses. The Embedded systems have applications across a wide variety of industries. This paper analyzes and researches the problems found in the teaching of Embedded System courses, which have been offered by Computer Science programs in universities. A new teaching method is described in this paper with detailed protocols to improve teaching method. The teaching practice shows that the use of improved new teaching method can achieve the expected teaching effect.

Key words: embedded systems; ARM; linux; teaching method; computer majors

随着科学技术的进步,信息技术的发展,在5G技术的推动下,以信息化、智能化、工业化及物联网深度融合为方向的科技革命席卷而来,并迅速成为社会关注的焦点。嵌入式系统作为一种专用的计算机系统,在各类智能化设备中,应用极为广泛,如工业过程控制、数控机床、电力、石油化工系统等[1]。此外,在汽车电子,智能仪器,移动设备中应用发展更为突出[2]。由于巨大的市场需求,嵌入式系统与技术是近年来IT领域发展最快的方向之一,特别是嵌入式软件已成为我国IT产业中的一个重要的新兴产业和增长点。然而,嵌入式人才培养由于周期长,影响了嵌入式产业的发展,为此,“嵌入式系统”成了各大学电子类和计算机类专业的重要课程之一。但是,计算机类专业在嵌入式课程教学中,存在一些需要解决的问题。文章对这些问题,进行了较深入地分析和研究,并提出了行之有效的改进方法。

1 电子类和计算机类专业的教学差异

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统[3]。从定义可以看出,嵌入式系统要做到软硬件可裁剪,必须既要设计硬件,也要设计软件。由于课时限制,不可能全面铺开讲授,那么,重点应该是硬件还是软件为主?对电子类专业,了解硬件结构,并且能够对硬件裁剪设计,写好设备驱动程序,在给定功能的情况下,能够设计出最小系统板,可以达到教学要求。但是,对于计算机类专业,其所学的硬件有关课程,是不够支撑学生对硬件进行设计的,这也是为什么一些计算机类专业没有开设这门课程的主要原因。但在软件设计能力方面,比电子类专业学生要强很多,这就是优势。当然,计算机类专业不同,所学的软硬件课程有比较大的区别,我们一定要因地制宜,需要将学生尚未学习的硬件前置课程的知识融入教学过程中[4]。对偏软的计算机类专业,如软件工程专业,可能没有开设数字电路,单片机技术等课程,教学重点应该放在带操作系统的嵌入式应用与设计上,而这种应用恰恰是在物联网,机器人,智能设备,工业控制等领域不可缺少的。由于社会对嵌入式软件开发的需求日趋上升,因而人才需求量巨大。总的来说,计算机类专业开设“嵌入式系统”课程,对提高学生的软硬件综合应用能力非常有效,特别是在嵌入式操作系统上开发应用,优势超过电子类学生,为学生就业增加了机会。

2 教学内容研究

嵌入式的概念非常广,嵌入式计算机可以从8位51系列单片机到64位ARM系列处理器,当然,应用场所不一样:低端应用由于成本原因,往往采用8位单片机,如键盘鼠标控制;随着科学技术的进步,32位、64位处理器逐渐成为高端应用主流,如机器人,无人机,移动设备等。中低端应用,受处理器性能的限制,一般没有操作系统,直接用程序控制硬件,即所谓的“裸奔”(一些32位单片机也难上操作系统,如STM32系列),开发者要有较深厚的硬件基础,掌握计算机的底层工作原理和设计,熟悉汇编、C语言等基于底层的开发语言及方法,这是电子类学生的优势。对应于高端应用,由于处理器硬件资源既丰富又复杂,基本上不可能直接控制硬件,必须依赖于操作系统。这种情况下,计算机类专业由于开设了不少语言类(如C、C++、Java等),操作系统类(Linux,Android等)课程,特别是一些算法和数据处理课程,优势非常明显:可以直接裁剪和优化操作系统,对现场采集到的数据进行清洗和挖掘及处理,能够开发语音处理,图像识别等人工智能设备必需的高级应用。然而,计算机类学生花了不少时间学习C,C++,虽然编程能力很强,但要编写设備驱动程序,还是有不少困难,主要原因是对硬件接口原理的理解不够。一般情况下,硬件生产厂家都会提供设备驱动程序和API,通过调用API,可以很方便地实现驱动硬件设备,不影响嵌入式应用软件开发(如Android系统,通过API,我们可以使用移动设备上的LED灯, GPS等)。当然,在教学方法和教学内容上与电子类专业应有较大的区别。首先,要重点讲授什么是嵌入式计算机,什么是嵌入式操作系统以及嵌入式软件开发的特点,让学生知道嵌入式就在身边:小到U盘鼠标,大到路由器,手机;在嵌入式处理器结构方面可以少讲,毕竟,学生已经学过“计算机组成原理”,但对硬件接口可以讲一些,尽管学生可能对协议不太明白,但通过实验可以慢慢理解。接下来,教学重点要从搭建Linux环境,特别是交叉开发环境入手,掌握BootLoader的功能和作用,再根据嵌入式操作系统和内核的特点,学习如何裁剪和优化。然后,利用系统自带的驱动程序或API,试着编写一些简单的硬件控制程序,再熟悉一下驱动程序的编写规则和流程,对其进行改写,加深理解程序是怎样控制硬件的;当然,掌握系统调用方法也是必需的。最后,讲授嵌入式软件与普通软件开发的异同点,通过布置综合应用项目,让学生加深对嵌入式软件开发的理解。如果教学课时充足,讲一些Android应用:可以让学生通过NDK工具,设计一个可以调用自己用C(或C++)编写的App。

3 教学方法和经验探索

计算机类一些专业硬件课程不多(如软件工程专业),当学生看到嵌入式实验箱或评估板后,可能一脸茫然,属正常,不用担忧。随着教学的深入,学生开始进入状态,有可能会喜欢这门课,但如何让学生真正学会并掌握这门课程,是每个嵌入式课程教师的重要职责。因此,有必要对教学方法和经验进行探索。

3.1要真正让学生理解嵌入式计算机与通用计算机的异同点

嵌入式计算机是计算机技术发展中的一种计算机存在的形式,是从计算机技术的发展中分离出来的,能够嵌入到对象体系中,而嵌入式系统则是嵌入对象体中的专用计算机系统。所以,我们在讲授时,重点要体现嵌入式系统的“嵌入”“专用性”“计算机”这几个基本特征,由此可以引出,这类应用系统对功能、可靠性、成本、体积、功耗等都有严格要求。还有,SoC的基本概念学生也要掌握,可以通过我们熟悉的手机为例,来阐述嵌入式与通用计算机的异同点。必须让学生明白,绝大多数情况下,嵌入式系统对实时性有很高的要求,所以其软件设计比通用软件设计要求更高,开发工作量和难度更大。另外,还要引入协同设计的思想,让学生知道嵌入式产品的设计过程中,软件设计和硬件设计是紧密结合、相互协调的。只有这样,既可以最大限度地利用有效资源、缩短开发周期,又能取得更好的设计效果。

3.2培养学生良好的硬件资源使用习惯

嵌入式系统设计课程一般在大三大四开设,前二年的实验和编程课程,都是在通用PC机上进行的,对硬件资源使用没有约束,学生也养成了“大手大脚”的习惯:编程时动不动就定义和申请大数组,虽然数据量并不大;可以用字节数组来存放的数据,为图方便,经常使用整数数组类型;放着快速分类查找数据的算法不用,却用最原始的枚举法,只要结果正确就行,不管CPU耗时多少。如果嵌入式设计还是这样,可能导致项目失败或成本剧增。一些计算机类专业没有学过单片机课程,不知道有些情况下,为了节省几个字节,或让CPU运行快0.1秒,或为了节省1分钱的硬件价格,要花费不少精力(2019年,我国出口鼠标2.9亿个,节省1分钱的硬件成本,其收益都非常可观。在这方面,电子类学生编程习惯要好很多)。如何培养学生良好的硬件资源使用习惯呢?教师先要讲解嵌入式系统资源的组成,不同芯片有不同资源;不同功能需求,使用不同的芯片;不同资源,有不同成本价格。可以给出一些项目需求和嵌入式CPU列表,让学生自己选择嵌入式芯片,按项目编程,以能够满足项目功能要求的最小系统为优胜者。或者,教师设定项目需求和CPU类型,让学生编程实现,通过检查学生的程序,了解他们对资源的使用情况,程序优化情况以及运行情况。通过这样反复训练,可以培养学生良好的编程习惯以及嵌入式软件编程风格。

3.3 怎样让学生喜爱嵌入式系统开发

对一些硬件课程开设比较少的计算机类专业,学生刚开始感觉新鲜,都在认真听课,但随着课程的深入,部分学生感到实验和调试环境与之前不同,不习惯,硬件工作原理不好理解,调试也不方便,逐渐失去兴趣。因此,教师应该从下面几个方面来提高学生学习嵌入式课程的积极性:

3.3.1实验和调试环境的选择

嵌入式教学设备有很多厂家生产,提供的实验和调试环境五花八门。如果从学生经常使用的IDE开发环境和工具来说, Eclipse+JLink调试工具是不错的选择。Eclipse集成环境,计算机类学生非常熟悉,C、C++、Java、Web等课程的学习一般都会使用它,非常方便,当然,厂家要提供相应的插件来支持嵌入式软件的开发和调试。这样,在学习中,不会为搭建环境而浪费时间,而且运行和调试程序的方法基本没有改变,学生更容易上手。多年的教学经验表明,学生使用Eclipse来完成实验编程和调试任务,都不会有什么困难。

3.3.2 I/O口编程应该注意的问题

I/O控制技术是硬件接口技术中最简单的一种,嵌入式编程教学都是从控制I/O口开始。在I/O口上,接上LED灯,电机或蜂鸣器等硬件模块,通过程序来控制它们动作,这是必做的实验,也是嵌入式系统设计的入门实验。如果学生能够理解I/O口的基本原理,并能成功控制硬件的运行,他们一定很有成就感,就会对嵌入式软件开发开始感兴趣。但是,如果学生不理解I/O口的工作原理,控制硬件失败,就会遭到挫折,失去对嵌入式软件开发的兴趣。因此,I/O口编程实验在嵌入式教学中非常重要。当然,对于电子类专业学生,上过很多硬件有关课程, I/O口编程就比较简单了,但对于计算机类专业,特别是一些数字电路都没有学过的学生,掌握I/O口编程有点困难。教师在讲授时,重点应该让学生多理解高低电平,拉电流,灌电流等基本概念,还有上拉电阻下拉电阻的作用。控制寄存器的设置比较难,学生一般掌握不好,最后导致程序运行失败。所以,对控制寄存器的设置方法,教师也要作为重点,多花费些时间讲授,消除计算机类专业学生对硬件的排斥[5]。需要注意的是,常见的嵌入式芯片,一般都是RISC指令集(如应用最为广泛的ARM系列芯片),不能直接对寄存器某位设置,需要通过移位和与或非组合操作,使用C语言编程时,学生很容易犯错,教师要循循善诱、科学指导,把方法讲透,使设置变得容易。

3.3.3设计让学生感兴趣的实验项目

嵌入式系统设计课程,理论性和实践性都较强,特别注重理论与实践相结合。实验课的目的是,帮助学生巩固和加深理解所学的理论知识,训练他们的实验技能、工程实践观点和严谨的科学作风[6]。通过实验,学生可以对嵌入式系统的设计与开发过程有更深的体会,因此,在教学方法上,要围绕着提高学生分析问题、解决问题的能力、综合开发能力、团队作战能力而展开。为了上好实验课,要设计一些让学生感兴趣的实验项目:I/O口编程除了经典的走马灯实验外,还可以让学生通过不同的顺序来控制灯的显示,从中得到编程的乐趣;通过控制蜂鸣器,实现莫尔斯电码实验,要求学生编程发出SOS电码声音,学生对这样的实验非常有兴趣;利用Linux下系统调用和多线程技术,操作LCD显示屏[7]、触摸屏、音频设备等设备,实现音乐和动画播放实验和对弈游戏实验(比如:贪吃蛇小游戏[8]),使学生对嵌入式软件开发方法,有了更进一步的认识,并且在“玩”中学会不少编程技巧。总之,教师要对实验项目认真对待,好好设计,是保证学生能够学好嵌入式系统设计课程的条件之一。另外,学生分组实验也很有必要。不建议实验课一人一组,尽管有些学校设备充足。做嵌入式实验,学生从搭建环境,到编程,调试都是很费时间的,对复杂一点的实验,要保证在有限的课时内完成,不提倡个人英雄主义,要体现团队作战能力,学生分工协作共同完成,这也是为将来学生走向社会打下一定的基础。如果学生经常完不成实验,会有很大的失落感,久而久之失去对嵌入式课程的兴趣。所以,编写实验指导书,让学生快速上手,是教师的职责所在。

4结束语

随着信息化、智能化、工业化及物联网深度融合,计算机类专业开设“嵌入式系统”课程是很有必要的。但是,不同的计算机类专业,所学的软硬件课程有较大的区别,所要求的先修課程也可能难以满足,因此,我们一定要因地制宜,取长补短,充分发挥本专业优势,让学生真正掌握好“嵌入式系统”课程内容。经过多年的教学实践证明,计算机类专业学生在嵌入式系统应用设计方面,能够做得很好。

参考文献:

[1] 马志刚.嵌入式系统的现状及发展趋势[J].中国设备工程,2020(21):145-147.

[2] 王龙飞.嵌入式系统的应用现状及发展趋势[J].中国新通信,2018,20(23):95-96.

[3] 王剑等.嵌入式系统设计与应用:基于ARM Cortex-A8和Linux[M].北京:清华大学出版社,2017.

[4] 吴晨睿.新工科背景下“嵌入式系统”课程教学改革研究[J].南方农机,2021,52(14):173-174.

[5] 俞翔, 杨庆, 曹欲晓,等. 应用型本科计算机专业嵌入式系统课程教学改革方案研究[J]. 中国教育技术装备,2018(8):90:92.

[6] 王宝珠,李文娟,邓华阳.新工科背景下,应用型本科嵌入式系统教学改革[J].科技视界,2020(23):9-10.

[7] 李建祥.嵌入式Linux系统开发入门宝典-基于ARM Cortex-A8处理器[M].北京:清华大学出版社,2016.

[8] 李亚兰, 陈淼, 李翔,等. 培养实践动手能力的嵌入式系统教学方法改革[J]. 计算机教育, 2020(3):141:144.

【通联编辑:王力】

猜你喜欢

嵌入式系统教学方法
教学方法与知识类型的适宜
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
我的教学方法