0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA-T系列芯片马达类工程TCM加速化设置 (下)

瑞萨嵌入式小百科 来源:瑞萨MCU小百科 2025-06-04 19:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

承接上文

瑞萨RA-T系列芯片马达类工程TCM加速化设置(上)

https://www.elecfans.com/d/6711616.html

RA8T2 sensorless方案的样例工程;再给大家分享一个免注册的免费下载地址:
https://www.elecfans.com/d/6711582.html

下面介绍一下

将马达样例工程进行TCM优化的具体步骤

以RA8T1_MCILV1_SPM_LESS_FOC_E2S_V101工程为例,首先需统计电流环需要的的所有函数,并将它们分配到ITCM中。在本样例工程中,这些函数分为两类:一类是Open Source的,一类被封装到lib文件中的。

由于涉及到的函数数量较多,现仅举例说明设置方法:

如函数R_ADC_Read,其作用是读出当前的相电流采样数据,是整个电流环计算的开端。函数体定义在/工程根目录/ra/fsp/src/r_adc/r_adc.c文件中。可在函数定义前增加修饰语句__attribute__((section(".itcm_data"))),将该函数指定分配到ITCM中。

示例:

__attribute__((section(".itcm_data")))
fsp_err_tR_ADC_Read(adc_ctrl_t* p_ctrl, adc_channel_tconst reg_id,uint16_t*constp_data)

ITCM起始地址为0x00000000,编译后,查看map文件,可以确认函数被分配到了ITCM区域中。

5540b39e-40f9-11f0-b715-92fbcf53809c.png

也可用系统推荐宏定义进行设置,宏定义在工程根目录 afspsrcspmcuallsp_compiler_support.h文件中,

具体定义如下所示:

#defineBSP_PLACE_IN_SECTION(x)_attribute__((section(x))) __attribute__((__used__))

本宏定义增加了对函数属性的进一步修饰,通常可用的修饰如下所示:

noinline/inline
used
long_call

对于函数的修饰,不是本文重点,请查阅其他材料进行确认。

通常情况下,算法是公司的核心资产。所以存在封库使用,或者利用第三方提供算法库的情况。在这样的情况下我们无法找到算法库中的函数本体进行设置。那我们就需要考虑将库文件整体放入ITCM中

如RA8T1_MCILV1_SPM_LESS_FOC_E2S_V101样例工程,使用了三个库文件librm_motor_current.a,librm_motor_estimate.a,librm_motor_speed.a,分别用于处理电流环、位置估算、速度环的一些算法。

要实现本操作,需对ld文件进行修改。ld文件(链接描述文件)是控制链接器行为的关键脚本文件,主要用于管理目标文件的内存布局和符号解析。通过脚本指令精确控制输入文件(.o/.a)如何组合到输出文件(可执行文件/库)中,并定义程序在内存中的布局结构。‌

在本工程的ld文件中,首先定义了存储器的物理参数:包括各内存区域的起始地址、容量及访问属性(如可读/写/执行);接着加载了必要的库文件;通过SECTIONS指令规划段的分布策略,明确代码段、数据段、特殊功能段在存储空间的具体位置。同时脚本还设置了关键的系统级配置:指定程序执行的入口地址,各模块能按预定逻辑在存储器中精准排布。

关于ld文件的布局,不是本文重点,请搜索相关资源,进行理解。

ld文件的设置需使用标准命令,本文不详细展开,请搜索相关资源,进行理解。

下面我们详细介绍本次修改的操作

在工程目录script文件夹下,打开fsp.ld文件。

在SECTIONS命令后,链接代码段.text :内删除*(.text*)语句,更改为*(EXCLUDE_FILE(*librm_motor_estimate.a:*.o *librm_motor_current.a:*.o *librm_motor_speed.a:*.o) .text.*)。这样在链接时,将不对这三个.o的lib文件在此处进行链接。请看如下示例:

55c5956e-40f9-11f0-b715-92fbcf53809c.png

在SECTIONS命令后,在.itcm_data段内在KEEP(*(.itcm_data*))语句下面,增加下面三个语句:

KEEP(*librm_motor_estimate.a:*.o(.text.*))
KEEP(*librm_motor_current.a:*.o(.text.*))
KEEP(*librm_motor_speed.a:*.o(.text.*))

更改后,在链接过程中,将这三个指定.o文件连接到itcm段。请看如下示例:

55e843de-40f9-11f0-b715-92fbcf53809c.png

设置完成后,重新编译工程。排查map文件,可以看到lib中的函数已经放置到ITCM中。如位置估算这几个函数,排查如下:

560657ca-40f9-11f0-b715-92fbcf53809c.png

然后需统计电流环执行用到的所有变量,并将所有变量放置到DTCM中。由于数量较多,现举例说明设置方法。

如结构体变量g_motor_sensorless0,此变量是电流环操作的主要变量结构体。变量定义在/工程目录/ra_gen/hal_data.c文件中,可在变量定义前增加修饰语句__attribute__((section(".dtcm_data")))将其分配到DTCM中。

请看如下示例:

__attribute__((section(".dtcm_data")))motor_instance_tg_motor_sensorless0 =
{ .p_ctrl = &g_motor_sensorless0_ctrl, .p_cfg = &g_motor_sensorless0_cfg, .p_api = &g_motor_on_sensorless, };

在本应用中,g_motor_sensorless0内部嵌套了其他结构体变量,那么被嵌套的其他结构体也需要做类似声明,分配到DTCM中。

DTCM起始地址为0x20000000,编译后查看map文件,可以确认变量被分配到了DTCM区域中。

5623a050-40f9-11f0-b715-92fbcf53809c.png

因为瑞萨官方样例工程,用FSP架构设置系统参数。所以在应用本例程测试时,需做两个手动设置:

1)将/工程目录 /ra_gen/,目录下的hal_data.c和hal_data.h文件设置为只读属性,这样在每次编译时,文件中所作的更改才不会被FSP默认设置覆盖。

2)在进行变量的DTCM设置时,如变量具有const标识符修饰,需将const标识符去掉。否则,类型修改产生冲突,新的设置不能成功。

因为实际应用过程中,系统建立的方法各不相同,遇到上面两种情况需注意,如自建工程,没有相关设计,则无需这两个手动步骤。

设置完成后,可以在电流环程序块的出入口,分别拉高和拉低I/O口,以测试电流环执行时间。

测试结果:为4.79us。

564446c0-40f9-11f0-b715-92fbcf53809c.jpg

同等条件下,未TCM化的例程,电流环执行时间为5.72us。

可以看到TCM化有明显性能提升效果。

566120ba-40f9-11f0-b715-92fbcf53809c.jpg

本文介绍了,在使用瑞萨RA8-T系列芯片设计马达工程时,如何将指令和变量放置到TCM单元,从而加速特定执行的运行速度。可以最大限度地发挥瑞萨芯片优势,为客户提供更好的解决方案。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18133

    浏览量

    372260
  • 瑞萨
    +关注

    关注

    36

    文章

    22400

    浏览量

    88536
  • 马达
    +关注

    关注

    1

    文章

    844

    浏览量

    63593
  • RA8
    RA8
    +关注

    关注

    0

    文章

    18

    浏览量

    6764
  • TCM
    TCM
    +关注

    关注

    0

    文章

    38

    浏览量

    13111
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用R-T系列芯片实现相电流实时采样

    本篇介绍如何使用R-T系列芯片,设计马达工程时,
    的头像 发表于 07-16 16:19 780次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>R-<b class='flag-5'>T</b><b class='flag-5'>系列</b><b class='flag-5'>芯片</b>实现相电流实时采样

    基于电子RA8T2 sensorless方案的样例工程 可对电流环进行TCM设置

    基于电子RA8T2 sensorless方案的样例工程 可对电流环进行TCM
    的头像 发表于 06-04 18:29 565次阅读

    RA-T系列芯片马达工程TCM加速设置(上)提高电流环执行速度

    本篇介绍在使用 RA8-T系列芯片 ,建立 马 达工程应用 时,如何将 电 流环部分的指令和变量 设置
    的头像 发表于 06-04 18:02 678次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA-T</b><b class='flag-5'>系列</b><b class='flag-5'>芯片</b><b class='flag-5'>马达</b><b class='flag-5'>类</b><b class='flag-5'>工程</b><b class='flag-5'>TCM</b><b class='flag-5'>加速</b><b class='flag-5'>化</b><b class='flag-5'>设置</b>(上)提高电流环执行速度

    RA8系列教程 | RA8 开发环境搭建,并点亮一个LED

    今天就给大家讲讲基于Cortex-M85内核RA8单片机快速上手指南。
    的头像 发表于 06-04 17:32 985次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8<b class='flag-5'>系列</b>教程 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> <b class='flag-5'>RA</b>8 开发环境搭建,并点亮一个LED

    RA单片机在e2 studio环境printf编译出错的问题解析

    最近看到有一些网友在讨论关于:RA单片机在e2 studio环境printf编译出错的问题。
    的头像 发表于 05-24 15:51 927次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>单片机在e2 studio环境<b class='flag-5'>下</b>printf编译出错的问题解析

    RA8系列教程 | 基于 Keil 开发 RA8单片机

    本文结合Cortext-M85单片机RA8D1、Keil MDK,以及自家的代码初始化工具(Smart Configurator)给
    的头像 发表于 04-22 17:41 685次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8<b class='flag-5'>系列</b>教程 | 基于 Keil 开发 <b class='flag-5'>RA</b>8单片机

    RA8快速上手指南:Cortex-M85内核RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是
    的头像 发表于 03-17 14:35 1180次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8快速上手指南:Cortex-M85内核<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>8开发环境搭建 并点亮一个LED

    **RA2L1入门学习】+**UART测试实验

    RA2L1入门学习】+UART测试实验 本篇文章主要介绍如何使用e2studio对单片机进行USART通过定时器中断方式接收不定长
    发表于 03-09 15:45

    RA2L1入门学习】RA2L1开发环境搭建

    e² studio 和 FSP 的下载、安装及使用指南 1. 什么是 e² studio 和 FSP? e² studio 是电子(Renesas)专为 RA 系列单片机开发的 I
    发表于 03-07 11:33

    RA2L1入门学习】新建工程和串口烧写程序

    ;amp;gt;C/C++项目—&amp;gt;Renesas RA。 然后是给工程起名字和保存工程路径,这个可以根据自己的喜
    发表于 03-02 22:47

    电机项目中RA-T系列波形输出占空比详解

    在电机工程中,有时需输出带死区的0%和100%的占空比PWM波形,以达到过调制效果。本文以RA6T2为例,介绍在使用RA-T系列芯片建立电机
    的头像 发表于 02-10 12:50 1887次阅读
    电机项目中<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA-T</b><b class='flag-5'>系列</b>波形输出占空比详解

    RA-Eco-RA4E2-64PIN-V1.0开发板试用】+小白折腾RA系列全过程02

    基本框架的软件,这个软件可以图形设定引脚模式以及一键生成项目框架,生成的项目可以直接使用KEIL5来进行新增代码和删减代码。RA 可扩展性强的配置软件包 (FSP) | Renesas
    发表于 12-22 13:08

    RA-T系列芯片ADC和GPT功能模块的配合使用

    马达或电源工程中,往往需要采集多路AD信号,且这些信号的优先级和采样时机不相同。本篇介绍在使用RA-T系列芯片建立
    的头像 发表于 11-21 13:40 1422次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA-T</b><b class='flag-5'>系列</b><b class='flag-5'>芯片</b>ADC和GPT功能模块的配合使用

    基于RA6T2 MCU实现过电流保护功能

    本篇介绍如何在使用RA-T系列芯片时,通过使用内部比较器ACMPHS配合POE模块,实现过电流保护,从而替代传统的硬件保护电路,这样可以降低项目的BOM成本。本篇文章以RA6T2为例,
    的头像 发表于 11-11 13:41 1165次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA6T</b>2 MCU实现过电流保护功能

    e2studio(1)----芯片之搭建FSP环境

    为使用电子 RA 系列 ARM 微控制器的嵌入式系统设计提供简单易用且可扩展的高质量软件。 在全新 Arm® TrustZone® 和其他高级安全功能的支持
    发表于 09-30 15:28