RA MCU

近日,在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)。

围观 106

前篇回顾

瑞萨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)。

围观 890

首先,什么是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)。

围观 129

随着越来越多的设备要求支持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)。

围观 851

页面

订阅 RSS - RA MCU