当前位置:首页 > 财经百科 > 瑞萨RA8D1 CPK开发板 移植ThreadX操作系统

瑞萨RA8D1 CPK开发板 移植ThreadX操作系统

首先感谢[RA生态工作室](瑞萨 RA MCU 生态社区)提供的瑞萨RA8D1 CPK开发板。

一、硬件介绍

瑞萨电子 RA8D1 MCU 系列是业界首款基于 Arm® Cortex®-M85 (CM85) 内核的 32 位图形微控制器 (MCU),能够在 480 MHz 频率下实现超过 3000 CoreMark 分数的突破性性能,可支持高分辨率显示和视觉 AI 应用的卓越图形功能。

wKgaoWcU5-SAX0tmAAC4rD8PjxQ607.png

CPKCOR-RA8D1B核心板 是瑞萨电子为中国市场设计的模块化开发板, 使用瑞萨RA8D1MCU,支持MIPI-DSI显示输出接口。核心板上已经搭载了RA8 MCU支持的较为有特色的外设接口和器件,可以直接使用核心板进行学习,评估和应用开发。

其外设包括:

16位SDRAM,32M字节容量

QSPI Flash,16M字节容量

USB 2.0高速主机/设备,JUSB Type-C 2.0接口,支持主/从功能自动切换

板载Segger Jlink调试器,同时支持一路虚拟串口,JDBG Type-C 2.0 设备接口

电源LED(白色),用户LED(绿色),复位按键和用户按键

2.54mm间距的通孔扩展接口

TF卡槽,支持3.3V信号电平(DS和HS速度模式)

J1,J2 两个80管脚的高密度板对板连接器

资源相当丰富,可以做很多有趣的工作和探索。

二、移植ThreadX

ThreadX是优秀的硬实时操作系统(RTOS),适用于深嵌入式应用中,具有规模小、实时性强、可靠性高、无产品版权费、易于使用等特点,并且支持大量的处理器和SoC,包括ARM、PowerPC、SH 4、MIPS、ADI DSPTI DPS、Nios II等,因此广泛应用于消费电子汽车电子工业自动化网络解决方案、军事与航空航天等领域中。

印象中ThreadX最深刻的就是黄色X,过目不忘。

(一)开发环境

开发环境:MDK 5.37 + Renesas.RA_DFP.5.5.0

FSP:5.1

J-LINK:8.10c

因为RA8D1比较新,老旧的J-LINK驱动找不到这个MCU,最好下个最新的,FSP亦是如此。

(二)创建ThreadX工程

打开RA Smart Configurator,选择File->New->FSP Project,新建工程。

选择FSP版本(最新的5.1),MCU型号等信息

wKgZoWcU68CAfxPCAAGLcRYlUDU060.png

因为计划使用Keil编译,所以IDE选择MDK V5,MCU型号选择R7FA8D1BHEC332AS00。

Next后选择非TrustZone工程:

wKgaoWcU7HWABKarAALEtYLzLds083.png

Next后,RTOS选择Azure RTOS ThreadX。

wKgZoWcU7i6AYjstAACzR9CGYjc074.png

DFP直接支持,选择即可。

wKgaoWcU7maAOmhwAAEYTBklagA837.png

最后汇总信息如下:

wKgZoWcU7nuAbUtbAAHpLdoF_n0819.png

(二)配置ThreadX工程

1、时钟

首先配置时钟,根据RA8D1 CPK开发板的硬件规格,外部晶振是24MHz,按照如下配置即可。

wKgaoWcU7vCAWztoAAL03gDkONA032.png

2、Thread

需要在ThreadX上新建一个thread,用于验证系统是否正常启动。

wKgaoWcU79KAGSzaAAI90jVf-g8072.png

3、GPIO

将RA8D1 CPK开发板上的LED使能,用于上面的thread周期性点亮,从而验证系统是否移植正常。

wKgZoWcU8JKAA-uzAAIBTP3f62o801.png

配置完成后,点击RA Smart Configurator上的“Generate Project Content”,生成ThreadX工程文件。

(三)编译ThreadX工程

在MDK上编译RA Smart Configurator生成的ThreadX工程。

1、Thread

在上章节的Thread配置的new_thread0线程中完善要做的内容,把LED灯周期性点起来。在new_thread0_entry.c文件中增加如下内容:

#include "new_thread0.h"

#define GPIO_LED1 BSP_IO_PORT_10_PIN_01


                /* New Thread entry function */
                void new_thread0_entry(void)
                {
                    /* TODO: add your own code here */
                    while(1)
                    {
						R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_LOW);
                        tx_thread_sleep(100);
						R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_HIGH);
						tx_thread_sleep(100);
                    }
                }

2、编译配置

配置好IROM与IRAM的值。

wKgaoWcU82WAfx9wAAHrjGIg_tg870.png

3、下载配置

按照如下配置填入参数

wKgaoWcU86OAbUx9AAFPuyxpryA781.png

在“RAM for Algorithms”中选择一个较大的数值,否则在烧录的时候会出现“Insufficient RAM for Flash Algorithms !”错误。

4、编译工程

在MDK中编译好ThreadX工程。

compiling new_thread0.c...
compiling main.c...
linking...
Program Size: Code=6222 RO-data=742 RW-data=1032 ZI-data=2768  
FromELF: creating hex file...
After Build - User command #1: cmd /c "start "Renesas" /w cmd /c ""D:/Keil_v537/Packs/Renesas/RA_DFP/5.5.0/launcherrasc_launcher.bat" "C:UsersRASmartConfiguratorthreadxrasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 "C:UsersRASmartConfiguratorthreadxconfiguration.xml" "C:UsersRASmartConfiguratorthreadxObjectsthreadx.axf" 2> "%TEMP%rasc_stderr.out"""
".Objectsthreadx.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:28

三、测试验证

将编译好的固件下载至RA8D1 CPK开发板,重启板子,绿色LED闪烁起来。

wKgZoWcU9dKABCs6AAZewqx0MqM984.jpg

至此,ThreadX操作系统移植成功。

审核编辑 黄宇