这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【CPKcorRA8D1评测】--搭建初始环境

共7条 1/1 1 跳转至

【CPKcorRA8D1评测】--搭建初始环境

助工
2024-11-10 19:46:10     打赏

        之前拿到了一本书《ARM Helium技术指南 cortex-M系列处理器的矢量运算扩展》,由于缺乏平台验证,导致阅读效率贼低,因为书的内容全是枯燥的汇编指令怎么调用,对应的功能是什么样的。

        后来瑞萨官宣发布M85核MCU,随后发布了和野火合作制作的板卡CPKCOR_RA8D1B板卡,便一直想拿这个板卡看看那号称媲美ARM NEON加速的Helium到底有多牛。

        在此,非常感谢EEPW提供了这次机会,让我有一个目前市面上不多的arm v8.1m核(安谋也出了个STAR-MC2核,但通用流通的芯片还没见到)去详细了解helium技术。

资料准备

        在得知可以拿到这块板卡学习后,第一时间做的就是收集资料,由于业余时间把玩的比较多的就是瑞萨和NXP的芯片,因此资料找起来也不算特别难,其中最关键的资料有:

        FSP:renesas/fsp: Flexible Software Package (FSP) for Renesas RA MCU Family

        Keil pack:Arm Keil | Renesas RA_DFP

        cpkcor_example: renesas/cpk_examples: CPK板样例代码 Sample Codes China Promotion Kits

        datesheet等:Arm Keil | Renesas RA_DFP

搭建实验平台

硬件分析

        CPKCOR_RA8D1B板卡上的板载MCU为R7FA8D1BHECBD,通过查阅瑞萨官方资料,发现这颗芯片属于除RA8T系列以外的最强系列,拥有板载的2MB存储和1MB的RAM。

        除了MCU外,板卡还搭载了一系列的外设,如TF卡座,USB HS接口,16MB的flash,32MB的SDRAM,两个Key(Reset Key和 User Key)。除此以外,板卡还将未使用到的管脚通过2.0PIN金针和BTB公座引出,以便扩展至底板做更多功能的使用。

        另外,板卡还搭载了由RA4M2制作的全功能Jlink,方便在线调试。

3.jpg

        从原理图上可以发现,板载的调试接口是支持串口的jlink,而jlink所接的串口是P408和P409这一组,因此创建初始环境,仅需要建立工程,并把串口打印打通即可。

软件配置

环境安装

        可以参考瑞萨的板级配置工具FSP安装及界面简要介绍-电子产品世界论坛,唯一需要注意的是,FSP的版本不再是4.4,而是5.1版及以上的版本,原因是只有5.1版以后的版本才有RA8D1的配置信息。

基础工程搭建

        启用Renesas RA Smart Configurator后,选择工程名和工程保存路径后点击Next

2.jpg

       在弹出的界面后依次选择模板,芯片以及编译器选项,选择完毕后点击Next

2.jpg

       选择Flat(Non-TrustZone) Project后点击Next

2.jpg

       选择No RTOS后点击Next

2.jpg

       在弹出的界面中点击Finish,此时基础工程就已经建立起来了。

2.jpg

针对板卡修改

晶振主频更换

       由于板载晶振是24M主频,而RASC生成的基础工程默认是20M,因此在创建基础工程后,需要对应的把主频信息更改为24M,并对应的微调报错的时钟配置。



       这部分选完,clock部分的报错就没有了。

串口配置

       通过图形界面查看P408和P409的串口分组可以发现,P408和P409属于UART3分组,因此我们配置是按照UART3配置便可打通串口。

       具体查询方法如下:

具体配置步骤

       熟悉RASC配置的人加外设,都会直接从Stacks上开始往下配置,原因是Stacks是所有片上外设的入口(除了不需要依赖片上外设框架的pin),因此我们的串口配置也是从这里开始配置。

2.jpg

       此时会报错,提示SCISPICLK/SCICLK未启用,此时需要回到CLocks页面,把该时钟启用

2.jpg

之后回到Stacks界面,继续配置串口

2.jpg

添加RX RX的DTC驱动


这样,串口配置也配置完毕了

生成代码

       点击Generate Project Content生成工程后关闭RASC

编写代码

    串口配置修改完成后,就需要编写串口打印代码了,具体修改如下:

增加串口打印模块

bsp_debug_uart.c

       此文件主要做了两件事,一件是printf重定向,另一件是对接FSP框架,实现串口通信。

#include "bsp_debug_uart.h"

#define DEBUG_UART_CTL  g_uart3_ctrl
#define DEBUG_UART_CFG  g_uart3_cfg

void Debug_UART_Init(void)
{
    fsp_err_t err = FSP_SUCCESS;
    
    err = R_SCI_B_UART_Open (&DEBUG_UART_CTL, &DEBUG_UART_CFG);
    assert(FSP_SUCCESS == err);
}

volatile bool uart_send_complete_flag = false;

void debug_uart_callback (uart_callback_args_t * p_args)
{
    switch (p_args->event)
    {
        case UART_EVENT_RX_CHAR:
        {
            break;
        }
        case UART_EVENT_TX_COMPLETE:
        {
            uart_send_complete_flag = true;
            break;
        }
        default:
            break;
    }
}

/* redirect printf */
#if defined __GNUC__ && !defined __clang__
int _write(int fd, char *pBuffer, int size)
{
    (void)fd;
    R_SCI_B_UART_Write(&DEBUG_UART_CTL, (uint8_t *)pBuffer, (uint32_t)size);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;

    return size;
}
#else
int fputc(int ch, FILE *f)
{
    (void)f;
    R_SCI_B_UART_Write(&DEBUG_UART_CTL, (uint8_t *)&ch, 1);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;

    return ch;
}
#endif

bsp_debug_uart.h

       此文件用于在hal_entry.c中初始化调试串口

#ifndef __BSP_DEBUG_UART_H
#define    __BSP_DEBUG_UART_H
#include "hal_data.h"
#include "stdio.h"

void Debug_UART_Init(void);

#endif

hal_entry.c

       此文件的修改主要是添加串口初始化,以及增加打印信息,以便确认串口调试调通

......
#include "bsp_debug_uart.h"

......

/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    Debug_UART_Init();

    printf("debug uart init OK\n\r");

......

    while(1)
    {
        ;
    }
}

......

代码编译下载

     编译没啥好说的,和其他平台一样,点击build按钮就可以编译了,这里主要讲的是下载部分。

2.jpg

       此界面中的器件,务必更换后再更换回来再保存,否则下载时会报flash分区异常,应该是RASC的bug。

2.jpg

       以上部分修改完毕后就可以下载代码了。

效果验证

     在烧录完软件后,串口收到如下打印信息,表示调试串口已经调通。

2.jpg





关键词: CPKcor     RA8D1     评测     搭建     初始     环境    

专家
2024-11-10 21:32:27     打赏
2楼

感谢分享


专家
2024-11-10 21:36:21     打赏
3楼

感谢分享


院士
2024-11-10 22:33:54     打赏
4楼

哇!羡慕一下楼主


高工
2024-11-11 07:01:40     打赏
5楼

感谢分享


工程师
2024-11-11 09:17:42     打赏
6楼

666666


专家
2024-11-12 09:03:08     打赏
7楼

感谢分享


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]