嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.

Slides:



Advertisements
Similar presentations
我国国有银行 资本构成及资本充足率变化 小组成员:金融 尹佳裕 王淼 刘钰 金融 吴昱.
Advertisements

足太阴脾经在足大趾与足阳明胃经衔接, 在胸部与手少阴心经相接。 联系的脏腑器官有 咽、舌,属脾,络胃,注心中。 络脉从本经分出,走向足阳明经,进入腹腔,联络肠胃。 经别结于咽,贯舌本。 经筋结于髀,聚于阴器,上腹,结于脐,散于胸中。 第四章 足太阴经络与腧穴 第一节 足太阴经络.
600年前,鄭和率領世界上最強大的艦隊,浩浩蕩蕩的駛入印度洋,展開一場「文化帝國」的海上大秀。
103年度學生健康檢查.
ARM 编程技巧.
NEUSOFT Institute of information Technology .ChengDu
第二章 嵌入式处理器.
农业银行网上签约流程 宁夏金溢投资 内部资料 1.
专题三 生物圈中的绿色植物.
廉政會報專題報告 農地重劃工程 施工常見缺失 報告:吳東霖 製作:張昌鈴 日期:103年12月23日.
專案製作經驗談.
中醫養生 穴位保健按摩 長庚醫院 桃園分院 中醫骨傷科 主治醫師 長庚大學、長庚技術學院 講師 中華民國中醫傷科醫學會 理事
宁波万里国际学校 陈湘龙
第3章 基于ARM的处理器体系结构1 主讲 马洪连.
金門縣重大空難應變機制-消防局 壹、消防搶救、滅火、緊急救護 一、派遣作為:
第2章 Cortex-M3概览.
微机原理与接口技术 第二章 ARM微处理器硬件结构
足太阳膀胱经.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
教师队伍 冷传莉 课程负责人 冷传莉,女,1969年8月生,汉族,山东省蓬莱人,中共党员,教授,贵州大学法学院副院长,硕士生导师,武汉大学法学院民商法博士研究生。 兼任贵州大学民法经济法研究所所长,中国法学会民法学、商法学研究会全国理事,贵州省人民政府行政复议委员会委员,贵州省社科院法学研究所和贵州省社科院民商法研究中心特聘法学研究员,贵州省企业法制研究院副院长,贵阳市人民政府法律顾问,贵阳仲裁研究会副会长,贵阳仲裁委员会资深仲裁员,贵阳法制频道法律顾问。
ARM体系结构.
ARM及Thumb指令集.
ARM 架构.
C H A P T E R 11 体系结构对操作系统的支持.
主讲教师:吴琼 微信群:C语言2016 QQ群: 密码scu2016 昵称:“真名+学号”
嵌入式系统讲义 第3章 ARM指令系统 周国运
Timer & KEYPAD 11/24.
第3章 ARM体系结构.
第五章 MSP430中斷式數位I/O.
Game Boy Architecture 计算机体系结构课程报告 --刘继元.
ARM CPU從高階語言到Machine Code
异 常 处 理.
College of Computer Science & Technology
CH.8 硬體管理.
第四章 BootLoader开发 附-s3c2410/s3c2440中断控制器介绍
第4章 汇编语言程序设计 汇编语言源程序格式 汇编语言上机过程 汇编语言与C语言混合编程技术.
嵌入式系統概論-以S3C2440核心為架構 第1章 嵌入式系統概念.
在專用的嵌入式板子運行 GNU/Linux 系統已經變得越來越流行。一個嵌入式 Linux 系統從軟體的角度看通常可以分為四個層次:
聊城大学物理科学与信息工程学院 微控制器原理 聊城大学物理科学与信息工程学院
嵌入式体系结构与应用 第三章-ARM指令系统(ARMv4T).
國內基金無實體登錄交付暨帳簿劃撥作業 臺灣集中保管結算所 中華民國100年11 月.
第2章 ARM微处理器硬件结构 计算机体系结构分类 ARM版本及系列 ARM处理器结构 存储系统机制.
第 13 章 中断系统.
ARM處理器 定址方式.
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
嵌入式系统教案 武汉创维特信息技术有限公司 2019/1/18.
南瑞学堂 学员简明操作指南 上海时代光华教育发展有限公司 2013年.
(第2版).
第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块
(第2版).
第2章 ARM体系结构.
ARM 架构.
ARM 架构.
ARM及Thumb指令集 (练习).
2.8       智能电器 本节讲授内容: 一.智能电器的定义 二.智能电器的组成 三.智能电器的种类 四.智能化电器的特点 五.智能化开关举例.
第2章ARM/THUMB微处理器结构及指令系统
第3章 ARM微處理器的指令集.
ARM Developer Suite 介 绍.
使用服务平台办理离校 操作指南.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
微處理機 Microprocessor (100上)
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
学年第一学期领取教材明细查询的通知 学年第一学期学生使用的教材均在网上平台公示。现将有关事项通知如下:
ARM简介及BootLoader介绍 黄大荣
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
真信心的果效 雅各書2:
台灣房價指數 台灣房屋 中央大學 2011年7月29日.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/10/1.
Presentation transcript:

嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29

提纲 第六章 异常中断处理 1 ARM 异常中断处理概述 2 异常的响应和退出 3 中断处理程序的安装 4 各种异常中断的处理

ARM异常中断处理概述 ARM异常中断处理概述 当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。

ARM体系结构所支持的异常类型 ARM异常中断处理概述 异常类型 具体含义 复位 复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行。 未定义指令 遇到不能处理的指令时,产生未定义指令异常。 软件中断 执行SWI指令产生,用于用户模式下的程序调用特权操作指令。 指令预取中止 处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常。 数据中止 处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。 IRQ 外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。 FIQ 快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。

异常向量表(Exception Vectors) ARM异常中断处理概述 异常向量表(Exception Vectors) 地 址 异 常 进入模式 0x0000,0000 复位 管理模式 0x0000,0004 未定义指令 未定义模式 0x0000,0008 软件中断 0x0000,000C 中止(预取指令) 中止模式 0x0000,0010 中止(数据) 0x0000,0014 保留 0x0000,0018 IRQ 0x0000,001C FIQ

异常优先级(Exception Priorities) ARM异常中断处理概述 异常优先级(Exception Priorities) 优先级 异 常 1(最高) 复位 2 数据中止 3 FIQ 4 IRQ 5 预取指令中止 6(最低) 未定义指令、SWI

对异常的响应 对异常的响应 当一个异常出现以后,ARM微处理器会执行以下几步操作 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。 将CPSR复制到相应的SPSR中。 根据异常类型,强制设置CPSR的运行模式位。 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。 若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关); 若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。 例如:在软件中断异常SWI,指令 MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。

对异常的响应 异常响应伪代码 处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。ARM微处理器对异常的响应过程用伪码可以描述为: R14_<Exception_Mode> = Return Link SPSR_<Exception_Mode> = CPSR CPSR[4:0] = Exception Mode Number CPSR[5] = 0 If <Exception_Mode> == Reset or FIQ then CPSR[6] = 1 CPSR[7] = 1 PC = Exception Vector Address

从异常返回 对异常的响应 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: 将连接寄存器LR的值减去相应的偏移量后送到PC中。 将SPSR复制回CPSR中。 若在进入异常处理时设置了中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

中断处理程序的安装 中断处理程序的安装 一般在系统的启动代码中安装异常处理程序。大致可以分为两种情况: 0地址处存储器为ROM/FLASH 0地址处存储器为RAM

在ROM/FLASH中安装中断处理程序 中断处理程序的安装 在ROM/FLASH的异常中断向量表中,可以使用LDR指令直接向程序计数器PC中赋值,也可以直接使用跳转指令转到异常中断处理程序。 使用LDR指令: Vector_entry: LDR PC, Reset_Handle LDR PC, Undef_Handle LDR PC, SWI_Handle

在ROM/FLASH中安装中断处理程序 中断处理程序的安装 LDR PC, Prefetch_Handle LDR PC, Abort_Handle NOP LDR PC, IRQ_Handle LDR PC, FIQ_Handle Vector_table: Reset_Handle: .LONG Start_Boot Undef_Handle: .LONG Undef_Isr ……

在ROM/FLASH中安装中断处理程序 中断处理程序的安装 使用跳转指令: Vector_entry: B Reset_Handle B Undef_Handle B SWI_Handle B Prefetch_Handle B Abort_Handle NOP B IRQ_Handle B FIQ_Handle

RAM中安装中断处理程序 中断处理程序的安装 当0地址处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且必须把中断向量从ROM中复制到RAM地址的0地址处。 MOV r8, #0 ADR r9, Vector_Init_Block LDMIA r9!, {r0-r7} STMIA r8!, {r0-r7}

在C程序中安装异常中断处理程序 中断处理程序的安装 中断向量表使用数据处理指令的情况 在中断向量vector处安装location处指向的处理程序 unsigned ist_handler( unsigned location, unsigned *vector) { unsigned vec, oldvec; vec = (location – (unsigned)vector – 0x08) | 0xe59ff000; oldvec = *vector; *vector = vec; return oldvec; }

在C程序中安装异常中断处理程序 中断处理程序的安装 中断向量表使用跳转指令的情况 在中断向量vector处安装routine处理程序 unsigned ist_handler( unsigned routine, unsigned *vector) { unsigned vec, oldvec; vec = ((routine – (vector – 0x08)>>2); vec = 0xea000000 | vec; oldvec = *vector; *vector = vec; return oldvec; }

ABORT(中止) 各种异常中断的处理 产生中止异常意味着对存储器的访问失败。ARM微处理器在存储器访问周期内检查是否发生中止异常。 中止异常包括两种类型: 指令预取中止:发生在指令预取时。 数据中止:发生在数据访问时。

指令预取异常中断的处理 各种异常中断的处理 系统中不包含MMU时,指令预取中止异常处理程序只是简单的报告错误,然后退出; 在使用MMU的系统中,则发生错误的指令触发虚拟地址失效,在该失效处理程序中重新读取该指令。指令预取异常是在有错误的指令被执行时才触发的。当异常发生时,Lr_abt寄存器没有被更新,它指向引起该指令的后面1条指令。 异常的返回地址应该是该有问题的指令,即Lr_abt-4处。

数据访问异常中断的处理 各种异常中断的处理 系统中不包含MMU时,数据访问中止异常处理程序只是简单的报告错误,然后退出; 在使用MMU的系统中,数据访问中止异常处理程序要处理该数据访问异常。当异常发生时,Lr_abt寄存器已经被更新,它指向引起该异常的指令的后面2条指令。 异常的返回地址是引起数据访问中止异常中断的指令,即Lr_abt-8处。

ABORT(中止)处理函数的退出 各种异常中断的处理 当确定了中止的原因后,Abort处理程序均可以执行以下指令从中止模式返回,无论是在ARM状态还是Thumb状态: SUBS PC, R14_abt, #4 ;指令预取中止 SUBS PC, R14_abt, #8 ;数据中止

FIQ(Fast Interrupt Request) 各种异常中断的处理 FIQ(Fast Interrupt Request) FIQ异常是为了支持数据传输或者通道处理而设计的。 若将CPSR的F位置为1,则会禁止FIQ中断,若将CPSR的F位清零,处理器会在指令执行时检查FIQ的输入。注意只有在特权模式下才能改变F位的状态。 可由外部通过对处理器上的nFIQ引脚输入低电平产生FIQ。不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处理程序均可以执行以下指令从FIQ模式返回: SUBS PC,R14_fiq ,#4

IRQ(Interrupt Request) 各种异常中断的处理 IRQ(Interrupt Request) IRQ异常属于正常的中断请求,可通过对处理器的nIRQ引脚输入低电平产生,IRQ的优先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。 若将CPSR的I位置为1,则会禁止IRQ中断,若将CPSR的I位清零,处理器会在指令执行完之前检查IRQ的输入。注意只有在特权模式下才能改变I位的状态。 不管是在ARM状态还是在Thumb状态下进入IRQ模式,IRQ处理程序均可以执行以下指令从IRQ模式返回: SUBS PC , R14_irq , #4

IRQ/FIQ处理程序示例 各种异常中断的处理 STMFD sp!, {r0-r12, lr} 调用IRQ/FIQ处理程序 LDMFD sp!, {r0-r12, lr} SUBS pc, lr, #4

Undefined Instruction(未定义指令) 各种异常中断的处理 Undefined Instruction(未定义指令) 当ARM处理器遇到不能处理的指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。 处理器执行以下程序返回,无论是在ARM状态还是Thumb状态: MOVS PC, R14_und 以上指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。

各种异常中断的处理 SWI(软件中断) 软件中断指令(SWI)用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令可以从SWI模式返回,无论是在ARM状态还是Thumb状态: MOVS PC , R14_svc 以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc) 的值,并返回到SWI的下一条指令。

SWI一级处理程序 各种异常中断的处理 STMFD sp!, {r0-r12, lr} LDR r0, [lr, #-4] BIC r0, r0, #0xFF000000 在此调用二级处理程序 LDMFD sp!, {r0-r12, lr}^

SWI二级处理程序 各种异常中断的处理 CMP r0, #maxSWI LDRLS pc, [pc, r0, LSL #2] B SWIOutofRange SWIJmpTable: .LONG SWInum0 .LONG SWInum1 .LONG SWInum2 ……

异常进入/退出小节 各种异常中断的处理 返回指令 以前的状态 注意 ARM R14_x Thumb R14_x BL MOV PC,R14   返回指令 以前的状态 注意 ARM R14_x Thumb R14_x BL MOV PC,R14 PC+4 PC+2 1 SWI MOVS PC,R14_svc UDEF MOVS PC,R14_und FIQ SUBS PC,R14_fiq,#4 2 IRQ SUBS PC,R14_irq,#4 PABT SUBS PC,R14_abt,#4 DABT SUBS PC,R14_abt,#8 PC+8 3 RESET NA - 4

注意事项 各种异常中断的处理 在此PC应是具有预取中止的BL/SWI/未定义指令所取的地址。 在此PC是从FIQ或IRQ取得不能执行的指令的地址。 在此PC是产生数据中止的加载或存储指令的地址。 系统复位时,保存在R14_svc中的值是不可预知的。