通常来说,针对RA的开发,瑞萨对于第三方IDE的支持(如IAR EW for ARM)均通过RASC(Renesas RA Smart Configurator)实现。具体地说,通过RASC创建基础工程,在FSP界面中添加相关驱动/中间件,生成可以在IAR EW for ARM中打开的***.eww (the workspace file)文件。
假如在开发过程需要多人协作,则需要将原始的单一工程拆分为库文件对应的工程和应用程序对应的工程。本文介绍一种在IAR中生成库文件,并被应用工程调用的参考流程。以RA6M5为例进行说明。
分为以下几步:
利用RASC创建基础驱动工程ra6m5_rasc_driver
在IAR中创建库工程ra6m5_lib,并将第一步生成的ra6m5_rasc_driver内容添加进来
在IAR中创建空的C工程ra6m5_iar_demo
调试ra6m5_iar_demo和ra6m5_lib.a
create ra6m5_rasc_driver with rasc
利用RASC创建RA工程
按照以下步骤创建RA的IAR工程,命名为ra6m5_rasc_driver,该工程内容是生成库工程的基础
1 设置工程名称和位置,建议在位置界面路径添加和工程名称一样的字符串,会在相应路径下创建一个同名文件夹用于存储工程内容

2 Device and Tools Selection界面按照实际需求配置即可

3 Project Type Selection界面选择Flat

4 RTOS Selection界面选择No RTOS

5 Project Template Selection界面选择Bare Metal - Minimal

在FSP中增加UART驱动
以添加UART驱动为例进行说明
1 在Stack选项卡,New Stack → Connectivity → UART (r_sci_uart)

2 更改驱动属性,如g_uart7 UART (r_sci_uart)

3 更新hal_entry.c以支持新增驱动,如增加对callback的定义
4 点击Generate Project Content以生成相关代码
5 在IAR中对工程进行编译
create ra6m5_lib in iar
在IAR中创建新的workspace ra6m5_lib
现在,我们在IAR中新建库类型的workspace,作为后续添加库工程的基础。

File → Save Workspace As…

将workspace另存为ra6m5_lib.eww

新建工程ra6m5_lib
Project → Create New Project…

Project templates → Empty project

另存为ra6m5_lib.ewp

将文件夹和文件拷贝到ra6m5_Lib
将ra6m5_rasc_driver文件夹中的以下内容拷贝到ra6m5_lib工程中
ra
ra_cfg
ra_gen
script
src
memory_regions.icf
partition_device.mac

在工程中添加源文件
ra\board\ra6m5_ek
ra\fsp\src\bsp\cmsis\Device\RENESAS\Source
ra\fsp\src\bsp\mcu\all
ra\fsp\src\r_ioport
ra\fsp\src\r_sci_uart
ra_gen
src


修改配置C/C++ Compiler - preprocessor
将以下内容粘贴至Options for node “ra6m5_lib” → C/C++ Compiler → Preprocessor → Additional include directories:
$PROJ_DIR$/ra/arm/CMSIS_5/CMSIS/Core/Include
$PROJ_DIR$/ra/board/ra6m5_ek
$PROJ_DIR$/ra/fsp/inc/api
$PROJ_DIR$/ra/fsp/inc/instances
$PROJ_DIR$/ra_cfg/fsp_cfg/bsp
$PROJ_DIR$/ra_gen
$PROJ_DIR$/ra/fsp/inc
$PROJ_DIR$/ra_cfg/fsp_cfg
_RENESAS_RA_
_RA_CORE=CM33

修改配置assembler - preprocessor
将以下内容粘贴至Assembler → Preprocessor → Additional include directories:
$PROJ_DIR$/ra/arm/CMSIS_5/CMSIS/Core/Include
$PROJ_DIR$/ra/fsp/inc
$PROJ_DIR$/ra/fsp/inc/api
$PROJ_DIR$/ra/fsp/inc/instances
$PROJ_DIR$/ra_cfg/fsp_cfg
$PROJ_DIR$/ra_cfg/fsp_cfg/bsp
$PROJ_DIR$/ra_gen
$PROJ_DIR$/src
_RENESAS_RA_
_RA_CORE=CM33

修改配置Linker
config
在Linker → Config界面勾选Override default,填入以下内容:
$PROJ_DIR$\script\fsp.icf

在IAR中创建新的workspace ra6m5_lib
修改配置Linker
Library
在Linker → Library界面勾选Override default program entry,勾选Entry symbol,并填入以下内容:

在Linker → Extra Options界面勾选Use command line options,参数界面填入以下内容:
--config_search “$PROJ_DIR$”

在Debugger → Setup界面,Driver → J-Link/J-Trace
Setup macros勾选Use marco file(s),参数界面填入:
$PROJ_DIR$\partition_device.mac

在Debugger → Download界面,取消勾选 Use flash loader(s)

在Debugger → Extra Options界面,勾选 Use command line options,参数界面填入以下内容:
--drv_vector_table_base=__Vectors
--proc_stack_main=g_main_stack,g_main_stack+sizeof(g_main_stack)

1 在ra6m5_lib 上点击右键,选择Options…

2 General Options → Target → Device → Renesas R7FA6M5BH

3 General Options → Target → Output → Output file → Library

检查lra6m5_lib.a文件
1 编译工程ra6m5_lib

2 在Build console中确认编译操作成功

3 在ra6m5_lib\Debug\Exe文件下确认已生成ra6m5_lib.a库文件

Create RA6M5 IAR DEMO in IAR
创建新workspace ra6m5_IAR_DEMO
接下来,我们将创建新的workspace,作为应用工程,命名为ra6m5_iar_demo

File → Save Workspace As…

重复 新建工程ra6m5_lib ~ 修改配置debugger - extra options 的操作步骤

Project → Create New Project…

Project templates → Empty project

Save as ra6m5_iar_demo.ewp

从ra6m5_lib中复制一下内容,并拷贝到ra6m4_iar_demo文件夹
script
memory_regions.icf
partition_device.mac
vector_data.c (位于ra6m5_lib的ra_gen文件夹下)

将以下内容粘贴至C/C++ Compiler → Preprocessor → Additional include directories:
../../ra6m5_lib/ra/arm/CMSIS_5/CMSIS/Core/Include
../../ra6m5_lib/ra/fsp/inc
../../ra6m5_lib/ra/fsp/inc/api
../../ra6m5_lib/ra/fsp/inc/instances
../../ra6m5_lib/ra_cfg/fsp_cfg
../../ra6m5_lib/ra_cfg/fsp_cfg/bsp
../../ra6m5_lib/ra_gen
../../ra6m5_lib/src
_RENESAS_RA_
_RA_CORE=CM33

将以下内容粘贴至Assembler → Preprocessor → Additional include directories:
$PROJ_DIR$/ra/arm/CMSIS_5/CMSIS/Core/Include
$PROJ_DIR$/ra/fsp/inc
$PROJ_DIR$/ra/fsp/inc/api
$PROJ_DIR$/ra/fsp/inc/instances
$PROJ_DIR$/ra_cfg/fsp_cfg
$PROJ_DIR$/ra_cfg/fsp_cfg/bsp
$PROJ_DIR$/ra_gen
$PROJ_DIR$/src
_RENESAS_RA_
_RA_CORE=CM33

参数界面填入 $PROJ_DIR$\script\fsp.icf

$PROJ_DIR$\..\ra6m5_lib\Debug\Exe\ra6m5_lib.a
勾选Override default program entry
勾选Entry symbol,参数界面填入 Reset_Handler

在Linker → Extra Options界面
勾选 Use command line options
参数填入 --config_search “$PROJ_DIR$”

Driver → J-Link/J-Trace
Setup macros
勾选 Use marco file(s)
参数填入 $PROJ_DIR$\partition_device.mac

取消勾选 Use flash loader(s)

在Debugger → Extra Options界面
勾选 Use command line options
--drv_vector_table_base=__Vectors
--proc_stack_main=g_main_stack,g_main_stack+sizeof(g_main_stack)

1 在 ra6m5_iar_demo上点击右键,选择 Options…

2 General Options → Target → Device → Renesas R7FA6M5BH

Debug ra6m5_iar_demo + ra6m5_lib.a
1 利用USB-UART连接RA6M5的SCI7和PC (TxD7 - P613, RxD7 - P614)

注意,此时ra6m5_iar_demo调用的API均来自ra6m5_lib.a,UART相关callback的实现也在ra6m5_lib.a中。
至此,已经完成了在IAR中利用Lib开发RA产品的全部流程。
概括一下,需借助RASC生成基础工程,并基于此生成Library工程,应用工程可在IAR中单独建立,添加RA相关的配置后,再关联Library即可完成。