2440核心初始化
来源:互联网 发布:js给时间控件赋值 编辑:程序博客网 时间:2024/05/22 22:20
异常向量表
异常:
因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的时间。
Resset 重启异常
Undefined instructions 未定义异常
Software interrupt 软件中断异常
Prefeth Abort 预取指令异常
dATA aBORT 赌气数据失败残生的Data Abort异常
IRQ 中断异常
FIQ 快速中断异常异常向量:
当一种异常发生的时候,ARM处理器会跳转到对应异常的固定地址去执行异常处理程序,而这个固定的地址,就称之为异常向量。异常向量表:
由7个异常及其处理函数跳转关系组成的表即为异常向量表
0x00000000: b reset
0x00000004: ldr pc, _undefined_instruction
0x00000008: ldr pc, _software_interrupt
0x0000000c: ldr pc, _prefetch_abort
0x00000010: ldr pc, _data_abort
0x00000014: ldr pc, _not_used
0x00000018: ldr pc, _irq
0x0000001c: ldr pc, _fiq范例代码:
.text.global _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undefined_instruction: .word undefined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word fiq undefined_instruction: nopsoftware_interrupt: nopprefetch_abort: nopdata_abort: nopnot_used: nopirq: nopfiq: nopreset: nop
设置svc模式
范例代码:
.text.global _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undefined_instruction: .word undefined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word fiq undefined_instruction: nopsoftware_interrupt: nopprefetch_abort: nopdata_abort: nopnot_used: nopirq: nopfiq: nopreset: bl set_svcset_svc: mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0xd3 msr cpsr, r0 mov pc, lr
关闭看门狗
.text.global _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undefined_instruction: .word undefined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word fiq undefined_instruction: nopsoftware_interrupt: nopprefetch_abort: nopdata_abort: nopnot_used: nopirq: nopfiq: nopreset: bl set_svc bl disable_watchdogset_svc: mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0xd3 msr cpsr, r0 mov pc, lr#define pWTCON 0x53000000disable_watchdog: ldr r0, =pWTCON mov r1, #0x0 str r1, [r0] mov pc, lr
关闭中断
.text.global _start_start: b reset ldr pc, _undifined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undifined_instruction: .word undifined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word resetundifined_instruction: nopsoftware_interrupt: nopprefetch_abort: nopdata_abort: nopnot_used: nopirq: nopfiq: nopreset: bl set_svc bl disable_watchdog bl disable_interruptset_svc: mrs r0, cpsr bic r0, r0,#0x1f orr r0, r0,#0xd3 msr cpsr, r0 mov pc, lr#define pWTCON 0x53000000disable_watchdog: ldr r0, =pWTCON mov r1, #0x0 str r1, [r0] mov pc, lrdisable_interrupt: mvn r1, #0x0 ldr r0, =0x4a000008 str r1, [r0] mov pc, lr
关闭MMU
.text.global _start_start: b reset ldr pc, _undifined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq_undifined_instruction: .word undifined_instruction_software_interrupt: .word software_interrupt_prefetch_abort: .word prefetch_abort_data_abort: .word data_abort_not_used: .word not_used_irq: .word irq_fiq: .word resetundifined_instruction: nopsoftware_interrupt: nopprefetch_abort: nopdata_abort: nopnot_used: nopirq: nopfiq: nopreset: bl set_svc bl disable_watchdog bl disable_interrupt bl disable_mmuset_svc: mrs r0, cpsr bic r0, r0,#0x1f orr r0, r0,#0xd3 msr cpsr, r0 mov pc, lr#define pWTCON 0x53000000disable_watchdog: ldr r0, =pWTCON mov r1, #0x0 str r1, [r0] mov pc, lrdisable_interrupt: mvn r1, #0x0 ldr r0, =0x4a000008 str r1, [r0] mov pc, lrdisable_mmu: mcr p15,0,r0,c7,c7,0 mrc p15,0,r0,c1,c0,0 bic r0, r0, #0x00000007 mcr p15,0,r0,c1,c0,0 mov pc, lr
阅读全文
0 0
- 2440核心初始化
- WMI无法初始化核心
- bootloader核心初始化
- 1-5 核心初始化
- s3c2440核心初始化
- 专题5-核心初始化
- Bootloader之核心初始化
- S3C6410核心初始化
- SparkContext初始化的核心过程
- bootloader的核心初始化forARM11
- ARM裸机开发-bootloader-核心初始化
- OK6410 核心初始化知识点查找手册
- s3c6410开发板-核心初始化学习总结
- jquery 源码分析-核心(1)初始化init
- 关于POI文件导出 核心 初始化代码
- 【Spring】IOC核心源码学习(二):容器初始化过程
- DirectFB源代码阅读(六)各个核心子系统的初始化
- 【Spring】IOC核心源码学习(二):容器初始化过程
- unity shader学习笔记(三)——在Unity中计算高光反射光照
- HDU 1238 Substrings(strstr函数)
- CNN目标检测与分割(一):Faster RCNN详解
- 【bzoj3522】[Poi2014]Hotel 树形dp
- JVM之字节码执行引擎
- 2440核心初始化
- 位运算
- 第11章 进入保护模式
- 注册JDBC驱动的三种方式
- java夯实基础-网络编程
- 初学者C语言问题:输入年月日得到天数
- str功能的实现
- 168. Excel Sheet Column Title
- Spring实战--(一)Spring之旅