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

上传人:b****2 文档编号:24339798 上传时间:2023-05-26 格式:DOCX 页数:79 大小:301.37KB
下载 相关 举报
嵌入式系统实验课指导书.docx_第1页
第1页 / 共79页
嵌入式系统实验课指导书.docx_第2页
第2页 / 共79页
嵌入式系统实验课指导书.docx_第3页
第3页 / 共79页
嵌入式系统实验课指导书.docx_第4页
第4页 / 共79页
嵌入式系统实验课指导书.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

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

《嵌入式系统实验课指导书.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实验课指导书.docx(79页珍藏版)》请在冰豆网上搜索。

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

嵌入式系统实验课指导书

嵌入式系统课程实验指导书

刘晓秋编

 

湖南涉外经济学院计算机科学与技术学部

说明

 

本实验指导书以教学大纲和教材为中心,在结合实际工程需要的同时,重点以提高学生实际动手能力为目的而编写。

本指导书适合非电子专业本科实验(专科可修改实验内容)。

所有实验均在S3C2410实验箱和µVisionIDEFORARM集成开发环境下仿真、调试、运行。

实验中运用的原理与基本概念,由课堂教学完成。

每个实验完成后,每个学生在任课老师的布置下,交纳独立完成的、完整的实验报告,实验报告是考核学生平时成绩的重要依据。

所有实验由学校实验中心提供计算机机房,学生在实验中要遵守实验中心的各项规章制度,爱护所有实验仪器与设备,保证实验环境,在实验中出现的问题要向机房管理员即时提出,不得自行处理。

由个人的原因造成的损失,将由责任人承担应有的责任。

前言

本实验指导书可供计算机科学与技术专业本科教学实验,计算机应用专科学生可视教学情况对实验内容作部分删简。

在实验中强调提高学生的动手能力和理解能力,教师在每次实验前要对每次实验作全面讲述,提出掌握部分、理解部分和了解部分。

本实验指导书从实践中出发,规定其中:

存储器实验、LED控制实验、按键中断实验、矩阵扫描键盘实验、数码管显示实验、触摸屏控制实验、IIC读写EEPROM实验、矩阵LED实验8个实验是必做实验。

这8个实验在实践中使用频率非常高,是学生走入社会后,从事专业工作的基础,同时也是今后学生提高自己自学能力的基础。

在实验平台中还有11个实验,这些是专供学生根据自己的能力选做的实验,指导教师在教学中要安排一定实验时间让学生单独完成一定的选做实验,并由学生独立完成选做实验的实验报告,在这种实验报告中指导老师不要设置任何前提条件,要充分让学生展开思路,充分体现学生的聪明才智。

ARM920T是S3C2410X微处理器的内核,他们构成了一个完整的系统,在一个学期的学习中要完全掌握这个系统是不可能的。

因此,在教学中重点是:

系统的重要部分和基本概念。

希望学生在这门课程的学习过程中,学会上网查询、获取重要的学习资料,这种方式是学生今后提高工作能力有力的手段。

刘晓秋

嵌入式系统实验课指导书

SAMSUNGS3C2410基本实验

1·1基本实验具有的共同特点

由实验程序由汇编语言编制,用同样的操作方法和步骤装载实验程序、进行仿真调试,不须CreateEdukit-IV平台、ULINK2仿真器套件、计算机,直接运行µVisionIDEFORARM软件即可。

1·2基本实验在教学中的优点

与教学中的汇编语言相互配套,学生在实验中能真正做到可读、可操作、可修正程序、可直接体会,这是理论与实践相接合的好方法。

1·3基本实验软件的具体装载步骤

将实验平台附带光盘中的文件夹(DISK3_S3C2410\03-Codes\01-MDK\Mini2410-IV),按指导老师的要求拷贝到相应位置。

运行µVisionIDEFORARM软件,点击菜单栏“Project(工程)”,选择“OpenProject(打开工程)”,在弹出的对话框中选择实验程序项目,具体软件分布情况如下。

图1·1基本实验在文件夹中的存储情况

工程提供了一种运行方式。

在编辑窗口中显示一个*.s的汇编语言编制的源程。

编译链接工程。

在菜单栏“Project”选择“Buildtarget(构建目标)”或者选择“Rebuildalltarget(重构所有目标)”编译整个工程,或单击相应工具按钮完成工程的编译。

观察编译结果,没有错误才能表示编译成功。

给实验平台上电。

单击菜单栏“Debug(调试)”,选择“Start/StopDebugSession(开始/停止调试)”项,单击菜单栏“Debug”,选择“Run(运行)”项,即可全速运行程序,或单击相应工具按钮全速运行工程。

另外也可选择“StepOver(单步)”运行程序,在这一步中即可运行程序又可对程序进行调试。

1·4习题

对µVisionIDEFORARM集成开发环境窗口进行总结(如何启动、窗口的作用等)。

请分配这段代码的执行过程与功能;调试过程对你有什么帮助?

ldrsp,=stack_top

movr0,#x;putxvalueintoR0

strr0,[sp];savethevalueofR0into

;stacks

movr0,#y;putyvalueintoR0

ldrr1,[sp];readthedatafromstack,and

;putitintoR1

addr0,r0,r1;R0=R0+R1

strr0,[sp]

stop

bstop;endthecode,cycling

end

这段代码说明了什么?

xEQU45;x=45

yEQU64;y=64/

stack_topEQU0x30200000;definethetopaddressforstacks

 

ARM920T处理器工的基本工作模式

2.1概述

S3C2410A采用了先进的ARM920T内核,ARM的来由是AdvancedRISCMachines,S3C2410A由三星公司研制。

2.2处理工作状态

从程序员的角度上看,ARM920T可以工作在下面两种工作状态下的一种:

ARM状态:

执行32位字对齐的ARM指令;

THUMB状态:

执行16位半字对齐的THUMB指令。

在这种状态下,PC寄存器的第1位(D0位)来选择一个字中的哪个半字。

注意:

这两种状态的转换不影响处理模式和寄存器的内容,32位为一个字,与汇编语言中有区别。

2.3切换状态

2.3.1进入Thumb状态,可以通过执行BX指令,同时将操作数寄存器的状态位(0位)置1来实现。

当从异常(IRQ,FIQ,UNDEF,ABORT,SWI等)返回时,只要进入异常处理前处理器处于Thumb状态,则处理器就会自动进入Thumb状态。

2.3.2进入ARM状态,可以通过执行BX指令,同时将操作数寄存器的状态位(0位)清零来实现。

当处理进入异常(IRQ,FIQ,RESET,UNDEF,ABORT,SWI等)时。

这时,PC值保持在异常模式下的link寄存器中,并从异常向量地址处开始执行异常处理程序。

2.3.3存储空间的格式

ARM920T将存储器(不是寄存器)空间视为从地址为0开始,单元由字节组成的线性存储集合,字节地址0到字节地址3中(共有4个字节,占32位),保存第一个字,字节地址4到字节地址7中(共有4个字节,占32位)保存第二个字,依此类推。

ARM920T对存储的字,可以按照小端(Littleendian)或大端(Bigendian)的方式对待。

大端格式,在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如2-1所示:

11

第三个字数据的次低位

地址变大的方向

10

第三个字数据的低位

9

特点:

4个字节存储一个数据字,高位保存在低地址中,低位保存在高地址中。

第三个字数据的次高位

8

第三个字数据的高位

7

第二个字数据的次低位

6

第二个字数据的低位

5

第二个字数据的次高位

4

第二个字数据的高位

3

第一个字数据的次低位

2

第一个字数据的低位

1

第一个字数据的次高位

0

第一个字数据的高位

图2-1以大端格式存储字数据

小端格式,与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

如图2-2所示:

0

第一个字数据的次低位

地址变大的方向

1

第一个字数据的低位

2

特点:

4个字节存储一个数据字,位位保存在低地址中,高位保存在高地址中。

第一个字数据的次高位

3

第一个字数据的高位

4

第二个字数据的次低位

5

第二个字数据的低位

6

第二个字数据的次高位

7

第二个字数据的高位

8

第三个字数据的次低位

9

第三个字数据的低位

10

第三个字数据的次高位

11

第三个字数据的高位

图2-2以小端格式存储字数据

2.4指令长度

指令可以是32位长度(在ARM状态下)或16位长度(在THUMB状态下)。

ARM920T的数据类型支持字节(8位),半字(16位)和字(32位)数据类型。

注意:

字必须按照4字节对齐,半字必须是2字节对齐。

2.5操作模式

2.5.1ARM920T支持7种操作模式:

用户模式(user模式),运行应用的普通模式;

快速中断模式(fig模式),用于支持数据传输或通道处理;

中断模式(irq模式),用于普通中断处理;

超级用户模式(svc模式),操作系统的保护模式;

异常中断模式(abt模式),输入数据后登入或预取异常中断指令;

系统模式(sys模式),是操作系统使用的一个有特权的用户模式;

未定义模式(und模式),执行了未定义指令时进入该模式。

2.5.2外部中断、异常操作、软件控制都可以改变为中断模式。

大多数应用程序都是在用户模式下运行。

不在用户模式下的均统称为特权模式(有6个模式),其目的是为了处理中断、异常请求、操作保护资源服务等。

2.6寄存器

ARM共有37个32位的寄存器(每个4个字节,共占用148个字节长,即94H个单元),其中31个是通用寄存器,6个是状态寄存器。

但在同一时间,并不是所有的寄存器都可见。

在某一时刻存储器是否可见(由是否被访问来决定),处理器当前的工作状态和工作模式是决定的条件。

2.6.1ARM状态下的寄存器

在ARM状态下,任何时刻都可以看到16个通用寄存器,1或2个状态寄存器。

在特权模式(非用户模式时的其他模式)下会切换到具体模式下的寄存器组,其中包括模式专用的私有(banked)寄存器。

见图2-3RAN状态下寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。

ARM状态寄存器系列中含有16个直接操作寄存器(R0到R15)。

除了R15外其他的都是通用寄存器,可用来存放地址或数据值。

除此之外,实际上有17个寄存器用来存放状态信息。

寄存器14:

专职持有返回点的地址,在系统执行一条“跳转并链接(link)”(BL)指令的时候,R14将收到一个R15的拷贝。

其他的时候,它可以用作一个通用寄存器。

相应的它在其他模式下的私有寄存器R14_svc,R14_irq,R14_fiq,R14_abt和R14_und都同样用来保存在中断或异常发生时,或时在中断和异常中执行了BL指令时,R15的返回值。

寄存器15是程序计数器(PC)。

在ARM状态下,R15的bits[1:

0]为0,bits[31:

2]保存了PC的值。

在Thumb状态下,bits[0]为0同时bits[31:

1]保存了PC值。

寄存器16是CPSR(当前程序状态寄存器),用来保存当前代码标志和当前处理器模式位。

FIQ模式拥有7个私有寄存器R8-14(R8_fiq-R14_fiq)。

在ARM状态下,多数FIQ处理都不需要保存任何寄存器。

用户、中断、异常中止,超级用户和未定义模式都拥有2个私有寄存器,R13和R14。

允许这些模式都可拥有1个私有堆栈指针和链接(link)寄存器。

系统和用户

FIQ

超级用户

异常中止

IRQ

未定义

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R7

R7

R7

R7

R7

R7

R8

▲R8_fiq

R8

R8

R8

R8

R9

▲R9_fiq

R9

R9

R9

R9

R10

▲R10_fiq

R10

R10

R10

R10

R11

▲R11_fiq

R11

R11

R11

R11

R12

▲R12_fiq

R12

R12

R12

R12

R13

▲R13_fiq

▲R13_svc

▲R13_abt

▲R13_irq

▲R13_und

R14

▲R14_fiq

▲R14_svc

▲R14_abt

▲R14_irq

▲R14_und

R15(PC)

R15(PC)

R15(PC)

R15(PC)

R15(PC)

R15(PC)

RAM状态下的状态寄存器

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

▲SPSR_fiq

▲SPSR_svc

▲SPSR_abt

▲SPSR_irq

▲SPSR_und

图2-3RAM状态下寄存器集

2.6.2THUMB状态下的寄存器

THUMB状态寄存器是ARM状态寄存器的一个子集。

程序员可以直接操作8个通用寄存器R0-R7,同样也可以操作程序计数器(PC),堆栈指针寄存器(SP),链接(link)寄存器(LR),和CPSR。

它们都是各个特权模式下的私有寄存器。

见图2-4THUMB状态下的寄存器集,其中显示了在这种模式下哪种寄存器是可见的,对于私有寄存器上都有一个黑三角标记。

ARM920T包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs),备份的程序状态寄存器用来进行异常处理,这些寄存器的功能包括有保存ALU当前操作的有关信息;控制中断的允许和禁止;设置处理器的运行模式。

 

系统和用户

FIQ

超级用户

异常中止

IRQ

未定义

R0

R0

R0

R0

R0

R0

R1

R1

R1

R1

R1

R1

R2

R2

R2

R2

R2

R2

R3

R3

R3

R3

R3

R3

R4

R4

R4

R4

R4

R4

R5

R5

R5

R5

R5

R5

R6

R6

R6

R6

R6

R6

R7

R7

R7

R7

R7

R7

SP

▲SP_fiq

▲SP_svc

▲SP_abt

▲SP_und

▲SP_fiq

LR

▲LR_fiq

▲LR_svc

▲LR_abt

▲LR_und

▲LR_fiq

CP

CP

CP

CP

CP

CP

THUMB状态下的状态寄存器

CPSR

CPSR

CPSR

CPSR

CPSR

CPSR

▲SPSR_fiq

▲SPSR_svc

▲SPSR_abt

▲SPSR_irq

▲SPSR_und

图2-4THUMB状态下的寄存器集

2.6.3ARM和THUMB状态寄存器间的关系

THUMB态下R0-R7和ARM状态下R0-R7是等同的

THUMB状态的CPSR和SPSRs跟ARM状态的CPSR和SPSRs是等同的

THUMB状态下的SP映射在ARM状态下的R13上

THUMB状态下的LR映射在ARM状态下的R14上

THUMB状态下的程序计数器映射在ARM状态下的程序计数器上(R15)

图2-5显示了它们之间的关系,CPSR为当前程序状态寄存器,SPSR为程序状态寄存器。

THUMB状态

对应关系

RAM状态

R0

 

R0

R2

R2

R3

R3

R4

R4

R5

R5

R6

R6

R7

R7

R8

R9

R10

R11

R12

StackPointer(SP)

StackPointer(R13)

Linkregister(LR)

Linkregister(R14)

ProgramCounter(PC)

ProgramCounter(R15)

CPSR

CPSR

SPSR

SPSR

图2-5THUMB状态下和ARM状态下寄存器之间的映射关系

2.6.4在THUMB状态下访问高地址寄存器

在THUMB状态下寄存器R8-R15(高地址寄存器)不是标准寄存器集。

但是,汇编语言的程序员可以访问它们并用它们作快速暂存。

向R8-R15写入或读出数据,可以采用MOV指令的某个变型,从R0-R7(低地址寄存器)的某个寄存器传送数据到高地址寄存器,或者从高地址寄存器传送到低地址寄存器。

还可以采用CMP和ADD指令,将高地址寄存器的值与低地址寄存器的值进行比较或相加。

2.7程序寄存器状态

ARM920T具有一个当前程序状态寄存器(CPSR),另外还有5个保存程序状态寄存器(SPSRs)用于异常中断处理。

这些寄存器的功能有:

保留最近完成的ALU(运算器)操作的信息;

控制中断的使能和禁止;

设置处理器的操作模式。

313029282726252423··876543210

N

Z

C

V

·

·

·

·

·

·

·

·

I

F

T

M4

M3

M2

M1

M0

图2-6显示了程序状态寄存器的位定义

其中处理器的的信息与意义如下

M:

模式位;T:

状态位;F:

FIQ中止;I:

IRQ中止;V:

溢出;C:

进位/借位/扩展;Z:

零;N:

负/小于。

N、Z、C、V称为条件码标志;D27~D8为保留位;I~M0称为控制位标志。

2.7.1条件码标志

N、Z、C、V均为条件码标志位。

它们的内容根据算术或逻辑运算的结果所改变,并且可用来作为一些指令是否运行的检测条件。

在ARM状态下,绝大多数的指令都是有条件执行的;在Thumb状态下,仅有分支指令是有条件执行的。

2.7.2控制位

PRS的低8位(包括I、F、T和M[4:

0])称为控制位,当发生异常时这些位会被改变,如果处理器在特权模式下(非用户模式)运行,这些位也可以由程序修改。

T标记位:

该位反映处理器的运行状态。

该位被设置为1时,处理器执行在THUMB状态,否则执行在ARM状态。

以上情况可由外部信号TBIT反映出来。

注意:

软件绝不能改变CPSR的TBIT状态。

如果这样做,处理器将会进入一种不可预知的状态。

中断禁止位:

I、F位为中断禁止位,当它们被置1时可以相应地禁止IRQ和FIQ中断。

运行模式位:

M4,M3,M2,M1和M0位(即M[4:

0])是模式位,它们决定了处理器的操作模式。

并不是所有的组合都决定一个有效的处理器模式,只有那些明确定义的值才能被采用。

用户必须意识到任何一种非法的值写入模式位,处理器都会进入到一种不可重获的状态,如果发生这种情况,就要进行复位。

2.7.3保留位

CPSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,必须确保保留位不被改变,在程序中也不要使用保留位来存储数据值。

 

M[4:

0]

模式

可视的THUNM状态寄存器

可视的ARM状态寄存器

10000

用户模式

R7~R0,LR,SPPC,CPSR

R14~R0,PC,CPSR

10001

FIQ模式

R7~R0,LR_fiq,SP_fiqPC,CPSR,SPSR_fiq

R7~R0,R14_fiq~R8_fiq,PC,CPSR,SPSR_fiq

10010

IRQ模式

R7~R0,LR_irq,SP_irqPC,CPSR,SPSR_irq

R12~R0,R14_irq,R13_irq,PC,CPSR,SPSR_irq

10011

超级用户模式

R7~R0,LR_svc,SP_svc,PC,CPSR,SPSR_svc

R12~R0,R14_svc,R13_svc,PC,CPSR,SPSR_svc

10111

中止

R7~R0,LR_abt,SP_abt,PC,CPSR,SPSR_abt

R12~R0,R14_abt,R13_abt,PC,CPSR,SPSR_abt

11011

未定义模式

R7~R0LR_und,SP_und,PC,CPSR,SPSR_und

R12~R0,R14_und,R13_und,PC,CPSR

11111

系统模式

R7~R0,LR,SPPC,CPSR

R14~R0,PC,CPSR

图2-7CPSR模式位的值

2.8异常

当正常的程序执行流程被临时中断时,称为产生了异常。

例如程序执行转向一个外设的中断请求。

在处理异常前,当前处理器的状态必须被保留(保护现场),处理异常程序完成后,处理器能恢复原来的状态并执行原来程序(恢复现场)。

有可能同时产生好几个异常,如果出现这种情况,就应该按优先级的顺序进行处理。

2.8.1进入异常时的行为

当一个异常发生时,ARM920T将进行以下四步

将下一条指令的地址保存到相应的Link寄存器中。

如果异常是从ARM状态进入的,下一条指令的地址(根据异常的类型,数值为当前PC+4或PC+8)拷贝到Link寄存器。

如果异常是从THUMB状态进入,那么写入到link寄存器的值是当前的PC偏移一个值。

这表示异常处理程序不需要关心是从哪种状态进入异常的。

例如,在SWI情况下,无论是来自什么状态,处理程序只要采用MOVSPC,R14_svc语句,总可以返回到原始程序的下一条语句。

拷贝CPSR到相应的SPSR;

根据异常类型强制改变CPRS模式位的值;

令PC的值指向异常处理向量所指的下一条指令。

这时也可能设置中断禁能标志,以防止不可估计的异常嵌套发生。

当处理器处于Thumb状态时发生了异常,当PC载入异常矢量所在地址时,它将自动地切换到ARM状态。

2.8.2离开异常处理时或当完成异常处理时,处理程序应该有以下步骤

将Link寄存器,减去相应的偏移量,赋给PC(偏移量的值由异常的类型决定);

拷贝回SPSR到CPSR;

如果在进入中断时设置了中断禁止标志,清除它。

注意:

你不需要特别指明切换回THUMB状态。

因为原来的CPSR被自动地保存到了SPSR。

2.8.3异常进入/退出的总结

保留到相应的R14中的PC的值,或按推荐使用方法,退出异常处理。

注意:

这里PC所赋的是BL/SWI/未定义模式等指令所取的地址,它们在预取的阶段就被中断了;这里PC所赋的是由于FIQ或IRQ取得了优先权,而没有来得及得到执行的指令地址;这里PC所赋的地址是Load或Store指令的地址,它们在执行时产生了数据的异常中断;在R14_svc复位之前保存的数值是不可预知的。

 

返回指令

进入异常时R14的值

Notes

ARMR14_x

THUMBR14_x

BL

SWI

UDEF

FIQ

IRQ

PABT

DAB

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔

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

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