历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2020年03月04日 | ARM嵌入式系统的中断服务例程跳转

2020-03-04 来源:elecfans

在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。


例如:

IRQEntry B HandleIRQ ;跳转范围较小

B HandleFIQ

或IRQEntry LDR PC,=HandleIRQ ;跳转的范围是任意32位地址空间

LDR PC,=HandleFIQ

LDR伪指令等效生成1条存储读取指令和1条32位常数定义指令。32位常数存储在LDR指令附近的存储单元中,相对偏移小于4KB。该32位数据就是要跳转到的中断服务程序入口地址。

之所以使用LDR伪指令,是因为ARM的RISC指令为单字指令,不能装载32位的立即数(常数),无法直接把一个32位常数数据或地址数据装载到寄存器中。下面一般程序与上述伪指令功能等效,但中断向量表描述得更为清晰。其中VectorTable为相对LDR指令的偏移量:

IRQEntry LDR PC,VectorTable+0

;与LDR PC,=HandleIRQ等效

LDR PC,VectorTable+4

;与LDR PC,=HandleFIQ等效

……

VectorTable DCD HandleTRQ

DCD HandleFIQ

……

HandleIRQ

……

HandleFIQ


一般ARM嵌入式系统的程序都是固化在从00000000H开始的低端ROM空间中,中断向量表VectorTable也是固化在ROM中,所以上述两种方法都无法在程序运行时动态随机修改中断向量表。不论对于初学ARM处理器的程序员还是有经验的程序员,设置中断向量都相当繁琐,必须修改ARM的C程序的启动代码。一段晦涩的汇编代码很不方便,比较容易出错。

推荐阅读

史海拾趣

EIC [EIC discrete Semiconductors]公司的发展小趣事

在竞争激烈的电子行业中,EIC公司深知供应链管理和成本控制的重要性。公司建立了完善的供应链管理体系,与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量的可靠性。同时,EIC还通过优化生产流程、提高生产效率等措施,不断降低生产成本,提升产品的竞争力。

Dau Semiconductor Inc公司的发展小趣事

随着全球电子市场的不断发展壮大,Dau Semiconductor Inc公司开始将目光投向全球市场。公司积极开拓海外市场,与全球各地的电子产品制造商建立合作关系。同时,公司还加强了与国际知名半导体企业的合作与交流,共同推动半导体技术的发展和应用。展望未来,Dau Semiconductor Inc公司将继续秉承创新、卓越、服务的企业精神,为全球电子行业的发展做出更大的贡献。

Cystech公司的发展小趣事

C-TECH Co., Ltd自1997年成立以来,始终将技术创新作为公司发展的核心驱动力。在2008年,公司敏锐地捕捉到了5G通信技术的潜在商机,开始投入大量资源进行研发。经过数年的不懈努力,终于在2018年成功开发出了5G(3.5GHz)频段中频、射频SAW(声表面波)滤波器,这一技术突破为公司在5G通信市场赢得了先机。通过不断的技术创新,C-TECH Co., Ltd逐步确立了在电子行业中的领先地位。

DAYA公司的发展小趣事

大雅智能,一家以智能厨电产品为主的电子科技公司,自创立之初就致力于技术研发和创新。在电子行业竞争激烈的今天,大雅智能凭借其独特的智能控制技术,成功打造了一系列具有市场竞争力的产品。从最初的智能电饭煲到如今的智能厨房生态系统,大雅智能通过技术创新,不断满足消费者对智能生活的追求,逐渐在电子行业中崭露头角。

Baneasa SA公司的发展小趣事

随着国内市场的逐渐饱和,Baneasa SA开始将目光投向海外市场。公司制定了国际化的发展战略,通过在欧美等发达国家设立分支机构、参加国际展会等方式积极开拓国际市场。这些努力使得Baneasa SA的产品逐渐在国际市场上占据了一席之地,公司的业务范围也得到了进一步扩大。

HellermannTyton公司的发展小趣事

面对全球经济波动和行业竞争加剧的挑战,Heimann Optoelectronics Gmbh果断实施转型升级战略。公司加大在物联网、人工智能等新兴技术领域的研发投入,成功开发出了一系列智能光电传感器和解决方案。这些产品能够实时监测环境变化、智能控制设备运行,为智慧城市、智能家居等领域提供了强有力的支持。通过转型升级,公司不仅巩固了传统市场的领先地位,还成功开拓了新的增长点。

问答坊 | AI 解惑

谁有IBMS电源监控管理系统

小弟现需IBMS电源监控管理系统这套软件。哪位大哥有能给发一份吗?小弟的邮箱:xaoning@163.com…

查看全部问答>

SDRAM的控制器

最近再写一个DRAM的控制器,有哪个高手介绍一下经验,或发一些资料.谢谢了…

查看全部问答>

atmega16和atmega8515中文手册

atmega16和atmega8515中文手册,希望有人用到…

查看全部问答>

ccs3.3与仿真器连接问题

我用的是CCS3.3,仿真器是XDS510 USB2.0,目标器件是TMS3205509A 今天把仿真器驱动,器件配置都弄好了,但是进CCS3.3,一直是目标器件没有发现。 不知道针对CCS3.3,仿真器是不是需要单独的驱动(我用的是以前CCS2.2的驱动)?或者需要注意一些特 ...…

查看全部问答>

想好好学习硬件,看什么呢???

学了一年多单片机。其实对于硬件电路设计上涉及并不多,烦恼!!现在刚学完模电,想好好学习模拟电子在单片机外围电路中的应用。想让由经验的大侠推荐一本比较好的书,《电子制作》还是看的,但是主要还是讲模拟电机的一些技术把,滤波,整流,运放 ...…

查看全部问答>

WINCE 待机唤醒后,GPS设备电源状态不正常?

环境:WINCE6.0+VS2005+PXA310 问题描述:GPS模块待机唤醒后设备电源状态为D2,AP调用GetDevicePower(L\"GPS1:\", POWER_NAME, &pDeviceState)获取的结果。 而GPS模块实际支持的电源状态只有D0、D3、D4代码:         case ...…

查看全部问答>

求助 查询sqlite数据库并显示的问题

这是我在网上查到的一种方法:     CppSQLite3DB db;     db.open(L\"\\\\storge\\\\mySqlite.db\");     CppSQLite3Query q = db.execQuery(L\"select * from Address_List where NUMBER  =\'\"+m_ ...…

查看全部问答>

wm下如何控制输入法

我用vs的c#在windows mobile写应用程序,有菜单的时候 系统默认总是回出来输入法面板,请问有什么方法,我可以控制他么,就是不要他出现,或者当他出现的时候,我能知道,要我的窗体大小改变,以适应他不影响我的窗体显示.…

查看全部问答>

ARM7的IO口不够用,采用什么方法扩展GPIO口?

请教一下IO口不够用,大家一般都用什么方法来扩展IO口? [ 本帖最后由 MD2010 于 2010-11-23 11:44 编辑 ]…

查看全部问答>