1 C2000 CLA的使用与常见CLA内存问题的解决方案-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

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

星星科技指导员 来源:TI 作者:Chen Yang, Benjamin Z 2023-03-21 10:15 次阅读

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,使其工作于其他系统任务。

poYBAGQZEx-ASkp1AAKgkoiS9Hk289.png

图1 CLA类型及对应C2000器件

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

pYYBAGQZEyCAeTwMAAE3JaNWpVc462.png

图2 CLA框图

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

poYBAGQZEyGAYcT_AAGbFg07xTo084.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:

pYYBAGQZEyKAGc32AAQxuVQfGbw533.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。

poYBAGQZEyOASbx5AAEfIZZzGLE273.png

图5 CMD文件scratchpad描述

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

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

poYBAGQZEyOAQA6eAAIGG4QLcSE691.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

pYYBAGQZEySARZZsAALYjsdKzCc230.png

图7 scratchpad配置

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

CLAscratch:

{*.lib(CLAscratch)

.+=CLA_SCRATCHPAD_SIZE;

*.lib(CLAscratch_end)}>RAMLS1,

PAGE=1

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

pYYBAGQZEyWAPHBKAAA8T9agdLE819.png

图8 修改CMD后编译结果

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

poYBAGQZEyaALrsbAAECULiW2AA694.png

poYBAGQZEyaAYbYVAAD-vr_CApM233.png

poYBAGQZEyeAAuyqAADZtmQg0xc602.png

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

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

审核编辑:郭婷

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

    关注

    31

    文章

    5336

    浏览量

    120230
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211576
  • adc
    adc
    +关注

    关注

    98

    文章

    6495

    浏览量

    544461
收藏 人收藏

    评论

    相关推荐

    请问有什么办法可以改变28035CLA内存吗?使得内存中可以放置更多的数组?

    本帖最后由 一只耳朵怪 于 2018-6-14 11:47 编辑 在28035CLA中定义了一个数组,发现数组过大时,CLA无法进入中断,但是查看.map文件内存尚有剩余,把数组减小,C
    发表于 06-14 07:18

    关于CLA使用时编译出现的unresolved symbol的错误及因此产生的警告

    specification的时候,你需要修改以下链接器的配置:打开CCS,按下述步骤操作:Project Properties -> C2000 Linker -> Advanced Options -> Command File Preprocessing -> --define附图如下:
    发表于 03-11 17:49

    C2000浮点运算CPU和CLA计算差异的解决

    double类型数执行一次加法耗时33个cycle。三、结论1. C2000的CPU和CLA默认的舍入模式不同,在计算浮点数时可能会得到不同的结果,但是我们可以通过代码改变其舍入模式得到相同的结果。2.
    发表于 03-26 06:45

    28069芯片的CLA工作不正常怎么办

    /question_answer/microcontrollers/c2000/f/56/t/76270.aspx 中介绍的方法,但是CLA看起来一直没有正常工作。在连接CLA,载入symbols之后,运行CPU
    发表于 05-20 14:46

    28035的CLA在CCS3.3上调试的插件哪里有

    试的CCS插件?另外,咨询一下,C2000系列的DSP内部是否包含有自身信息? 比如,一片28035的芯片,内部是否存有28035这一型号代码、还有生产批次之类的信息? 如何读取出来?我们项目使用到不同型号的DSP,希望自己制作的下载器能够自动识别芯片型号,而不至于下载到错误的目标板。
    发表于 06-10 08:25

    关于“#17003-D warning”的解决方案

    ,可执行算法以及周期性的计算工作。通过增加平行的处理单元CLA,拓展了C28x CPU的性能。当前C2000系列产品共有3种类型的CLA, 不同的C
    发表于 11-07 07:35

    TI官方推出的产品FAQ系列文档,该系列为在CCS上调试C2000 CLA 常见问题解答(FAQ)集锦

    TI官方推出的产品FAQ系列文档,该系列为在CCS上调试C2000 CLA 常见问题解答(FAQ)集锦
    发表于 09-20 13:53 11次下载
    TI官方推出的产品FAQ系列文档,该系列为在CCS上调试<b class='flag-5'>C2000</b> <b class='flag-5'>CLA</b> <b class='flag-5'>常见</b>问题解答(FAQ)集锦

    TI C2000 CLA 常见问题解答(FAQ)集锦

    TI C2000 CLA 常见问题解答(FAQ)集锦
    发表于 09-20 13:58 15次下载
    TI <b class='flag-5'>C2000</b> <b class='flag-5'>CLA</b> <b class='flag-5'>常见</b>问题解答(FAQ)集锦

    如何在CCS上调试C2000 CLA FAQ

    CLA调试从CCS 4.02上开始提供。 如果你有一个较早的版本,那么请下载最新版或者检查软件更新。
    发表于 04-04 09:16 6次下载
    如何在CCS上调试<b class='flag-5'>C2000</b> <b class='flag-5'>CLA</b> FAQ

    C2000系列有关CLA常见问题专业解答

    1. CLA 是什么? CLA 是一款与主 CPU 并行运行的 32 位浮点数学加速器。 2. CLA 独立于主 CPU 之外吗?是的。 一旦 CLA 被主 CPU 配置,它可以独立于
    发表于 03-11 08:00 13次下载

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

    的计算工作。通过增加平行的处理单元CLA,拓展了C28x CPU的性能。当前C2000系列产品共有3种类型的CLA, 不同的C2000型号对
    的头像 发表于 01-12 17:25 5529次阅读
    <b class='flag-5'>C2000</b> <b class='flag-5'>CLA</b>的使用与<b class='flag-5'>常见</b><b class='flag-5'>CLA</b><b class='flag-5'>内存</b>问题及<b class='flag-5'>解决方案</b>

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

    C2000 CLA的使用与常见CLA内存问题的解决方案
    发表于 10-28 12:00 4次下载
    <b class='flag-5'>C2000</b> <b class='flag-5'>CLA</b>的使用与<b class='flag-5'>常见</b><b class='flag-5'>CLA</b><b class='flag-5'>内存</b>问题的<b class='flag-5'>解决方案</b>

    AN013 CLA方波滤波器设计方案

    AN013 CLA方波滤波器设计方案
    发表于 02-23 19:07 0次下载
    AN013 <b class='flag-5'>CLA</b>方波滤波器设计<b class='flag-5'>方案</b>

    C2000浮点运算注意事项:CPU和CLA的差异及误差处理技巧

    C28x+FPU架构的C2000微处理器在原有的C28x定点CPU的基础上加入了一些寄存器和指令,来支持IEEE 单精度浮点数的运算。对于在定点微处理器上编写的程序,浮点C2000也完
    的头像 发表于 04-06 10:30 1895次阅读

    展示TIC2000CLA的独特功能的软件示例

    德赢Vwin官网 网站提供《展示TIC2000CLA的独特功能的软件示例.pdf》资料免费下载
    发表于 09-02 09:54 0次下载
    展示TIC<b class='flag-5'>2000</b>™ <b class='flag-5'>CLA</b>的独特功能的软件示例