0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在IAR Embedded Workbench for Renesas RH850中实现ROPI

IAR爱亚系统 来源:IAR爱亚系统 2026-01-10 15:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着汽车智能化程度的提高,集成的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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19128

    浏览量

    403898
  • 嵌入式
    +关注

    关注

    5209

    文章

    20656

    浏览量

    337036
  • 寄存器
    +关注

    关注

    31

    文章

    5619

    浏览量

    130419
  • IAR
    IAR
    +关注

    关注

    5

    文章

    415

    浏览量

    38675

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨RH850P1M-C芯片或者RH850P系列谁用过,用什么配置软件啊?

    最近在使用瑞萨RH850/P1M-C/R7F701374单片机,开发环境使用过CS+、e² studio、IAR都有这个芯片型号。但是配置软件却没看到有这个系列信号,我renesas
    发表于 01-18 10:00

    TRACE32支持RH850系列

      全新RH850MCU用于各种汽车车身应用,可提供诸多优势。RH850/F1x系列可分为三大类总共50多种产品,从低端到高端,品类齐全,包括RH850/F1L、RH850/F1M及
    发表于 09-12 19:02 22次下载

    RH850多核嵌入式目标的基于多核模型的开发

      Embedded Target for RH850 Multicore + Multirate,是更高版本的 Embedded Target for RH850 Multicore
    的头像 发表于 04-29 14:39 5608次阅读
    <b class='flag-5'>RH850</b>多核嵌入式目标的基于多核模型的开发

    IAR Systems开发工具3.10版IAR全面支持Renesas RH850

    IAR Systems 很高兴地宣布推出全新的 3.10 版 IAR Embedded Workbench 以及 IAR 构建工具(
    发表于 07-10 14:36 3502次阅读

    Renesas Flash Programmer V2.04 Flash memory programming software 用户手册 RH850, RX64x

    Renesas Flash Programmer V2.04 Flash memory programming software 用户手册 RH850, RX64x
    发表于 03-30 18:49 0次下载
    <b class='flag-5'>Renesas</b> Flash Programmer V2.04 Flash memory programming software 用户手册 <b class='flag-5'>RH850</b>, RX64x

    Renesas Flash Programmer V2.04 Flash memory programming software 用户手册 RH850, RX64x

    Renesas Flash Programmer V2.04 Flash memory programming software 用户手册 RH850, RX64x
    发表于 07-12 20:24 7次下载
    <b class='flag-5'>Renesas</b> Flash Programmer V2.04 Flash memory programming software 用户手册 <b class='flag-5'>RH850</b>, RX64x

    rh850与r7f7的关系 如何使用RH850系列MCU进行开发

    RH850系列是一种高性能的汽车微控制器系列,专为车身控制、发动机控制、电动驱动系统和安全系统等应用而设计。它采用了Renesas的RISC(Reduced Instruction Set
    的头像 发表于 08-05 15:33 5358次阅读
    <b class='flag-5'>rh850</b>与r7f7的关系 如何使用<b class='flag-5'>RH850</b>系列MCU进行开发

    rh850是什么架构?

    rh850是什么架构? RH850是一种高性能嵌入式处理器架构,由日本汽车电子控制系统公司 (Renesas Electronics) 开发。RH850架构是针对大型汽车系统设计的,旨
    的头像 发表于 08-15 16:22 3590次阅读

    RH850与RL78的区别

    RH850与RL78的区别 RH850和RL78是两个不同系列的芯片,分别由日本的Renesas Electronics公司开发。虽然它们都是微控制器,但RH850主要应用于汽车电子和
    的头像 发表于 08-15 16:22 3947次阅读

    rh850与r7f7的关系

    rh850与r7f7的关系 RH850和R7F7是两个系列的微控制器,它们都来自于日本电子元器件制造商Renesas Electronics。RH850是一款32位的汽车微控制器系列,
    的头像 发表于 08-15 16:22 2931次阅读

    rh850和arm的区别

    rh850和arm的区别 RH850和ARM是两种不同的处理器架构。RH850是一款Renesas芯片家族,它基于32位RISC架构,广泛应用于汽车电子和工业控制系统等领域。ARM也是
    的头像 发表于 08-15 16:22 3501次阅读

    rh850是什么系列单片机?

    rh850是什么系列单片机 RH850是一系列高性能单片机,由日本RENESAS公司生产,并且目前已成为全球范围内广泛应用的自主驾驶汽车控制器所采用的主要型号之一。RH850系列单片机
    的头像 发表于 08-15 16:22 3185次阅读

    rh850是什么芯片?

    rh850是什么芯片? RH850是一款高性能的32位RISC微处理器芯片。它由日本的瑞萨电子公司(Renesas Electronics)开发和推出,其系列产品电子系统和汽车领域得
    的头像 发表于 08-15 16:22 5837次阅读

    rh850是arm架构吗?

    rh850是arm架构吗? Rh850不是ARM架构,而是一种基于RISC架构的嵌入式微控制器。本文中,我们将深入探讨RH850微控制器的特点、应用和发展前景。
    的头像 发表于 08-15 16:23 4583次阅读

    rh850的pflash和dflash数据分配

    是数据闪存。这两种类型的闪存都是RH850微控制器的重要组件。本文中,我们将更深入地研究P-Flash和D-Flash存储器及其数据分配。 P-Flash数据分配 P-Flash是存储RH850
    的头像 发表于 08-15 16:23 3865次阅读