嵌入式系统汇编指令教学探讨_第1页
嵌入式系统汇编指令教学探讨_第2页
嵌入式系统汇编指令教学探讨_第3页
嵌入式系统汇编指令教学探讨_第4页
嵌入式系统汇编指令教学探讨_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统汇编指令教学探讨纪娟娟,张兰芳,刘全金(安庆师范学院物理与电气工程学院,安徽安庆246133)摘要:具有强大功能的嵌入式系统,目前已作为电信、微电子等专业的专业课程,也是相关专业学生就业的一个良好方向。如何让学生快速掌握嵌入式系统汇编指令,能够进行简单的程序设计,为学生的就业打下良好基础,是本门课程亟待解决的问题。本文利用ADS开发环境对嵌入式汇编指令的学习进行了探讨,为嵌入式系统教学提供参考。关键词:嵌入式系统;ADS; 汇编指令Teaching discussion on embedded systems assembly instructionsJi Juan-juan,Zha

2、ng Lan-fang,Liu Quan-jin( School of Physics an d Electrical Engineering, Anqing Teachers of College, Anqing 246133, China)Abstract: Embedded systems with powerful features is professional courses of telecommunications, microelectronics and other professional now, is also a good employment orientatio

3、n of relevant professional student. How to enable students to quickly grasp the assembly instructions of embedded systems, carrying on simple program designed,laying a good foundation for employment of students is a problems of this course to be solved . Embedded assembler instruction learning is di

4、scussed using ADS development environment in the paper,as "embedded systems" teaching reference.Key words: Embedded systems;ADS; Assembly instructions0 引言具有系统内核小、专用性强、系统精简、实时性高等特性的嵌入式系统,目前已在许多领域中掀起了嵌入式系统应用的热潮1-3。为了适应社会人才的需要以及解决本专业学生的就业工作问题,给本院电子信息科学与技术专业的学生课设了嵌入式课程。嵌入式作为以应用为中心,以计算机技术为基础,软硬

5、件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统,对硬件和软件的要求都相当高。一方面,学生可以通过开发板、实验箱等了解开发系统的处理器及相关设备,学生普遍反映汇编语言下的底层文件、初始化文件、控制命令都看不懂。因此,掌握汇编指令是嵌入式系统学习的难点,为了解决该问题,本文借助嵌入式开发集成环境ADS对如何快速掌握嵌入式汇编指令进行了探讨和尝试。基金项目:安徽省重点教学研究项目(2012jyxm350,基于CDIO工程教育思想的电子信息专业教学改革探索)和安庆师范学院青年科研基金(KJ201316) 资助。作者简介:纪娟娟,女,安徽亳州人,硕士,讲师。研究方向:通

6、信信号处理。1 嵌入式系统开发过程1.1 ADS简介ADS及ARM Developer Suite的缩写,是Metrowerks公司在1993年开发ARM处理器下最主要的开发工具。ADS 是全套的实时开发软件工具,编译器生成的代码密度和执行速度都较优异。ADS对汇编、C/C+、java均有很好的支持,是目前最成熟的ARM开发工具。ADS有ARM扩展调试器(AXD,ARM Extended Debugger)、ARM 符号调试器(ARMSD,ARM Symbolic Debugger)、与老版本兼容的Windows或Unix下的ARM调试工具(ADW/ADU,Application Debugg

7、er Windows/Unix)等三种调试器。 AXD 不仅拥有低版本ARM调试器的所有功能,还新添了图形用户界面,更方便的视窗管理数据显示,格式化和编辑以及全套的命令行界面。该产品还包括Real Monitor(可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具)。1.2 ADS工程开发过程ADS工程开发和前期课程学习的单片机开发环境KEIL有很多地方是类似的,但是它的置又复杂了一些的。ADS工程开发过程主要分为以下三个过程:1、建立工程(1)在建立工程时有7个选项,如图1所示。ARM处理器有32位ARM和16位Thumb两种工作状态,一般工作在32位状态下,因此一般选

8、择第一项,ARM Executable Image是ARM的通用模板,选中它即可生成ARM的执行文件。 图1 建立ARM指令代码的工程 图2 工程链接地址设定(2)对于Debug Setting的 ARM linker是工程设置的重点, 在output栏中设定程序的代码段地址,以及数据使用的地址。图2中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。在Layout栏中,如图3,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是44binit.s,那么应在Object/Sym

9、bol处填写其目标文件名44binit.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。 图3 工程调试入口地址设置 图4 目标选择2、编译和链接工程将编辑好的程序代码进行保存添加到工程中去,点击make即可实现整个工程的编译链接,若编译成功,会出现编译错误为0的报告,接下来就可对工程进行仿真调试。3、仿真调试点击debug,IDE环境就会启动AXD调试软件。如果没启动就要对其目标进行设定,如图4所示,在软件仿真时选择ARMULATOR。2 如何快速掌握汇编指令汇编语言是学生学习多门课程的难点,而对于一些I/O、底层文件等又必须要用汇编

10、,实际中几乎每个工程都要用汇编的,因此汇编语言的掌握是嵌入式开发的关键。虽然学生在前期微机原理、单片机、DSP等课程中已学习了汇编语言,大家知道,每一种处理器它所用的汇编语言的不同的,也就是说,对于嵌入式系统课程又要重新学习汇编语言,嵌入式有100条指令,实际应用中又与条件码一起用,因此嵌入式汇编语言相比前几门课程难度更大。2.1 利用前期基础来学习指令前期基础主要包括2个,一个是要把学生的英语调动起来,二是利用前期专业课程的指令。利用英语单词熟记条件码由于条件码较多,学生经常混淆,当与指令一起时更不知什么意思了。因此,在教学中经常引导学生用英语单词的方法来记条件码。例如EQ和NE条件码,在教

11、学中会问学生“相等,等于”的英语怎么译,即“equal”,那么EQ就是“equal”的缩写,即是“相等,等于”条件的判定,对应着程序状态寄存器CPSR中的“Z=1”的标志。同理,NE就是“not equal”,不相等,不等于条件的判定,对应着 “Z=1”的标志。利用英语词汇熟记指令指令与条件码有些近似,大部分都是某些词汇的缩写。把握住此规律,指令的掌握也就没那么难了。如ARM中用的比较多的存储器和寄存器之间传送数据的LDR和STR指令。LDR是“Load Register”的缩写,即加载寄存器,将某存储器单元中的内容装载到某寄存器中去。STR是“Store Register”的缩写,即存储寄存

12、器,将某寄存器中的内容存储到某存储器单元中去。通过实际教学发现,把握此规律的学生指令明显掌握的较为牢靠。3、把前期课程学习的汇编指令搬出来虽然嵌入式系统和前期课程学习的汇编指令不太相同,但有一部分指令是相通的。如“MOV”传送指令,算术运算中的加、减“ADD、SUB”,逻辑运算中的与“AND”等功能基本相同,而且指令的书写是完全相同的,但是参加运算的数据、寄存器等是不一样的,它们基本对应着32位字的状态下的。2.2 从简单入手,激发学生兴趣虽然跟学生说了多种熟记指令的方法,但是当多条指令放在一起,即使是一段很简单的程序代码,学生依然很难理解读出程序的功能。这时,就要充分利用实验来加强锻炼学生的

13、程序读写能力。首先要让学生多抄、多读程序,然后在要求学生从简单的程序设计开始。即从抄程序中学汇编,从简单中写汇编。那么能否一开始就能读懂一些简单的程序代码,直接关系到学生对本门课程的兴趣,因此,如何引导学生快速入门很关键,而ADS的多种调试功能可以为快速入门提供便捷之道。例1:请读出下面程序代码的功能 AREA Example,CODE,READONLY ENTRY CODE32 START MOV R0,#15 MOV R0,#8 ADDS R0,R0,R1 B START END 本程序只有8行代码,让学生第一感觉就很简单。但是本程序却包含了很多信息。首先给学生逐行分析每条指令,分给出一些

14、提示。(1)汇编程序的基本格式,以AREA声明某代码段的开始,以END结束;(2)第行ENTRY是程序入口标识,是所有汇编指令必须有的伪指令;(3)第行CODE声明32为指令,因此建立工程时选择第一项,如图1所示;(4)第行START是程序段的标号,书写时必须顶格,否则是编译不过去的,第四行和第五行的MOV指令在前期课程中已学过的;(5)第六行中ADDS,ADD指令学生也已学过,加了S是带有条件码更新的意思,而此时和ADD功能是一样的;(6)第行B是跳转指令,即跳转到标号START处继续运行。然后让学生建立工程和文件,并把该程序代码输入进去,进行编译调试,先让学生自己解决编译调试的问题。学生主

15、要会出现以下问题:(1)编译时出现错误很紧张,不知怎么办,上来就叫老师;(2)学生运行时结果一直不出来或者结果不一样;(3)具体功能不会表达。可用以下方法来解决:(1)对编译错误的同学进行引导,当出现错误时,光标会出现在源代码的对应行,到该行中去查看代码找出错误。(2)提问结果为什么不一样,程序的运行过程是什么,关键是断点的设置,即要在本程序的第7行设置断点。本程序的运行是一个死循环。(3)让学生们以单步运行的方式,运行程序,同时打开寄存器组,查看对应寄存器的值。当以单步运行时,学生可看到,R0=0x0000000F,R1=0x00000008,之后R0变为0x00000017,如图5所示。

16、图5 运行结果可以给学生一些提示,15+8=?,这个答案对不对呢?0x是什么意思呢,是不是16进制数的表示,将0x00000017转换为10进制是不是23,而15+8=23。因此结果是对的,此程序的功能就是计算15+8=?如果采用断点的方法,来全速运行该程序能否得到正确结果?这个断点应该设在哪里?让学生自己思考尝试。最后对于没掌握调试方法,依然不明白程序的同学逐个给予解答。3 结论汇编语言本身零碎的东西特别多,对于学生提出的问题必须耐心及时的引导,采用最简单的方法让学生快速掌握汇编指令以进行简单程序的设计是嵌入式系统教学的基本要求。在本课程实践教学中,通过多种方式的引导,虽然学生在本课程中花的时间较少,对于简单程序设计都感觉不难,对本门课程的兴趣也很高。有一部分同学自己买了开发板,自己在寝室进行深入学习,课堂上与大家一起

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论