嵌入式处理器和接口编程实践教学项目研究

2017-07-01 08:31张玲晏伯武
中国信息技术教育 2017年11期
关键词:项目驱动

张玲+晏伯武

摘要:嵌入式处理器和接口编程是嵌入式课程体系的基础课程,是培养学生理解并应用嵌入式硬件资源的实践性课程,因此嵌入式处理器和接口编程实践教学项目的设置对学生理解处理器原理和硬件接口有着重要的意义。本文针对嵌入式处理器接口及外围资源编程的实践教学,设置了嵌入式处理器体系结构及编程、GPIO编程、异常和中断、嵌入式处理器外围资源编程等教学内容,以阶段项目驱动的教学方法将抽象知识具体化,以期让学生更好地理解硬件原理,学会时序控制硬件的编程,提高实际操作能力和对综合知识的运用能力。

关键词:驱动编写;嵌入式处理器编程;项目驱动

中图分类号:G434 文献标识码:A 论文编号:1674-2117(2017)11-0095-03

● 引言

近年来,从工业控制应用到智能家具,再到人工智能都离不开嵌入式系统的发展。为了满足社会需求,各大高校相继开设了嵌入式课程体系。与一般某门课程的教学不同,嵌入式课程是一个课程体系,几乎涉及计算机专业的所有课程,所以常规的上课和实验方式已经不能满足该课程体系的需求。为了提高教学效率,本文针对嵌入式处理器和接口编程实践教学进行了研究,旨在实施以项目为驱动的教学方式,将抽象的知识具体化,并应用到实际的项目中,这样不仅可以提高学生的学习兴趣,而且可以提高学生对基本知识的理解和应用能力,以及动手实践能力,为后续课程的学习打下良好的基础。

鉴于嵌入式处理器和接口编程要求学生掌握和理解嵌入式处理器的体系结构、指令系统、汇编语言、汇编与C混合编程,笔者对嵌入式处理器體系结构及编程、通用输入输出接口、异常和中断、处理器外围资源编程等方面进行了详细阐述。

● 嵌入式处理器体系结构及编程

该部分主要针对嵌入式处理器结构和编程进行项目设置和教学内容设置,其中包括嵌入式处理器组成原理、寄存器设置、CPU原理、指令格式、指令系统和汇编语言。

由于该部分的知识点比较抽象,且难以设置足够的课时来详细讲授,所以如何把抽象知识具体化,使学生掌握嵌入式体系结构的硬件和软件原理非常关键。该部分项目设置的目的就是让学生掌握基本汇编的用法、汇编和C语言用法,掌握寄存器的设置方法等。

考虑到学生是第一次接触嵌入式硬件编程,还没完全形成硬件编程思想,所以笔者设置了基本通用输入输出接口点亮LED灯的小项目,以此达到两个目的:一是学会汇编语言的基本编程、汇编和C混合编程以及基本的在线调试和运行方法;二是了解基本的GPIO编程思想,学会硬件寄存器的配置方法,为下一步的GPIO编程打下基础。

具体的项目设置和教学内容如下页表1所示,在第一个项目中,GPJ2口接8个LED小灯,要求学生实现至少3种跑马灯效果。教师先给学生讲解点亮一个小灯的原理,然后要求学生以同样的方式点亮同一组GPIO连接的所有小灯,并用软件方式实现不同的显示效果。在第二个项目中,要求学生通过打开和关闭Cache运行小灯闪烁的程序,来体会Cache的作用。

● GPIO(通用可编程IO接口)编程

GPIO编程是嵌入式处理器编程的核心部分,它可以用编程语言通过简单地描述数字信号来控制外部设备工作。由于CPU对所有外设的控制都是通过GPIO编程来完成,所以该部分的学习对嵌入式应用开发来说非常重要。对于教学用到的嵌入式核Cortex-A8来说,它包含多组基本功能引脚,由于每组都涉及不同的寄存器,所以每组引脚都能提供不同的功能。然而,功能较多所带来的问题就是繁琐的编程,因为针对不同的功能需要设置不同的工作模式,这些都需要用编程语言进行寄存器配置。

为了简化难度,使学生更易于理解,笔者针对该部分的知识点设置的项目是:C语言实现寄存器设置,完成跑马灯的不同效果;C语言完成蜂鸣器的控制,实现不同的音乐;时钟的原理和设置。具体的项目设置和教学内容如表2所示。

● 异常和中断

Cortex-A8的异常处理的实质是利用中断原理处理各类异常。中断技术是处理器高效处理各类事件的有效方式,这个概念虽然简单,但对于刚接触中断技术的学生来说,理解起来还是存在困难。为了较好地理解该部分的知识点,学生可以将其与已学过的查询式编程进行类比。在查询式编程中,处理器除了查询标志位外,其他什么事情也不用做,而中断的主动权在请求程序上,当哪个资源需要CPU时,会主动发出中断请求,相当于告诉CPU:我准备好了,你可以过来处理这件事情。而在中断源还没准备好时,CPU可以处理其他事情,这样就减少了CPU的等待时间,提高了CPU的工作效率。

中断部分的讲解利用外部中断源发出中断,而要处理的中断服务程序为点亮LED灯,即CPU要处理的事情为点亮LED灯,以及以不同的方式点亮LED灯。在该项目中,中断源为CPU的外部中断引脚,触发中断产生的中断源为每位学生,请求CPU处理的程序为点亮LED灯。这样能让学生通过亲自编程和体验,将抽象的知识具体化,理解和掌握中断概念,并学会中断编程。

该项目利用外部中断GPJ1口的编程过程可以描述为:设置GPJ1CON= GPJ1CON & 0xffff0fff,GPJ1CON|= GPJ1CON|(0xF<<4*3),即可配置寄存器为中断功能;GPJ1_3下拉功能,GPJ1PUD=GPJ1PUD& 0xff3f,GPJ1PUD=GPJ1PUD| (0x40);将CPJ4_4设置为输出模式,GPJ4CON=GPJ4CON& 0xfff0ffff,GPJ4CON=GPJ4CON| 0x10000;设置GPJ4_4输出高电平,GPJ4DAT=GPJ4DAT|0x10;清除中断挂起位,GPJ1_INT_PEND= GPJ1_INT_PEND&(1<<3);点亮LED灯,GPJ2DAT=GPJ2DAT| 0x1,clear_Vicaddress()。

猜你喜欢
项目驱动
基于项目驱动的旅游规划课程教学模式重构
项目驱动教学法在机械制造工程学课程教学中的应用
以项目驱动为核心的电子技术综合设计课程教学改革与探索
依托工作室的软件工程实践教学研究
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
基于“红色之旅”项目驱动的《调酒与咖啡》工作室制人才培养机制探讨
基于项目驱动式教学法的《电子工艺实习》课内创新实践
试论基于项目驱动的机械制图教学改革
基于项目驱动的机械专业毕业设计教学模式改革研究
基于项目驱动的《大学计算机基础》课程的计算思维培养