TI中文支持网
TI专业的中文技术问题搜集分享网站

官方PID控制的汇编代码如何“inline”到cla背景任务?

Other Parts Discussed in Thread:C2000WARE

在CLA背景任务中使用PID控制函数 DCL_runPI_L2 并打开 –opt_level:1

CCS报错:

#99923 "../cla_ex4_pwm_control_cla.cla", line 533: CLA does not permit function calls in background tasks. Try inlining function.

在cla文件加入

#pragma FUNC_ALWAYS_INLINE(DCL_runPI_L2)之后也没有任何作用

工程设置也没有disable inlining,是哪里还需要设置吗?

shu hai feng:

软件环境:ccs1030 ,C2000Ware_3_04_00_00,C2000Ware_DigitalPower_SDK_3_02_00_00

硬件:launchxl 280049c

,

Susan Yang:

shu hai feng 说:

在cla文件加入

#pragma FUNC_ALWAYS_INLINE(DCL_runPI_L2)之后也没有任何作用

是否有什么编译错误等?DCL_runPI_L2函数您是定义在哪里?

您可以参考我之前的链接

,

shu hai feng:

参考了一下之前的解决方案,我的工程已经打开了优化 __opt_level:0,1,2,3,4都试过

错误如下:
#99923 "../cla_ex4_pwm_control_cla.cla", line 532: CLA does not permit function calls in background tasks. Try inlining function.

DCL_runPI_L2 是在官方控制库(DCLCLA.H)里面定义的:extern float32_t DCL_runPI_L2(DCL_PI_CLA *p, float32_t rk, float32_t yk);

控制库路径:D:\ti\c2000\C2000Ware_DigitalPower_SDK_3_02_00_00\c2000ware\libraries\control\DCL\c28\include

具体的函数实现在:
D:\ti\c2000\C2000Ware_DigitalPower_SDK_3_02_00_00\c2000ware\libraries\control\DCL\c28\source 目录下的:DCL_PI_L2.asm

,

Susan Yang:

若是可以的话,请您私信一下工程,我们来具体看一下,谢谢

,

shu hai feng:

已私信

,

Susan Yang:

我试了一下下面的配置,是可以编译成功的

,

shu hai feng:

谢谢解答。

但是不开优化的话,CPU里面的程序执行时间几乎翻倍,这个也不可能使用的。

如下图:

cycle_统计了CPU程序执行的时钟周期数,cycle_max2 为最大执行周期数 , cycle_avg2为平均执行周期数

可以看到不开优化执行时间几乎是开优化之后的2倍,而且代码尺寸也会变大30%。

开优化CPU环路执行时间:

不开优化CPU环路执行时间:

或者换一种思路:

1.设置CPU代码和CLA代码的优化。

2.手动在C文件里面添加一段汇编函数,这个是否有官方例程?

,

Susan Yang:

抱歉,之前漏掉了您的回复。请问现在问题解决了吗?

,

shu hai feng:

暂时还没有解决。现在只能不开优化,但是程序执行时间几乎翻倍。

问下,开优化之后在CLA background task里面不允许call是基于什么考虑的?试过把background task 的“background”声明去掉,开优化也能编译成功,不知道这样会有什么风险?

,

Susan Yang:

shu hai feng 说:问下,开优化之后在CLA background task里面不允许call是基于什么考虑的?

这个问题建议您去英文论坛咨询一下相关专家

shu hai feng 说:试过把background task 的“background”声明去掉,开优化也能编译成功,不知道这样会有什么风险?

“background”声明去掉的话,就相当于是task8了,因为两者使用相同的trigger source。这样就没有一直在后台运行的任务了

,

shu hai feng:

只是把这个声明去掉,这个任务的地址依然是分配给背景任务,并非task8 .也就是说背景任务使用了一个没有声明为"background"的任务,不确定这样这个包含call的任务运行的时候被打断会发生什么。

,

shu hai feng:

请问英文论坛在哪里添加公司邮箱?

To post on TI E2E™ design support forums, you must have a valid company email address in your myTI account. If you have a valid company email address, please add it to your account by following the instructions in the myTI account FAQ (Note: there may be an ~10 minute delay for this email change to propagate to all necessary systems). If you don’t, we encourage you to search the TI E2E design support forums for existing answers.

,

Susan Yang:

赞(0)
未经允许不得转载:TI中文支持网 » 官方PID控制的汇编代码如何“inline”到cla背景任务?
分享到: 更多 (0)