文章来源 Cytech Engineer

通过瑞萨 Python 工具烧录 N2L 操作及常见问题处理

一、引言

本文主要介绍通过瑞萨提供的 Python 工具,把例程的二进制文件从上位机电脑烧录到 MPU 的外挂 Flash 中,并上电启动该例程进行验证。操作过程详细记录了每一个步骤,并针对实际可能遇到的问题进行了说明与解决。整体操作流程如下图 (图1) 所示:

图1 烧录操作整体流程图
图1 烧录操作整体流程图

准备工具

  1. 官方例程软件包 (含 LED 闪烁例程及 Python 工具)
  2. Python 环境 (3.8 以上版本)
  3. 瑞萨 N2L 开发板,本操作过程用的是官方的 RSK+
  4. IDE:本操作用的是基于 Eclipse 的官方 IDE E2 Studio 以及 FSP 3.0.0
  5. 上位机:个人笔记本或者电脑等
  6. 参考资料:瑞萨 N2L 的数据手册、硬件手册等

二、例程下载与文件介绍

例程下载

本次操作所需的官方例程软件包,大家可以通过访问瑞萨官网 RZ-N2L RSK 开发套件资源页下载完整的示例工程及工具包,下图 (图2) 为例程下载页面:

图2 例程下载页面
图2 例程下载页面

例程文件介绍

打开下载完成的 sample 文件包,文件包内主要包含 PDF 和设备 setup 文件夹。PDF 是使用手册和 release 注意事项,使用手册对例程的使用方法进行了简要介绍,setup 文件夹则包含软件例程与 Python 工具。下面将对文件包中的文件进行详细介绍:

【rzt2-n2-flashboot 文件包一览】

图3 rzt2-n2-flashboot 文件包内容
图3 rzt2-n2-flashboot 文件包内容

【Device setup 文件夹内容一览】

如下图 (图4) 红框所示,本次操作将用到两个核心工具:device_setup.py (烧录工具) 与 parameter_generator.py (Loader 参数生成工具)。

之所以要生成 Loader 参数是因为 IDE 生成的程序缺少 Loader 参数,但是在 MPU 启动的时候,会先从外部 Flash 加载参数数据到 N2L 内部的 TCM 区域 (一种高性能 RAM),所以需要靠这个工具去生成这段参数文件。建议将这两个工具放在同一文件夹中,便于后续 Python 脚本调用。

图4 Device setup 文件夹内容
图4 Device setup 文件夹内容

【例程包介绍】

例程包中提供了针对不同型号的例程,本次操作以 N2L 为例。在 N2L 文件夹中,主要使用以下两个文件:

(1) RZN2L_bsp_led:
LED 闪烁示例工程,用于生成待烧录的二进制文件。软件包中虽已提供预编译的 RZN2L_bsp_led.bin,但建议通过自行编译来熟悉工程配置流程。

(2) RZN2L_RSK_DeviceSetup_qspi.out.srec:
设备设置文件根据启动介质分为 _qspi (QSPI Flash) 和 _nor (NOR Flash) 两个版本,本次操作使用 QSPI 版本。

三、开发环境配置与工程编译

开发环境安装与配置

(1) E2 Studio 与 FSP:需使用 E2 Studio 并安装 FSP 3.0.0 或更高版本。可从瑞萨官网或 Github 下载。需要注意,在安装的过程中需选择正确的型号,因为 E2 Studio 不同系列甚至不同型号版本并不通用,如果下到 RA 或者 RZ T 系列等,是不能跑 N2L 的。

(2) Python 安装:需安装 Python 3.80 及以上版本,安装时务必勾选“Add Python to PATH”。安装完成后电脑里已有了 Python 的环境。

导入工程与编译

打开 E2 Studio,选择不含中文、空格及特殊字符的工作路径,避免因路径问题导致报错。通过菜单栏“File”->“Import”导入工程,选择“Existing Projects into Workspace”导入现有的工程。本操作选择不解压例程文件夹,因此在导入时勾选“Archive file”,浏览并选中例程压缩包,系统将自动识别并解压至工作空间。如果是解压了例程的话,需要选择上面的 select root directory 选项。

图5 导入压缩文件夹示例
图5 导入压缩文件夹示例

导入后需要打开 XML 配置文件,点击“Generate Project Content”以生成驱动代码。之后右键点击工程名称,进入属性设置界面,检查项目配置是否对应 N2L 型号,确认无误后编译工程。若编译报错,请检查 FSP 版本是否为 3.0.0 或以上,以及是否使用了正确版本的 IDE。

编译成功后,在工程的 Debug 文件夹 (路径通常为 workspace\RZN2L_bsp_led\Debug) 中会生成 RZN2L_bsp_led.bin 文件。建议创建一个专用文件夹,将该 bin 文件与 Python 烧录工具放置在一起,便于后续统一操作。

四、硬件连接准备与配置

硬件连接

完成工程编译与二进制文件生成后,接下来进行硬件连接。首先连接开发板的供电口和串口 (本次采用 SCI 模式),如下图 (图6) 为瑞萨 N2L 开发板连接后的示意图:

图6 瑞萨 N2L 开发板连接示意图 (供电口+串口)
图6 瑞萨 N2L 开发板连接示意图 (供电口+串口)

确认串口号

可以通过 PC 的设备管理器去识别串口。以本操作为例,电脑的 COM7 口是对应板子的连接的串口,该串口号将在后续指令输入中被调用,需提前记录。

图7 串口确认
图7 串口确认

拨码开关配置

根据开发板使用手册,若采用 SCI 下载模式,需将 RSK+ 板上的 SW4 拨码开关前四位分别设置为 OFF、ON、OFF、ON。配置完成后,请重新上电以确保设置生效。

除了 SCI 模式,也可以进行 USB 模式,其连接方式及拨码开关配置存在差异,具体操作可参考官方手册进行调整。

五、Python 操作

确定 Python 工具的执行路径

前面我们已将 bin 文件与 Python 工具文件放置于同一文件夹中。在该文件空白处点击鼠标右键,选择“在终端中打开”以打开命令框,需确保命令窗口路径位于当前文件夹下,否则后续指令将无法正常执行。

图8 在工作文件夹下打开命令框
图8 在工作文件夹下打开命令框

生成 Loader 参数

打开命令框后,首先使用 parameter_generator.py 工具,基于编译生成的 RZN2L_bsp_led.bin 文件生成一个新的烧录文件 RZN2L_bsp_led_xspi0.bin。N2L 支持 xSPI0 和 xSPI1 两种启动模式,本次操作采用 xSPI0 模式,对应执行指令如下:

Python parameter_generator.py loader --mpu rzn2l --target_cpu cr52 --modexspi0--src_addr 60000050 --dest_addr 00102000 -i RZN2L_bsp_led.bin -o  --concat_loader
图9 输入命令代码
图9 输入命令代码

根据芯片硬件手册描述,XSPI 模式下,需要把 Loader 参数存到 60000000 或 68000000 以上的地址区间。dest_add 参数是指定紧密耦合内存 (BTCM) 的起始地址,该内存被用作加载器程序的提取目标。指定加载器程序的提取目标区域,以确保该区域在 0x00102000 到 0x0011FFFF 的范围内。

图10 芯片硬件手册中关于 Loader 参数的描述
图10 芯片硬件手册中关于 Loader 参数的描述
图11 芯片硬件手册中关于 dest_add 参数的描述
图11 芯片硬件手册中关于 dest_add 参数的描述

如下图 (图12) 标记是生成的 RZN2L_bsp_led_xspi0.bin 文件,该 Bin 文件除了用户程序外,还加了一段刚刚生成 Loader 参数。

图12 生成的 RZN2L_bsp_led_xspi0.bin 文件
图12 生成的 RZN2L_bsp_led_xspi0.bin 文件

除了 xSPI0 启动以外,手册中还描述了其他启动模式下,对应的地址和命令。

图13 例程手册中关于启动 mode 和其相关配置的描述
图13 例程手册中关于启动 mode 和其相关配置的描述

启动设备设置程序

执行以下命令,将设备设置文件加载至开发板 RAM 中,为后续烧录建立通信通道:

python device_setup.py start --portCOM7--boot_mode sci -I RZN2L_RSK_DeviceSetup_qspi.out.srec

该操作的目的是通过 device_setup.py 工具把 RZN2L_RSK_DeviceSetup_qspi.out.srec 文件加载至 RAM 的对应区域中,后续 RAM 即可搬运用户文件,通过 RAM 将用户程序写入 Flash。 

常见问题与处理

问题 1:出现无 serial 模块报错

首次执行时可能遇到如下报错,提示找不到 serial 模块:

图14 无 serial 模块报错示意图
图14 无 serial 模块报错示意图

这是由于未安装 Python 的串口通信库所致。执行以下命令下载安装即可:

Pip install pyserial

命令框返回下载完成的提示后重新执行前文所示的命令。

问题 2:没有收到回复

重新执行命令提示符后,正常应出现如下输出:

SCI Download mode.
Send program data. (S0)
-- Load Program to BTCM ------------------
Send program data. (S3)
-- Start Boot Program on BTCM ------------

如下图 (图15) 是使用了命令提示符后,并未出现如期一致的反馈示意图,说明操作过程出现了失误。

图15 命令无响应反馈示意图
图15 命令无响应反馈示意图

首先检查拨码开关设置是否正确,若无问题,通常是未重新上电导致配置未生效,重新上电后再次执行即可。

烧录用户程序文件

输入以下指令。如下图 (图16) 绿色标记所示:writeflash : Setup success. 说明以上整个烧录的过程成功。

python device_setup.py writeflash --port COM9 --addr 60000000 -i
RZN2L_bsp_led_xspi0.bin
图16 成功烧录示意图
图16 成功烧录示意图

运行例程

烧录完成后,需调整拨码开关并重新上电,以验证程序是否正常执行,随后将拨码开关 SW4 前四位全部拨至 ON 位置。

图17 拨码开关设置
图17 拨码开关设置

重新上电后,观察开发板 LED 状态。若 LED 开始规律闪烁,说明程序已成功烧录至外挂 Flash 并被正确加载执行,如下图 (图18) 所示:

图18 LED 闪烁,程序运行正常
图18 LED 闪烁,程序运行正常

六、总结

通过瑞萨提供的 Python 烧录工具,开发者可以简单便捷和无成本地烧录程序到外设 flash 中,方便项目的开发。本文详细记录了从环境准备、文件生成、命令烧录到验证运行的完整流程,并对常见问题进行了说明及提供解决思路。

欲了解关于更多瑞萨相关方案或技术信息,请与骏龙科技当地的办事处联系或点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。

更多信息: