[原创] 【瑞萨RA8D1开发板,基于M85内核的图形MCU测评】RA8D1移植FreeRTOS

Bruceou   2024-7-8 23:04 楼主
开发环境:
IDE:MKD 5.38a
开发板:CPKCOR-RA8D1B开发板
MCU:R7FA8D1BHEC332AS00

1 前言

基于瑞萨的MCU移植FreeRTOS很简单,只需简单配置即可生成FreeRTOS的工程。笔者这里使用Renesas RA Smart Configurator和Keil5开发。

2 新建FreeRTOS工程

打开RA Smart Configurator,选择File->New->FSP Project,即可新建工程。
230333u4y11zdtdd264245.png
Figure 2-1 新建FSP Project工程
首先选择工程路径,笔者这里使用默认的路径。
230333toz2loqke8l7l73e.png
Figure 2-2 工程路径选择
接下来配置FSP版本,MCU型号等信息,根据实际情况选择吧。
230333og7xntow1yio44zg.png
Figure 2-3 FSP 基本参数配置
然后就是选择安全策略,尽管RA8D1支持 TrustZone,但这里暂时不选。
230333mxdxkg2gkhx7h1n2.png
Figure 2-4 选择是否支持 TrustZone
接下来选择RTOS的支持,FSP 5.1.0支持FreeRTOS、Threadx,这里选择FreeRTOS。
230333urgr5xlvl3rfx868.png
Figure 2-5 选择RTOS
接下来就是选择工程模板。
230333rpeenendegwvop6d.png
Figure 2-6 工程模板选择
接下来在新建一个空任务。点击“Stacks Configuration->New Thread”即可新建一个任务。
230333hhio11aapih3790x.png
Figure 2-7 配置任务
Common是关于FreeRTOS的配置,Thread是新建线程的配置参数,这里只关注Thread的配置。
其中Symbol是任务句柄的名字,Name是任务入口的名字,Stack size为栈大小,Priority为任务优先级。Memory Allocation为内存分配方式,这里使用静态开辟。如果要是用动态开辟,需要把Common中的Memory Allocation中的Dynamic Allocation使能,并设置总的Heap Size,其他参数默认即可。
还需要配置下时钟,外部晶振是24MHz,因此需要修改下输入时钟的大小,MOSC默认是20MHz。主频的时钟为默认的 240 MHz,来源是MOSC的24MHz时钟,经过PLL倍频,流向系统时钟。详细请查看RA Smart Configurator文件的配置。
230333kh5azmddvfsg2djm.png
Figure 2-8 RA Smart Configurator时钟配置
这里将LED配置后为输出模式。
230333sz88hhdprwrssedb.png
Figure 2-9 RA Smart Configurator配置GPIO
然后最后点右上角的 “Generate Project Content” 图标生成工程即可。
配置完成后就可生成工程了。
230333sw1zzdrxvwvxlvp8.png
Figure 2-10 工程生成
最后,打开工程目录,信息如下。
230333fqxmv76r7xy3z1ab.png
Figure 2-11 工程目录

3 编译工程

打开软件,接口尝试编译工程。
230333j0igl7w98p08geye.png
Figure 3-1 MDK编译工程
如果没有报错与警告,说明生成工程成功。
230333p2djycf2u62jyu7j.png
Figure 3-2 编译Log信息
接下来就可以基于FreeRTOS进行开发了。
笔者这里以LED为例,任务函数如下。
#define GPIO_LED1 BSP_IO_PORT_10_PIN_01
/* LED_Thread entry function */
/* pvParameters contains TaskHandle_t */
void led_thread_entry(void * pvParameters)
{
FSP_PARAMETER_NOT_USED(pvParameters);
/* TODO: add your own code here */
while(1)
{
R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_LOW);
vTaskDelay(500);
R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_HIGH);
vTaskDelay(500);
}
}
重新编译后下载到板子中LED会不断闪烁。

回复评论 (1)

学习学习!

点赞  2024-7-9 21:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复