版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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(打开工程)”,在弹出的对话框中选择实验程序项目,具体软件分布情况如下。基本实验软件4.1_asm14.2_asm2asm1_basm2_1asm1_aasm2_2asm_1a.uv2asm_1b.uv2asm2.uv2asmtest2_2.uv2图11 基本实验在文件夹中的存储情况工程提供了一种运行方式。在编辑窗口中显示一个*.s的汇编语言编制的源程。编译链接工程。在菜单栏“project”选择“build target(构建目标)”或者选择“rebuild all targe
6、t(重构所有目标)”编译整个工程,或单击相应工具按钮完成工程的编译。观察编译结果,没有错误才能表示编译成功。给实验平台上电。单击菜单栏“debug(调试)”,选择“start /stop debug session(开始/停止调试)” 项,单击菜单栏“debug”,选择“run(运行)”项,即可全速运行程序,或单击相应工具按钮全速运行工程。另外也可选择“step over(单步)”运行程序,在这一步中即可运行程序又可对程序进行调试。14 习题对vision ide for arm 集成开发环境窗口进行总结(如何启动、窗口的作用等)。请分配这段代码的执行过程与功能;调试过程对你有什么帮助? ld
7、rsp, =stack_topmovr0, #x ;put x value into r0strr0, sp ;save the value of r0 into;stacksmovr0, #y ;put y value into r0ldrr1, sp ;read the data from stack,and;put it into r1addr0, r0, r1 ;r0=r0+r1strr0, spstop bstop ;end the code ,cyclingend这段代码说明了什么? xequ45; x=45yequ64 ; y=64/stack_topequ0x30200000;
8、 define the top address for stacks arm920t处理器工的基本工作模式21 概述 s3c2410a采用了先进的arm920t内核,arm的来由是advanced risc machines,s3c2410a由三星公司研制。 22 处理工作状态 从程序员的角度上看,arm920t可以工作在下面两种工作状态下的一种: arm状态:执行32位字对齐的arm指令; thumb状态:执行16位半字对齐的thumb指令。在这种状态下,pc寄存器的第1位(d0位)来选择一个字中的哪个半字。 注意:这两种状态的转换不影响处理模式和寄存器的内容,32位为一个字,与汇编语言中有
9、区别。 23 切换状态 231 进入thumb状态,可以通过执行bx指令,同时将操作数寄存器的状态位(0位)置1来实现。当从异常(irq,fiq,undef,abort,swi等)返回时,只要进入异常处理前处理器处于thumb状态,则处理器就会自动进入thumb状态。 232 进入arm状态 ,可以通过执行bx指令,同时将操作数寄存器的状态位(0位)清零来实现。当处理进入异常(irq,fiq,reset,undef,abort,swi等)时。这时,pc值保持在异常模式下的link寄存器中,并从异常向量地址处开始执行异常处理程序。 233 存储空间的格式 arm920t将存储器(不是寄存器)空间
10、视为从地址为0开始,单元由字节组成的线性存储集合,字节地址0到字节地址3中(共有4个字节,占32位),保存第一个字,字节地址4到字节地址7中(共有4个字节,占32位)保存第二个字,依此类推。arm920t对存储的字,可以按照小端 (little endian)或大端(big endian)的方式对待。 大端格式,在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如21所示: 11第三个字数据的次低位大地址变大的方向小10第三个字数据的低位9特点:4个字节存储一个数据字,高位保存在低地址中,低位保存在高地址中。第三个字数据的次高位8第三个字数据的高位7第二个字数据的次
11、低位6第二个字数据的低位5第二个字数据的次高位4第二个字数据的高位3第一个字数据的次低位2第一个字数据的低位1第一个字数据的次高位0第一个字数据的高位图21 以大端格式存储字数据 小端格式,与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图22所示: 0第一个字数据的次低位大地址变大的方向小1第一个字数据的低位2特点:4个字节存储一个数据字,位位保存在低地址中,高位保存在高地址中。第一个字数据的次高位3第一个字数据的高位4第二个字数据的次低位5第二个字数据的低位6第二个字数据的次高位7第二个字数据的高位8第三个字数据的次低位9第三个字数据的
12、低位10第三个字数据的次高位11第三个字数据的高位图22 以小端格式存储字数据 24 指令长度 指令可以是32位长度(在arm状态下)或16位长度(在thumb状态下)。arm920t的数据类型支持字节(8位),半字(16位)和字(32位)数据类型。注意:字必须按照4字节对齐,半字必须是2字节对齐。25 操作模式 251 arm920t支持7种操作模式: 用户模式(user模式),运行应用的普通模式; 快速中断模式(fig模式),用于支持数据传输或通道处理; 中断模式(irq模式),用于普通中断处理;超级用户模式(svc模式),操作系统的保护模式; 异常中断模式(abt模式),输入数据后登入或
13、预取异常中断指令; 系统模式(sys模式),是操作系统使用的一个有特权的用户模式;未定义模式(und模式),执行了未定义指令时进入该模式。252 外部中断、异常操作、软件控制都可以改变为中断模式。大多数应用程序都是在用户模式下运行。不在用户模式下的均统称为特权模式(有6个模式),其目的是为了处理中断、异常请求、操作保护资源服务等。26 寄存器 arm共有37个32位的寄存器(每个4个字节,共占用148个字节长,即94h个单元),其中31个是通用寄存器,6个是状态寄存器。但在同一时间,并不是所有的寄存器都可见。在某一时刻存储器是否可见(由是否被访问来决定),处理器当前的工作状态和工作模式是决定的
14、条件。 261 arm状态下的寄存器 在arm状态下,任何时刻都可以看到16个通用寄存器,1或2个状态寄存器。在特权模式(非用户模式时的其他模式)下会切换到具体模式下的寄存器组,其中包括模式专用的私有(banked)寄存器。见图23 ran状态下寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。 arm状态寄存器系列中含有16个直接操作寄存器(r0到r15)。除了r15外其他的都是通用寄存器,可用来存放地址或数据值。除此之外,实际上有17个寄存器用来存放状态信息。 寄存器14:专职持有返回点的地址,在系统执行一条“跳转并链接(link)”(bl)指令的时候
15、,r14将收到一个r15的拷贝。其他的时候,它可以用作一个通用寄存器。相应的它在其他模式下的私有寄存器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
16、)。在arm状态下,多数fiq处理都不需要保存任何寄存器。用户、中断、异常中止,超级用户和未定义模式都拥有2个私有寄存器,r13和r14。允许这些模式都可拥有1个私有堆栈指针和链接(link)寄存器。 系统和用户fiq超级用户异常中止irq未定义r0r0r0r0r0r0r1r1r1r1r1r1r2r2r2r2r2r2r3r3r3r3r3r3r4r4r4r4r4r4r5r5r5r5r5r5r6r6r6r6r6r6r7r7r7r7r7r7r8r8_fiqr8r8r8r8r9r9_fiqr9r9r9r9r10r10_fiqr10r10r10r10r11r11_fiqr11r11r11r11r12r1
17、2_fiqr12r12r12r12r13r13_fiqr13_svcr13_abtr13_irqr13_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,同样也可以操作程序计
18、数器(pc),堆栈指针寄存器(sp),链接(link)寄存器(lr),和cpsr。它们都是各个特权模式下的私有寄存器。见图24 thumb状态下的寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。arm920t包含一个当前程序状态寄存器(cpsr)和五个备份的程序状态寄存器(spsrs),备份的程序状态寄存器用来进行异常处理,这些寄存器的功能包括有保存alu当前操作的有关信息 ;控制中断的允许和禁止;设置处理器的运行模式。系统和用户fiq超级用户异常中止irq未定义r0r0r0r0r0r0r1r1r1r1r1r1r2r2r2r2r2r2r3r3r3r3r3
19、r3r4r4r4r4r4r4r5r5r5r5r5r5r6r6r6r6r6r6r7r7r7r7r7r7spsp_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 状态的
20、cpsr 和spsrs是等同的 thumb 状态下的sp映射在arm状态下的r13上 thumb 状态下的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)pro
21、gram counter(r15)cpsrcpsrspsrspsr图2-5thumb状态下和arm状态下寄存器之间的映射关系 264 在thumb状态下访问高地址寄存器在thumb状态下寄存器r8-r15(高地址寄存器)不是标准寄存器集。但是,汇编语言的程序员可以访问它们并用它们作快速暂存。 向r8-r15写入或读出数据,可以采用mov指令的某个变型,从r0-r7(低地址寄存器)的某个寄存器传送数据到高地址寄存器,或者从高地址寄存器传送到低地址寄存器。还可以采用cmp和add指令,将高地址寄存器的值与低地址寄存器的值进行比较或相加。27 程序寄存器状态 arm920t具有一个当前程序状态寄存器
22、(cpsr),另外还有5个保存程序状态寄存器(spsrs)用于异常中断处理。这些寄存器的功能有: 保留最近完成的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均为条件码
23、标志位。它们的内容根据算术或逻辑运算的结果所改变,并且可用来作为一些指令是否运行的检测条件。在arm状态下,绝大多数的指令都是有条件执行的;在thumb状态下,仅有分支指令是有条件执行的。272 控制位 prs的低8位(包括i、f、t和m4:0)称为控制位,当发生异常时这些位会被改变,如果处理器在特权模式下(非用户模式)运行,这些位也可以由程序修改。 t标记位:该位反映处理器的运行状态。该位被设置为1时,处理器执行在thumb状态,否则执行在arm状态。以上情况可由外部信号tbit反映出来。 注意:软件绝不能改变cpsr的tbit状态。如果这样做,处理器将会进入一种不可预知的状态。 中断禁止位
24、:i、f位为中断禁止位,当它们被置1时可以相应地禁止irq和fiq中断。 运行模式位:m4,m3,m2,m1和m0位(即m4:0)是模式位,它们决定了处理器的操作模式。并不是所有的组合都决定一个有效的处理器模式,只有那些明确定义的值才能被采用。用户必须意识到任何一种非法的值写入模式位,处理器都会进入到一种不可重获的状态,如果发生这种情况,就要进行复位。 273 保留位 cpsr中的其余位为保留位,当改变psr中的条件码标志位或者控制位时,必须确保保留位不被改变,在程序中也不要使用保留位来存储数据值。m4:0模式可视的thunm状态寄存器可视的arm状态寄存器10000用户模式r7r0, lr,
25、 sp pc, cpsrr14r0, pc, cpsr10001fiq 模式r7r0, lr_fiq, 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_
26、svc10111中止r7r0, lr_abt, sp_abt, pc, cpsr, spsr_abtr12r0, 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情况下,无论是来自什么状态,处理程序只要采用mov
28、s pc, r14_svc语句,总可以返回到原始程序的下一条语句。拷贝cpsr到相应的spsr; 根据异常类型强制改变cprs模式位的值; 令pc的值指向异常处理向量所指的下一条指令。这时也可能设置中断禁能标志,以防止不可估计的异常嵌套发生。当处理器处于thumb状态时发生了异常,当pc载入异常矢量所在地址时,它将自动地切换到arm状态。 282 离开异常处理时或当完成异常处理时,处理程序应该有以下步骤将link寄存器,减去相应的偏移量,赋给pc(偏移量的值由异常的类型决定);拷贝回spsr到cpsr; 如果在进入中断时设置了中断禁止标志,清除它。注意:你不需要特别指明切换回thumb状态。因
29、为原来的cpsr被自动地保存到了spsr。 283 异常进入/退出的总结 保留到相应的r14中的pc的值,或按推荐使用方法,退出异常处理。 注意:这里pc所赋的是bl/swi/未定义模式等指令所取的地址,它们在预取的阶段就被中断了;这里pc所赋的是由于fiq或irq取得了优先权,而没有来得及得到执行的指令地址;这里pc所赋的地址是load或store指令的地址,它们在执行时产生了数据的异常中断;在r14_svc复位之前保存的数值是不可预知的。返回指令进入异常时r14的值notesarm r14_xthumb r14_xblswiudeffiqirqpabtdabtresetmov pc,r14
30、movs pc,r14_svcmovs pc,r14_undsubs pc,r14_fiq,#4subs pc,r14_irq,#4subs pc,r14_abt,#4subs pc,r14_abt,#8napc+4pc+4pc+4pc+4pc+4pc+4cp+8pc+2pc+2pc+2pc+4pc+4pc+4pc+811(超级用户模式)1(未定义模式)2(快速中断模式)2(中断模式)1(异常中断模式)3(异常中断模式)4图2-8 异常进入/退出总结表284 fiq中断 fiq(快速中断请求)异常通常是用来支持数据传输和通道操作的,在arm状态下,它具有充分的私有寄存器,用来减少寄存器存取的需
31、要(从而减少进入中断前的“上下文切换”工作)。fiq中断是由外部设备通过拉低nfiq引脚触发的。通过对isync 输入引脚的控制nfiq可以区别同步或异步的传输情况。当isync为低电平,nfiq 和nirq将被认为是异步的,中断之前产生同步周期延长的话会影响处理器的流程。 不管是arm还是thumb状态下的异常,fiq处理程序都可以通过执行以下的语句来退出中断处理:subs pc, r14_fiq, #4 通过设置cpsr的f标记位可以禁止fiq中断(但是要注意到在用户模式下是不可行的)。 如果f标记位已经清除,arm920t在每个指令的最后检测来自fiq中断同步器的低电输出。 285 ir
32、q中断 irq(中断请求)异常是由nirq 输入低电平引发的普通中断。irq中断相对fiq中断来说是优先级低,当一个fiq中断序列进入时它将被屏蔽。irq也可以通过设置cprs中的“i”标志来禁止,同样也不能够在用户模式中这样做(只能在特权模式下这样做)。 无论irq发生在arm或者thumb状态下,都可以采用以下语句来退出中断处理:subs pc, r14_irq, #4 286 abort(异常中止)异常中止表示当前存储访问不能完成。通过外部的abort输入信号来告知内核。arm920t在每次的存储操作中检测该异常是否发生。有两种类型的异常中止即预取指异常中断:指令预取时产生;数据异常中断
33、:数据访问时产生。如果产生预取指中止,所取得的指令将会被标志为无效的,但是异常不会立即发生,一直要维持到取了指,并使指令到达管道的头部才会发生中止。如果这些指令不执行,例如在管道内发生了分支跳转,那么异常就不会发生了。 如果产生数据异常中止,根据指令类型进行如下操作简单数据传输指令(ldm,str)写回改变的基址变址寄存器:异常中断处理器必须清楚这些。 取消交换指令尽管它还没执行;数据块传输指令(ldm, stm)完成。如果设置为写回,基址已经校正。如果指令超出了数据的写基址(传输目录中有它的基址),就应该防止写超出。在中止异常将发生时,所有寄存器的覆盖写入都是禁止的。这意味着特别是r15(经
34、常是最后一个改变的寄存器)的值将在中止的ldm指令中保留下来。 abort机制使得页面虚拟存储器机制得以实现。在采用虚拟存储器的系统中,处理器可当某个地址的数据无效,mmu(存储器管理单元)将产生一个abort中止。这样abort的处理程序就必须找出异常中断的原因,使要求的数据可用,并重试被中止掉的指令。应用程序也就不需要了解实际可用存储空间的大小,也不需要了解异常中断对它的影响。 在完成了异常中断的处理后,通过以下语句退出中断处理(与arm状态还是thumb状态无关): subs pc, r14_abt, #4 ; 预取指abort subs pc, r14_abt, #8 ; 数据abor
35、t 通过执行该语句,就恢复了pc和cpsr,并重试被中断的指令。 287 软件中断 swi(软件中断指令)用来进入超级用户模式,通常用于请求特殊的超级用户功能。swi的处理程序通过执行以下语句,退出异常处理(arm或thumb):mov pc, r14_svc。通过执行该语句,就恢复了pc和cprs,并返回到swi后面的指令上。 注意:前面提到的nfiq, nirq, isync, lock, bigend, 和abort引脚只存在于arm920t cpu的内核上。 288 未定义指令 当arm920t遇到一个它不能执行的指令,它将产生一个未定义指令陷阱。这个机制是软件仿真器用来扩展thumb
36、和arm指令集用的。在完成对未知指令的处理后,陷阱处理程序应该执行以下的语句退出异常处理(无论是arm或thumb状态):movs pc, r14_und 通过执行该语句,恢复了cpsr,并返回执行未定义指令的下一条指令。 289 异常中断向量地址异常中断类型进入时处理器的模式0x00000000reset复位supervisor超级用户模式0x00000004undefined instructionundefined未定义模式0x00000008software interrupt软件中断supervisor超级用户模式0x0000000cabort (prefetch)abort异常预取
37、指中断模式0x00000010abort (data)abort异常数据中断模式0x00000014reservedreserved0x00000018irqirq中断模式0x0000001cfiqfiq快速中断模式图2-9 异常向量表 2810 异常中断优先级 当多个异常中断同时发生时,处理器根据一个固定的优先级系统来决定处理它们的顺序。 最高优先级:1.复位;2.数据 abort;3. fiq;4. irq;5. 预取指 abort;最低中断优先级:6.未定义指令,软件中断。注意:并非所有的异常中断都可能同时发生;未定义指令和软件中断是相互排斥的,因为它们都对应于当前指令的唯一的(非重叠的
38、)解码结果;如果一个数据abort和fiq中断同时发生了,并且此时的fiq中断是使能的,arm920t先进入到数据abort处理程序,然后立即进入fiq向量,从fiq正常的返回后,数据abort的处理程序才恢复执行。将数据abort设计为比fiq拥有更高的优先级,可以确保传输错误不能逃避检测。这种情况下进入fiq异常处理的时间延长了,这一时间必须考虑到fiq中断最长反应时间的计算中去。 2811 中断反应时间 最坏情况下的fiq中断的反应时间,假设它是使能的,包括通过同步器最长请求时间(如果是异步则是tsyncmax),加上最长的指令执行时间(tldm,ldm指令用于载入所有的寄存器,因此需要
39、最长的执行时间),加上数据abort进入时间(texc),加上进入fiq处理所需要的时间(tfiq)。在这些时间的最后,arm920t会执行位于0x1c的指令。 tsyncmax 是3个处理器周期,tldm 是20个处理器周期,texc是3个处理器周期,tfiq是2个处理器周期。也就是总是28个处理器周期。在一个20mhz的处理器时钟的系统里,它使用的时间超过1.4微妙。最长的irq反应时间的计算方法是类似的,但是必须考虑到更高优秀级的fiq中断可以推迟任意长时间进入irq中断处理。最小的fiq或irq的反应时间包括通过同步器的时间tsyncmax加上tfiq,它是4个处理器周期。2812 复
40、位 当nreset信号为低,arm920t放弃任何指令的执行,并从增加的字地址处取指令。 当nreset信号为高,arm920t进行如下操作: 将当前的pc值和cpsr值写入r14_svc和 spsr_svc。已保存的pc和spsr的值是未知的。 强制m4:0为10011 (超级用户模式),将cpsr中的“i”和“f”位设为1,并将t位清零。 强制pc从0x00地址取得下一条指令。 恢复为arm状态开始执行。 samsung s3c2410基本接口实验 存储器实验由学校实验中心在实验室内建立好实验平台,学生按学号两人一组按顺序进行实验,学生严禁移动实验设备,听从指挥,在指导老师的统一布置下完成
41、相关实验;学生在实验过程中,要严格按学校实验中心的要求,严格规范自己,人为损坏实验设备、器件、附件将按价赔偿。11 实验目的了解s3c2410x处理器的内部存储空间分配。掌握对存储区配置的方法。掌握对存储区进行读写访问的方法。12 实验设备硬件:create edukit-iv平台,ulink2仿真器套件,计算机。软件:vision ide for arm 集成开发环境,windows 98/2000/nt/xp。13 实验内容熟练使用命令脚本文件对arm存储控制寄存器进行正确配置。使用c语言编程,实现对arm的读写访问。14 实验原理141 存储器控制s3c2410处理器的存储器可以为片外存
42、储器访问提供必要的控制信号,其重要包括以下特点:支持大、小端模式(通过软件选择);地址空间有8个地址空间。每个地址空间的大小为128m,总共有1g字节的存储地址空间;除bank0以外的所有地址空间都可以通过设置为8位、16位或32位对准访问,bank0可以设置为16位、32位访问;在8个地址空间中,6个地址空间可以用于rom、sram等存储器,2个用于rom、sram、sdram等存储器;6个地址空间的起始地址和空间大小是固定的;1个地址空间的起始地址和空间的大小可变;所有存储器空间的访问周期都可以通过编程配置;提供外部扩展总线的等待周期;sdram支持自动刷新和掉电模式。15 实验步骤151
43、 准备实验环境将ulink2仿真器与实验平台主板上的jtag接口连接好,利用实验箱附带的串口线,将实验平台主板上的com2和计算机的串口连接好,在确认无误的情况下,为计算机、实验箱供电。152 串口接收设置在计算机上运行计算机自带的超级终端中的串口通信程序,也可运用实验平台在光盘中提供的超级终端,按要求进行超级终端的设置。主要设置内容有波特率为115200;1个停止位;无校验位、无硬件流控制。注意:超级终端设置中选择的项目可能与计算机串口硬件设置出现不相同的情况,请在实验中注意这点,同时需要做出正确的选择。153 打开实验程序将实验平台附带光盘中的文件夹(disk3_s3c241003-cod
44、es01-mdkmini2410-iv),按指导老师的要求拷贝到相应位置。运行vision ide for arm软件,点击菜单栏“project(工程)”,选择“open project(打开工程)”,在弹出的对话框中选择实验程序目录项5.1_memory_test下的memory_test.uv2工程。工程提供了两种运行方式。第一种是下载到sdram中调试运行;第二种是固化到nor flash中运行,学生可以在实验平台的工具栏中选择select target(选择对象)打开下拉框,在下拉框中有memory_test in ram选项和memory_test in flash选项。本实验选择
45、“memory_test in ram”项。编译链接工程。在菜单栏“project”选择“build target(构建目标)”或者选择“rebuild all target(重构所有目标)”编译整个工程,或单击相应工具按钮完成工程的编译。观察编译结果,没有错误才能表示编译成功。单击菜单栏“debug(调试)”,选择“start /stop debug session(开始/停止调试)” 项,将编译出来的文件下载到sdram中,或单击相应工具按钮完成下载。运行程序。单击菜单栏“debug”,选择“run(运行)”项,即可全速运行程序,或单击相应工具按钮全速运行工程。另外也可选择“step ov
46、er(单步)”运行程序。运行后,可以在超级终端上观看并记录程序的运行信息,了解程序的运行情况。154 习题按要求和规定的格式完成本实验的报告,其中要有自己的收获与体会。在什么窗口观察编译结果?你是如何知道编译结果的?实验中完成“单步调试”在“vision ide for arm 集成开发环境”有几步操作,每步操作中在集成开发环境界面上有什么变化。程序运行结果与实验设计结果要完全一致才能说明实验正确,你是用什么方法和步骤证明你实验的正确性的?155 实验完成后,关闭电源,恢复实验现场后,完成实验报告后退场。led控制实验21 实验目的掌握利用s3c2410x处理器地址总线扩展i/o来驱动led显
47、示。了解arm芯片中利用总线扩展i/o口的使用。22 实验设备硬件:create edukit-iv平台,ulink2仿真器套件,计算机。软件:vision ide for arm 集成开发环境,windows 98/2000/nt/xp。23 实验内容编写程序,控制实验平台的led1led4,使其有规律地发光和熄灭。具体的工作顺序是led1亮led2亮led3亮led4亮lde1灭led2灭led3灭led4灭全亮全灭。24 实验原理241 led发光原理(led共阳结构)edukit-iv平台中设计了5个led,其中1个作为电源指示,另外4个是本实验将要使用的,这4个lde可以编程控制。l
48、ed可编程发光原理如图21 所示:q0enp1.0a0a1a2cpu a3a4a5a6a7d0 q0d1 q1d2 q2d3 q3d4 q4d5 q5d6 q6d7 q774ls2405vled0led7 电阻r0r71a1 1y11a2 1y21a3 1y31a4 1y4第一组1a2a1 2y12a2 2y22a3 2y32a4 2y4第二组2ad01二组有19个脚,加上电源2个脚,共计20个脚。图21可编程八个led发光原理基础知识:二极管具有正向导通,反向截止的特点,led导通时发光,截止时熄灭。对于不同结构的led,编程时cpu的输出电平有不同要求,如果要保证cpu的输出电平不变,则需
49、要外围电路修正电平,使led达到设计要求。电阻以排阻形式出现,这样可保证每个led与电阻的接入端电势相同,排阻的大小一定要经过严格的调试再确定。cpu速度快,而led的响应速度慢,因此在它们之间一定要有锁存与缓冲的设备作为媒介,具体使用如种,可根据设计人员的水平和使用环境确定。在真实系统中,led常用于向使用者指示系统内重要工作部分的工作状态,上面的原理,只是说明发光的原理。如果将这个原理运用于不同的地方,就能收到不同的效果。25 实验步骤251 准备实验环境将ulink2仿真器与实验平台主板上的jtag接口连接好,利用实验箱附带的串口线,将实验箱主板上的com2和计算机的串口连接好,在确认无
50、误的情况下,为计算机、实验箱供电。252 串口接收设置在计算机上运行计算机自带的超级终端中的串口通信程序,也可运用实验平台在光盘中提供的超级终端,按要求进行超级终端的设置。主要内容有波特率为115200;1个停止位;无校验位、无硬件流控制。注意:超级终端设置中选择的项目可能与计算机串口硬件设置出现不相同的情况,请在实验中注意这点,同时需要做出正确的选择。253 打开实验程序将实验平台附带光盘中的文件夹(disk3_s3c241003-codes01-mdkmini2410-iv),按指导老师的要求拷贝到相应位置。运行vision ide for arm软件,点击菜单栏“project(工程)”
51、,选择“open project(打开工程)”,在弹出的对话框中选择实验程序目录项5.2_led_test下的led_test.uv2工程。然后认真学习“帮助”文件,掌握本实验的内容。工程提供了两种运行方式。第一种是下载到sdram中调试运行;第二种是固化到nor flash中运行,学生可以在实验平台的工具栏中选择select target(选择对象)打开下拉框,本实验选择“led_test in ram”项。编译链接工程。在菜单栏“project”选择“build target(构建目标)”或者选择“rebuild all target(重构所有目标)”编译整个工程,或单击相应工具按钮完成工
52、程的编译。观察编译结果,没有错误才能表示编译成功。单击菜单栏“debug(调试)”,选择“start /stop debug session(开始/停止调试)” 项,将编译出来的文件下载到sdram中,或单击相应工具按钮完成下载。运行程序。单击菜单栏“debug”,选择“run(运行)”项,即可全速运行程序,或单击相应工具按钮全速运行工程。另外也可选择“step over(单步)”运行程序。运行后,可以在超级终端上观看并记录程序的运行信息,了解程序的运行情况。254 习题按要求和规定的格式完成本实验的报告,其中要有自己的收获与体会。为什么说电阻的大小一定要进行调试?下面这段代码的主要功能是什么?int main(void)sys_init( );/ initial s3c2410s clock,interrupt,port and uart while(1)led_test( ); 在接口中,保证“锁存”是什么含义?在接口中,保证“缓冲”是什么含义?在接口中,保证“驱动”是什么含义? 按键中断实验31 实验目的掌握s3c2410x的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国农业机械制造业产销需求与转型升级趋势研究报告
- 2025-2030中国元宇宙虚拟资产市场供需分析及投资评估规划分析研究报告
- 2025-2030中国体育产业发展趋势与商业价值评估研究报告
- 建筑施工质量验收要点与技巧
- 2026广东惠州博罗县园洲镇九潭卫生院招聘编外工作人员1人备考题库(a卷)附答案详解
- 2026内蒙古包头外国语实验学校教师招聘备考题库及完整答案详解(历年真题)
- 2026上半年山东临沂市沂蒙干部学院招聘1人备考题库(夺分金卷)附答案详解
- 一年级语文识字教学全案设计
- 2026新疆图木舒克新纶化纤有限责任公司市场化选聘工作人员8人备考题库带答案详解(研优卷)
- 2026四川成都九洲迪飞科技有限责任公司招聘市场部部长等岗位3人备考题库含答案详解(达标题)
- 安徽省高速公路工地标准化建设指南
- 光伏施工安全培训课件
- 更换引流袋技术操作
- 部编版三年级下册语文课课练全册(附答案)
- 军用靶场设计方案
- 管理会计学 第10版 课件 第3章 本-量-利分析
- Unit 3 Zhong Nanshan- Part B(小学英语教学)闽教版英语五年级下册
- 消防维保方案(消防维保服务)(技术标)
- 车辆交通危险点分析预控措施
- QC成果提高SBS防水卷材铺贴质量一次合格率
- 大舜号海难事故案例分析
评论
0/150
提交评论