嵌入式学习笔记(31)异常向量表的编程处理

2023-09-14 10:25:50

6.5.1像内存一样去访问异常向量表

(1)S5PV210的异常向量表可以改变(在CP15协处理器中),以适应操作系统的需求。但是目前系统刚启动,此时DRAM尚未初始化,程序哦都市在iSRAM中运行。210在iSRAM中设置了异常向量表,供暂时性使用。

(2)查210的iROM application note文档中iRAM的地址分配,可知,iRAM中的异常向量表起始地址为0xd0037400。知道了异常向量表的起始地址后,各个异常的对应地址的入口就知道了。

6.5.2函数名的实质就是函数的首地址

(1)函数名在C语言中的理解方法和变量名其实没有区别。编译器会把这个函数的函数名对应的代码段和这个函数的函数名(实质是符号)对应起来,等我们在使用这个函数名符号时,编译器会将函数的函数体实际上做替换。因为函数体都不只4个字节,而函数名这个符号只能对应1个地址,所以实际对应的是函数体那一个代码段的首地址。

(2)拿C语言中的语法来讲,函数名就是这个函数的函数指针。

总结:当我们将异常处理程序的首地址和异常向量表绑定后,异常处理初步阶段就完成了。到目前可以保证相应异常发生后,硬件自动跳转到对应异常向量表入口去执行时,可以执行我们事先绑定的函数。

6.5.3为什么中断处理要先在汇编中进行

(1)中断处理要注意保护现场(中断从SVC模式来,则保存SVC模式下的必要寄存器的值)和恢复现场(中断处理完成后,准备返回SVC模式前,要将保存的SVC模式下的必要寄存器的值恢复回去,不然到了SVC模式后寄存器的值乱了,SVC模式下原来正在进行的常规任务就被你搞坏了)

(2)保存现场包括:第一:设置IRQ栈;第二,保存LR;第三,保存R0~R12

(3)为什么要保存LR寄存器?要考虑中断返回的问题。中断ISR执行完成后如何返回SVC模式下去接着执行原来的代码。中断返回其实取决于我们进入中断时如何保存现场。中断返回时关键的2个寄存器就是PC和CPSR。所以我们在进入IRQ模式时,应该将SVC模式下的下一句指令的地址(中断返回地址)和CPSR保存起来,将来恢复时才可以将中断返回地址给PC,将保存的CPSR给CPSR。

(4)中断返回地址就保存在LR中,而CPSR(自动)保存在(IRQ模式下的)SPSR中。

6.5.4汇编保存现场和恢复现场

(1)保护现场关键是保存:中断处理程序的返回地址,r0-r12(cpsr是自动保存的)

(2)恢复现场主要是恢复:r0-r12,pc,cpsr

  嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击这里

更多推荐

系统架构设计师-数据库系统(3)

目录一、数据控制1、安全性2、完整性3、并发控制4、故障恢复二、数据库设计概述1、数据库设计关注的问题2、数据库性能优化3、规范化与反规范化一、数据控制1、安全性2、完整性(1)实体完整性约束:规定基本关系的主属性不能取空值。(2)参照完整性约束:关系与关系间的引用,其他关系的主键或空值。(3)用户自定义完整性约束:应

知识图谱:知识表示发展史

​数据是众多行业最核心的资产,人工智能技术与数据的深度融合也成为各大行业机构的重点关注内容,在多种人工智能的技术中,知识图谱因其能够更好的表达业务场景的多样全貌,可以更好的服务于人工智能时代的分析与决策场景,成为近年来的技术创新热点之一。知识的概念知识表示就是对知识的一种描述,或者说是对知识的一组约定,一种计算机可以接

论文阅读《ICDE2023:Relational Message Passing for Fully Inductive Knowledge Graph Completion》

论文链接工作简介在知识图谱补全(KGC)中,预测涉及新兴实体和/或关系的三元组,这是在学习KG嵌入时看不到的,已成为一个关键挑战。带有消息传递的子图推理是一个很有前途和流行的解决方案。最近的一些方法已经取得了很好的性能,但它们(1)通常只能预测单独涉及未见过的实体的三元组,无法解决更现实的同时具有未见过的实体和未见过的

【JavaEE】多线程(四)

多线程(四)在开始讲之前,我们先来回顾回顾前三篇所讲过的内容~线程的概念并发编程,多进程,比较重,频繁创建销毁,开销大Thread的使用创建线程继承Thread实现Runnable继承Thread(匿名内部类)实现Runnable(匿名内部类)使用lambda'Thread中的重要性启动线程start终止线程isInt

RocketMQ 核心编程模型以及生产环境最佳实践

文章目录1、RocketMQ的消息模型2、深入理解RocketMQ的消息模型2.1、RocketMQ客户端基本流程2.2、消息确认机制2.2.1、发送消息的方式第一种称为单向发送第二种称为同步发送第三种称为异步发送2.2.2、状态确认机制2.2.3、消费者也可以自行指定起始消费位点2.3、广播消息2.4、顺序消息机制1

GPT会统治人类吗

一前言花了大概两天时间看完《这就是ChatGPT》,触动还是挺大的,让我静下来,认真地想一想,是否真正理解了ChatGPT,又能给我们以什么样的启发。二思考在工作和生活中,使用ChatGPT或文心一言,逐渐形成了习惯,总想听听它们的意见。无论是小学作文还是小的编程测试例子,大部分情况下还是能够给我一个比较靠谱的意见,而

SpringBoot【SpringBoot介绍、SpringBoot入门、SpringBoot原理分析、SpringBoot原理分析】(一)-全面详解(学习总结---从入门到深化)

目录SpringBoot介绍_Spring缺点分析SpringBoot介绍_什么是SpringBootSpringBoot介绍_SpringBoot核心功能SpringBoot入门_通过官网搭建项目SpringBoot入门_通过IDEA脚手架搭建项目SpringBoot入门_SpringBoot项目结构SpringBo

超硬核的Move Dev Meetup上海线下交流会圆满结束

北京时间9月16日下午2–6点,由MoveFunsDAO联合其他组织举办的Move开发者线下交流会在上海悦达国际大厦圆满完成。此次活动也是上海区块链周的周边活动,受到了Web3从业者的广泛关注。本场交流会邀请了OpenBuild技术社区主理人Ian主持,50余位参会者来到现场参与此次交流。以下是嘉宾分享:Jolesta

基础算法--双指针算法

双指针算法1.基本介绍严格的来说,双指针只能说是是算法中的一种技巧。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。最常见的双指针算法有两种:一种是,在一个序列里边,用两个指针维护一段区间;另一种是,在两个序列里

药品咨询报告合集整理平台打包(一共36597份)【专题推荐】

<医药行业从业者必看>笔者今天分享高价值医药行业报告36500余份的获取/下载方法,报告涵盖了医药细分领域研究报告+药品报告(所有上市药品)+医药行业分析报告+医药环境观察报告+药品市场调研报告+药品靶点研究报告+医药白皮书;数据来源于药融云自产报告&药品报告自动生成系统(最新日期)。①报告下载途径药品报告:药融云医药

Linux文件操作基础:快速入门指南和实用技巧

文章目录linux文件操作基础I.查看文件和目录1.`ls`命令用法`ls`命令详细介绍`pwd`命令用法:`pwd`命令详细介绍`cd`命令用法:`cd`命令详细介绍:II.创建文件和目录`touch`命令用法`touch`命令详细介绍III.复制、移动和重命名`cp`命令用法`cp`命令详细介绍IV.删除文件和目录

热文推荐