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

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

3天内不再提示

C2000 CLA的使用与常见CLA内存问题及解决方案

电子设计 来源:电子设计 作者:电子设计 2022-01-12 17:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Other Parts Discussed in Post: TMS320F280049

作者:Chen Yang, Benjamin Zhou, Strong Zhang

CLA(Control Law Accelerator)控制率加速器是一个独立可编程的32位浮点数字处理单元,为快速触发响应及数学运算而设计。CLA独立于C28x CPU工作,时钟频率与CPU相同,可执行算法以及周期性的计算工作。通过增加平行的处理单元CLA,拓展了C28x CPU的性能。当前C2000系列产品共有3种类型的CLA, 不同的C2000型号对应不同的CLA类型, 各类型的差别及对应的C2000器件型号详情如图1所示。Type 2型的CLA可直接读取ADC 结果寄存器,极大减小ADC采样至输出的延时,提高系统的响应并允许系统以更高的频率运行;并且可直接操作所有的Epwm,HRPWM,eCAP,eQEP,CMPSS,DACSDFM,PGA,SPI,LIN,FSI,PMBUS,CLB和GPIO数据寄存器;CLA可独立地响应外设中断。利用CLA执行一些周期性任务可以解放CPU,使其工作于其他系统任务。

pYYBAGGKSAOAIYC5AAKgkoiS9Hk766.png

图1 CLA类型及对应C2000器件

CLA的使用包括初始化设置和任务定义。初始化由CPU完成,包括程序内存和数据内存分配,任务的触发配置;Type 2型CLA提供 8个独立的任务(也可配置为7个独立的任务和1个底层持续运行的任务),这些任务类似中断服务函数,由中断触发并运行至任务结束,并且可配置在任务完成时产生中断, CLA 框图如图2所示。

pYYBAGGKSAWAbEuUAAE3JaNWpVc946.png

图2 CLA框图

CLA可访问RAMLS0-LS7 区块的内存,并且每个块可以配置为CPU专用或CPU与CLA之间共享数据。这些内存块复位时默认分配给CPU,需要由CPU初始化后才可用于与CLA共享数据。如果这些内存块被配置为数据共享的,则可进一步配置为程序内存或数据内存,程序内存用于存放CLA的程序代码,数据内存用于存放供CLA程序使用的变量和系数,并且有专用的消息内存MSG RAMs用于在CPU和CLA之间传递数据, CLA的Memory及寄存器操作方式描述如图3所示。

pYYBAGGKSAeAaHjMAAGbFg07xTo106.png

图3 CLA Memory及寄存器操作

CLA的初始化是在软件初始化期间由CPU执行,主要包括6个步骤:

从Flash中复制CLA 任务代码至CLA 程序内存中

分配CLA数据内存

配置CLA寄存器:包括使能CLA时钟;分配CLA任务函数地址;选择任务触发源;根据需要使能软件触发任务;映射CLA程序内存和数据内存到CLA空间

PIE中配置CLA任务完成中断的服务函数

在MIER寄存器中使能CLA任务触发

初始化触发源外设,使其能触发CLA任务

在CLA开发过程中,工程师往往专注于代码层面对CLA初始化,CLA_task的配置以及算法设计,忽略了更为底层的问题——CMD文件中CLA内存分配问题。不合理的内存分配可能会导致编译报错及内存溢出。

本博文将举例使用TI的TMS320F280049进行CLA开发时,由于内存分配错误导致的具体报错。

本例中在完成了CLA初始化,CLA_task的中断函数配置后,点击编译CCS报43个“#17003-D” warnings,如图4:

poYBAGGKSAmAdSn6AAQxuVQfGbw673.png

图4 #17003-D Warning

Description Resource Path Location Type:

#17003-D relocation to symbol “CLAscratch_end” overflowed; the 6-bit relocated address 0xee is too large to encode in the 16-bit unsigned field (type = ‘R_ABS16_OC’ (107), file = “。./xxxxxxx”, offset = 0x00000312, section = “Cla1Prog”)

警告显示CLAscratch_end内存溢出,问题定位至CMD文件,检查CMD中与scratch相关的内存分配, 如图5。

pYYBAGGKSAuAJjQ_AAEfIZZzGLE548.png

图5 CMD文件scratchpad描述

发现仅有.scrathpad分配至RAMLS1,并未找到CLAscratch_end以及对CLA_SCRATCHPAD_SIZE的定义。

于是,打开.map文件判断是否分配了__cla_scratchpad_end/start,在.map文件中搜索scratchpad,如图6所示。

poYBAGGKSA2AWqmMAAIGG4QLcSE170.png

图6 .map文件中cla_scratchpad_end描述

如图6,在.map中仅仅找到__cla_scratchpad_end,可以判断工程使用了scratchpad,但是并没有__cla_scratchpad_start的内存分配。

至此找到了问题原因,解决方案就是需要在CMD文件中对scratchpad进行相关配置, 如图7所示。

参考配置如下:

①在CMD文件的头部添加以下代码,如图所示

CLA_SCRATCHPAD_SIZE = 0x100;

--undef_sym=__cla_scratchpad_end

--undef_sym=__cla_scratchpad_start

pYYBAGGKSA-AYZnFAALYjsdKzCc576.png

图7 scratchpad配置

②在CMD文件的SECTIONS{}代码部分的末尾添加以下代码

CLAscratch :

{ *.lib(CLAscratch)

。 += CLA_SCRATCHPAD_SIZE;

*.lib(CLAscratch_end) } 》 RAMLS1,

PAGE = 1

再次编译,#17003-D警告已经消失,编译通过,结果如图8所示。

pYYBAGGKSBKAaIBkAAA8T9agdLE239.png

图8 修改CMD后编译结果

此时,再次查看.map文件,发现__cla_scratchpad_end/start以及CLA_SCRATCHPAD_SIZE已经成功分配,如图9所示。

poYBAGGKSBOAP3j6AAECULiW2AA714.png

poYBAGGKSBWAE0ARAAD-vr_CApM845.png

pYYBAGGKSBeAcUtAAADZtmQg0xc609.png

图9 修改CMD文件编译生成.map文件图

以上就是关于“#17003-D warning”的解决方案,希望通过这个例子,让广大工程师在CLA开发时能够注意到CMD对CLA内存正确配置的重要性,防止在实际开发时遇到问题,难以排查。

审核编辑:金巧

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

    关注

    0

    文章

    341

    浏览量

    10449
  • Cla
    Cla
    +关注

    关注

    0

    文章

    15

    浏览量

    10962
  • CMD文件
    +关注

    关注

    0

    文章

    5

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于E203内核高性能乘法器优化(二)

    ] = 1'b0;assign cout = c[width>>2];cla_4bit u_cla_4bit_0(.op1( op1[ 0*4+3
    发表于 10-23 07:33

    HXS320F28035数字信号控制器

    ,提供自主可控的DSP解决方案。典型应用场景电机驱动与控制:支持无传感器磁场定向控制(FOC),适用于步进电机、直流无刷电机(BLDC)、永磁同步电机(PMSM)等。光伏逆变器:高精度ADC和快速PWM
    发表于 10-22 09:05

    北京奔驰全新纯电CLA正式下线

    近日,北京奔驰MMA平台首款车型一全新纯电CLA正式下线。作为梅赛德斯-奔驰中国“智造”与研发20年集大成之作,全新纯电CLA搭载MB.OS架构与城区及高速领航辅助驾驶系统,并配备了同级唯一的两档变速箱和800V高压架构,使其同时兼顾动力、能效与充电性能,树立了智能电动车
    的头像 发表于 09-11 14:25 798次阅读

    CLA系列

    Cla
    银河电气
    发布于 :2025年07月11日 15:49:07

    16 位 ADC 的 汽车类与非汽车类C2000™ 32 位 MCU(TMS320F28377DPTPS TMS320F28377SPTPQ)微控制器

    前言 C2000™ 32 位微控制器针对处理、感应和驱动进行了优化,可提高实时控制应用(如工业电机驱动器、光伏逆变器和数字电源、电动汽车和运输、电机控制以及感应和信号处理)的闭环性能。C2000
    发表于 04-30 14:11

    TMS320F2800155 C2000™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 15:08 1032次阅读
    TMS320F2800155 <b class='flag-5'>C2000</b>™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F2800133 C2000™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F280013x (F280013x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子效率而设计。
    的头像 发表于 04-15 14:46 1120次阅读
    TMS320F2800133 <b class='flag-5'>C2000</b>™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F28P659DK-Q1 C2000™ 32 位 MCU、2 个 C28x+CLA CPU、锁步、1.28MB 闪存数据手册

    TMS320F28P659DK-Q1是一款高性能的实时控制微控制器,集成了两个C28x DSP CPU和一个CLA CPU,提供强大的实时信号处理能力。同时,该设备还支持功能安全应用,具有丰富的外设接口和灵活的电源管理选项,适用于工业控制、汽车电子等领域。
    的头像 发表于 04-15 11:29 1249次阅读
    TMS320F28P659DK-Q1 <b class='flag-5'>C2000</b>™ 32 位 MCU、2 个 <b class='flag-5'>C28x+CLA</b> CPU、锁步、1.28MB 闪存数据手册

    TMS320F28P550SG C2000™ 32 位 MCU技术手册

    TMS320F28P55x (F28P55x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 10:35 1956次阅读
    TMS320F28P550SG <b class='flag-5'>C2000</b>™ 32 位 MCU技术手册

    C2000 GANG Programmer error灯常亮是什么原因导致的?

    C2000 GANG Programmer 用了没几次,今天开机发现error 灯常亮,无法工作,也没有任何报错信息,请问是什么问题呢?
    发表于 02-28 08:31

    技术资料#TMS320F280049 具有 100 MHz、FPU、TMU、256 KB 闪存、CLA、PGA 和 SDFM 的 C2000™ 32 位 MCU

    C2000™ 32 位微控制器针对处理、传感和驱动进行了优化,可改善工业电机驱动器等实时控制应用中的闭环性能;太阳能逆变器和数字电源;电动汽车和运输;电机控制;以及传感和信号处理
    的头像 发表于 02-26 10:14 2847次阅读
    技术资料#TMS320F280049 具有 100 MHz、FPU、TMU、256 KB 闪存、<b class='flag-5'>CLA</b>、PGA 和 SDFM 的 <b class='flag-5'>C2000</b>™ 32 位 MCU

    dsp28035中用使用cla来进行fft要怎么配置?

    dsp28035中用使用cla来进行fft,f28035.cmd要怎么配置,假设是adc采样进来的数据要进行fft,那还需要怎么其他的配置
    发表于 12-12 08:27

    C2000常见问题解答

    电子发烧友网站提供《C2000常见问题解答.pdf》资料免费下载
    发表于 12-06 16:04 0次下载
    <b class='flag-5'>C2000</b><b class='flag-5'>常见</b>问题解答

    C2000微控制器用户培训手册

    电子发烧友网站提供《C2000微控制器用户培训手册.pdf》资料免费下载
    发表于 12-05 14:13 4次下载
    <b class='flag-5'>C2000</b>微控制器用户培训手册

    TI C2000系列重大更新!首次加入NPU,内核升级到64位!

    电子发烧友网报道(文/黄晶晶)从1994年推出第一颗TMS320C10处理器开始,C2000 DSP已走过了30年的辉煌历程。期间C2000系列不断迭代升级,陆续加入浮点运算单元、数学运算协处理器
    的头像 发表于 12-05 11:52 4866次阅读
    TI <b class='flag-5'>C2000</b>系列重大更新!首次加入NPU,内核升级到64位!