瑞萨单片机william hill官网
直播中

范成功

12年用户 127经验值
擅长:嵌入式技术
私信 关注
[经验]

【瑞萨RA4系列开发板体验】第一章 软件下载和环境搭建

软件下载与安装

我使用的操作系统是WIN10,开发环境是keil5

  1. Renesas RA Smart Configurator下载地址
    Release v4.1.0 · renesas/fsp (github.com)
    选择 setup_fsp_v4_1_0_rasc_v2022-10.exe
  2. MDK支持包下载地址:https://www2.renesas.eu/Keil_MDK_Packs/Renesas.RA_DFP.4.1.0.pack

根据提醒安装完成软件包,keil安装包可以从各家开发板开源资料获取。

工程配置

打开后输入工程名
image.png

如下根据需求选择相关配置
image.png

接着选择了无操作系统和点灯模板
image.png

如下生成工程,然后到工程目录打开工程
image.png

编译与烧写

打开keil工程之后进行编译,然后就出来一堆错误,如下
image.png

然后是查看帮助手册,找到预定义的版本宏
image.png

然后修改增加以下两处代码
image.png

image.png

再次编译就通过了,然后检查map文件的向量表位置是否符合预期
image.png

接着就开始阅读代码,了解demo的执行逻辑啦

代码分析

启动过程分析
首先是找到中断向量表,得到复位中断函数如下
image.png

然后得到了SystemInit和main函数,按经验main应该是用户程序入口了
image.png

最后调用了hal_entry函数

image.png

hal_entry代码拷贝出来贴在下面进行分析,分析过程直接写进代码注释

void hal_entry (void)
{
//这部分没有用到TZ所以没有用
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
//这里定义了软件延时函数的单位是毫秒
    /* Define the units to be used with the software delay function */
    const bsp_delay_units_t bsp_delay_units = BSP_DELAY_UNITS_MILLISECONDS;
//这里定义了闪烁频率
    /* Set the blink frequency (must be <= bsp_delay_units */
    const uint32_t freq_in_hz = 2;
//这里计算以下2hz的频率对应的delay值
    /* Calculate the delay in terms of bsp_delay_units */
    const uint32_t delay = bsp_delay_units / freq_in_hz;
//这里定义了LED的数量和对应的引脚组
//LED1=P4_15,LED2=P4_04,LED3=P4_05
    /* LED type structure */
    bsp_leds_t leds = g_bsp_leds;
//这里检查一下是否有LED可以用
    /* If this board has no LEDs then trap here */
    if (0 == leds.led_count)
    {
        while (1)
        {
            ;                          // There are no LEDs on this board
        }
    }

    /* Holds level to set for pins */
    bsp_io_level_t pin_level = BSP_IO_LEVEL_LOW;

    while (1)
    {
//这里使能PFS寄存器的访问权限
//PFS寄存器具体作用需要看手册了,暂时还不清楚。
        /* Enable access to the PFS registers. If using r_ioport module then register protection is automatically
         * handled. This code uses BSP IO functions to show how it is used.
         */
        R_BSP_PinAccessEnable();
//这里设置所有LED的引脚电平为pin_level电平,初始值为低电平
        /* Update all board LEDs */
        for (uint32_t i = 0; i < leds.led_count; i++)
        {
            /* Get pin to toggle */
            uint32_t pin = leds.p_leds[i];

            /* Write to this pin */
            R_BSP_PinWrite((bsp_io_port_pin_t) pin, pin_level);
        }

        /* Protect PFS registers */
        R_BSP_PinAccessDisable();
//这里对pin_level进行更新
        /* Toggle level for next write */
        if (BSP_IO_LEVEL_LOW == pin_level)
        {
            pin_level = BSP_IO_LEVEL_HIGH;
        }
        else
        {
            pin_level = BSP_IO_LEVEL_LOW;
        }
//延时一下
        /* Delay */
        R_BSP_SoftwareDelay(delay, bsp_delay_units);
    }
}

经过对源码的分析可以知道这个demo是周期性的闪烁所有的led灯,那么接下来烧尽开发板试试吧,看会不会遇到问题。

运行程序

开发板没在手里等验证完了更新结果。

回帖(3)

范成功

2022-11-24 10:45:40
使用keil烧写失败,用的下载器是DAPlink,错误如下:

然后使用RA的Flash Programmer通过USB下载成功
USB下载需要将跳线帽切换到SCI/USB BOOT启动模式,然后USB线接在电源灯旁边的USB口
电脑上会出现名为RA USB BOOT(CDC)的串口号
举报

范成功

2022-11-24 11:25:34
通过测试使用pyocd+DAPLink的方式可以下载程序,步骤如下:
1.通过pip安装pyocd
2.进入用户目录AppDataLocalcmsis-pack-managercmsis-pack-manager,在此目录新建RenesasRA_DFP
3.进入RenesasRA_DFP,复制下载的Renesas.RA_DFP.4.1.0.pack到此目录,重命名为4.1.0.pack

4.在终端(比如powershell)中输入'pyocd pack -s'命令查看,会有以下信息输出


5.使用命令'pyocd load -t r7fa4m2ad -e auto --format hex Blink.hex'烧写程序,其中Blink.hex替换成自己的程序就行

由此可见daplink和DFP里面的烧写算法都是没问题的,可能是我的keil版本问题,不支持下载,等安装以下新版本的keil再试试。
举报

范成功

2022-11-24 16:02:39
keil换成最新版本,发现还是不行,然后看配置,最后发现是下载算法的RAM地址有问题,修改之后下载、调试都正常了。

此处默认写着0x0和0x800,
而RA4M2A的SRAM0是2000_0000H开始的,0x0是flash地址空间,所以此处需要修改。


举报

更多回帖

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