RA MCU

新型RA4E2和RA6E2 MCU以紧凑的封装和丰富的外设选项带来高达200 MHz的性能

2023 年 3 月 14 日 - 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣布,推出两个基于Arm® Cortex®-M33内核和Arm TrustZone®技术的新产品群——RA4E2和RA6E2,以扩大其32位RA微控制器(MCU)产品家族。全新100-MHz主频RA4E2产品群和200-MHz主频RA6E2产品群经过优化,实现一流的电源效率且完全不影响性能。新产品群还具有128KB和256KB闪存选项及40KB SRAM,集成了片上CAN FD、USB、QSPI、SSI和I3C接口等丰富的连接选项,并提供升级至RA产品家族其它成员的便捷途径。这些新产品将成为传感、游戏、可穿戴设备和电器等在小型封装中实现高性能应用的理想选择。

1.jpg

第二代RA入门级MCU在小型封装中带来高端性能

2.jpg

瑞萨RA MCU产品阵容

RA4E2和RA6E2作为RA产品家族中集成有CAN FD且最具成本效益的成员,提供小型封装选项,包括节省空间的4mm x 4mm 36引脚BGA和5mm x 5mm 32引脚QFN,满足对成本敏感和空间有限的应用需求。此外,新设备的低功耗节省了能源,使终端产品能够为更绿色的环境做出贡献。

所有RA器件都得到瑞萨灵活配置软件包(FSP)的支持,该软件包包含高效的驱动程序和中间件,以简化通信并提升外设功能。FSP的GUI简化加速了开发过程,其可以灵活地使用原有代码,并轻松支持向其它RA产品家族器件的兼容和扩展。使用FSP的设计人员还能够访问完整的Arm生态系统以及瑞萨的广泛合作伙伴网络,获得各种工具,帮助加快产品上市速度。

瑞萨电子物联网及基础设施事业本部高级副总裁Roger Wendelken表示:“瑞萨的RA产品家族不断为市场带来卓越的性能、功能、设计便捷性和价值,持续超越人们的期望。全新RA4E2和RA6E2产品群的推出,是众多用户采用RA产品家族作为其首选MCU系列的典型实例。我们坚信,这些产品将满足各类应用领域的需求,许多研发人员也将在未来的设计中选用RA产品家族。”

Yole Group计算与软件首席市场及技术分析师Tom Hackenberg表示:“微控制器已占据90%以上的处理器出货量,采用这些MCU的应用领域更是多种多样(注)。瑞萨通过RA产品家族的持续扩展,可以为更多市场的更多用户提供针对广泛特定应用的最优器件。”

RA4E2 MCU产品群

RA4E2产品群提供五种不同的选择,从32引脚到64引脚封装,小至4mm x 4mm的尺寸,以及128kB闪存和40kB SRAM。RA4E2器件具有出色的有源功耗性能,在以100MHz的速度从闪存执行时,功耗为82μA/MHz。此外还具备-40/105°C的扩展工作温度范围。RA4E2产品群是成本敏感型应用和其它需要高性能、低功耗,及小封装尺寸最佳组合系统的理想选择。

RA4E2产品群的关键特性

  • 100 MHz Arm Cortex-M33 CPU内核

  • 128kB集成闪存;40kB RAM

  • 支持宽温度范围:Ta = -40/105°C

  • 32引脚至64引脚封装选项

  • 低功耗操作:在100 MHz频率的运行模式下,功耗为82 µA / MHz

  • 集成通信选项,包括USB 2.0全速设备、SCI、SPI、I3C、HDMI CEC、SSI和CAN FD

  • 通过内部振荡器、丰富的GPIO、高阶模拟功能、低电压检测和内部复位功能降低系统成本

RA6E2 MCU产品群

RA6E2产品群MCU具有200 MHz的性能,其包括10款不同的器件,从32引脚到64引脚封装,小至4mm x 4mm尺寸,从128kB到256kB闪存,以及40kB SRAM。RA6E2器件具有优异的功耗特性,以及广泛的外设与连接选项,提供了性能和功能的独特组合。

RA6E2产品群的关键特性

  • 200 MHz Arm Cortex-M33 CPU内核

  • 128kB至256kB可选集成闪存;40kB RAM

  • 32引脚至64引脚封装选项

  • 低功耗操作:在200 MHz频率的运行模式下,功耗为80 µA / MHz

  • 集成通信选项,包括USB 2.0全速设备、SCI、SPI、I3C、HDMI CEC、SSI、QSPI和CAN FD

  • 集成定时器

  • 高阶模拟功能

成功产品组合

瑞萨将RA6E2 MCU和其产品组合中的其它兼容器件相结合,设计了一款完整的附加语音用户界面(VUI)解决方案。其作为模块化解决方案,可轻松添加至如智能恒温器或电器等任何需要语音用户界面的应用中。其中,RA6E2 MCU负责处理所有任务,因而不会给主机MCU带来负担。以上仅为瑞萨众多“成功产品组合”中的一款。“成功产品组合”作为经工程验证的完整系统架构,将相互兼容的瑞萨器件优化并组合,以降低用户设计风险。瑞萨现已基于其产品阵容中的各类产品,推出超过300款“成功产品组合”,使客户能够加速设计进程,更快地将其产品推向市场。更多信息,请访问:renesas.com/win

瑞萨MCU优势

作为全球卓越的MCU产品供应商,瑞萨电子的MCU近年来的平均年出货量超35亿颗,其中约50%用于汽车领域,其余则用于工业、物联网以及数据中心和通信基础设施等领域。瑞萨电子拥有广泛的8位、16位和32位产品组合,是业界优秀的16位及32位MCU供应商,所提供的产品具有出色的质量和效率,且性能卓越。同时,作为一家值得信赖的供应商,瑞萨电子拥有数十年的MCU设计经验,并以双源生产模式、业界先进的MCU工艺技术,以及由200多家生态系统合作伙伴组成的庞大体系为后盾。关于瑞萨电子MCU的更多信息,请访问:www.renesas.com/MCUs

Embedded World展会参展信息

瑞萨将于3月14日至16日在德国纽伦堡举行的2023年Embedded World展会1号厅234号展台展示全新RA4E2和RA6E2器件。

供货信息

所有新款RA4E2和RA6E2 MCU现均已上市。瑞萨还为两个MCU产品群分别提供单独的评估套件及快速原型开发板。更多信息,请访问:https://www.renesas.com/RA4E2 和 https://www.renesas.com/RA6E2

关于瑞萨电子

瑞萨电子(TSE: 6723) ,科技让生活更轻松,致力于打造更安全、更智能、可持续发展的未来。作为全球微控制器供应商,瑞萨电子融合了在嵌入式处理、模拟、电源及连接方面的专业知识,提供完整的半导体解决方案。成功产品组合加速汽车、工业、基础设施及物联网应用上市,赋能数十亿联网智能设备改善人们的工作和生活方式。更多信息,敬请访问renesas.com。关注瑞萨电子微信公众号,发现更多精彩内容。

围观 17

介绍

瑞萨Virtual EEPROM模块简称VEE模块,该VEE模块模拟基本的EEPROM功能,支持读和写操作两种常见的数据操作。在应用程序的整个生命周期内,保留存储扇区的擦除计数,擦除计数可以随时访问。驱动函数会自动做磨损均衡处理,延长Flash的使用寿命。

主要内容

以开发板EK-RA2E2为例,使用VEE模块存取数据:

1、创建新工程

1.png

2、工程创建完成后,通过FSP配置Virtual EEPROM

2.png

2.1 添加Virtual EEPROM Stack

选择配置标签页 Stack → New Stack → Storage → Virtual EEPROM on Flash(rm_vee_flash)

3.png

2.2 配置Virtual EEPROM Stack

在生成的Stack框图中,点击 Virtual EEPROM on Flash(rm_vee_flash),可以看到e2 studio左下角出现属性栏,按照如图所示配置。

3.png

2.3 配置g_flash0 flash(r_flash_lp)

点击框图中g_flash0 flash(r_flash_lp),并按下图所示,设置Flash Ready Interrupt Priority。此处工程设置为Priority 1,可根据实际需要调整。

4.png

按照上面步骤配置配置完成后,点击5.png  FSP就会生成工程Virtual EEPROM以及相关的初始化代码。

3、编写示例代码,验证Virtual EEPROM功能。

在工程中打开scr/hal_entry.c文件,void hal_entry(void) 函数由main函数调用,我们自己的代码由hal_entry调用,这样做符合瑞萨软件的架构,方便以后使用RTOS。

在hal_entry.c文件中添加下面的代码

6.png

7.png

然后在hal_entry函数调用上面的rm_vee_example函数

8.png


接下来就可以编译调试程序,当程序正常运行起来之后,就可以看到绿色LED灯亮起,说明存到Flash中的数据再读取出来,经过对比确认数据正确。也可以在调试状态下,将全局变量添加到观察窗口,单步调试,观察数据的变化。

程序运行前

9.png

程序运行起来之后

10.png

可以看到右侧相关变量的数值已经有改变

在后面附加了如何在调试过程中观察全局变量数值变化。

*附:观察全局变量的方式

选中要观察的数据名称,右击,选择添加监看表达式

11.png

12.png

可以在调试界面看到相关表达式的值,随着程序运行,可以在这里观察数值的变化。

13.png

结论

使用VEE模块,可以方便地使用Flash存取数据。不再需要自己去考虑数据存储的位置以及磨损均衡等问题,可以把精力专注于实现功能上。

来源:瑞萨MCU小百科

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

围观 12

对于物联网的应用或者产品版本管理等场合,芯片的信息读取是用户非常关心的问题。本文介绍了瑞萨RA家族单片机读取Unique ID、Part Number和Mask Version信息的方法。

我们可以使用如下三个地址中存储的内容来获得相关信息,其地址如下:

“关于RA

注:FMIFRT寄存器的地址为0x407F_B19C。

关于FMIFRT寄存器:

  • FMIFRT是一个只读寄存器,存储Unique ID寄存器、Part Number寄存器和MCU Version寄存器的基址。

  • 应该以32位单位读取FMIFRT。 

  • FMIFRT寄存器的地址为0x407F_B19C。

“关于RA

以下分别介绍如何通过程序代码读出Unique ID、Part Number和Mask Version,这里以RA2L1为例。

(1)Unique ID寄存器地址和读出方法

“关于RA

直接通过FSP的API“R_BSP_UniqueIdGet”就可以读出128位的Unique ID;

参考下面的命令:

const bsp_unique_id_t* unique_id = R_BSP_UniqueIdGet();

(2)Part Number寄存器地址和读出方法

“关于RA

FSP中没有读取Part Number的API,所以需要使用以下代码。

首先定义Part Number寄存器的地址和保存Part Number数组的结构体。

#define BSP_FEATURE_BSP_PART_NUMBER_POINTER                 (0x01001C10U)

typedef struct st_bsp_part_number

{

    union

    {

        uint32_t part_number_words[4];

        uint8_t  part_number_bytes[16];

    };

} bsp_part_number_t;

然后在用户代码中执行下面的命令,即可将Part Number读出。

const bsp_part_number_t* part_number = BSP_FEATURE_BSP_PART_NUMBER_POINTER;

(3)MCU Version寄存器地址和读出方法

“关于RA

FSP中也没有读取MCU Version的API,所以需要使用以下代码。

首先定义MCU Version寄存器的地址:

#define BSP_FEATURE_BSP_MASK_REVISIOM_POINTER               (0x01001C20U)

然后在用户代码中执行下面的命令,即可将MCU Version读出。

const uint8_t* mask_version = BSP_FEATURE_BSP_MASK_REVISIOM_POINTER;

调试状态下读出的结果如下(以RA2L1为例):

“关于RA

“关于RA

“关于RA

产品型号是用ASCII码编写的,这里以RA2L1为例做以下说明。

“关于RA

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

围观 67

介 绍

MCU设计中,很多时候客户需要在Flash指定地址存入指定数据,这里需要用到Flash的绝对定位,我们知道有些公司可以在keil使用char const buf[x] __attribute__ ((at(0x80000))) = {};实现,那么RA是否可以实现?

通过瑞萨官方编译工具e2 studio对.ld脚本文件修改,在Flash上划一小块出来,然后通过__attribute__实现。

具体步骤如下

1、首先在Flash上划一块出来,在e2 studio对.ld文件进行修改。工程路径如下图

“RA

2、fsp.ld文件中,memory选项,Add新的分区,这里直接指定起始地址和长度。

“RA

3、fsp.ld下,文本编辑,初始my_code(!rx),删除”!”

“RA

4、如下,编辑my_code

“RA

在文本编辑会自动创建代码如下:

“RA

5、为了避免可能出现的问题,最好修改Flash地址空间,因为到此时,my_code被包在Flash区,需要修改flash区地址。

首先,复制memory_regions.ld并改名到同一目录下,在fSP.ld文件文本编辑处include新复制的文件:

“RA

接下来,我们需要在memory_regions_my.ld修改Flash空间

“RA

同样,我们可以在此处设置my_code的起始地址和长度,在第2步新建的分区直接用起始地址和长度别名替代。

6、在主函数变量声明处,添加代码

const char buff[16] __attribute__((section(".my_code "))) = {"1234567890abcdef"};

buff长度需与分区大小相同,否则会报错。

Build需要使用release。

7、编译完成后,查看如下:

“RA

注:推荐大家使用e2 studio help contents:(非常好用!!!)

更多信息请扫描下方二维码查看:

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

围观 76

瑞萨RA系列MCU采用Arm® Cortex® M33,M23,M4内核,提供强大的运算能力及丰富的外围设备功能,同时具有非常低的功耗,并且通过了PSA等多项业内安全认证。非常适合于锂电池BMS(Battery Management System电池管理系统)领域,特别是出口型锂电池产品中。

下面我介绍RA MCU在8~16串锂电池BMS中的应用案例。

BMS电池管理系统一般包含以下几个部分:电压采样、电流采样、充放电控制、硬件过流保护、SOC算法、对外的通信接口等。本案例中SOC算法和通信接口,由RA2L1(R7FA2L1A93CFL)完成,其余部分由AFE(Analog Front End)模拟前端芯片ISL489206或ISL489204(14串)完成。

“瑞萨RA

考虑到主机端的通信,需要兼容CAN、Uart、I2C、SMBus等多种通信协议,所以MCU部分采用了RA2L1系列带CAN控制器的MCU。另外,电池在实际使用中,因某些原因(比如修复Bug),电池包固件需要在线升级功能,电池在升级固件过程中,为了预防电池包升级失败变成”砖头”,电池包的MCU需要有固件备份功能,所以Flash要选择128K或者256K(成本没压力的建议直接上256K)。

BMS的MCU除了与主机通信外,还需要与AFE芯片通信(I2C)接口,所以需要至少2路I2C通信,另外驱动LED指示灯(电池剩余容量指示),需要5个I/O,开关机按键及一些其它的控制逻辑(模拟量采集)等,综合考虑MCU封装至少选择48Pin或者64Pin,部分移动储能类电池,可能需要带LCD驱动的MCU(工业级温度,是基于安全性考虑)。

AFE部分选择了瑞萨的集成高边N-FET驱动的模拟前端,该系列产品具有高精度电压电流ADC和硬件过流保护及内部均衡功能。RA MCU通过I2C与ISL489206通信,进行电压采样,电流采样及均衡控制,温度和LED指示灯控制。

“瑞萨RA

整个方案的供电部分(主要是给RA MCU供电),有两种选择,一种是通过外挂晶体管,进行降压,好处是成本低,坏处是会有功率损耗发热,本案例采用的是这种办法。另外一种是外挂一颗高输入电压的LDO,比如ISL6719(最大100V输出)、ISL78301(针对10串以内磷酸铁锂)、CAN通信部分,如果需要隔离,可以采用外挂隔离电源解决(可选配URB2405S-6WR3模块)。

SOC算法及配套上位机,需要根据具体应用进行开发,可联系下面的QR链接,进行查询定制,本案例采用了阻抗追踪算法,可用于动力电池大电流/复杂工况的产品中,已经有量产案例,具体请联系了解。

“瑞萨RA

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

围观 147

近日,在Renesas和RT-Thread工程师协作下,完成瑞萨Cortex-M内核RA产品家族MCU的RT-Thread BSP框架和制作教程发布,这意味着使用RA MCU(RA2系列、RA4系列、RA6系列)的开发者可以根据教程快速制作自己的BSP,使用RT-Thread丰富的组件和软件包进行产品应用开发,提高开发效率。

“瑞萨Cortex-M内核RA

RA MCU的RT-Thread BSP结合了瑞萨电子的灵活配置软件包(下文简称FSP)配置工具,FSP的图形化工具界面(RASC,RA智能配置器)可以让使用者可视化地选择所用的芯片,并配置选用任一引脚、外设,能减轻底层开发工作量,节约时间。

“瑞萨Cortex-M内核RA

RA MCU的RT-Thread BSP框架不仅大大提高了代码复用率,降低了BSP的维护成本,而且可以更方便地给开发者提供更丰富的驱动文件,让开发者可以更容易地找到自己需要的资源。其主要特性如下:

  • 使用FSP生成的RA模板工程,降低新BSP的添加难度

  • 通用的驱动文件,开发者可以方便地使用所有驱动

  • 使用FSP配置工具对芯片外设进行图形化配置

每一个BSP主要由两部分组成,分别是通用驱动库、特定开发板BSP,下面的表格是以CPK-RA6M4的BSP为例:

“瑞萨Cortex-M内核RA

RA MCU RT-Thread BSP制作教程请点击链接查看:https://github.com/RT-Thread/rt-thread/tree/master/bsp/renesas

“瑞萨Cortex-M内核RA

下面对RA MCU产品做简要介绍,以便开发者更好地了解RA产品家族MCU,并选择合适的型号使用。

RA产品家族MCU

Renesas Advanced(RA)32位MCU采用Arm® Cortex®-M33、Arm® Cortex®-M23和Arm® Cortex®-M4处理器内核,瑞萨 RA 产品家族单片机包括四个系列——已经发布的RA2系列,适用于低功耗应用;RA4系列,适用于需要低功耗、高性能和高安全性的设备;RA6系列,具有卓越的连接性能和安全性能。瑞萨还计划发布RA8系列。

关于瑞萨电子RA MCU产品线路图可参考如下:

“瑞萨Cortex-M内核RA

已经发布的RA2、RA4和RA6系列特色如下:

RA2系列

低功耗:基于Arm Cortex-M23内核,最高频率48MHz,拥有高达512KB的闪存和64KB的SRAM。电源电压范围为1.6V到5.5V。外设包括全速USB、CAN、24位∑-△模数转换器(ADC)、12位数模转换器(DAC)、电容式触摸感应以及安全功能。

RA4系列

高性能和出色的功耗:基于支持TrustZone的Arm Cortex-M33内核或Arm Cortex-M4F内核构建,最高频率100MHz。高达1MB的闪存和128KB的SRAM。电压范围为1.6V到5.5V。外设包括电容式触摸感应、段码式LCD控制器、全速USB、CAN、安全功能以及数据转换器和定时器。RA4W1系列器件还额外配备了Bluetooth®低功耗(BLE)5.0。

RA6系列

高性能:基于支持TrustZone的Arm Cortex-M33内核或Arm Cortex-M4F内核。最高频率240MHz。高达2MB的闪存和640KB的SRAM。电压范围为2.7V到3.6V。外设包括数据转换器、定时器、外部存储总线、以太网、全速和高速USB、CAN、安全功能、电容式触摸感应和用于TFT显示的图形LCD控制器,以及2D图形加速引擎。RA6Tx系列器件带有用于电机控制的增强型外设,如高分辨率PWM定时器或高级模拟模块。

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

围观 81

前篇回顾

瑞萨RA MCU如何从指定地址开始调试代码(一)之e2 studio篇

在上次的连载中,我们介绍了在e2 studio中如何将project进行地址偏移,然后进行调试的操作步骤。此次的连载中,我们会介绍在Keil和IAR中如何进行相应的设置,以达到从指定地址开始调试代码的目的。

对于Arm芯片,要求起始地址0开始放置初始堆栈指针,复位向量表等必备内容,所以如果0地址处为全FFh,则无法调试代码。

为从指定地址开始调试代码,可以在IDE中重新指定MCU运行所需的地址偏移(Initial stack pointer和Initial program counter)。本次以Keil和IAR为例分别进行说明。

首先介绍Keil中的配置:

1.linker script脚本文件进行修改(代码编写阶段)

修改linker script脚本,以memory_regions.scat文件为例,FLASH_START是代码进行编译时,基础的偏移地址,默认为0,根据要求修改为application的目标偏移地址,如0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000。

“瑞萨RA

“瑞萨RA

2.Debug Configuration的设置(代码调试阶段)

在Keil设定中,首先修改Linker>R/O Base,设定为0x4000。

“瑞萨RA

将如下内容另存为一个*.ini文件(如app_0x4000.ini),放在Project目录下的script文件夹中。

FUNC void Setup (void)

{

    SP = _RDWORD(0x00004000);       // Setup Stack Pointer

    PC = _RDWORD(0x00004004);       // Setup Program Counter

    _WDWORD(0xE000ED08, 0x00004000);    // Setup Vector Table Offset Register

}



LOAD Objects\RA4M2_TE_app.axf INCREMENTAL    // Download

Setup();                                        // Setup for Running

在下图中指向该*.ini文件。

“瑞萨RA

调试效果如下图所示,代码在跳到main()函数时,地址在0x4000+处。

“瑞萨RA

接下来介绍IAR中的配置:

1.linker script脚本文件进行修改(代码编写阶段)

修改linker script,以memory_regions.icf文件为例,FLASH_START是代码进行编译时,基础的偏移地址,默认为0,根据要求修改为application的目标偏移地址,如0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000。

“瑞萨RA

“瑞萨RA

2.Debug Configuration的设置(代码调试阶段)

修改Debugger>Extra Options中的设定,如下图所示。

“瑞萨RA

代码调试效果如下图所示,跳到main()函数时,地址在0x4000+处。

“瑞萨RA

未完待续......

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

围观 541

首先,什么是BSP呢?

BSP(Board Support Package)是板级支持包,是介于主板硬件层和应用代码层之间的一层,应该说是属于硬件驱动的一部分,主要目的是为了让MCU顺利启动,并使之能够更好的运行于硬件主板。

当我们创建一个RA的工程时,我们会在下图中选择所使用的电路板,所对应的就是BSP文件,其中包括了使用电路板上MCU的型号、时钟、引脚和外围功能等设置。

“RA

那么用户是否可以创建针对自己主板的BSP文件呢,答案当然是肯定的,请参考以下步骤。

01、使用“Custom User Board(Any Device)”创建项目并选择正确的设备(本例中为RA6M4)。

“RA

02、选择Flat->No RTOS->Bare Metal–Minimal作为项目配置。

在本例中,我们会以在BSP文件中加入一些LED的配置为例,所以可以选择裸机应用工程。如果需要建立与以太网等功能相关的工程,则需要选择建立一个基于RTOS的项目。请根据实际应用选择适合放入BSP文件的项目类型。

“RA

“RA

“RA

03、将board文件夹添加到ra/目录,并在其下方添加一个文件夹,该文件夹使用board的名称(全部小写,如本例中的ra6m4_iot):

“RA

04、点击“RA生成工程内容,将文件ra_cfg/fsp_cfg/bsp/board_cfg.h复制到src/目录下。

“RA

然后在配置器的组件选项卡中,取消选中自定义板:

“RA

并再次重新生成项目内容。这将删除文件ra_cfg/fsp_cfg/bsp/board_cfg.h。(文件src/board_cfg.h仅用于测试板文件实际编译和工作,使用最终bsp时,工具会自动生成文件ra_cfg/fsp_cfg/bsp/board_cfg.h。)

05、将需要的BSP文件添加到对应的主板目录:

“RA

文件board.h应该包含板类型的定义:

“RA

06、在文件src/board_cfg.h中为board目录中的文件board.h添加#include:

“RA

07、构建项目,应该没有build errors,并且确认文件中的代码都参与编译:

“RA

08、现在需要配置引脚。在配置器的引脚选项卡中,有默认引脚配置:

“RA

09、点击“Manage configurations”:

“RA

10、重命名引脚配置以匹配板的名称:

“RA

单击“OK”以接受更改。在Pins选项卡中,编辑引脚配置以匹配它所对应的主板功能配置,例如P114引脚用于控制RA6M4_IOT板上的LED,就将其配置为GPIO输出模式:BSP中可以对多个引脚配置,请根据实际需要,添加更多引脚配置。

“RA

11、BSP选项卡中的设置,以及配置器的时钟选项卡也包含在BSP中,因此需要为目标板正确配置这些内容。

12、此时,构建和测试BSP以确保正确设置主板文件和引脚配置,只有当您对所有内容都满意时才继续实际创建BSP。

13、确保没有未保存更改的打开文件(源文件和配置文件Configuration.xml),保存并关闭所有打开的文件。

14、在项目资源管理器中右键单击项目,选择“Export FSP User Pack”,然后选择“Create a board pack”:

“RA

15、填写供应商和板名:

“RA

16、然后点击“下一步”。在下一个屏幕上,填写Sub-group和Board Name(这需要小写,以匹配板文件夹名称):

“RA

17、点击“RA添加主板源文件:

“RA

18、单击“OK”,然后单击“Finish”创建BSP包文件,将显示如下消息:

“RA

19、紧接着是另一条消息(e2 studio检测到新的BSP包文件):

“RA

20、单击“OK”和“Yes”清除2条消息。

新的BSP包文件现已成功创建。要测试BSP,请创建一个新的FSP项目,该板的BSP应出现在可用板列表中:

“RA

21、可以确认一下,新建工程将使用板的引脚配置,并且使用BSP构建的项目应该可以无错误地编译。

“RA

至此,已经完成自定义BSP的所有步骤。

那么接下来,您可能要问,我创建好的BSP如何导出并应用于其他开发者的开发环境中(e2 studio下)呢?

首先,我们需要找到本机中所安装e2 studio的modules和packs文件夹所在位置。

菜单中点击“Help”–>“About e2 studio”–>“Installation Details”

“RA

“RA

可以看到如下对话框

点击“Support Folders”

并点击“e2 studio support area”右侧链接

“RA

“RA

在\internal\projectgen\ra\modules和\internal\projectgen\ra\packs文件夹下,可以看到刚刚创建好的BSP文件

“modules”文件夹下有两个.xml文件

“RA

“packs”文件夹下有一个.pack

“RA

按照同样的寻找位置的方法,将这个三个文件拷到其他电脑的相应位置,就可以正常使用这个BSP文件了。

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

围观 75

随着越来越多的设备要求支持OTA(Over The Air)代码升级,并行开发bootloader和application的需求也越来越多。这就要求在开发阶段,可以将application project地址进行偏移,跟最终的地址空间划分一致。

对于Arm芯片,要求起始地址0开始放置初始堆栈指针,复位向量表等必备内容,如下图所示(以RA2L1手册为例),所以如果0地址处为全FFh,则无法调试代码。

“”

为应对这种需求,可以在IDE中重新指定MCU运行所需的地址偏移(上图中的Initial stack pointer和Initial program counter)。本次以e2 studio为例进行说明。

linker script脚本文件进行修改(代码编写阶段)

首先需要将linker script脚本文件进行修改,以memory_regions.ld文件为例,FLASH_START是代码进行编译时,基础的偏移地址,默认为0,根据要求修改为application的目标偏移地址,如0x4000。重新编译工程,检查编译生成的srec文件或mot文件,确认文件起始地址为0x4000。

“”

“”

Debug Configuration的设置(代码调试阶段)

在Debug Configuration中,将如下的三行代码添加到Startup > Run Commands中。

set $sp = *0x4000

set $pc = *0x4004

set {int}0xe000ed08 = 0x00020000

“”

关于这3行代码,意义依次解释如下:

set $sp = *0x20000

由于代码起始地址处要求放置stack pointer地址,如下图所示,指向0x20000

“”

set $pc = *0x20004

此处是reset vector存放的地址

set {int}0xe000ed08 = 0x00020000

E000ED08h是Vector Table Offset Register的地址,是ARM核芯片通用的寄存器,可以在MCU对应的内核手册及相关文档中查找。

例如,Arm® Cortex®-M4在以下链接中有详细说明:

https://developer.arm.com/documentation/ddi0337/e/nested-vectored-interrupt-controller/nvic-programmer-s-model/nvic-register-descriptions

点击下图中的调试按钮,在新界面中确认如下内容,RESET向量位于0x4C45处,上电后代码停在0x4C44处。

“”

关于最后一个bit的差异,说明如下:

上电后CPU检查地址偏移为0x0004处的数据最低位,假如该位为1,则表明这是一个可用的thumb地址。之后会忽略该位(将其设定为0)并按照修改后的地址取首个指令作为复位句柄。更多细节请参考Arm处理器相关文档。

以上为e2 studio中的相关设定,在Keil MDK和IAR中也有类似的等效设定,会在下次连载中进行说明,敬请期待。

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

围观 448
订阅 RSS - RA MCU