ARM异常向量表初始化

发布者:心满愿望最新更新时间:2016-07-25 来源: eefocus关键字:ARM  异常向量表  初始化 手机看文章 扫描二维码
随时随地手机看文章
中断向量表的程序设计如下:

     CODE32
     AREA    Startup,CODE,READONLY
; /* 异常向量表 */
Vectors
        LDR     PC, ResetAddr         ;把ResetAdde地址上的存储器的内容装载到PC上
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0
        LDR     PC, IRQ_Addr
        LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit  ;为ResetAddr分配以ResetInit地址值,
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     IRQ_Exception
FIQ_Addr            DCD     FIQ_Handler

此时ResetAddr实质上只作为一个指针(指向ResetInit),没有分配空间,

ResetAddr地址的存储器上装载的是ResetInit的地址。

ResetInit
        BL      InitStack               ; 初始化堆栈                                              
        BL      TargetBusInit           ; 总线系统初始化 (函数中不允许堆栈操作)
   BL  TargetResetInit   ; 针对目标板的系统初始化  

以ResetInit为例,存储器空间分配如下所示:

ARM异常向量表初始化 - 路雷米 - 路雷米的博客

 

注意中断向量表要存放在代码段startup的开始处(Entry开始),而程序被链接时,该startup代码段被链接在整个程序的入口地址。

=========================

1. undef exception handler

    当前指令,如果CPU不支持,它会自动将该指令交给Co-processor.(如:MMU, FPU) 处理。

   如果Co-processor也无法识别这条指令,则产生异常.

2. SWI handler

   当执行SWI指令时,产生这种中断.

3. Data abort

    由数据异常触发.

   通常有3种指令引发数据异常, 这些指令都是访存操作.(都是由MMU引入后才可能会发生的情况)

  LDR / STR

  SWAP

  LDM / STM

 

  MMU的失效类型,又分为5种:

  存储访问失效

  地址对齐失效

  地址变换失效

  域控制器失效

  访问控制权限失效

 

  因此当异常发生后,需要通过访问CP15来获知异常产生的具体原因和情况。

4. Pretetch Abort

  对于ARM处理器来说,由于其内部使用了哈佛结构---独立的数据的指令总线.

  因此,在数据/指令的读取过程中产生的异常也就很自然地可以区分开来

  本质上而言,这些异常都是同属于存储访问失败产生的异常,因此这些异常都由MMU相关,在ARM手册中DataAbort和PrefetchAbort都

  称为Memory abort。

 

  Prefetch也就是在预取指令的动作后产生的,当处理器运行到这个无效的指令时(这个无效与undefined exception中的不可识别不同,

  是指不存在或是无法得到)就触发该异常。

关键字:ARM  异常向量表  初始化 引用地址:ARM异常向量表初始化

上一篇:S3C2410 GPIO接口
下一篇:基于ARM的硬件启动程序设计-分配中断向量表

推荐阅读最新更新时间:2024-03-16 15:01

Cortex-M0已撬开ARM架构灵活之门?
  就在DSP+MCU日渐成为数字控制主流时,恩智浦LPC4000的出现,似乎打破了这个规则。   这个全球首次采用ARM Cortex-M4和Cortex-M0双核架构的非对称数字信号控制器,为DSP和MCU应用开发提供了单一的架构和环境。“LPC4000不只是一款Cortex-M4处理器,而是针对微控制器和DSP应用推出的一款多核处理产品。配置型外设可以降低LPC4000用户对外部ASIC功能的依赖,”恩智浦半导体副总裁暨全球微控制器产品线总经理Geoff Lees解释说,“目前我们推出的产品只是M4+1个M0架构,未来随着用户需求的增加,我们还有可能继续增加作为协处理器的M0数量,变成一个M4 + N个M0的结
[单片机]
全新Arm IP保护物联网设备免疫日益普遍的物理威胁
新闻摘要: 全新Arm Cortex-M35P处理器是首款同时搭载防篡改技术和强大软件隔离功能的Cortex-M系列处理器,为诸如智能表计、门锁、汽车等新兴应用带来智能卡级别的安全保障 增强版安全IP通过提供更高级别的攻击保护来防御包括功耗和电磁分析在内的近距离侧信道攻击,从而保护芯片免遭日益普遍的物理威胁 全新IP套件帮助Arm合作伙伴达到灵活而强大的物理安全级别,从而实现新兴物联网 应用 北京– 2018年5月10日–Arm在去年的Arm TechCon大会上发布了 《物联网安全宣言 》 (Arm Security Manifesto)。对于Arm而言,若要在2035年实现1万亿台互连互通设备的愿景,那么
[物联网]
全新<font color='red'>Arm</font> IP保护物联网设备免疫日益普遍的物理威胁
ARM启动收购 布局窄屏物联网(NB-IoT)
随着窄频物联网(NarrowBand-IoT;NB-IoT)规格确定,ARM也收购了两家相关领域的公司,积极布局。 IoT News报导,NB-IoT提供低功耗、宽领域的连线,可以连结大范围中的各种装置。规格的确定,是物联网产业的重要里程碑,而ARM也希望结合他们的芯片安全技术和Mistbase与NextG-Com的工程专业,能够领先业界。 ARM无线事业总经理Paul Williamson表示,他们已经在开发ARM的Cordio-N解决方案,来缩短合作伙伴NB-IoT标准芯片的上市时间。除了借重这些公司的软硬件专业,他们也投资了无线通讯设计,可以提供完整的NB-IoT芯片解决方案,从应用软件一直延伸到天线。这会降低采用蜂
[物联网]
IBM三星TI力挺ARM 为成立合资公司提供支持
  IBM、德州仪器、三星、ARM等六家公司宣布成立一家合资公司,专门研发基于ARM处理器的产品,如平板电脑等。ARM芯片光广泛应用于手机、智能手机,以及即将大批涌现的平板电脑,其设计和制造厂商包括德州仪器、高通、Nvidia、飞思卡尔、ST-爱立信和三星等一大批企业。  北京时间6月3日消息,IBM、德州仪器、三星、ARM等六家公司宣布成立一家合资公司,专门研发基于ARM处理器的产品,如平板电脑等。   新成立的合资公司名称为Linaro,在资金上将获得上述巨头的鼎力支持。   通常情况下,想要研发基于ARM的设备的公司都需要跨越由不同操作系统以及这些操作系统的不同版本所形成的泥潭。这些系统包括Android、Chrome
[手机便携]
SD卡的SPI模式的初始化顺序
为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。 为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。 正确的回应内容应该是: CMD0 0x01(SD卡处于in-idle-state) CMD55 0x01(SD卡处于in-idle-state) AC
[单片机]
基于嵌入式uCLinux内核启动过程分析与设计
  0 引言   32位ARM嵌入式处理器具有高性能、低功耗、高性价比的特性,已被广泛应用于消费电子产品、无线通信、控制和网络通信等领域。uCLinux是专门为无MMU处理器设计的嵌入式操作系统,已支持ARM、Motorola等微处理器。目前采用ARM+uCLinux作为嵌入式系统的一种开发模式非常普遍。   一个基于uCLinux的完整的嵌入式系统由三个部分组成,即系统引导程序Bootloader、uCLinux操作系统内核和文件系统。嵌入式系统的启动引导技术是嵌入式系统开发的一个难点,系统启动引导的成功与否决定了应用程序的运行环境是否能正确建立,系统启动成功是应用正确运行的前提。而uCLinux内核的启动过程也是其中重要一
[单片机]
基于嵌入式uCLinux内核启动过程分析与设计
ARM linux常用汇编语法
============================= 汇编语言每行的语法: lable: instruction ; comment 段操作: .section 格式: .section 段名 [标志]可以是如下: a 允许段 w 可写段 x 可执行段 常见段名: data, bss, text, rodata段,我们也可以定义我们自己的段。 .data: 已初始化数据段 .bss: 未初始化数据段 .text:代码段 .rodata:只读段 汇编程序的入口点: 通常,linux的汇编程序的入口点都是从_start这个全局符号开始的。而C语言的入口点是main, main函数就是被_st
[单片机]
三星宣布与 Arm 合作,以 GAA 代工技术优化下一代 Cortex-X CPU 内核
2 月 20 日消息,三星电子旗下芯片代工部门宣布与 Arm 合作,共同开发、优化下一代 Cortex-X 核心。据介绍,此次合作涉及通过使用 Arm 最新 Cortex-X 设计和三星 GAA 工艺,旨在提升 CPU 性能和能效表现。 也就是说,Arm 下一代 Cortex-X 系列 CPU 架构将针对三星电子的 Gate-All-Around(GAA)芯片制造技术进行优化,这意味着基于下一代 Cortex-X 系列架构的 CPU 在使用三星 2nm 和 3nm GAA 工艺制造时可获得进一步优化,从而提供更高的性能和更低的功耗。 IT之家查询相关资料获悉,GAA 是目前业界公认的下一代技术,相比 FinFET 进一步改进了半导
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved