嵌入式技术论坛
直播中

贾虎世

7年用户 1609经验值
私信 关注
[问答]

如何对Renesas RA6M4开发板的FLASH模块进行测评呢

硬件部分

本次测评的板子为基于瑞萨 RA6M4 MCU 开发的 CPK-RA6M4 MCU 评估板。

支持 TrustZone®的 200 MHz Arm® Cortex®-M33 内核, LQFP144封装
192KB 支持奇偶校验 SRAM 以及 64kb ECC SRAM
最大 1 MB 代码闪存
8 KB 数据闪存
SEGGERJ-Link®板上接口。10 引脚 JTAG / SWD 接口
USB接口(主/从设备); 用户 LED; 用户按钮开关和可选的用户电位计; I2C 总线通信的光传感器(ISL29035)


可以看出板子的功能和资源还是很丰富的。
由于手头没有FLASH芯片模块, 所以决定测试片上FLASH功能, FLASH部分框架如图


片上FLASH分成两部分:代码FLASH和数据FLASH。


环境搭建
基于 RT-Thread Studio开发环境搭建RA 开发环境搭建必备工具
RT-Thread Studio V2.2.1集成IDE环境。
灵活配置软件包 (FSP) :可快速配置开发板的外设功能,请使用 v3.5.0 版本,目前可在github上下载3.5.0版本。安装好了之后将CPK_RA6M4_BSP_FSP3.5.0.zip解压,将里面的internal目录内的内容对应的拷贝到fsp_v3.5.0内对应目录增加,这样就可以使用FSP配置CPK-RA6M4开发板的相关引脚配置了,类似STM32cubemx的功能。


安装 RT-Thread 代码包 4.0.5; Renesas CPK-RA6M4 支持包 1.2.1; 工具链支持包 GNU for ARM 10.2.1; 调试支持 JLink v7.50a
fal 抽象层软件模块

FAL (Flash Abstraction Layer) Flash 抽象层,是 RT-Thread 的一个软件包,是对 Flash 及基于 Flash的分区进行管理、操作的抽象层,对上层统一了 Flash 及分区操作的 API ,并具有以下特性:

• 支持静态可配置的分区表,并可关联多个 Flash 设备;
• 分区表支持 自动装载。避免在多固件项目,分区表被多次定义的问题;
• 代码精简,对操作系统 无依赖,可运行于裸机平台,比如对资源有一定要求的 bootloader;
• 统一的操作接口。保证了文件系统、OTA、NVM 等对 Flash 有一定依赖的组件,底层 Flash 驱动的可重用性;
• 自带基于 Finsh/MSH 的测试命令,可以通过 Shell 按字节寻址的方式操作(读写擦)Flash 或分区,方便开发者进行调试、测试;


从上图可以看出FAL抽象层位于SFUD框架的上层,可以将多个Flash硬件(包括片内Flash和片外Flash)统一进行管理,并向上层比如DFS文件系统层提供对底层多个Flash硬件的统一访问接口,方便上层应用对底层硬件的访问操作。
由于本次测试是片上FLASH, 可以不用加载SFUD驱动程序.

项目创建
新建工程


打开RA_SMART_Config添加FLASH驱动和Virtual EEPROM on FLASH驱动并设置相关参数. 点击Generate可以生成相关驱动


设置FLASH驱动


设置Virtual EEPROM on FLASH
点击RT-Thread Settings, 在硬件选项中选择Enable Onchip FLASH


软件包选择FAL, 不要打开SFUD
在fal_cfg.h添加onchip_cflash_8k,onchip_cflash_32k,onchip_dflash_8k


修改drv_flash.h文件,添加块地址宏,数据FLASH地址


添加onchip_dflash_8k变量及处理函数


编译


连接P613,P614及下载线路,下载运行





总结
通过此次测试,感觉RT-Thread系统通过任务的抽象,屏蔽各种硬件差异,同时各个功能模块丰富,极大地降低了开发难度,加快了开发进度。

此次项目主要是对瑞萨 RA6M4 MCU 不了解。瑞萨的FSP方式使用图形化是比较好的,但是如果参数没有设置正确就会陷入迷惑中,说明文件,例程较少。

希望RT-Thread能够加入各硬件初步的设置平台,使开发者不局限在硬件、地址、寄存器中,更集中精力于任务的实现。

更多回帖

发帖
×
20
完善资料,
赚取积分