历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | ARM中断向量程序实例

2018-12-19 来源:eefocus

ARM中断处理程序一般是通过异常向量表来处理各种异常情况,中断也是一种异常事件,当有异常发生时,ARM会自动跳到向量表指定的地址去执行相应的处理函数。


/创建向量表文件vector_table.S/ 

/首先创建异常向量表,并把此向量表地址映射到0x00000000或0xffff0000/ 

.text 

.align 2 

.global vector_start 

vector_start: 

ldr pc, __reset //复位0x00000000 

ldr pc, __undef //未定义指令0x00000004 

ldr pc, __svc //管理员模式0x00000008 

ldr pc, __pabort //指令异常0x0000000c 

ldr pc, __dabort //数据异常0x0000010 

nop 

ldr pc, __irp //普通中断0x00000018 

ldr pc, __firp //快速中断0x00000020 


/因为ldr指令只能跳转当前PC开始的4KB范围,B指令能跳转当前PC开始的32MB指令,所以向量表中通过调用一个字节,此字节存放相应处理函数的首地址,然后跳到该字节内的地址处/ 


__reset: 

.word reset //分配一个字节的空间存放相应处理函数首地址,下同 

__undef: 

.word undef 

__undef: 

.word svc 

__undef: 

.word pabort 

__undef: 

.word dabort 

__undef: 

.word irp 

__undef: 

.word irp


.text 

.align 2 

.global vector_end 

vector_end: /无具体内容,只是标明向量表结束/


/下面是具体的异常处理函数,如reset_handler()可直接用C程序写/ 


reset: 

ldr sp, =0xfffffffc /分配栈/下同 

stmfd sp!, {r0-r12, lr} /保存当前状态及地址/下同 

b reset_handler /调用处理函数/下同 

ldmfd sp!, {r0-r12, lr} /异常处理结束后返回/下同 

undef: 

b undef_handler 

svc: 

b svc_handler 

pabort: 

b pabort_handler 

dabort: 

b dabort_handler 

irp: 

b irp_handler 

firp: 

b firp_handler


推荐阅读

史海拾趣

AITSEMI公司的发展小趣事

随着全球化趋势的加剧,AITSEMI公司开始实施全球化战略,积极开拓海外市场。通过设立海外分支机构、参加国际展会等方式,AITSEMI成功将产品推广至全球范围,并赢得了广泛的国际认可。同时,公司还加大了品牌建设的力度,通过广告宣传、社交媒体推广等方式提升品牌影响力,进一步巩固了公司在全球电子行业的领先地位。

这些故事基于AITSEMI公司的公开资料和发展历程进行编写,旨在展示其在电子行业中的成长和发展。然而,由于公司具体的发展过程可能涉及更多的细节和未公开的信息,因此这些故事可能并不完全准确或详尽。如需更详细和准确的信息,建议直接访问AITSEMI公司的官方网站或查阅相关新闻报道。

ACL staticide公司的发展小趣事

技术创新是AITSEMI公司保持竞争力的关键。多年来,公司始终坚持将大量资源投入研发领域,不断推出具有创新性的产品和技术。通过自主研发和与高校、研究机构的合作,AITSEMI在集成电路设计、制造工艺等方面取得了多项突破,为公司的持续发展提供了源源不断的动力。

aconno公司的发展小趣事

aconno深知人才是企业发展的核心动力。因此,公司一直致力于打造一支高素质、专业化的团队。通过招聘优秀人才、提供专业培训、建立激励机制等一系列措施,aconno成功吸引和留住了一批业内精英。这些人才为公司的技术创新和市场拓展提供了有力支持,成为aconno发展壮大的重要保障。

Data Device Corporation公司的发展小趣事

在电子行业中,竞争日益激烈,DDC也面临着诸多挑战。然而,DDC始终保持着清醒的头脑和坚定的信念,积极应对挑战并寻找机遇。通过不断优化产品结构、提高生产效率、降低成本等措施,DDC不断提高自身的竞争力。同时,DDC还积极关注行业发展趋势和市场变化,及时调整战略方向,确保公司能够在激烈的竞争中立于不败之地。

请注意,这些故事是基于DDC公司的发展历程和事实进行的概述,具体的细节和情节可能需要根据实际情况进行补充和调整。

Cables To Go公司的发展小趣事

品牌建设是公司发展的重要一环。Cables To Go公司注重品牌形象的塑造和传播,通过参加行业展会、举办产品发布会等方式提升品牌知名度。同时,公司还积极参与社会公益活动,展现企业的社会责任感和担当精神。这些举措有效地提升了Cables To Go的品牌形象和影响力,为公司的长期发展奠定了坚实的基础。

Aydin Corp公司的发展小趣事

在国内市场取得一定成绩后,Aydin Corp开始积极拓展国际市场。通过与全球知名企业的合作,公司成功将产品打入多个国家和地区的市场。同时,Aydin Corp还积极参加国际电子展会和交流活动,与业界同行建立了广泛的合作关系。这些举措不仅提升了公司的国际知名度,也为公司的持续发展注入了新的动力。

问答坊 | AI 解惑

一个分压问题。

我有个问题要请教各位 单片机处理强电压, 在处理前进行分压,要求是一定比值的分压,比如说分压比定为30:1,而实际电压为180V,那么经AD处理的电压就只有6V而且你也可以通过这6V的电压推出实际的电压,这就是定分压比的做用,AD转换后,要与单 ...…

查看全部问答>

谁有cc2000.exe 这个软件?

要调试F206程序,没有调试工具,谁能发一个?…

查看全部问答>

发博客还有时间限制啊---我的建议

想把在别处写的博客全导过来(因为好多博客都不支持php,所以没法用本站的“博客导入”功能),只好一篇一篇的黏贴过来,但是又出现了别的问题“两次发布操作太快了,请等 xxx秒钟再试” 如果是为了防止恶意灌水的话,那在提交前弄一个验证码就行 ...…

查看全部问答>

谁有ActivateDeviceEx()函数动态加载DLL的处理流程?

谁有ActivateDeviceEx()函数动态加载DLL的处理流程?想知道具体用法.…

查看全部问答>

WinCE下的触摸屏较准 用Windows的API函数在自己的界面上实现 不用windows 自带的较准程序

我能查到的信息就是以下信息了: Call TouchPanelEnable to start the screen sampling. Call TouchPanelGetDeviceCaps to request the number of sampling points. For every calibration point, perform the following steps: Call TouchP ...…

查看全部问答>

2440 camera 驱动无法读取数据

各位大侠,小弟是第一次发帖,还请各位多多指教!最近在linux2.6下开发基于S3C2440的camera驱动,视频数据通过lcd显示,现在的问题是camera数据无法显示到lcd上面,可以确定lcd驱动是正常的;现贴出一些相关程序: #define VIDEOMEMSIZE  &nb ...…

查看全部问答>

操作远程注册表的错误

dwRet = WNetAddConnection2(&stNetResource,\"Administrator\",\"123\",CONNECT_UPDATE_PROFILE);         if(dwRet != NO_ERROR)         {                 ...…

查看全部问答>

STM32软件复位问题。

STM32软件复位问题。系统运行中我想软件复位,看了CortexM3手册上说明:代码如下下面:*(unsigned long*)0xE000ED0C |= 0x04;但是系统仍然不复位CortexM3手册上相关说明P6-7System resetA system or warm& ...…

查看全部问答>

关于ti的芯片命名(dm642),求助

我从市场上买来的dm642型号为:tms320dm642agdk,芯片上没有代表主频的数字,并且A的位置也于手册上的命名规则不符 dm642手册上给出的命名规则 是 : TMS 320 DM642 GDK A 500 能告诉我我买的芯片是500Mhz,还是600Mhz的吗? …

查看全部问答>

请问ccsv5如何调用math.h中的函数

最近在编程lauchpad,但发现每次使用math.h里的数学函数如sin(),sqrt()等总会debug出错,提示如图,附带程序代码段。后来我找到了出错的地方,并且注释掉了,debug通过,不知是何原因,请大大们解答下。 另外上次做正弦波发生时是查表做的,也是因 ...…

查看全部问答>