历史上的今天
今天是:2024年09月02日(星期一)
2021年09月02日 | ARM之未定义指令异常和SVC异常
2021-09-02 来源:eefocus
异常向量表的概述

在上一章,我们学习了建立异常向量表,这里我们可以通过看arm的手册,我们每一种异常都对应一个工作模式,下面我就来尝试触发一下未定义指令异常和SVC异常
异常发生的说明
简单的来说就是先保存现场,之后恢复现场
保存现场:我们使用的是arm指令集,所以我们先将pc保存在lr中,并将pc-4(原本写pc默认的是pc+4),再将cpsr寄存器保存在spsr中
恢复现场:将lr写入pc,spcp写入cpsr,(通过ldm指令)
int main(void)
{
rebuild_vectors_table();
__asm__ __volatile__(
".word 0x54546411nt"
".word 0x45967111nt"
".word 0x77777777nt" //触发未定义异常
"svc #9527nt" //触发svc异常
"swi #8877nt"
"swi #3356nt"
"data:n"
".word 0xc3e114d8n"
"ldr r0, =datan"
"sub r0, r0, #1n"
"ldr r0, [r0]n"
);
printf("come back to main...n");
史海拾趣
|
2100型六位半USB数字万用表是Keithley高性能数字万用表家族的最新成员。它具有六位半数字万用表的准确度、功能和速度,能够简化和满足您最苛刻的测量要求,而价格只相当于从前性能较低的五位半表和高端手持机型。将高精度和低成本相结合,2100高精 ...… 查看全部问答> |
|
哈哈,真是“福无双至,今日至;祸不单行,昨夜行!”。最近在弄LPC2132读写AT24C02时,刚开始用的是周工的I2C程序包,但是不怎么稳定,有时能进中断,有时不行。所以一直想改写代码。显示用模拟方式,因为这 ...… 查看全部问答> |
|
公司要求把:PXA255换成AT91RM9200,这下麻烦全来了。什么资料都没有。 LINUX相关的倒找一了堆,就是没有CE下的BSP。 有高手做过这方面的吗?求一个AT91RM9200 的BSP,一个EBOOT也可以,给俺发一个。 邮箱:sankye@163.com… 查看全部问答> |
|
这个问题还不是十分明了 这样的,我的2410板子上已经被我擦除了nandboot,没有操作系统,裸跑上跑(嘿嘿,重头开始,可以了解更多) 比如我的代码现在在MDK V4下编译出来27KB的bin文件,利用MDK自带的download功能下载到nand的0x0开始的地方。 ...… 查看全部问答> |
|
entity cnt16 is port(clk:in std_logic; dout:out std_logic_vector(3 downto 0); dclk1:out std_logic); end cnt16; architecture Behavioral of cnt16 is   ...… 查看全部问答> |
|
实现uart的串口通信 先用grace初始化 在rx的中断函数里面写if=‘9’,则红灯亮,成功了 但是现在想grace调用内联函数却不行这是错误提示 然后src目录 这是中断函数声明 event的头文件 最后event函数 … 查看全部问答> |
|
本帖最后由 fyaocn 于 2014-12-15 11:06 编辑 拿到Nucleo板子和蓝牙套件,测试范例,可以顺利通过编译并下载到板子中如图。 完全按照范例去做效果还是不错的,可惜没有另一个dongle,不能测试全部性能。也不能测试这个范例的功能是否能够实现。 ...… 查看全部问答> |




