S3C2410A实验指导书_第1页
S3C2410A实验指导书_第2页
S3C2410A实验指导书_第3页
S3C2410A实验指导书_第4页
S3C2410A实验指导书_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、.目录第1章 实验要求3第2章 预备知识4一、 ADS1.2安装4二、 ADS1.2 下使用 Wiggler电缆调试5三、 配置 ads1.2软件6四、 H-JTAG 驱动程序的使用8第3章 S3C2410A实验24实验一 ADS1.2开发环境创建与简要介绍24一、 实验目的24二、 实验内容24三、 实验设备24四、 实验步骤24五、 实验步骤32实验二 ARM的I/O接口实验34一、 实验目的34二、 实验内容34三、 实验设备34四、 实验原理34五、 实验步骤36六、 参考程序36实验三 ARM 的中断实验37一、 实验目的37二、 实验内容37三、 实验设备37四、 ARM 的中断原

2、理37五、 三星的 2410 ARM 处理器的中断的使用37六、 中断编程实例31七、 实验步骤32八、 分析理解32实验四 ARM的UART实验34一、 实验目的34二、 实验内容34三、 实验设备34四、 UART的工作原理34五、 实验步骤39六、 分析理解39实验五 ARM的A/D接口实验40一、 实验目的40二、 实验内容40三、 实验设备40四、 实验原理40五、 实验步骤44六、 分析理解44实验六 键盘接口和七段数码管的控制实验45一、 实验目的45二、 实验内容45三、 实验设备45四、 实验原理45五、 实验步骤49六、 分析理解49七、 要求50 第1章 实验要求ARM实

3、验室是电子信息科学与技术的专业实验室。旨在培养学生对嵌入式系统设计和开发的能力,使学生加深对嵌入式系统设计思想的理解,掌握ARM实验平台进行程序设计、开发的技巧和方法,进而增强学生的实践能力和动手能力,提高其创新意识。 实验室还为大学生电子设计大赛,电子类学生的毕业设计、课程设计以及科研训练提供实验环境。利用嵌入式实验开发系统。实验要求在实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。(2)仔细观察上机编程时出现的各种现象,记录主要情况,作出必要说明和分析。(3)认真书写实验报告。实验报告包括实验目的和要求,实验情况及其分

4、析,写出程序设计说明,给出源程序框图和清单。(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。(5)实验课程不迟到,如有事不能出席,所缺实验一般不补。实验的验收将分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交书面的实验报告。;.第2章 预备知识一、 ADS1.2安装1. 打开安装光盘的 ads1.2文件夹,双击 SETUP.EXE,进行安装,按默认设置,也可适当更改安装路径。 2. 安装完成后,出现一个添加 licence的界面, 3. 选中 ADS1.2目录下的 crack 文件夹中的 licence.dat文件,点下一步,直至结束。至此,完成软件的安装。二、

5、 ADS1.2 下使用 Wiggler电缆调试1. 安装 Rdi.dll 将文件夹下的 Rdi.dll 、 dev.ini 、dev文件夹一同拷贝到 xx:Program FilesARMADSv1_2Bin目录下(推荐目录) ; 2安装并口驱动1) 运行GiveIOInstaller.exe2) 选择Install Service三、 配置 ads1.2软件 打开 AXD,选择菜单”options”中的”configuer target”,如下图:点击”ADD”,再弹出的列表框中找到开始拷贝的 RDI.dll,如下图:打开后再点击 Configure 进行配置,点击”OK”,如果此时连接了

6、Wiggler 电缆和实验箱,即可进入正确的调试模式,如下图:四、 H-JTAG 驱动程序的使用1. 安装操作说明首先,将 H-JTAGv2.0.exe 应用程序双击,安装。2. 安装到你的 C 盘或 D 盘的 program files 下,安装成功后,在桌面上会出现图 1 左下方的图标 H-JTAG。连上 wiggler电缆,双击图标 H-JTAG,弹出图 1 的右面的对话框。3. 若检测,连接成功,最小化 H-JTAG。到开始/程序/ARM Developer Suite 1.2 目录下打开 ADS1.2 的调试器 AXD。将弹出图 8。点击,深色处,之后点击 OK。 (注意,这步前,应

7、该正确安装 H-JTAG V2.0.exe 程序)第3章 S3C2410A实验实验一 ADS1.2开发环境创建与简要介绍一、 实验目的1 熟悉ADS1.2开发环境,正确使用仿真调试电缆进行编译、下载、调试。2 了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程。3 了解ARM C语言的基本框架,学会使用ARM的C语言编程二、 实验内容1 学习ADS1.2开发环境2 用汇编语言编写一个简单的应用程序3 用C语言编写一个简单的应用程序三、 实验设备1 EL-ARM-830+教学实验箱, PC机,仿真调试电缆。2 ADS1.2集成开发环境,仿真调试电缆驱动程序四、 实验步骤1 ADS1.2下

8、建立工程1) 运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执行文件。同时,如图2-1-1图2-1-1还要在,Project name栏中输入项目的名称,以及在Location中输入其存放的位置。按确定保存项目。2) 在新建的工程中,选择Debug版本,如图2-1-2,使用Edit|Debug Settings菜单对Debug版本进行参数设置。图2-1-23) 在如图2-1-3中,

9、点击Debug Setting 按钮,弹出2-1-4图,选中Target Setting图2-1-3图2-1-4项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可执行的代码的初始开关。4) 在如图2-1-5中,点击ARM Assembler ,在Architecture or Processer 图2-1-5 栏中选ARM920T。这是要编译的CPU核。5) 在如图2-1-6中,点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。这是要编译的CPU核。图2-1-66) 在如图2-1-7中,点击ARM

10、 linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。该地址是属于SDRAM的地址。图2-1-7图2-1-8在options栏中,如图2-1-8,Image entry point要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0x300000000x33ffffff中选值,这是64M SDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。通常入口点

11、Image entry point 为0x30000000,ro_base也为0x30000000。在Layout栏中,如图2-1-9,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。图2-1-97) 在如图2-1-10中,即在Debug Setting对话框中点击左栏的ARM fromELF项,在Output file

12、name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。图2-1-10中使用的是test.bin.图2-1-108) 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下的Stationary 目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放

13、到该目录下即可。这样,就能在图2-1-10中看到该模板。9) 新建项目工程后,就可以执行菜单Project|Add Files把和工程所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group来创建文件夹,然后把加入的文件选中,移入文件夹。或者鼠标放在文件填加区,右键点击,即出!如图2-1-11图2-1-11先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。读者可根据自己习惯,更改Edit|Preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。如图2-1-12。图

14、2-1-122. ADS1.2下仿真、调试在ADS1.2下进行仿真调试,首先需要一根仿真调试电缆。其驱动程序的安装和使用在光盘中的实验软件ARM9_RDI中,里面有相关的文档。在连上调试电缆后,给实验箱上电,打开调试软件AXD Debugger。点击File|load image 加载文件ADS.axf(实验程序HARDWAREADS实验三ADSADS_data目录下)。打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。点击全速运行,出现图2-1-13的界面:图2-1-13在最后介绍调试按钮,上图,左起第一个是全速运行,第二个是停止运行,第三个跳

15、入函数内部,第四个单步执行,第五个跳出函数。到此,开发环境就全部介绍完了,这是 ARM的开发基础。1 ARM使用C语言编程是大势所趋在应用系统的程序设计中,若所有的编程任务均由汇编语言来完成,其工作量巨大,并且不易移植。由于ARM的程序执行速度较高,存储器的存储速度和存储量也很高,因此,C语言的特点充分发挥,使得应用程序的开发时间大为缩短,代码的移植十分方便,程序的重复使用率提高,程序架构清晰易懂,管理较为容易等等。因此,C语言的在ARM编程中具有重要地位。2 ARM C语言程序的基本规则在ARM程序的开发中,需要大量读写硬件寄存器,并且尽量缩短程序的执行时间的代码一般使用汇编语言来编写,比如

16、ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。在使用C语言时,要用到和汇编语言的混合编程。当汇编代码较为简洁,则可使用直接内嵌汇编的方法,否则,使用将汇编文件以文件的形式加入项目当中,通过ATPCS的规定与C程序相互调用与访问。ATPCS,就是ARM、Thumb的过程调用标准(ARM/Thumb Procedure Call Standard),它规定了一些子程序间调用的基本规则。如寄存器的使用规则,堆栈的使用规则,参数的

17、传递规则等。在C程序和ARM的汇编程序之间相互调用必须遵守ATPCS。而使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS的规则。但是,对于汇编语言来说,完全要依赖用户保证各个子程序遵循ATPCS的规则。具体来说,汇编语言的子程序应满足下面3个条件: 在子程序编写时,必须遵守相应的ATPCS规则; 堆栈的使用要遵守相应的ATPCS规则; 在汇编编译器中使用-atpcs选项。基本的ATPCS规定,请详见提供的相关PDF文档。汇编程序调用C程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。在调用C程序时,

18、要正确设置入口参数,然后使用BL调用。3 C程序调用汇编程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410/INC目录下都有一个2410addr.h的头文件,那里面定义了所有关于2410的硬件寄存器的宏,对宏的读写,就能操作2410的

19、硬件。具体的编程规则同标准C语言。4 简单的小例子下面是一个简单的小例子IMPORT MainAREA a ,CODE, READONLY;ENTRY LDR R0, =0x01d00000LDR R1, =0x245STR R1 , R0 ;把0x245放到地址0X01D00000 BL Main ;跳转到Main()函数处的C/C+程序END ;标识汇编程序结束 以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C+代码处,执行主要任务,此处的 Main是声明的C语言中的Main()函数。五、 实验步骤1 本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,L

20、CD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2 在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。3 检查连接是否可靠,可靠后,接入电源线,系统上电。4 打开ADS1.2开发环境,从里面打开C.mcp项目文件,进行编译。5 编译通过后,进入ADS1.2调试界面,加载C_DataDebug中的映象文件程序映像C.axf。6 打开/实验软件/tools/目录下的串口调试助手工具,配置为波特率为115200,校验位无,数据位为8,停止位为1。不要选十六进制显示。之后,在ADS调试环境下全速运行映象文件,

21、应出现图2-3-1 界面。本程序连续发送55。图2-3-1下边分析一下主程序的源码。在C程序前的部分为系统的初始化,这在后边BOOTLOADER的章节里,要详细介绍。#include .incconfig.h /嵌入包括硬件的头文件unsigned char data; /定义全局变量void Main(void)Target_Init(); /目标板初始化,定义串口的硬件初始化在/target.c中定义 Delay(10); /延时 data = 0x55; /给全局变量赋值 while(1) Uart_Printf(%x ,data); /串口0输出 Delay(10); 把data =

22、0x55;语句中的0x55,换成其他8位数,重新编译,下载,看看串口工具上输出是什么内容。实验二 ARM的I/O接口实验一、 实验目的1 了解S3C2410的通用I/O接口2 掌握I/0功能的复用并熟练的配置,进行编程实验二、 实验内容1 利用ADS1.2编译,在实验箱的CPU板上点亮LED灯LED1、LED2,并轮流闪烁!2 keil( mdk 4.12) 点亮LED灯LED1、LED2,并轮流闪烁!三、 实验设备1 EL-ARM-830+教学实验箱,仿真调试电缆。2 ADS1.2集成开发环境,仿真调试驱动程序。3 kiel +Proteus软件。四、 实验原理S3C2410 CPU 共有1

23、17个多功能复用输入输出口,分为8组端口:l 4个16位的I/O端口 (PORT C、PORT D、PORT E、PORT G)l 2个11位的I/O端口 (PORT B 和PORT H)l 1个8位的I/O端口(PORT F)l 1个23位的I/O端口(PORT A)这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。往该地址中写入相应的数据,即可实现功能及数据配置。现用G口举例说明。对

24、于G口如表2-1、表2-2、表2-3,表2-1RegisterAddressR/WDescriptionReset ValueGPGCON0x56000060R/WConfigure the pins of port G0x0GPGDAT0x56000064R/WThe data register for port GUndefinedGPGUP0x56000068R/WPull-up disable register for port G0xF800Reserved0x5600006CReserved表2-2Port GSelectable Pin FunctionsGPG15Input/o

25、utputEINT23nYPONGPG14Input/outputEINT22YMONGPG13Input/outputEINT21nXPONGPG12Input/outputEINT20XMONGPG11Input/outputEINT19TCLK1GPG10Input/outputEINT18GPG9Input/outputEINT17GPG8Input/outputEINT16GPG7Input/outputEINT15SPICLK1GPG6Input/outputEINT14SPIMOSI1GPG5Input/outputEINT13SPIMISO1GPG4Input/outputEI

26、NT12LCD_PWRENGPG3Input/outputEINT11nSS1GPG2Input/outputEINT10nSS0GPG1Input/outputEINT9GPG0Input/outputEINT8表2-3GPGDATBitDescriptionGPG15:015:0When the port is configured as input port, data from external sources can be read to the corresponding pin. When the port is configured as output port, data w

27、ritten in this register can be sent to the corresponding pin. When the port is configured as functional pin, undefined value will be read.表2-4GPGUPBitDescriptionGPG15:015:00: The pull-up function attached to to the corresponding port pin is enabled.1: The pull-up function is disabled.(GPG15:11 are p

28、ull-up disabled state at the initial condition.)也就是说,在地址0x56000060中,给32位的每一位赋值,那么,在CPU的管脚上就定义了管脚的功能值。当G口某管脚配置成输出端口,则在GPDAT对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。若配置为功能管脚,则该管脚变成具体的功能脚。其他端口配置请参见PDF文挡。在程序中对GPI/O各寄存器的读写实现,是通过给宏赋值实现的。这些宏在2410addr.h中定义;具体如:。#define rGPGCON (*(volatile unsigned *)0x5600

29、0060)/G control#define rGPGDAT (*(volatile unsigned *)0x56000064)/ G data#define rGPGUP (*(volatile unsigned *)0x56000068)/Pull-up control G因此,配置端口G,在程序中也就是用如下语句即可:rGPGCON = rGPGCON & 0xFFFF0FFF | 0x00050000;/配置第8、第9位为输出管脚rGPGDAT = rGPGDAT & 0xFCFF|0x0100;/配置第8位输出为高电平,第9位输出低电平。rGPGDAT = rGPGDAT & 0x

30、FCFF|0x0200;/配置第8位输出为低电平,第9位输出高电平。#define rGPGCON (*(volatile unsigned *)0x56000060) /Port G control#define rGPGDAT (*(volatile unsigned *)0x56000064) /Port G data#define rGPGUP (*(volatile unsigned *)0x56000068) /Pull-up control Gint i;int main(void)rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000;for(;

31、)rGPGDAT = rGPGDAT & 0xfcff | 0x200;for(i=0;i10000;i+); /延时rGPGDAT = rGPGDAT & 0xfcff | 0x100;for(i=0;i10000;i+); /延时其他的各功能寄存器在2410addr.h中也都有相应的定义,参照该做法,即可把GPI/O管脚配置成输入输出端口,也可把管脚配置成所需的功能管脚。五、 实验步骤1. 本实验使用实验教学系统的CPU板,在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。2. 在PC机并口和实验箱的CPU板上的JTAG接口之间,连

32、接仿真调试电缆。3. 检查连接是否可靠,可靠后,接入电源线,系统上电。4. 打开ADS1.2开发环境,从里面打开IO.mcp项目文件,进行编译。5. 编译通过后,进入ADS1.2调试界面,加载实验程序IO_DataDebug中的映象文件程序映像IO.axf。6. 在ADS调试环境下全速运行映象文件。观察CPU板左下角的LED1、LED2灯轮流的的闪烁!这是对GPGIO口操作的结果。具体实现见程序。六、 参考程序void Main(void) int i;Target_Init();rGPGCON = rGPGCON & 0xfff0ffff | 0x00050000;while(1) for(

33、i=0;i2000000;i+); /延时 rGPGDAT = rGPGDAT & 0xfcff | 0x0200; for(i=0;i2000000;i+); /延时 rGPGDAT = rGPGDAT & 0xfcff | 0x100;实验三 ARM 的中断实验一、 实验目的 1. 掌握 ARM9 的中断原理,能够对 S3C2410 的中断资源及其相关中断寄存器的进行合理配置2. 掌握对 S3C2410 的中断的编程的方法二、 实验内容 1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断 服务子程序使 CPU 板上的 LED 指示灯 LED1、LED2 闪烁。三、 实验设

34、备 1. EL-ARM-830+教学实验箱,PentiumII 以上的 PC 机,仿真调试电缆。2. PC 操作系统 WINXP 或 WIN7,ADS1.2 集成开发环境, 仿真调试驱动程序四、 ARM 的中断原理在 ARM 中,有两类中断,一类是 IRQ,一类是 FIQ,IRQ 是普通中断,FIQ 是快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ 的优先级高于 IRQ。同时,它们都属于 ARM 的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC 指针进而跳入 异常向量的地址处,若是 IRQ 中断,则 PC 指针跳到 0x18 处,

35、若是 FIQ 中断,则跳到 0x1C 处。异常向量地址处,一般存有中断服务子程序的地址,所以,接下来 PC 指针跳入中断服务子程序中。当完成中断服务子程序后,PC 指针会返回到被打断的程序的下一条地址处,继续执行程序。这就是 ARM 中断操作的基本原理。但是,通常由于生产 ARM 处理器的各厂家都集成了很多中断请求源,比如,串口中断、AD 中断、外部中断、定时器中断、DMA 中断等等,所以,很多中断可能同时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断优先级,和访问中断标志位的状态来识别到底哪一个中

36、断发生了。五、 三星的 2410 ARM 处理器的中断的使用首先,ARM920T CPU 的 PSR 寄存器中的 F 位为 1,则 CPU 不会响应中断控 制器的 FIQ 中断,同样,ARM920T CPU 的 PSR 寄存器中的 I 位为 1,则 CPU 也 不会响应中断控制器的 IRQ 中断,为使 CPU 响应中断,须在启动代码中将其设 为 0,以及使 INTMSK 寄存器中的相应位置 0。S3C2410A 共有 56 个中断源,有 26 个中断控制器,外部中断 EXTIN823 共 用一个中断控制器,外部中断 EXTIN47 共用一个中断控制器,9个UART中断分成 3 组,共用 3 个

37、中断控制器,ADC 和触摸屏共用一个中断控制器。见表 2-中断的优先级是由主组号和从 ID 号的级别控制的。中断优先级产生模块如下图所示:图 2-6-1从上图可以看出,中断优先级产生模块共有 7 个判优器,每个判优器是否 使能由寄存器 PRIORITY6:0决定,每个判优器下面有 46 个中断源,这些中 断源对应着 REQ0REQ5 这 6 个优先级,这些优先级由寄存器 PRIORITY20:7的 相应位决定。要正确使用 S3C2410 的中断控制器,必须设置如下的寄存器,如下表 2-6- 1 所示:表 2-6-1SRCPND0x4a000000R/W中断源挂起寄 存 器 , 当 中 断 产

38、生后,相应位置位INTMOD0x4a000004R/W中断模式寄存器,设定 IRQ 或 FIQ模式INTMSK0x4a000008R/W中断屏蔽寄存器,如果相应位置位则该中断被屏蔽PRIORITY0x4a00000cR/W中断优先级控制寄存器,设置中断优先级INTPND0x4a000010R/W中断挂起寄存器,相应位对应正在执行的中断服务INTOFFSET0x4a000014R中断源请求偏移寄存器25第三章 S3C2410A 实验SUBSRCPND0x4a000018R/W子中断源挂起寄存器INTSUBMSK0x4a00001cR/W子中断屏蔽寄存器中断挂起寄存器主要是提供哪个中断有请求的标志

39、寄存器,相应位置 1,则说明有该中断请求产生。若相应位为 0,则无该中断请求产生。 中断模式寄存器主要是配置该中断是 IRQ 型中断,还是 FIQ 型中断。中断屏蔽寄存器的主要功能是屏蔽相应中断的请求,即使中断挂起寄存器的相应位已经置 1,若中断屏蔽寄存器相应位置 1,则中断控制器屏蔽该中断请求,也无法让 CPU 响应该中断。INTPND 为向量 IRQ 中断服务挂起状态寄存器,当向量 IRQ 中断发生时,该寄存器内只有一位被设置,即只有当前要服务的中断标志位置位。通过读它的值,就能判断出哪个中断发生了。在 INTPND 中相应位写入数据,就能清除掉中 断挂起寄存器中的中断请求标志位,以使 C

40、PU 不再响应中断,其实,CPU 响应 中断是看中断挂起寄存器中的请求标志位有没有置位,若置位,又屏蔽位打开, ARM920T 的 PSR 的 F 或 I 为也打开,那么,CPU 就响应中断,否则,有一个条件 不成立,则 CPU 无法响应中断。1. SRCPND源中断指示寄存器SRCPND 寄存器 32 位中的每一位对应着一个中断源,每一位被设置为 1, 则相应的中断源产生中断请求并且等待中断被服务。因此,这个寄存器表明了 哪个中断源在等待中断请求被处理。注意,SRCPND 寄存器的每一位是由中断源 自动设置的,而不管 INTMSK 寄存器中的屏蔽位是否置 1。另外,SRCPND 寄存 器不影

41、响中断控制器的优先级逻辑。在指定中断源的中断服务程序中,SRCPND 寄存器相对应的位必须被清除,这样才可以正确响应来自同一中断源的中断请求。如果从 ISR 返回而没有清除 相应的位,也就是RCPND 寄存器中的对应的位还是1,那么就会一直响应这个中断请求。 SRCPND 中相应的中断位清除的时间依赖于用户的需求,如果想要从同一中断源接收另一次有效的中断请求,你在第一次就应该清除相应的位,并且使能 中断。用户可以通过向SRCPND寄存器的相应位写“1”,这样可以清除该位。下表为 SRCPND 寄存器的地址和位定义说明RegisterAddressR/WDescriptionReset Valu

42、eSRCPND0X4A000000R/WIndicatetheinterruptrequest status.0=Theinterrupthasnot been requested.1 = The interrupt source hasasserted the interrupt request.0x000000002. INTMOD中断模式寄存器中断模式寄存器(INTMOD )的 32 位中的每一位对应一个中断源, 当INTMOD 的每一位都设置位1, 则 ARM 内核将以 FIQ 模式相应中断,否则将以IRQ 模式相应中断。INTMOD 寄存器的定义如下表:RegisterAddress

43、R/WDescriptionReset ValueNTMOD0X4A000004R/WInterrupt mode regiseter.0 = IRQ mode 1 = FIQ mode0x000000003. INTPND中断请求寄存器中断请求寄存器 32 位中的每一位对应着相应的中断请求, 经过优先级逻 辑后, INTPND 寄存器只能有一位被设置为 1,并且向 ARM 产生中断请求。在 IRQ 中断服务子程序,能够读取这个寄存器的值来决定 32 个中断源的那一个 中断被服务。同SRCPND寄存器,在中断服务子程序里,这个寄存器的相应位需要被清 除。我们可以向 INTPND 寄存器写一个数

44、据1,来清除寄存器的指定位。4. INTMSK中断屏蔽寄存器在INTMSK 寄存器中,32 位依次对应着每个中断源,如果指定位被设为 1, ARM 将不响应中断源的中断请求(注意,即使在 SRCPND 相应的位被置位 1 的 条件下也不响应) 。如果屏蔽位为 0,则中断请求可以被响应。5. PRIORITY 优先级寄存器RegisterAddressR/WDescriptionReset ValuePRIORITY0x4A00000CR/WIRQ priority control register0x7FPRIORITYBitDescriptionInitialStateARB_SEL620:

45、19Arbiter 6 group priority order set00 = REQ 0-1-2-3-4-501 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-511 = REQ 0-4-1-2-3-5ARB_SEL518:17Arbiter 5 group priority order set00 = REQ 1-2-3-401 = REQ 2-3-4-110 = REQ 3-4-1-211 = REQ 4-1-2-3ARB_SEL416:15Arbiter 4 group priority order set00 = REQ 0-1-2-3-4-5 01 =

46、REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL314:13Arbiter 3 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL212:11Arbiter 2 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = R

47、EQ 0-4-1-2-3-5ARB_SEL110:9Arbiter 1 group priority order set00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-510 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5ARB_SEL08:7Arbiter 0 group priority order set00 = REQ 1-2-3-4 01 = REQ 2-3-4-110 = REQ 3-4-1-2 11 = REQ 4-1-2-3ARB_MODE66Arbiter 6 group priority rotate enabl

48、e0 = Priority does not rotate1 = Priority rotate enable27第三章 S3C2410A 实验ARB_MODE55Arbiter 5 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE44Arbiter 4 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE33Arbiter 3 grou

49、p priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE22Arbiter 2 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE11Arbiter 1 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enableARB_MODE00Arbiter

50、0 group priority rotate enable0 = Priority does not rotate1 = Priority rotate enable6. INTOFFSET中断偏移寄存器中断偏移寄存器 INTOFFSET 中的值显示了 INTPND 寄存器中哪一个 IRQ 的 中断请求,这个位在清除 SRCPND 和 INTPND 后将自动清除。7. S3C2440A 子中断列表8. SUBSRCPND次级源中断指示寄存器9. INTSUBMSK次级中断屏蔽寄存器 表 2-6-2第三章 S3C2410A 实验2910. EXTINTn外部中断控制寄存器 n外部中断控制寄存器

51、可以控制外部中断信号有效方式, 外部中断信号有效 方式可以设置为电平触发和边沿触发,具体内容见下表。EXTERNAL INTERRUPT CONTROL REGISTER (EXTINTn)The 24 external interrupts can be requested by various signaling methods. The EXTINTn configures the signaling method between the level trigger and edge trigger for the external interrupt request, and also

52、 configures the signal polarity.To recognize the level interrupt, the valid logic level on EXTINTn pin must be retained at least for 40ns because of the noise filter (EINT15:0).EXTINT0BitDescriptionEINT730:28Set the signaling method of the EINT7.000 = Low level 001 = High level 01x = Falling edge tr

53、iggered10x = Rising edge triggered11x = Both edge triggered30S3C2410 实验指导书EINT626:24Set the signaling method of the EINT6.000 = Low level 001 = High level01x = Falling edge triggered 10x = Rising edge triggered11x = Both edge triggeredEINT522:20Set the signaling method of the EINT5.000 = Low level 001 = High level01x = Falling edge triggered 10x = Rising edge triggered11x = Both edge triggeredEINT418:16Set the signaling method of the EINT4.000 = Low level 001 = High level01x = Falling edge triggered 10x = Rising

温馨提示

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

评论

0/150

提交评论