在IAR Embedded Workbench for Renesas RH850中实现ROPI

随着汽车智能化程度的提高,集成的ECU(Electronic Control Unit)数量不断增加,OTA(Over-the-Air)技术变得越来越普遍,它允许车辆通过无线网络接收软件更新,从而实现功能升级和性能改进,提高了便利性。

根据硬件的不同特性,OTA有对应的实现策略:[1]

  • 如果硬件支持A/B Swap,对应的应用程序只需要链接一次就可以在两个不同的物理地址运行;

  • 如果硬件不支持A/B Swap,对应的应用程序可以通过ROPI(Read-Only Position-Independent)的方式实现在不同的物理地址运行。

Renesas RH850系列MCU在汽车行业中广泛使用,IAR Embedded Workbench for Renesas RH850是一套完整的集成开发环境,符合ISO 26262功能安全标准,支持Renesas RH850的编译和调试。

本文主要介绍如何在IAR Embedded Workbench for Renesas RH850中实现ROPI。

01.Renesas RH850 ROPI介绍

Renesas RH850 ROPI通过TP寄存器来实现,即对应代码和常量的访问不是通过绝对地址,而是通过基于TP的相对地址访问:

02.在IAR Embedded Workbench for Renesas RH850中实现ROPI

在IAR Embedded Workbench for Renesas RH850中实现ROPI非常方便,只需要勾选对应的ROPI编译选项(General Options > Position-independence > Code and read-only data):

下面通过一个简单的例子介绍如何在IAR Embedded Workbench for Renesas RH850中实现ROPI。

假设对应Code Flash的地址区间是:0x00000000 ~ 0x001FFFFF (2MB)。其中Bootloader的地址区间是0x00000000 ~ 0x0001FFFF (128KB) ,而Application的地址区间分别为: 0x00020000 ~ 0x0010FFFF (960KB) 和0x00110000 ~ 0x001FFFFF (960KB) 。

Application链接的时候使用的地址区间0x00020000 ~ 0x0010FFFF:

define region ROM_1ST_region = mem:[from 0x00020000 to 0x0010FFFF]; "RESET":place at address mem:0x00020000 { block .reset };

map文件显示对应Application放到地址区间0x00020000 ~ 0x0010FFFF:

在Bootloader调试选项(Debugger > Images > Download extra image)中添加对应Application.out文件并配置对应的Offset (0x00110000 - 0x00020000 = 0x000F0000):

在Bootloader工程中下载调试来验证对应Application是否支持ROPI。

Bootloader跳转到Application的复位向量表地址0x00110000:

然后成功跳转到Application的入口函数__iar_program_start:

最后成功跳转到main函数,说明对应Application成功实现ROPI(因为Application链接到地址区间0x00020000 ~ 0x0010FFFF,同样可以在地址区间0x00110000 ~ 0x001FFFFF正常运行):

03.注意事项

对应GP和TP寄存器通常来说会在启动代码里面初始化:

如果ROPI程序中有需要跳转到其他非ROPI程序中使用绝对地址运行的函数(比如对应函数运行在RAM的绝对地址),那么在ROPI程序中需要使用__absolute关键字声明对应函数:

调试ROPI程序的时候,如果ROPI程序实际运行地址区间跟ROPI程序链接的地址区间不一样的时候,需要配置对应的Offset(对应Offset的值是程序实际运行地址减去程序链接的地址)。另外Debug info only选项表示调试器只加载对应调试信息,而不下载对应程序。

如果使用Renesas Smart Configurator生成对应的工程,由于Renesas Smart Configurator生成的r_cg_intvector.c文件里面中断向量表的名字是INT_Vectors(而不是IAR默认的中断向量表的名字),所以需要修改对应的r_cg_intvector.c文件,IAR里面的启动文件cstartup.s和icf文件。

下面以RH850/F1KM-S2为例:

_cg_intvector.c文件:添加对应ROPI模式下的声明,把对应INT_Vector[]和INT_Vectors_Init[]分别放到EIINTTBL和EIINTTBL.init section当中:

cstartup.s:_interrupt_vector_table_core_1替换成_INT_Vectors, .table.interrupt_core_1.init替换成EIINTTBL.init:

icf文件:.table.interrupt_core_1替换成EIINTTBL,.table.interrupt_core_1.init替换成EIINTTBL.init:

04.总结

本文主要以RH850/F1KM-S2为例介绍了如何在IAR Embedded Workbench for Renesas RH850中实现ROPI。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1126026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web 阿博图书馆管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着信息技术的快速发展,图书馆管理系统逐渐从传统的手工管理模式向数字化、智能化方向转变。图书馆作为知识传播和文化建设的重要载体…

c# 上传文件,前端FormData

[HttpPost][Description("上传发票")]public async Task<APIResult> UploadMultipleFiles([FromForm] List<IFormFile> files,[FromForm] string id){return await _IStoreArchivesService.UploadMultipleFiles(files,id);}public async Task<APIResu…

企业级小徐影城管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着数字化技术的快速发展&#xff0c;传统影院管理模式已无法满足现代企业的需求。企业级影院管理系统通过信息化手段优化影院运营流程&#xff0…

大数据领域中ClickHouse的高性能查询技巧

大数据领域中ClickHouse的高性能查询技巧 关键词&#xff1a;ClickHouse、高性能查询、列式存储、向量化引擎、索引优化、数据建模、并行计算 摘要&#xff1a;本文深入探讨ClickHouse在大数据场景下实现高性能查询的核心技术原理与实战技巧。通过解析ClickHouse的列式存储架构…

深度学习超导材料与量子器件!!

https://mp.weixin.qq.com/s/1pI33dnMc-Vmqznw0H4QOA 点击此链接查看详情&#xff01; https://mp.weixin.qq.com/s/1pI33dnMc-Vmqznw0H4QOA 点击此链接查看详情&#xff01;

用影刀RPA抓取"影刀RPA帮助中心"所有层级类目文档链接,并导出Excel | 网页监听实例

关于"获取影刀帮助中心"这件事&#xff0c;很多人的第一反应是&#xff1a;“官网在线看不是挺好的吗&#xff0c;为什么还要抓下来&#xff1f;”如果只是用来阅读&#xff0c;官网当然是最好的载体。但对"RPA 开发者"来说&#xff0c;我们更关注的是数据…

Skywalking 分布式链路追踪系统

Skywalking 概述 SkyWalking 是一款优秀的国产开源分布式应用性能监控&#xff08;APM&#xff09;系统&#xff0c;专注于微服务、云原生和基于容器架构的监控需求。项目于2015年由吴晟个人开源&#xff0c;2017年加入Apache孵化器&#xff0c;2019年4月成为Apache顶级项目。主…

深度学习MOF材料!!

https://mp.weixin.qq.com/s/1pI33dnMc-Vmqznw0H4QOA 点击此链接查看详情&#xff01;​​​​​​ https://mp.weixin.qq.com/s/1pI33dnMc-Vmqznw0H4QOA 点击此链接查看详情&#xff01;

港科校友|潘异:AI创业的弄潮儿

机器人兴起汇川技术&#xff0c;这家坐落于深圳的世界领先自动化机械制造公司&#xff0c;正在引领一场机器人革命。从电梯到塑料&#xff0c;从电动汽车到机器人&#xff0c;他们无所不包&#xff0c;生产流水线上覆蓋了从低压交流驱动器到智能控制器、工业机器人、电动汽车逆…

企业微信如何管理部门群(组图)

企业微信如何管理部门群&#xff08;组图&#xff09; 1、部门群支持操作开启/关闭。 2、开启时&#xff0c;加入部门的成员会自动进群&#xff0c;离开部门的成员会自动退群&#xff0c;“限制查看所有人”和“隐藏”的成员不会加入部门群。 3、若需要解散部门群&#xff0c;…

那个永远积极的人升职了

办公室走廊尽头的茶水间,每天下午都会上演同一出戏:抱怨版图又要重画、感慨这个项目必死无疑。待久了你会发现,这种集体性的悲观已经成了芯片行业的职业病。很多人好像天生就要端着一副”看透一切”的架势。聊起项目永远是”时间不够”、“资源不足”、“技术方案有问题”。整个…

竞赛毕业设计定制作品---【芳心科技】F. 驾辅盲区预警雷达系统

实物效果图&#xff1a;实现功能&#xff1a;该系统作为车辆核心主动安全装置&#xff0c;专为破解行车盲区风险设计&#xff0c;通过雷达与视觉融合感知技术&#xff0c;实现对车辆侧后方、后视镜盲区等关键区域的全方位监测。其核心功能聚焦盲区检测与智能预警&#xff0c;且…

竞赛毕业设计定制作品---【芳心科技】F. 家庭厨房的防火预警系统

实物效果图&#xff1a;实现功能&#xff1a;本研究课题旨在设计并实现一套全面、智能的家庭厨房防火预警系统。针对厨房火灾的主要诱因&#xff0c;本设计设计了四大检测模块&#xff1a;烟雾检测、明火检测、温度检测以及燃气泄露检测。烟雾检测采用高灵敏度的烟雾传感器&…

产品多租户功能上新:一份写给开发者的集成与适配指南

多租户架构不是简单的技术选择&#xff0c;而是一场关于产品商业化命运的架构革命引言&#xff1a;为什么多租户功能决定了你的SaaS能走多远&#xff1f;最近&#xff0c;我们团队刚刚完成了产品的多租户架构改造。上线第一天&#xff0c;就有一位企业客户反馈&#xff1a;“我…

Python OOP 设计思想 08:继承不是类型建模

在许多面向对象语言中&#xff0c;“继承”&#xff08;Inheritance&#xff09;被视为类型建模的起点&#xff1a;现实世界的分类关系被直接映射为类层次结构。然而在 Python 中&#xff0c;这一路径并非主流实践&#xff0c;在复杂系统中甚至可能适得其反。要正确理解 Python…

Eureka在大数据架构中的核心作用与最佳实践

Eureka在大数据架构中的核心作用与最佳实践:构建高可用大数据服务发现体系 摘要/引言 在大数据架构中,服务之间的相互调用与发现是确保系统高效稳定运行的关键环节。随着大数据应用规模的不断扩大,如何实现服务的动态注册、发现与管理成为了亟待解决的问题。Eureka作为Net…

autogen能做到但langgraph做不到的能力有哪些

AutoGen 相比 LangGraph&#xff0c;在原生对话驱动协同、开箱即用角色模板、内置代码执行与安全沙箱、灵活人在回路交互、Azure 生态深度适配这五个方面具备 LangGraph 难以直接实现的能力&#xff0c;以下是详细解析。核心能力差异&#xff08;AutoGen 独有 / 显著领先&#…

从选题到定稿:7 款 AI 毕业论文工具实测,paperzz 为何是毕业生首选?

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 毕业论文创作的 “痛点清单”&#xff0c;几乎是所有毕业生的共同记忆&#xff1a;选题没方向、文献找不全…

【毕业设计】SpringBoot+Vue+MySQL 小徐影城管理系统平台源码+数据库+论文+部署文档

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着互联网技术的快速发展和数字化娱乐需求的增长&#xff0c;传统影院管理模式面临诸多挑战&#xff0c;如人工售票效率低、数据管理混乱、用户体…