ImageVerifierCode 换一换
格式:DOCX , 页数:79 ,大小:301.37KB ,
资源ID:24339798      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24339798.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统实验课指导书.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统实验课指导书.docx

1、嵌入式系统实验课指导书嵌入式系统课程实验指导书刘 晓 秋 编湖南涉外经济学院计算机科学与技术学部说明本实验指导书以教学大纲和教材为中心,在结合实际工程需要的同时,重点以提高学生实际动手能力为目的而编写。本指导书适合非电子专业本科实验(专科可修改实验内容)。所有实验均在S3C2410实验箱和Vision IDE FOR ARM 集成开发环境下仿真、调试、运行。实验中运用的原理与基本概念,由课堂教学完成。每个实验完成后,每个学生在任课老师的布置下,交纳独立完成的、完整的实验报告,实验报告是考核学生平时成绩的重要依据。所有实验由学校实验中心提供计算机机房,学生在实验中要遵守实验中心的各项规章制度,爱

2、护所有实验仪器与设备,保证实验环境,在实验中出现的问题要向机房管理员即时提出,不得自行处理。由个人的原因造成的损失,将由责任人承担应有的责任。前言本实验指导书可供计算机科学与技术专业本科教学实验,计算机应用专科学生可视教学情况对实验内容作部分删简。在实验中强调提高学生的动手能力和理解能力,教师在每次实验前要对每次实验作全面讲述,提出掌握部分、理解部分和了解部分。本实验指导书从实践中出发,规定其中:存储器实验、LED控制实验、按键中断实验、矩阵扫描键盘实验、数码管显示实验、触摸屏控制实验、IIC读写EEPROM实验、矩阵LED实验8个实验是必做实验。这8个实验在实践中使用频率非常高,是学生走入社

3、会后,从事专业工作的基础,同时也是今后学生提高自己自学能力的基础。在实验平台中还有11个实验,这些是专供学生根据自己的能力选做的实验,指导教师在教学中要安排一定实验时间让学生单独完成一定的选做实验,并由学生独立完成选做实验的实验报告,在这种实验报告中指导老师不要设置任何前提条件,要充分让学生展开思路,充分体现学生的聪明才智。ARM920T是S3C2410X微处理器的内核,他们构成了一个完整的系统,在一个学期的学习中要完全掌握这个系统是不可能的。因此,在教学中重点是:系统的重要部分和基本概念。希望学生在这门课程的学习过程中,学会上网查询、获取重要的学习资料,这种方式是学生今后提高工作能力有力的手

4、段。 刘晓秋嵌入式系统实验课指导书SAMSUNG S3C2410基本实验11 基本实验具有的共同特点由实验程序由汇编语言编制,用同样的操作方法和步骤装载实验程序、进行仿真调试,不须Create Edukit-IV平台、ULINK2仿真器套件、计算机,直接运行Vision IDE FOR ARM软件即可。12 基本实验在教学中的优点与教学中的汇编语言相互配套,学生在实验中能真正做到可读、可操作、可修正程序、可直接体会,这是理论与实践相接合的好方法。13 基本实验软件的具体装载步骤将实验平台附带光盘中的文件夹(DISK3_S3C241003-Codes01-MDKMini2410-IV),按指导老

5、师的要求拷贝到相应位置。运行Vision IDE FOR ARM软件,点击菜单栏“Project(工程)”,选择“Open Project(打开工程)”,在弹出的对话框中选择实验程序项目,具体软件分布情况如下。图11 基本实验在文件夹中的存储情况工程提供了一种运行方式。在编辑窗口中显示一个*.s的汇编语言编制的源程。编译链接工程。在菜单栏“Project”选择“Build target(构建目标)”或者选择“Rebuild all target(重构所有目标)”编译整个工程,或单击相应工具按钮完成工程的编译。观察编译结果,没有错误才能表示编译成功。给实验平台上电。单击菜单栏“Debug(调试)

6、”,选择“Start /Stop Debug Session(开始/停止调试)” 项,单击菜单栏“Debug”,选择“Run(运行)”项,即可全速运行程序,或单击相应工具按钮全速运行工程。另外也可选择“Step Over(单步)”运行程序,在这一步中即可运行程序又可对程序进行调试。14 习题对Vision IDE FOR ARM 集成开发环境窗口进行总结(如何启动、窗口的作用等)。请分配这段代码的执行过程与功能;调试过程对你有什么帮助? ldr sp, =stack_top mov r0, #x ;put x value into R0 str r0, sp ;save the value o

7、f R0 into;stacks mov r0, #y ;put y value into R0 ldr r1, sp ;read the data from stack,and;put it into R1 add r0, r0, r1 ;R0=R0+R1 str r0, spstop b stop ;end the code ,cycling end 这段代码说明了什么? x EQU 45 ; x=45y EQU 64 ; y=64/stack_top EQU 0x30200000 ; define the top address for stacks ARM920T处理器工的基本工作模式

8、21 概述 S3C2410A采用了先进的ARM920T内核,ARM的来由是Advanced RISC Machines,S3C2410A由三星公司研制。 22 处理工作状态 从程序员的角度上看,ARM920T可以工作在下面两种工作状态下的一种: ARM状态:执行32位字对齐的ARM指令; THUMB状态:执行16位半字对齐的THUMB指令。在这种状态下,PC寄存器的第1位(D0位)来选择一个字中的哪个半字。 注意:这两种状态的转换不影响处理模式和寄存器的内容,32位为一个字,与汇编语言中有区别。 23 切换状态 231 进入Thumb状态,可以通过执行BX指令,同时将操作数寄存器的状态位(0位

9、)置1来实现。当从异常(IRQ,FIQ,UNDEF,ABORT,SWI等)返回时,只要进入异常处理前处理器处于Thumb状态,则处理器就会自动进入Thumb状态。 232 进入ARM状态 ,可以通过执行BX指令,同时将操作数寄存器的状态位(0位)清零来实现。当处理进入异常(IRQ,FIQ,RESET,UNDEF,ABORT,SWI等)时。这时,PC值保持在异常模式下的link寄存器中,并从异常向量地址处开始执行异常处理程序。 233 存储空间的格式 ARM920T将存储器(不是寄存器)空间视为从地址为0开始,单元由字节组成的线性存储集合,字节地址0到字节地址3中(共有4个字节,占32位),保存

10、第一个字,字节地址4到字节地址7中(共有4个字节,占32位)保存第二个字,依此类推。ARM920T对存储的字,可以按照小端 (Little endian)或大端(Big endian)的方式对待。 大端格式,在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如21所示: 11第三个字数据的次低位大地址变大的方向小10第三个字数据的低位9特点:4个字节存储一个数据字,高位保存在低地址中,低位保存在高地址中。第三个字数据的次高位8第三个字数据的高位7第二个字数据的次低位6第二个字数据的低位5第二个字数据的次高位4第二个字数据的高位3第一个字数据的次低位2第一个字数据的低

11、位1第一个字数据的次高位0第一个字数据的高位图21 以大端格式存储字数据 小端格式,与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图22所示: 0第一个字数据的次低位大地址变大的方向小1第一个字数据的低位2特点:4个字节存储一个数据字,位位保存在低地址中,高位保存在高地址中。第一个字数据的次高位3第一个字数据的高位4第二个字数据的次低位5第二个字数据的低位6第二个字数据的次高位7第二个字数据的高位8第三个字数据的次低位9第三个字数据的低位10第三个字数据的次高位11第三个字数据的高位图22 以小端格式存储字数据 24 指令长度 指令可以是

12、32位长度(在ARM状态下)或16位长度(在THUMB状态下)。ARM920T的数据类型支持字节(8位),半字(16位)和字(32位)数据类型。注意:字必须按照4字节对齐,半字必须是2字节对齐。25 操作模式 251 ARM920T支持7种操作模式: 用户模式(user模式),运行应用的普通模式; 快速中断模式(fig模式),用于支持数据传输或通道处理; 中断模式(irq模式),用于普通中断处理; 超级用户模式(svc模式),操作系统的保护模式; 异常中断模式(abt模式),输入数据后登入或预取异常中断指令; 系统模式(sys模式),是操作系统使用的一个有特权的用户模式; 未定义模式(und模

13、式),执行了未定义指令时进入该模式。252 外部中断、异常操作、软件控制都可以改变为中断模式。大多数应用程序都是在用户模式下运行。不在用户模式下的均统称为特权模式(有6个模式),其目的是为了处理中断、异常请求、操作保护资源服务等。26 寄存器 ARM共有37个32位的寄存器(每个4个字节,共占用148个字节长,即94H个单元),其中31个是通用寄存器,6个是状态寄存器。但在同一时间,并不是所有的寄存器都可见。在某一时刻存储器是否可见(由是否被访问来决定),处理器当前的工作状态和工作模式是决定的条件。 261 ARM状态下的寄存器 在ARM状态下,任何时刻都可以看到16个通用寄存器,1或2个状态

14、寄存器。在特权模式(非用户模式时的其他模式)下会切换到具体模式下的寄存器组,其中包括模式专用的私有(banked)寄存器。见图23 RAN状态下寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。 ARM状态寄存器系列中含有16个直接操作寄存器(R0到R15)。除了R15外其他的都是通用寄存器,可用来存放地址或数据值。除此之外,实际上有17个寄存器用来存放状态信息。 寄存器14:专职持有返回点的地址,在系统执行一条“跳转并链接(link)”(BL)指令的时候,R14将收到一个R15的拷贝。其他的时候,它可以用作一个通用寄存器。相应的它在其他模式下的私有寄存器

15、R14_svc,R14_irq,R14_fiq,R14_abt和R14_und都同样用来保存在中断或异常发生时,或时在中断和异常中执行了BL指令时,R15的返回值。 寄存器15是程序计数器(PC)。在ARM状态下,R15的bits1:0为0,bits31:2保存了PC的值。在Thumb状态下,bits0为0同时bits31:1保存了PC值。 寄存器16是CPSR(当前程序状态寄存器),用来保存当前代码标志和当前处理器模式位。 FIQ模式拥有7个私有寄存器R8-14(R8_fiq-R14_fiq)。在ARM状态下,多数FIQ处理都不需要保存任何寄存器。用户、中断、异常中止,超级用户和未定义模式都

16、拥有2个私有寄存器,R13和R14。允许这些模式都可拥有1个私有堆栈指针和链接(link)寄存器。 系统和用户FIQ超级用户异常中止IRQ未定义R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8_fiqR8R8R8R8R9R9_fiqR9R9R9R9R10R10_fiqR10R10R10R10R11R11_fiqR11R11R11R11R12R12_fiqR12R12R12R12R13R13_fiqR13_svcR13_abtR13_irqR13

17、_undR14R14_fiqR14_svcR14_abtR14_irqR14_undR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)RAM状态下的状态寄存器CPSRCPSRCPSRCPSRCPSRCPSR空SPSR_fiqSPSR_svcSPSR_abtSPSR_irqSPSR_und图23 RAM状态下寄存器集262 THUMB状态下的寄存器 THUMB状态寄存器是ARM状态寄存器的一个子集。程序员可以直接操作8个通用寄存器R0-R7,同样也可以操作程序计数器(PC),堆栈指针寄存器(SP),链接(link)寄存器(LR),和CPSR。它们都是各个特权模式

18、下的私有寄存器。见图24 THUMB状态下的寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。ARM920T包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs),备份的程序状态寄存器用来进行异常处理,这些寄存器的功能包括有保存ALU当前操作的有关信息 ;控制中断的允许和禁止;设置处理器的运行模式。系统和用户FIQ超级用户异常中止IRQ未定义R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7S

19、PSP_fiqSP_svcSP_abtSP_undSP_fiqLRLR_fiqLR_svcLR_abtLR_undLR_fiqCPCPCPCPCPCPTHUMB状态下的状态寄存器CPSRCPSRCPSRCPSRCPSRCPSR空SPSR_fiqSPSR_svcSPSR_abtSPSR_irqSPSR_und图24 THUMB状态下的寄存器集263 ARM和THUMB状态寄存器间的关系THUMB态下R0-R7和ARM状态下R0-R7是等同的 THUMB状态的CPSR和SPSRs 跟ARM 状态的CPSR 和SPSRs是等同的 THUMB 状态下的SP映射在ARM状态下的R13上 THUMB 状态

20、下的LR映射在ARM状态下的R14上 THUMB 状态下的程序计数器映射在ARM状态下的程序计数器上(R15) 图2-5显示了它们之间的关系,CPSR为当前程序状态寄存器,SPSR为程序状态寄存器。THUMB 状态对应关系RAM状态R0R0R2R2R3R3R4R4R5R5R6R6R7R7R8R9R10R11R12Stack Pointer(SP)Stack Pointer(R13)Link register(LR)Link register(R14)Program Counter(PC)Program Counter(R15)CPSRCPSRSPSRSPSR图2-5THUMB状态下和ARM状态

21、下寄存器之间的映射关系 264 在THUMB状态下访问高地址寄存器在THUMB状态下寄存器R8-R15(高地址寄存器)不是标准寄存器集。但是,汇编语言的程序员可以访问它们并用它们作快速暂存。 向R8-R15写入或读出数据,可以采用MOV指令的某个变型,从R0-R7(低地址寄存器)的某个寄存器传送数据到高地址寄存器,或者从高地址寄存器传送到低地址寄存器。还可以采用CMP和ADD指令,将高地址寄存器的值与低地址寄存器的值进行比较或相加。27 程序寄存器状态 ARM920T具有一个当前程序状态寄存器(CPSR),另外还有5个保存程序状态寄存器(SPSRs)用于异常中断处理。这些寄存器的功能有: 保留

22、最近完成的ALU(运算器)操作的信息;控制中断的使能和禁止;设置处理器的操作模式。31 30 29 28 27 26 25 24 23 8 7 6 5 4 3 2 1 0NZCVIFTM4M3M2M1M0图2-6 显示了程序状态寄存器的位定义其中处理器的的信息与意义如下M:模式位; T:状态位;F:FIQ中止;I:IRQ中止;V:溢出;C:进位/借位/扩展;Z:零;N:负/小于。N、Z、C、V称为条件码标志;D27D8为保留位;IM0称为控制位标志。271 条件码标志 N、Z、C、V均为条件码标志位。它们的内容根据算术或逻辑运算的结果所改变,并且可用来作为一些指令是否运行的检测条件。在ARM状

23、态下,绝大多数的指令都是有条件执行的;在Thumb状态下,仅有分支指令是有条件执行的。272 控制位 PRS的低8位(包括I、F、T和M4:0)称为控制位,当发生异常时这些位会被改变,如果处理器在特权模式下(非用户模式)运行,这些位也可以由程序修改。 T标记位:该位反映处理器的运行状态。该位被设置为1时,处理器执行在THUMB状态,否则执行在ARM状态。以上情况可由外部信号TBIT反映出来。 注意:软件绝不能改变CPSR的TBIT状态。如果这样做,处理器将会进入一种不可预知的状态。 中断禁止位:I、F位为中断禁止位,当它们被置1时可以相应地禁止IRQ和FIQ中断。 运行模式位:M4,M3,M2

24、,M1和M0位(即M4:0)是模式位,它们决定了处理器的操作模式。并不是所有的组合都决定一个有效的处理器模式,只有那些明确定义的值才能被采用。用户必须意识到任何一种非法的值写入模式位,处理器都会进入到一种不可重获的状态,如果发生这种情况,就要进行复位。 273 保留位 CPSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,必须确保保留位不被改变,在程序中也不要使用保留位来存储数据值。M4:0模式可视的THUNM状态寄存器可视的ARM状态寄存器10000用户模式R7R0, LR, SP PC, CPSRR14R0, PC, CPSR10001FIQ 模式R7R0, LR_fiq,

25、 SP_fiq PC, CPSR, SPSR_fiqR7R0, R14_fiqR8_fiq, PC, CPSR, SPSR_fiq10010IRQ 模式R7R0, LR_irq, SP_irq PC, CPSR, SPSR_irqR12R0, R14_irq, R13_irq, PC, CPSR, SPSR_irq10011超级用户模式R7R0, LR_svc, SP_svc, PC, CPSR, SPSR_svcR12R0, R14_svc, R13_svc, PC, CPSR, SPSR_svc10111中止R7R0, LR_abt, SP_abt, PC, CPSR, SPSR_abtR

26、12R0, R14_abt, R13_abt, PC, CPSR, SPSR_abt11011未定义模式R7R0 LR_und, SP_und, PC, CPSR, SPSR_undR12R0, R14_und, R13_und, PC, CPSR11111系统模式R7R0, LR, SP PC, CPSRR14R0, PC, CPSR图2-7 CPSR模式位的值28 异常 当正常的程序执行流程被临时中断时,称为产生了异常。例如程序执行转向一个外设的中断请求。在处理异常前,当前处理器的状态必须被保留(保护现场),处理异常程序完成后,处理器能恢复原来的状态并执行原来程序(恢复现场)。有可能同时产

27、生好几个异常,如果出现这种情况,就应该按优先级的顺序进行处理。281 进入异常时的行为 当一个异常发生时,ARM920T将进行以下四步将下一条指令的地址保存到相应的Link寄存器中。如果异常是从ARM状态进入的,下一条指令的地址(根据异常的类型,数值为当前PC+4或PC+8)拷贝到Link寄存器。如果异常是从THUMB状态进入,那么写入到link寄存器的值是当前的PC偏移一个值。这表示异常处理程序不需要关心是从哪种状态进入异常的。例如,在SWI情况下,无论是来自什么状态,处理程序只要采用MOVS PC, R14_svc语句,总可以返回到原始程序的下一条语句。拷贝CPSR到相应的SPSR; 根据

28、异常类型强制改变CPRS模式位的值; 令PC的值指向异常处理向量所指的下一条指令。这时也可能设置中断禁能标志,以防止不可估计的异常嵌套发生。当处理器处于Thumb状态时发生了异常,当PC载入异常矢量所在地址时,它将自动地切换到ARM状态。 282 离开异常处理时或当完成异常处理时,处理程序应该有以下步骤将Link寄存器,减去相应的偏移量,赋给PC(偏移量的值由异常的类型决定); 拷贝回SPSR到CPSR; 如果在进入中断时设置了中断禁止标志,清除它。注意:你不需要特别指明切换回THUMB状态。因为原来的CPSR被自动地保存到了SPSR。 283 异常进入/退出的总结 保留到相应的R14中的PC的值,或按推荐使用方法,退出异常处理。 注意:这里PC所赋的是BL/SWI/未定义模式等指令所取的地址,它们在预取的阶段就被中断了;这里PC所赋的是由于FIQ或IRQ取得了优先权,而没有来得及得到执行的指令地址;这里PC所赋的地址是Load或Store指令的地址,它们在执行时产生了数据的异常中断;在R14_svc复位之前保存的数值是不可预知的。返回指令进入异常时R14的值NotesARM R14_xTHUMB R14_xBLSWIUDEFFIQIRQPABTDAB

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1