欢迎来到纳米网!
首页 > 公众号文章>正文

详解:在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。

01Renesas RH850 ROPI介绍

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

7be4cc4c-eba8-11f0-92de-92fbcf53809c.png7c441b20-eba8-11f0-92de-92fbcf53809c.png

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):

7cac3494-eba8-11f0-92de-92fbcf53809c.png

下面通过一个简单的例子介绍如何在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:[from0x00020000to0x0010FFFF];
"RESET":place at addressmem:0x00020000
 {
  block .reset
 };

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

7d08fe2c-eba8-11f0-92de-92fbcf53809c.png7d6bb15c-eba8-11f0-92de-92fbcf53809c.png

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

7dca40fa-eba8-11f0-92de-92fbcf53809c.png

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

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

7e2e2eee-eba8-11f0-92de-92fbcf53809c.png7e8fb0b0-eba8-11f0-92de-92fbcf53809c.png

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

7ef211ba-eba8-11f0-92de-92fbcf53809c.png

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

7f534b10-eba8-11f0-92de-92fbcf53809c.png

03注意事项

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

7fc12a18-eba8-11f0-92de-92fbcf53809c.png802c3c36-eba8-11f0-92de-92fbcf53809c.png

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

808c6c0a-eba8-11f0-92de-92fbcf53809c.png

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

80ecb15a-eba8-11f0-92de-92fbcf53809c.png

如果使用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当中:

814c6852-eba8-11f0-92de-92fbcf53809c.png

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

81a866d4-eba8-11f0-92de-92fbcf53809c.png

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

820e8bbc-eba8-11f0-92de-92fbcf53809c.png82786b40-eba8-11f0-92de-92fbcf53809c.png82d51822-eba8-11f0-92de-92fbcf53809c.png

04总结

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

参考文献:

1.https://www.vector.com/us/en/products/application-areas/embedded-software/embedded-trends/ota-update-approaches/

2.RH850 User’s Manual: Software

3.IAR RH850 C/C++ Development Guide

4.IAR RH850 C-SPY Debugging Guide

原文标题:在IAR Embedded Workbench for Renesas RH850中实现ROPI

文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。

猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^