中断编程示例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
‹#›
中断示例
• 完成一个S3C2410芯片中断源的中断控 制程序的编写,需要完成上述的四部分 编程内容。第一部分的实际上是引导程 序的部分功能,已经在第三讲介绍。下 面介绍其他几部分的编程内容。 • 实例详见附录中的实例。
‹#›
‹#›
ARM9中断响应的过 程
• ARM9 微处理器响应 IRQ 异常中断时,需要完成保护 现场及进入 IRQ 异常模式等操作。所有这些操作描 述如下。 • · 链接寄存器 R14_irq 保存有:被执行指令地址+ 4 ; • · 状态寄存器SPSR_irq保存有:CPSR寄存器的内容 • /* 系统进入IRQ中断模式 */ • · 状态寄存器CPSR的位[4:0]被赋予:0b10010 • /* 系统切换到ARM状态 */ • · 寄存器CPSR的位[5]清0,但位[6]不变
5.3 中断编程示例
‹#›
中断编程实例
• 在嵌入式系统设计时,为了提高 I/O 端口或部件处理的实时性,往往采 用中断控制方式。 S3C2410 芯片中使用 了 ARM920T 核,因此,在完成 I/O 端口或 部件的中断服务程序设计时,除了要了 解各中断控制寄存器的格式外,还必须 了 解 ARM920T 核 的 IRQ 异 常 中 断 模 式 和 FIQ 异常中断模式的处理过程。因为, S3C2410 芯片的 56 个中断源均是按照 IRQ 中断模式或FIQ中断模式处理的。
‹#›
(续)
·设置S3C2410芯片中56个中断源的中断向量。 通常需要利用未决寄存器或地址偏移寄存器来 计算,若中断号还对应有子中断(如中断号为 5时,对应EINT8_23),需求出子中断的地址 偏移。 ·中断控制初始化。主要是初始化S3C2410芯片 内部的中断控制的寄存器。针对某个具体的中 断源,设置其中断控制模式、中断是否屏蔽、 中断优先级等。
Baidu Nhomakorabea
‹#›
(续)
• · 完成I/O端口或部件具体操作功能的中断服务 程序。中断服务程序中,在返回之前必须对 中断未决寄存器( INTPND)的相应未决位进 行清除操作。 • 上述四部分的程序,第一部分应属于系统引 导程序完成的功能。用户在开发嵌入式系统 时若使用的是现成硬件平台,则用户对第一 部分的程序通常不需要进行编写,因为现成 的硬件平台已带有系统引导程序,用户主要 需编写的是后三部分的程序。
‹#›
(续)
• • • • • • • /* 设置IRQ中断禁止位 */ ·寄存器CPSR的位[7]置1 ·如果采用高向量地址配置,那么 PC寄存器被赋予0xffff0018 否则 PC寄存器被赋予0x00000018 因为,ARM920T核会把当前PC 的值保存到R14_irq中,该值 在ARM状态下,对应当前指令后的第2条指令的地址。IRQ中 断返回时,就需要通过下面指令来实现回到断点下第1条指 令处执行: • SUBS PC, LR, #4 • 同时将SPSR_irq内容复制到当前CPSR中。
‹#›
中断编程模式
• S3C2410 芯片的 I/O 端口或部件若采用中 断方式控制操作时,其编程的内容实际 上涉及四部分,既: • · 建立系统中断向量表,并且设置 ARM920T 核的程序状态寄存器 CPSR 中的 F 位和I位。一般情况下中断均需使用数据 栈,因此,还需建立用户数据栈。这一 部分内容对应的程序指令,通常编写在 系统引导程序中。
中断示例
• 完成一个S3C2410芯片中断源的中断控 制程序的编写,需要完成上述的四部分 编程内容。第一部分的实际上是引导程 序的部分功能,已经在第三讲介绍。下 面介绍其他几部分的编程内容。 • 实例详见附录中的实例。
‹#›
‹#›
ARM9中断响应的过 程
• ARM9 微处理器响应 IRQ 异常中断时,需要完成保护 现场及进入 IRQ 异常模式等操作。所有这些操作描 述如下。 • · 链接寄存器 R14_irq 保存有:被执行指令地址+ 4 ; • · 状态寄存器SPSR_irq保存有:CPSR寄存器的内容 • /* 系统进入IRQ中断模式 */ • · 状态寄存器CPSR的位[4:0]被赋予:0b10010 • /* 系统切换到ARM状态 */ • · 寄存器CPSR的位[5]清0,但位[6]不变
5.3 中断编程示例
‹#›
中断编程实例
• 在嵌入式系统设计时,为了提高 I/O 端口或部件处理的实时性,往往采 用中断控制方式。 S3C2410 芯片中使用 了 ARM920T 核,因此,在完成 I/O 端口或 部件的中断服务程序设计时,除了要了 解各中断控制寄存器的格式外,还必须 了 解 ARM920T 核 的 IRQ 异 常 中 断 模 式 和 FIQ 异常中断模式的处理过程。因为, S3C2410 芯片的 56 个中断源均是按照 IRQ 中断模式或FIQ中断模式处理的。
‹#›
(续)
·设置S3C2410芯片中56个中断源的中断向量。 通常需要利用未决寄存器或地址偏移寄存器来 计算,若中断号还对应有子中断(如中断号为 5时,对应EINT8_23),需求出子中断的地址 偏移。 ·中断控制初始化。主要是初始化S3C2410芯片 内部的中断控制的寄存器。针对某个具体的中 断源,设置其中断控制模式、中断是否屏蔽、 中断优先级等。
Baidu Nhomakorabea
‹#›
(续)
• · 完成I/O端口或部件具体操作功能的中断服务 程序。中断服务程序中,在返回之前必须对 中断未决寄存器( INTPND)的相应未决位进 行清除操作。 • 上述四部分的程序,第一部分应属于系统引 导程序完成的功能。用户在开发嵌入式系统 时若使用的是现成硬件平台,则用户对第一 部分的程序通常不需要进行编写,因为现成 的硬件平台已带有系统引导程序,用户主要 需编写的是后三部分的程序。
‹#›
(续)
• • • • • • • /* 设置IRQ中断禁止位 */ ·寄存器CPSR的位[7]置1 ·如果采用高向量地址配置,那么 PC寄存器被赋予0xffff0018 否则 PC寄存器被赋予0x00000018 因为,ARM920T核会把当前PC 的值保存到R14_irq中,该值 在ARM状态下,对应当前指令后的第2条指令的地址。IRQ中 断返回时,就需要通过下面指令来实现回到断点下第1条指 令处执行: • SUBS PC, LR, #4 • 同时将SPSR_irq内容复制到当前CPSR中。
‹#›
中断编程模式
• S3C2410 芯片的 I/O 端口或部件若采用中 断方式控制操作时,其编程的内容实际 上涉及四部分,既: • · 建立系统中断向量表,并且设置 ARM920T 核的程序状态寄存器 CPSR 中的 F 位和I位。一般情况下中断均需使用数据 栈,因此,还需建立用户数据栈。这一 部分内容对应的程序指令,通常编写在 系统引导程序中。