RL78

一、概述

RL78系列是16bit MCU的王者,以低功耗和高性价比服务全球客户。随着社会进步时代发展,OTA在电子行业越来越越重要,RL78系列MCU有两个boot cluster,支持多种编译环境和多种方式的bootloader,本文以客户常用的CS+环境配合CC-RL编译器,给大家介绍一种OTA的MCU端的实现方式。

二、基本原理

RL78系列MCU的内存映射,以64K flash的R5F100LE为例,如图

“RL78如何使用加载Bootloader做OTA"

可以看到分为2个boot Cluster:Boot cluster 0和Boot cluster 1。

程序启动时,从Boot cluster 0开始执行。

这两个Boot cluster在程序运行过程中可以通过调用瑞萨自编程库(Flash Self-Programming Library)里面的boot swap函数来翻转,即Boot cluster 0可以变成1而Boot cluster 1变成Boot cluster 0,基于此,我们可以将bootloader程序存放于boot cluster 1里面,应用程序则从Boot cluster 0执行,当程序判断相关条件,需要OTA时候,可以调用boot swap函数翻转boot cluster,这样翻转后reset,则原来的bootloader段变成了Boot cluster 0,可以执行OTA相关操作,将新程序的Boot cluster 0内容写入Boot cluster 1,应用程序段写入地址0x2000开始的flash;

OTA完成后,再调用boot swap,这时bootloader段自动翻转到原来的Boot cluster 1区域,新程序的boot区域回到Boot cluster 0,其中断向量表不受影响。

整个OTA过程:

“RL78如何使用加载Bootloader做OTA"

三、实现方式

1、Bootloader程序编写:代码大小限制在1个boot cluster内(4k)

作用:用来接收新程序的代码并擦除老程序、更新老程序。

Bootloader工程segment划分:

“RL78如何使用加载Bootloader做OTA"

需要注意检查生成代码应该在0-0xfff内,不能越界

2、Bootloader生成的hex文件转换成.c文件(J-Link工具可用来转换),输出一个大数组,备用。

如下图,保存为.c文件:

“RL78如何使用加载Bootloader做OTA"

即可生成大数组:

“RL78如何使用加载Bootloader做OTA"

3、Application应用程序段代码编写与集成bootloader:应用程序段的代码编写无需考虑中断向量表偏移等问题,因为程序正常跑,与即将放在Boot cluster 1区的bootloader无关。但是需要将与boot swap相关的代码放置在Boot cluster 0区域内。

App工程Segment划分:

“RL78如何使用加载Bootloader做OTA"

I. 0x1000-0x1fff不能存放其他数据,该区域为boot cluster 1,定义段为.constBOOTAREA_f,如上图。程序代码中,使用如下预编译指令将bootloader放入Boot cluster 1中

#pragma section BOOTAREA

__far const unsigned char bootloader[]={xx,xx};//bootloader itself

#pragma section

II. 划分一个App区域的boot区,把这个区域放在0x0000 to 0xFFF. 如上图,.BOOT_f段。程序中可以使用预编译指令#pragma section来将相关代码放入这个区域,例如在编写代码时候加入如下代码:

#pragma section text .BOOT

/* write your code here */

#pragma section 

III. 那么这段代码会放入.BOOT_f区域。请注意,需要从生成的map文件去判断这个区域不超过0xfff,即不与0x1000-0x1fff Boot cluster 1段重合。

4、Application代码烧入MCU,则MCU内便集成了bootloader。

5、新的应用程序编写:与第3步骤大致相同,但是不需要加入III的Boot cluster 1区域大数组。

6、有新的应用程序需要OTA更新,则先与Application程序握手成功,然后执行第二章的OTA流程;也可在Boot cluster 0里完成握手,执行OTA。

Note:使用fsl自编程库和fdl data flash库时候需要注意代码段划分。

来源:瑞萨MCU小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 1448

RL78是瑞萨8位/16位自有内核系列产品,主打低功耗应用。RL78从问世以来,至今已经发展到超过1000个料号的大家族产品系列。宽供电电压范围,高集成度,高可靠性使得RL78在工业,消费,汽车领域得到广泛应用。基于平台型设计的思想,RL78家族产品具有很好的延展性:从10引脚小尺寸封装到128引脚多I/O,从1K片上闪存配置到768K配置,保持高度引脚兼容,方便客户在RL78家族中各个系列中的方便切换。

RL78有三大系列:以字母“G”表示的通用(general purpose)系列,以字母“L”代表的集成段码LCD驱动系列,以及以字母“I”开始的特定领域系列。今天我们就和大家来聊一聊RL78/I系列中的明星产品RL78/I1C。

I1C是一个专为电表市场设计的紧凑型MCU,目前在电表和测量领域已经出货几百万颗。最新一代I1C,进一步扩大片上闪存容量,增至512KB并支持双bank,为物联网电表应用的FOTA升级打下坚实基础。此外,除了拥有24位精度的⊿Σ型ADC,还额外添加12位精度的SAR(逐次逼近)型ADC,片上SRAM容量也增大一倍,达到32KB。

“瑞萨RL78

这样,整个I1C系列的产品组合非常丰富,参加下图。点击文末阅读原文可以了解更多RL78/I1C的型号分布。

“瑞萨RL78

RL78/I1C产品亮点

  • 支持5V的供电电压,适配电表应用,无需外接电平转换

  • 集成段码LCD驱动,适配电表应用,无需外接驱动芯片

  • 高精度(24位)ADC支持4路电流,电压采样。采样频率可达4KHz,过采样频率可达1.5MHz

  • AES硬件密码学引擎,支持ECB,CBC,CGM模式,密钥长度高达256位。相比软件实现AES加解密,硬件引擎速度提升20倍

  • 片上闪存的双Bank机制,使得电表的固件升级和以电能测量为核心的主业务逻辑可以同时进行,互不干扰。即使新固件内容受损,也能方便地切换到原版本固件运行,解除远程在线升级的后顾之忧。

基于512K双Bank闪存配置的RL78/I1C如何完美解决FOTA问题

FTOA是Firmware update Over The Air的缩写。设备安装到现场后可以通过多种无线通信方式更新设备固件,以新增设备功能或改善业务逻辑,或者修补原有固件的功能bug甚至安全隐患。是物联网时代网络节点的重要能力之一。传统的FOTA,将新版本固件下载到本地的片外存储区,擦除当前运行固件所在的存储区,烧写新版本固件,然后通过复位来运行新版本固件。显而易见在上述过程,有一段时间,业务逻辑是停止运行的。对于有些应用也行没有大碍,但是却对于电表来说,电力计量功能的停止会导致电量计费损失,不满足各国对电力企业的要求。

“瑞萨RL78

随着片上Flash双Bank的引入,包含电量计量功能的当前版本业务逻辑在一个Bank运行的同时,另外一个Bank可以接受新版本固件。因为两个Bank的闪存是彼此独立,各自的读写操作互不干扰。Bank1在被CPU取址执行,同时Bank2在被写入新版本固件内容。接下来再通过Bank swap以及复位,使得新版本程序得以从头开始执行。相比以前的FOTA方案,这个方案明显减少了业务逻辑停止运行的时间,但是复位操作还会造成程序执行流的中断,对电能持续记录还是有些许的影响。

瑞萨推出的无间断计量FOTA解决方案,通过把计量代码放到RAM运行,再通过Flash的swap功能,可以无需系统复位,不打断业务逻辑程序执行流,不停止电量计量,就实现电表固件程序的远程升级。该方案不仅适用于智能电表,也可用于需要持续运行的系统。

“瑞萨RL78

扫描下方二维码查看无间断计量FOTA解决方案

“瑞萨RL78

来源:瑞萨MCU小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 368

页面

订阅 RSS - RL78