瑞萨RA-T系列芯片马达类工程TCM加速化设置 (下)
2025-06-17 来源:elecfans
承接上文
瑞萨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区域中。

也可用系统推荐宏定义进行设置,宏定义在工程根目录 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文件在此处进行链接。请看如下示例:

在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段。请看如下示例:

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

然后需统计电流环执行用到的所有变量,并将所有变量放置到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区域中。

因为瑞萨官方样例工程,用FSP架构设置系统参数。所以在应用本例程测试时,需做两个手动设置:
1)将/工程目录 /ra_gen/,目录下的hal_data.c和hal_data.h文件设置为只读属性,这样在每次编译时,文件中所作的更改才不会被FSP默认设置覆盖。
2)在进行变量的DTCM设置时,如变量具有const标识符修饰,需将const标识符去掉。否则,类型修改产生冲突,新的设置不能成功。
因为实际应用过程中,系统建立的方法各不相同,遇到上面两种情况需注意,如自建工程,没有相关设计,则无需这两个手动步骤。
设置完成后,可以在电流环程序块的出入口,分别拉高和拉低I/O口,以测试电流环执行时间。
测试结果:为4.79us。

同等条件下,未TCM化的例程,电流环执行时间为5.72us。
可以看到TCM化有明显性能提升效果。

本文介绍了,在使用瑞萨RA8-T系列芯片设计马达工程时,如何将指令和变量放置到TCM单元,从而加速特定执行的运行速度。可以最大限度地发挥瑞萨芯片优势,为客户提供更好的解决方案。
- 瑞萨电子下一代 R-Car 汽车技术采用 Arteris 片上网络 IP
- 瑞萨电子推出全新GaN充电方案, 为广泛的工业及物联网电子设备带来500W强劲功率
- 瑞萨电子推出首款650V双向GaN开关, 标志着功率转换设计规范的重大变革
- 瑞萨开发多域ECU SoC关键技术 强化芯片组与功能安全
- 瑞萨推出3nm可配置TCAM 面向汽车SoC应用
- 新品!瑞萨RZ/T2H驱控一体单芯、多轴实时控制,助力工业以太网
- 瑞萨电子宣布Renesas 365全面上市
- 瑞萨电子推出RH850/U2C汽车控制器
- 恩智浦/瑞萨/TI集体出手!中央计算架构,开启车载芯片终极决战
- 瑞萨电子推出28纳米RH850/U2C汽车微控制器
- 嵌入式的风向变了:2026纽伦堡嵌入式展透露这些趋势
- 高通确认不在GDC 2026发布新款骁龙G系列掌机处理器SoC
- 行业评论 从工具到平台:如何化解跨架构时代的工程开发和管理难题
- 阿里达摩院发布玄铁C950,打破全球RISC-V CPU性能纪录
- 面向嵌入式部署的神经网络优化:模型压缩深度解析
- Mujoco中添加Apriltag标签并实现相机识别教程
- 摩尔线程MTT S5000全面适配Qwen3.5三款新模型
- 英飞凌与宝马集团携手合作,基于Neue Klasse架构塑造软件定义汽车的未来
- 物理AI仿真新突破:摩尔线程与五一视界共建全栈国产化生态
- 爆火的OpenClaw! 告别云端,米尔RK3576开发板本地部署
- 中国芯片研发重要成果!中科院发布香山、如意系统
- Miniconda环境隔离教程:解决Python版本冲突的完整指南
- Altera 与 Arm 深化合作,共筑 AI 数据中心高效可编程新方案
- 莱迪思加入英伟达 Halos生态系统,通过Holoscan传感器桥接技术提升物理人工智能安全性
- 芯科科技闪耀2026嵌入式世界展 以Connected Intelligence赋能,构建边缘智能网联新生态
- 边缘计算主机盒选购指南:五大核心指标解析
- Arm AGI CPU 更多细节:台积电 3nm 制程、Neoverse V3 微架构
- Arm AGI CPU 重磅发布:构筑代理式 AI 云时代的芯片基石
- Arm 拓展其计算平台矩阵,首次跨足芯片产品




