主要内容

CLA配置概述C2000处理器

控制律加速器(CLA)是与TI C2000™处理器一起使用的协处理器,允许并行处理。在时间关键型任务中使用CLA可以释放主CPU并发执行其他系统和通信功能。

这些部分解释:

CLA的任务

一个CLA的任务block用于触发CLA任务。该块在CLA上运行下游函数调用子系统。在CLA任务块的块掩码中,指定CLA任务号和关联的中断触发源。确保您正在使用配置参数中所选硬件板对应的库中的CLA触发器块。CLA任务触发源选项对于不同的处理器是不同的。当所选中断触发时,使用所选CLA任务执行下游函数调用子系统。有关更多信息,请参见C28x CLA任务

例如,使用CLA Task1和软件选择作为触发源,这意味着在采样时间参数中提供的采样率触发CLA任务。

在CLA任务完成后产生中断

当CLA任务完成时,可以生成一个CLA中断。C28x使用CLA Task1中断作为中断源硬件中断块。在CLA任务中断(CPU = 11, PIE = 1-8)时,由硬件中断块触发的函数调用子系统在CLA任务结束时执行。

请注意

当一个CLA的任务是由中断而不是软件,确保中断在CLA任务结束时被清除。这是在使用时自动实现的硬件中断块用CLA结束任务中断或CLA源触发中断。

CLA子系统

CLA子系统块包含模型或系统中的块的子集。CLA子系统是由CLA任务块引起的触发子系统。

CLA子系统块只能与CLA任务块一起使用。有关更多信息,请参见CLA子系统

CLA子系统需要您加载tic2000demospkg在该模型中封装了基于TI C2000的有效硬件板。

  • 开放配置参数>硬件实现>硬件板并将参数更改为有效的TI C2000董事会。

  • 选择TI C2000硬件板后,单击管理包>刷新>负载来自Embedded Coder®字典应用程序加载tic2000demospkg.有关更多信息,请参见CLA与C28x CPU之间的数据交换

方法1—CLA子系统不可重用的函数代码生成(推荐)

在CLA子系统块中函数包装“代码生成”页签中的参数设置为isNonresuable默认情况下。要打开块参数,右键单击CLA子系统并选择块参数(子系统)

请注意

这个方法需要tic2000demospkg将包装入TI C2000硬件板的模型中。有关更多信息,请参见CLA与C28x CPU之间的数据交换

  • CLA子系统块生成单独的CLA算法代码c文件还有数据。

    初始化/终止函数带有编译器指令前缀,因此它只使用C编译器和执行函数前缀进行编译,以确保它由CLA编译器编译。

  • 常量、参数和内部数据被自动配置为存储在Cla1DataRAM

  • 只保存从CPU到CLA的输入信号作为信号,并将其存储在CpuToCla1MsgRAM存储类,使用代码映射编辑器。

  • 使用此方法监视和调优(外部模式)CLA子系统外的信号。

兼容性的考虑

CLA子系统的不可重用函数代码生成该特性从R2021b开始可用。

方法2 - CLA子系统的内联代码生成

在CLA子系统块中,选择函数包装作为内联代码生成页。要打开块参数,右键单击CLA子系统并选择块参数(子系统)

  • 在这种方法中,整个算法在CLA得到内联并且是CLA任务文件(cl_task . CLA)的一部分。

  • 所有输入到CLA的信号必须手动配置才能存储CpuToCla1MsgRAM存储类。

  • 从CLA到CPU的所有输出信号手动配置存储Cla1ToCpuMsgRAM存储类。

  • 所有在CLA函数调用子系统中使用的离散状态变量,手动配置为存储Cla1DataRam.例如,延迟块和积分器必须设置为对状态变量使用cl1dataram存储类。看到状态属性的延迟块内部cla_subsystemc28035blink_cla.slx的例子。

  • 使用此方法,您无法执行监视和调优(外部模式)CLA子系统外的信号。

CLA与C28x CPU之间的数据交换

CLA存储类可以加载在模型中(嵌入式编码器>代码接口>嵌入式编码器词典>管理包)。

Code Mappings编辑器是为代码生成配置模型数据元素的主要位置。有关更多信息,请参阅代码映射编辑器- C(金宝app仿真软件编码器)

CLA和CPU之间的所有接口都需要放在特定的内存区域中。要获得对这些部分的特定访问,请选择嵌入式编码器>代码的映射>数据存储而且信号/州用于cputocl1msgram和cl1tocpumsgram。有关更多信息,请参阅代码映射编辑器- C(金宝app仿真软件编码器)

内存段数据

模型中的数据存储在不同的内存段中,这些内存段具有以下访问规则。

内存存储类

记忆的部分

CPU

CpuToCla1MsgRAM 读和写 只读
Cla1ToCpuMsgRAM 只读 读和写
Cla1DataRAM 读和写 读和写

请注意

  • 信号或状态为Cla1ToCpuMsgRAM存储类将在CPU编译的函数中添加初始化(模型初始化函数),但CPU没有对上述内存部分的写访问权。如果需要对特定变量进行初始化,并且也需要由CLA进行编辑,则建议使用Cla1DataRAM

  • 对于F2803x处理器Cla1DataRAM行为类似于Cla1ToCpuMsgRam即CPU没有写访问任何上述存储类除了CpuToCla1MsgRAM

内存段代码

具有以下内存部分的函数以编译器指令为前缀,以控制代码的编译。

  • C28xFunctionC28x编译器

  • ClaFunctionCLA编译器

下图为模型中CPU和CLA之间特定内存段的配置。

代码的映射

使用CLA时需要的型号配置

型号配置参数>代码生成>优化,默认参数行为参数必须设置为内联.这避免了模型结构全局变量的创建,因为CLA不能访问全局数据。

更改标准链接器命令文件

对于F28035和F28069处理器,必须选择一个特定的链接器命令文件来分配CLA内存段。在“模型配置参数”中硬件实现>目标硬件资源>构建选项,并选择使用自定义链接器命令文件.一个预配置c28069_cla.cmd作为链接器命令文件。该文件添加了CLA内存段描述,可以在src安装支持包的根目录。金宝app

使用XCP外部模式进行分析

当使用XCP外部模式对包含CLA子系统的模型执行分析时,请确保禁用该参数需要终止函数配置参数>代码生成>接口>先进的参数

配置参数

请注意

对于包含CLA的模型,使用XCP外部模式运行分析,将不会分析在CLA中执行的任务。

CLA LSRAM内存配置

在“型号配置参数”中,可以将本地的LSRAM (shared RAM)配置为CLA程序和数据内存。

在“模型配置参数”中,导航到硬件实现>目标硬件资源>构建选项并选择配置CLA程序和数据内存.有关信息,请参见C28x-Build选项

下表描述了处理器可用的LSRAM内存总量。

CLA LSRAM内存分配

处理器 LSRAM总内存(千瓦)
F2837x / F2807x 12
F28004x / F2838x 16

调试班

调试函数* / / * __mdebugstop ()出现在CLA任务的开始__interrupt void cl1task1 (void)在生成的cla_task.cla文件。

  1. 打开调试功能__mdebugstop ()通过删除它周围的块注释。

  2. 编译源代码或构建CCS项目。

  3. 有关调试说明,请访问:https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/c2000-real-time-control-mcus/overview.html#Debugging

CLA限制和故障排除

限制

由于CLA和C28x™CPU之间的特定交互以及CLA C编译器的限制,您需要遵循特定的建模实践。

  • 只有C28x事件才能触发CLA应用程序代码。C28x CPU可以通过软件或使用不同的外围中断来触发CLA任务。

  • 将CLA和CPU之间的所有接口放在特定的内存位置。使用cputocl1msgram内存部分将数据从C28x交换到CLA。使用cl1tocpumsgram内存部分将数据从CLA交换到C28x。

  • 常数与采样时间为并映射为CpuToCla1MsgRAMCla1ToCpuMsgRAM总是初始化为0.确保该常数的采样时间设置为-1任意正整数

  • 对于以外部模式运行的包含CLA子系统的模型,数据不能在CLA子系统内部进行记录。您必须将数据移出CLA子系统以监视数据。

  • CLA应用程序代码不能访问全局变量。

  • 不支持递归函数调用。金宝app

  • CLA C编译器不支持整数除法和整数无符号比较。金宝app使用MATLAB®函数来访问TI为上述操作提供的CLA数学库函数。

  • 当在CLA中使用一个实例时,不能对同一个模块使用多个DAC块实例。

  • SPI可以而且SCI在CLA中不支持block。金宝app

  • 创建复位函数 的块不能在CLA中使用。不可能从Simulink控制重置函数到CLA核心的定义和编译金宝app®.例如,PID积分器和重置状态的条件块。

  • 当你在MATLAB函数中使用常数时,它被存储在C28x的常数部分中,CLA无法访问。您可以通过使用Simulink中的常量,并配置适当的存储类,并将其作为MATLAB函数的输入来克服这个问金宝app题。

欲了解更多细节和详尽的限制列表,请访问:https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/c2000-real-time-control-mcus/overview.html

在Simulink中创建模型时,请考虑这些限制。金宝app

使用CLA时要考虑的其他准则

避免在CLA函数调用子系统中使用原子子系统创建子函数,因为这会创建CLA不支持的嵌套函数。金宝app

某些CLA配置可能需要对模型进行更多操作,或者可能阻止您使用Simulink特性。金宝app请参阅CLA C编译器文档中提供的限制列表。使用嵌入式编码器支持的特性,以CLA C编译器金宝app支持的有限语法限制生成的代码。

故障排除

  • 确保您使用的代码生成工具版本支持CLA C编译器。金宝app

  • 确保您已经在系统上安装了支持CLA的最新C/ c++头文件。金宝app

另请参阅

|

相关的话题