关于瑞萨RH850中断的异常处理函数地址Exception Handler Address的理解

博主联系方式:QQ:1256153255 ,邮箱:1256153255@qq.com

点击这里可申请RH850开发板
点击这里可申请瑞萨E1仿真器

RH850有两种定义中断方法:

1.直接向量法:Direct Vector Method
对于Direct Vector Method,Exception Handler Address = base address + offset address,
base address是指 RBASE or EBASE register
在这里插入图片描述

但是Direct Vector Method有个问题:
对于直接向量方法,因为每个中断优先级都有一个用户中断异常处理程序,所以具有相同优先级的多个中断分支会指向同一中断处理程序,但是一些用户可能希望从一开始就为每个中断处理程序使用不同的代码区域。
此时Table Reference Method就可以完美解决这个问题。

2.表参考方法:Table Reference Method
Exception Handler Address = INTBP register value + EI level maskable interrupt channel number * 4
在这里插入图片描述
使用Table Reference Method,通过INTBP寄存器值和中断通道编号确定中断向量的地址,中断向量指向ISR的入口地址,即可实现一个Exception Handler Address指向唯一的一个ISR。

### 瑞萨 RH850 中断向量表映射实现方式 瑞萨 RH850中断向量表映射可以通过多种方式进行配置,主要包括 **直接向量法 (Direct Vector Method)** 和 **查表法 (Table Lookup Method)**。以下是两种主要的实现方式及其细节: #### 1. 直接向量法 (Direct Vector Method) 在直接向量法中,异常处理函数地址由基址寄存器 (`RBASE` 或 `EBASE`) 和偏移地址组成[^1]。 计算公式如下: \[ \text{Exception Handler Address} = \text{Base Address} + \text{Offset Address} \] - 基址寄存器可以是 `RBASE` 或 `EBASE` 寄存器,具体取决于硬件设计和初始化设置。 - 偏移地址通常是一个固定的数值,用于定位特定中断的服务程序。 这种实现方式的优点在于简单高效,适合固定功能的应用场景。 #### 2. 查表法 (Table Lookup Method) 查表法是一种更灵活的方式,允许动态调整中断向量表的内容。这种方法通过 C 语言或其他高级编程工具来管理中断向量表,从而减少手动维护的工作量[^3]。 ##### 配置流程概述 1. **启用 SmartConfig 工具** 使用 Renesas 提供的 SmartConfig 工具自动生成中断向量表文件(如 `r_cg_intvector.c`)。该文件包含了所有可能的中断服务函数入口地址。 2. **修改启动文件 boot.asm** - 注释掉原有的静态中断向量表定义部分。 - 修改为使用生成的 C 文件中的中断向量表。例如: ```asm mov #__sEIINTTBL.const, r6 ``` 3. **编写对应的中断服务函数** 根据实际需求,在项目中实现具体的中断服务函数,并确保其名称与向量表中的条目一致。如果未提供相应的中断服务函数,可能会导致编译错误或运行时崩溃。 4. **链接选项配置** 在 CS+ 编译器的 Link Options -> Section 设置中,添加 `EIINTTBL.const` 段以支持新生成的中断向量表。 #### 示例代码片段 以下展示了如何在汇编和 C 文件中配合完成中断向量表的映射: ```asm .align 16 jr32 _priority7_interrupt ; 跳转至优先级 7 的中断服务程序 ``` ```c // 定义中断服务函数 void priority7_interrupt(void) { // 处理优先级 7 的中断逻辑 } ``` --- ### 总结 对于 RH850中断向量表映射,可以选择直接向量法或者查表法。前者适用于简单的应用场景,而后者则更适合复杂的开发环境,尤其是需要频繁更新中断配置的情况。通过结合 SmartConfig 工具和 C 语言实现,能够显著提高开发效率并降低出错概率[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值