吴雪琴 黄琨
摘要:嵌入式系统应用与开发是计算机应用嵌入式方向专业学生的专业核心课程,作者从市场和行业需求出发,探讨了该课程的重要性,同时也对本人的教学实践进行了总结,包括教学过程中的思考,遇到的问题及采用的对策,在充分挖掘学生已有基础的前提下加强学生的专业技能培养。
关键词:嵌入式系统应用与开发课程;知识处理;难点突破;专业技能
中图分类号:TP313 文献标识码:A 文章编号:1009-3044(2014)07-1452-02
1 概述
21世纪,科技发展日新月异。在全球新一轮汽车、通信、消费类电子、工业、医疗、军事等行业的巨大智能化装备市场需求下,全球嵌入式产业得到了快速发展;无论是生活中常用的mp3、手机、语言复读机、PDA、机顶盒、智能电视、智能冰箱,还是工业生产、娱乐中的机器人,以及国防系统无不采用嵌入式技术。因此嵌入式技术已经成为后PC时代IT技术的主力军。
正是巨大的市场需求,使得嵌入式行业对人才的需求极度旺盛,因此各高校纷纷开设了《嵌入式系统应用与开发》课程,该文以该课程为背景,探讨了学生如何才能学好该课程,使得在毕业时能找到理想从事该行业的工作。因为实际情况是每年各公司及国内家电公司如INTEL、TI、SONY、三星、TCL、联想和康佳等企业纷纷出高薪聘请嵌入式人才,但依然处于企业找不到合适人才,学生毕业找不到合适工作的尴尬局面,这也一直是作为教师的我所思考的问题。
当然形成这种局面的原因很多,如嵌入式技术对人才的专业水平、实际操作能力及技术产品化的要求较高。未经过有针对性的实践操作,未参与或独立完成一件嵌入式成品就不能说掌握了嵌入式技术,而成品是否能被社会认可更是企业选择人才的关键。所以企业需要一个平台来选择真正实用的人才;学生需要一个平台来实践和展示自我;学校需要一个平台来验证教学体系是否完善,通过平台取彼之长。在实际教学中我们采用的是ARM9的实验平台,该平台能让学生动手自己开发由易到难的程序。
2 明确嵌入式系统应用与开发的重要性
作为嵌入式教学的开始,教师有必要向学生介绍该课程的特点及作用范围,培养学生学习你该课程及该方向的兴趣。同时需要了解学生在学习嵌入式初期所遇到的常见问题,使他们不至于一开始就对该课程的学习产生畏难情绪。因此,需要在如下几个方面做好对学生的引导工作。
1)学了它在实际中有没有用?
现在在校学生最关注所学课程有没有用?尤其是高职高专学生更注重实际能力的培养?那怎样在实际应用中进行使用呢?由于该课程是计算机相关专业学生的核心课程,所以一定要很肯定地告诉学生学了这门课程非常有用。可以从我们身边的实际例子出发进行举例,如现代生活中玩具、家用电器,嵌入式的应用无处不在,大到工业控制、航空领域等都离不开嵌入式。
2)我是否能够学好该课程?
由于该课程是专业核心课程,它需要前期所学的大量专业基础课作为铺垫。同时该课程系统性较强,需要“两条腿”走路。一条是对硬件有一定的了解,至少能看懂原理图及相关符号。另一条是要有编程基础,这里的编程主要采用的是C语言程序设计。要能灵活使用模块化设计方法进行程序设计,也要能使用指针方便地访问各硬件模块。当然不仅要有这些理论知识作为基础,这门课程也需要实际动手,只有多动手了,才会有更浓的兴趣进行深入学习。因此要学好该课程,需要自己多动手在开发板上进行编程控制。例如,可以从简单的LED灯开始,一开始让LED灯全熄灭,间隔一段时间后,又修改程序使其全部点亮,最后跑马灯程序等,由易到难,逐步增加模块实现功能,这样学好是没有问题的。
3)考试要怎么考?
如何考試是在校大学生最关注的问题之一,因此在每学期刚开始上课时,就应该明确告知学生该门课程要如何考以及最终成绩的构成方式,让学生做到心中有数,有的放矢。同时还应告知学生考试不是目的,只是检验知识的一种手段,特别是综合性较强的学科,考试考好了,不一定能力就好。大学的学习不像中学,应多鼓励学生看不同作者所写教材,有的知识点在一本教材里没看懂,但在其它教材里可能讲述得非常清楚,因为每个方向不同的专业老师所编同一门教材的侧重点不同。若是对程序不懂之处,那就更应该多动手编程,然后下载到开发板上进行调试观察,这样知识与能力才能不断地得到提高。
4)今后在实际工作中能否用到?
对专科学校的学生,一般要到大二第二学期才开设该课程,很多高校在开设该课程时都有专门的实验室,这些实验室里有的平台就是ARM+Linux。学生在平台上既要移植操作系统内核,又要在系统上编程实现操作。可以将有的公司的实际系统先演示给学生看,让他们了解所要学的知识与公司所做项目的联系,通过这样的引导,让他们知道所学课程在今后的工作中的重要性。当然在平台上真正做了东西的学生,对今后工作是很有帮助的
3 注重与其它课程的相关性
该课程系统性较强,需要前期的很多专业课铺垫,若没有前期的这些专业课,要学好该课程是不容易的。该课程所需要的前期课程如下:
《数字电子技术》课程使学生对硬件逻辑有直观的了解。《电工学》让学生能更好地理解电路。《微机原理》课程中的指令及指令地址等知识为后续课程打下基础。《Protel2004制图》让学生能根据要求自制原理图及PCB板。《C语言程序设计》课程使得学生学习后能灵活地进行编程控制。《Linux操作系统》课程使得学生学完基本命令后,能够较好地移植内核到所需要的平台上。因此嵌入式系统应用与开发不是孤立地一门课程,是综合性非常强地一门课程。
4 教学的知识处理
我们所选教材是北京航空航天大学出版社的“十二五高等院校规划教材”本科教材,该教材对ARM体系结构、ARM系统硬件设计做了重点讲解,同时还编写了大量的有关S3C2410的硬件模块工作原理及编程实现。但对于高职高专层次的学生来说,不需要太多的理论基础,重在应用。所以,必须对教材内容有选择地加以处理。且本课程的主要目标是让学生掌握以ARM处理器为核心的嵌入式系统的开发流程与编程方法,为以后从事嵌入式相关工作打下良好的编程基础。当教学目标确定后,才能根据以上目标制定教学重点。因此本课程的教学重点为:掌握ARM处理器的基本指令及编程方法,能够亲自动手编写小程序控制实验箱上的各小模块。对于ARM的体系结构,ARM处理器所支持的数据类型、工作模式、寄存器组织及其寻址方式与ARM的32位指令集就成了必须掌握的知识点。而对于其中使用频率低、难度较大的MMU(存储器管理单元)、Cache、TAG RAM(物理地址)、总线接口单元、C语言与汇编语言的混合编程应遵循的规则等部分内容,只需弱化处理,即只让学生了解这些内容就行。还有混编规则也只需要在使用时能够通过查找资料来注意寄存器、堆栈与参数的使用规则,在使用过程中再去理解这些规则的含义,通过这种方式来加深理解。
此外,为了更好地与实际接轨,我不再使用ADS作为ARM的开发环境,而改用Real View MDK作为开发工具,因为该工具除了能实现ADS所能实现的功能外,还能自动生成完善的启动代码并提供图形化的窗口,从而提高开发效率及能大大缩短开发周期的软件模拟器。
5 教学的难点突破
嵌入式系统应用与开发是一门难度较大的课程,不仅因为其综合性较强,还需要学生有一定的电路知识及硬件知识作为背景,如果没有电路知识基础,那就谈不上要學好该课程。在教学过程中,其难点主要表现在如下方面:
首先,该课程是以ARM2410实验箱为硬件基础结构(作为高职高专的学生省去了使用Protel设计原理图并制版过程),所以第一要务就是要使实验箱能工作,这就牵涉到基于ARM硬件启动程序的设计工作。由于是与硬件打交道,因此首先得使用ARM的汇编语言来分配中断向量表,初始化存储系统、堆栈、有特殊要求的硬件模块和应用程序的执行环境,并改变处理器的工作模式。该内容是整个嵌入式开发的第一大难点,由于学生对指令和硬件结构不熟悉,所以对这部分的工作显得力不从心。我采用的方法是逐个解决的办法,先初始化将要使用到的模块,尽量使用简单易懂的指令实现。比如初始化应用程序的运行环境,并未像教材那样将ROM与RAM区域进行分开初始化,只需要初始化一个总的运行环境就可。
其次,上层应用就是通过编写C程序实现,这需要学生对C语言中的算法、三大程序设计方法、函数与指针内容比较熟悉。因为功能实现基本是通过一个一个的函数模块来完成,同时,对于访问硬件的具体部分时需要由指针来实现。如对于发光二极管的控制,首先要能根据硬件电路原理图,找出二极管对应连接处理器的哪个I/O口,而对I/O口的操作是通过对相关各个寄存器的读/写实现,该部分内容要由指针来实现,最后设置I/O口的功能为输出功能。在功能的实现上采用“累加法”,这就牵涉到C语言中的函数及函数调用的使用。先使用一个函数模块通过对数据寄存器的访问来实现一个功能,然后逐步添加模块来实现新增功能。这样既提高了代码的可读性、执行效率和学生编程兴趣,又提高了学生编写程序的能力。
6 结束语
嵌入式系统应用与开发是计算机应用嵌入式专业方向学生的专业核心课程,作为一门综合性的课程,我们在总结自己的一些教学经验的基础上,试图将与此相关的课程融入到整个专业体系中。让学生从兴趣出发,从实际动手编程调试出发,从而更好地为自己的专业能力打下良好的基础,以便能更好地服务社会。
参考文献:
[1] 陈玉仙.关于C语言教学几个问题的探讨[J].电脑知识与技术,2013(13):3111-3113.
[2] 徐英慧.ARM9嵌入式系统设计[M].北京航空航天大学出版社,2010.
[3] 周立功.S3C2410嵌入式Linux系统教程[M].广州致远电子有限公司,2010.