软硬协同在嵌入式系统教学中的探讨

2013-01-11 03:51陈志国
无锡职业技术学院学报 2013年5期
关键词:流水线嵌入式指令

陈志国, 傅 毅, 孙 俊

(1. 江南大学 物联网工程学院, 江苏 无锡 214122; 2. 无锡城市学院 电子信息工程系, 江苏 无锡 214153)

嵌入式是目前最活跃、最有创造力的技术领域之一[1],在家用电器、智能仪表、消费电子产品、工业控制、国防和尖端科研等方面都有着广泛的应用。最近,美国的苹果公司超越微软成为世界上市值最高的公司,靠的就是其推出的创新型的i系列嵌入式产品(iPod、iPhone及iPad)。因此目前国内大部分高校都将嵌入式系统课程作为计算机、信息技术、电子、通信等专业的必修课程。然而,嵌入式系统并不是一门独立的课程,早在2004年,IEEE(Institute of Electrical and Electronics Engineers)和ACM(Association for Computing Machinery)就认为嵌入式系统的课程至少应包括嵌入式微处理器、实时操作系统和嵌入式软件设计等十几门课程[2]。目前国内开设嵌入式系统课程的高校基本上都是通过修改教学计划,增设一门或两门嵌入式相关的课程来弥补基础的不足,这显然是不够的[3]。因此,如何适应当前的形势和发展,弥补学生在相关基础学科上的缺失,提高嵌入式系统课程的教学质量,培养出社会亟须的创新型的嵌入式系统开发人才,是各个高校面临的问题。

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

众所周知,嵌入式系统的课程教学有两个显著特点:一是软硬件结合,基本上任何嵌入式产品都是软硬结合的产物;二是创新性和应用性强,嵌入式系统通常都要针对特定功能进行定制,这就需要创新,并能应用到产品中去,提升产品竞争力。而当前高校的嵌入式系统课程教学中还有一些不足之处,主要包含以下几方面:(1)教材不适合创新型和应用型人才的培养。很多教材的组织都将硬件和软件割裂开来,而嵌入式系统涉及的学科门类较多,教材又缺乏实例和直观性,学生感到抽象和难以理解,学习效果有限;(2)实验教学不能真正锻炼学生的动手能力和创新能力。由于高校学生没有实际从业经验,而现行的实验教学很多都是实验箱形式的验证性实验,学生无法参与设计,实验体会不深,无法掌握嵌入式系统软硬结合的设计方法。(3)成绩考核方式以试卷为主。对于这种实践性非常强的课程,这种课程考核方法效果不理想,不能提高学生的实际应用水平和设计能力。鉴于上述嵌入式系统课程教学中存在的问题,本文结合实际教学实践,采用软硬协同的方法对该课程的教学提出一些建议和意见。

2 软硬协同在嵌入式系统教学中的思路

嵌入式系统的软硬协同教学法强调教学过程中充分结合软件硬件知识,对教学过程中较难理解的硬件(软件)上的知识点,就通过结合相应的软件(硬件)知识来阐述,往往可以起到事半功倍的效果,激发学生的学习兴趣,引导学生积极思考,举一反三,体会嵌入式系统软硬结合的思想,提高教学和学习效果。

为了提高嵌入式系统课程教学质量,我们以“提高学生分析问题、解决问题的能力”为出发点[4],积极探索嵌入式系统教学方法的改革。首先要做的是积极遴选顺应嵌入式技术发展的相关教材、参考资料和技术文献,然后在此基础上结合软硬协同教学法,提高学生对嵌入式系统的兴趣,让学生主动参与到学习中来。软硬协同教学法能充分化解课程中的难点,降低学生的学习挫败感,加深对嵌入式系统的理解,培养学生的实际动手能力和创造力,融会贯通以往的学习知识,掌握嵌入式系统软硬结合的设计方法,培养学生综合运用所学知识来分析问题、解决问题的能力。

2.1 通过软硬协同教学实现教学做合一

陶行知先生说过:“教学做是一件事,不是三件事。我们要在做上教,在做上学。不在做上用功夫,教固不成为教,学也不成为学”[5]。可以说,陶行知先生的这句话道出了嵌入式系统教学的精髓,也体现了嵌入式系统高度软硬结合的特征,我们的软硬协同教学法也正是遵循这一教学原则来开展。

现在很多的嵌入式系统教材都将硬件和软件方面的知识在组织上分开,而相应的实验教学又不能很好地将软硬件知识结合起来,如果不在教学方法上下工夫,教学效果就可想而知。软硬协同教学法强调在硬件学习中加入软件实现,在软件学习中加入硬件分析,并将各种相关知识有效融合,形成一种发散型思维模式。

例如,在讲述“ARM处理器结构”时,有一个软硬关联的知识点:“三级流水线时R15保存的不是当前指令地址,而是当前指令地址+8。”。

这个问题从理论上解释比较抽象,学生也似懂非懂,所以建议暂时将该问题放下,等到实验课时在ARM的IDE(Integrated Development Environment)中写一条简单指令:

MOV R0,PC

执行到该语句时记下当前PC值(假设为0x8000),然后单步执行该语句后观察R0的值(应为0x8008),此时学生发现“[PC]=当前指令地址+8”。然后再回到硬件上分析ARM的三级流水线结构,如图1所示:

图1 ARM7三级流水线

从图1中可见,当第一条指令执行时,CPU已经在对第三条指令取指,即在三级流水线中,R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令,因此“[PC]=当前指令地址+8”。

通过上述解释,学生对流水线的概念有了一个基本理解,但有学生会问:从三级流水线推断,ARM9的五级流水线,[PC]=当前指令地址+16吗?答案是否定的。因为ARM9的五级流水线分为:取指、译码、执行、访存、写回,虽然流水线深度是五级,但是当第一条指令执行时,是第三条指令正在取指,所以ARM9与ARM7一样:[PC]=当前指令地址+8。

此时,学生会问:既然如此,五级流水线和三级流水线有什么区别,哪个更好呢?该问题要辩证看待,流水线深度越深,指令的吞吐量越高,每一段的工作量越少,处理器就可以运行在更高的频率,运算性能也更好,但也增加了流水线延迟(内核需要更多周期填充流水线),对硬件设计的要求也更高,所以流水线深度并不是越深越好。至于五级流水线和三级流水线哪个好,需要引导学生回顾“ARM体系结构”的知识。从ARM9开始,流水线就变成了哈弗结构,而ARM7还是冯·诺依曼结构。冯·诺依曼结构的指令和数据单一存储,统一编址,指令和数据不能同时存取,所以储存器访存指令(LDR、STR)会严重阻塞流水线,造成效率下降;哈弗结构的指令和数据分开存储,独立编址,流水线上的“取指”和“访存”可以并行,执行效率更高。

然后再引导学生回到软件上来:在ARM的IDE中下载一段程序,打开Memory窗口,输入下载地址,便能清楚看到ARM7的指令和数据存放在统一编址的同一存储区;而ARM9的指令和数据分别存放在两个独立编址的存储区。

正是通过上面的这种从硬件到软件,再从软件到硬件的学习,实现了在做上教,在做上学,让学生深刻理解所学知识,并能举一反三,也体现了陶行知先生的“教学做合一”的教学理念。

2.2 通过软硬协同教学化解课程中的难点

嵌入式系统这门课程由于涉及很多的抽象概念和理论,很多同学又缺乏相应基础课程的学习,所以导致学习该课程时存在较高的难度。此时如果能将那些抽象概念和晦涩的理论通过软硬协同教学法进行阐述,就能使复杂问题简单化,抽象概念具体化,从而有效化解教学中的难点,帮助学生对相关知识点的掌握。

比如“指令系统”的章节中有一个“合法立即数”的概念,很多同学不是很明白,因为以前学习的x86 CPU中没有这个概念,此时如果一味地照搬教材中的说法给学生讲解如何通过计算和循环移位得到合法立即数,学生肯定还是一头雾水,不知所云,从而从内心产生畏惧感,丧失学好这些知识的信心。如果这个知识难点采用软硬协同教学法进行解释就会事半功倍,学生也会很容易接受。

要理解什么是“合法立即数”,首先要让学生理解ARM的指令编码格式,很多教材上都没有相应的实例,更没有软硬结合的分析过程,学生看到的只是枯燥的概念和表格,因此难以理解。ARM的指令编码格式和ARM的体系结构有一定的关系,因为ARM体系结构主要采用了Berkeley RISC处理器设计中的若干特征:Load/Store体系结构;固定32位指令;3地址指令格式。由于ARM采用“固定32位指令”,所以指令编码中用来存放“立即数”的位数就受到限制:只有最低12位,而且进行了编码,这个“立即数”=“低8位0扩展到32位”再循环右移“高4位乘以2”位得到,这和x86这种CISC处理器有很大区别,所以学生不容易理解。

为了理解这个“合法立即数”的概念,我们再从软件上入手,在ARM的IDE中输入一条指令:

MOV R0,#0x0000F200 ; 0x代表16进制数

然后在反汇编的窗口观察该指令的机器码为:E3A00CF2。然后引导学生去查阅ARM的硬件数据表(datasheet)[6],并分析该机器码的组成,如表1所示,其中Operand2为“CF2”,代表立即数“0x0000F200”,因为0x0000F200是由0x000000F2循环右移24(0xC×2=24)位得到。

通过这种软硬协同分析,学生对“合法立即数”有了确切的理解,也明白了ARM的指令编码。通过这种软硬协同教学法,可以让学生更清晰了解知识的来龙去脉,并学会如何查阅相关技术手册和文档,对以后走上工作岗位也是一种很好的锻炼。

2.3 通过软硬协同教学法培养学生的动手能力

嵌入式系统是一门应用性和实践性很强的课程,所以实验显得尤为重要。但现行的很多实验课程都是实验箱形式的验证性实验,对提高学生的动手能力帮助不大。如果能在实验教学中适当加入一些需要软硬协同设计的实验内容,既能提高学生的学习积极性,又能提高学生的实际动手能力。

例如,在做“液晶显示实验”的时候,我们设计了一个“将自己头像显示在液晶屏上”的实验,通过这个实验的分析和讨论,同学们不仅明白了ARM的LCD控制器的8位彩色编码格式和屏幕分辨率等硬件知识,而且学会了如何编程将24位图片的像素点信息转换为ARM的显示数组。当程序经过多次修改和调试,有同学看到自己的头像通过自己编写的程序显示在液晶屏上时,那种成就感和满足感只有亲身经历者才能体会。

当然,这种软硬协同设计的实验需要根据教学特点来开展,最好能够因势利导并结合学生的兴趣爱好,给学生留有足够的思考空间和适当的编程难度,培养学生的逻辑思维能力、综合应用能力和创新能力。

2.4 通过软硬协同教学贯通整门课程所学的知识

每当嵌入式系统课程快结束时,很多学生都觉得自己学到的都是一些相对零散的知识,缺乏一条主线将这些散落的知识点串起来,既不能从全局的角度来看待问题,也不能灵活运用这些知识。此时,很需要一个软硬协同设计的综合系统来贯通整门课程的各个知识点,增强学生对嵌入式系统的整体把握,提高学生灵活运用所学知识的能力和分析问题、解决问题的能力。

例如,在学习完“嵌入式软件系统开发”课程后,我们布置了一个需要软硬协同设计的综合系统“局域网聊天系统”,这个系统既涉及嵌入式系统的相关硬件资源,如键盘、LCD液晶屏、LED发光二极管、以太网、IIS总线等,又涉及嵌入式操作系统和相关应用程序的开发。通过这样一个综合系统的软硬协同设计,既能将嵌入式系统的软硬件知识结合起来,又可以让学生初步掌握实际应用系统的开发流程和技巧,为以后从事相关行业打好基础。

2.5 通过软硬协同设计为课程考核提供思路

嵌入式系统是一门实践性非常强的课程,传统的试卷考核方式已经非常不适合用于这种高度软硬结合的课程。为了更好地考查学生的学习效果,提高学生的实际应用水平,我们采用综合课程设计对该课程进行考核。设计的题目应该紧扣教学内容的核心知识,从软件和硬件两方面进行考虑,同时为学生提供必要的启发和提示,并预留一定的扩展空间。例如,综合课程设计的题目可以是“液位控制系统”、“温度检测装置”、“遥控电动小车”、“简易录音笔”等,甚至可以是学生的自主创新项目。

3 嵌入式系统软硬协同教学中应注意的问题

1) 软硬协同教学应当紧扣课程的教学目标和教学大纲。

2) 软硬协同教学应遵循“教学做合一”的原则。

3) 软硬协同教学应当为学生提供必要的想象空间,激发学生的求知欲,提高学生的创新能力。

表1 ARM指令编码格式

4) 软硬协同教学模式强调引导、开放,强调学生的主动参与。

4 结语

教学是一门科学,也是一门艺术,是科学与艺术的统一,也是“教”、“学”、“做”的统一。嵌入式系统作为一门应用性强、发展快、知识面广的课程,其教学改革是一项长期而艰巨的任务。

软硬协同教学法在激发学生兴趣、提高教学效果方面发挥了较好的作用,但与传统教学方法相比,还没有形成统一的教学规律,教师需要花更多精力去探寻知识点的软硬协同切入点,在课后辅导上也需要投入更多心血。这一切都需要任课教师更多无私的付出和努力,但作为一种能提升教学效果、增强教学质量的教学模式,还是非常值得我们去进一步的尝试和探索。

参考文献:

[1] 廖小飞, 陈雯, 许武军, 等. 基于案例教学的嵌入式系统课程改革与实践[J]. 教育教学论坛, 2013 (5): 76-77.

[2] 仲伟波, 包亚萍, 付跃文, 等. 关于嵌入式系统教学的几点思考[J]. 实验室研究与探索, 2006, 12(25): 1565-1568.

[3] 童英华. 应用型本科院校嵌入式教学探讨[J]. 微型电脑应用, 2012, 28(5): 7-10.

[4] 蒋书波, 王晓荣. 嵌入式系统平台课程体系教学方法探析[J]. 中国电力教育, 2013 (2): 116-117.

[5] 陶行知. 陶行知全集[M].成都:四川教育出版社,1991.

[6] Atmel Corporation. ARM7TDMI (Thumb Datasheet January 1999)[M]. France: Atmel Corporation, 1999.

猜你喜欢
流水线嵌入式指令
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
流水线
TS系列红外传感器在嵌入式控制系统中的应用
搭建基于Qt的嵌入式开发平台
杀毒软件中指令虚拟机的脆弱性分析
报废汽车拆解半自动流水线研究
中断与跳转操作对指令串的影响
流水线生产杀死艺术
一种基于滑窗的余度指令判别算法
MAC指令推动制冷剂行业发展