This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL-F28379D:CLA 任务未成功执行

Guru**** 2610995 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1577313/launchxl-f28379d-cla-task-is-not-executing-successfully

器件型号:LAUNCHXL-F28379D
主题:C2000WARE 中讨论的其他器件

尊敬的专家:

您能为下面的查询提供帮助吗?

我尝试在 F28379D 上运行基本的 CLA 任务 1(软件触发)以切换 LED (GPIO 31)。 CPU 控制的 LED (GPIO 34) 正确切换、确认主循环正在运行、但 CLA 控制的 LED 不会、表明 CLA 任务未成功执行。

我正在使用 CCS 和 C2000Ware(版本 5.02.00 或者类似版本)。

我当前的代码设置包含用于 CLA 执行的所有标准修复:

CLA 程序加载:我已经验证了链接器文件 (.cmd) 将 Cla1Prog 放置在 FLASHD (LOAD) 和 LS0RAM (RUN) 中、并使用 main () 中的 memcpy 将代码从闪存复制到 LS0RAM。

内存配置:LS0RAM 配置用于 CLA 程序、LS1RAM 配置用于 CLA 数据。

CLA 任务:任务 1 是软件触发的、并尝试在完成时设置共享标志 (cla_led_flag = 1)。

中断处理:PIE 组 11 (INT_CLA1_1) 已启用并注册到 CLA_HaltTask1 ISR。
SK
这是我的代码,#include “driverlib.h"</s>“  
#include “device.h"</s>“  

//从 CLA 切换 LED 的全局标志
#pragma DATA_SECTION (Cla1Result、“CLADataLS1")“)
浮动 Cla1Result;

pragma DATA_SECTION (CLA_led_flag、“CLADataLS1")“)
易失性 uint32_t cla_led_flag = 0;

__ interrupt void Cla1Task1 (void);
__ interrupt void CLA_HaltTask1 (void);
//将任务放置在 CLA 程序存储器中
pragma CODE_SECTION (Cla1Task1、“Cla1Prog")“)


__interrupt void Cla1Task1 (void)

  //设置 LED 标志
    cla_led_flag = 1;
    Cla1Result = 1.234f; //只是为了确认 CLA 写入数据
    //清除 CLA 中断标志
  CLA_clearTaskFlags (CLA1_BASE、CLA_TASKFLAG_1);
}
__ interrupt void CLA_HaltTask1 (void)


  INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
}


void initCLA (void)
 {
  EALLOW;

  //启用 CLA1 时钟
  SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_CLA1);

  //可选择复位 CLA(如果需要)
  // SysCtl_resetPeripheral (SYSCTL_PERIPH_RES_CPU1CLA1);

  //可选择清除中断标志
 // Interrupt_clearACKGroup (INTERRUPT_ACK_group11);



  MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS0、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setCLAMemType (MEMCG_sect_LS0、MEMCG_CLA_MEM_PROGRAM);


    MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS1、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
      MemCfg_setCLAMemType (MEMCFG_sect_LS1、MEMCFG_CLA_MEM_DATA);


      cla_mapTaskVector (CLA1_BASE、CLA_MVECT_1、(uint16_t)&Cla1Task1);


      CLA_setTriggerSource (CLA_TASK_1、CLA_TRIGGER_SOFTWARE);


    CLA_enableTasks (CLA1_BASE、CLA_TASKFLAG_1);


    CLA_setTaskInterruptMode (CLA1_BASE、CLA_TASKFLAG_1、CLA_INTERRUPT_ENABLED);
    INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
EDIS;
}  void main{  Interrupt_register (INT_CLA1_1、&CLA_HaltTask1);// CLA 任务 1 中断处理程序
    initcla();
    INTERRUPT_ENABLE (INT_CLA1_1);// CLA 任务 1                                              while (1){CLA_forceTasks (CLA1_BASE、CLA_TASKFLAG_1);if (cla_led_flag)
       {  
     GPIO_togglePin (DEVICE_GPIO_PIN_LED1);
         cla_led_flag = 0;}
       }}
此致、
Marvin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Marvin:

    明天我将回复您、回答这个问题。  

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Marvin:

    对延迟深表歉意。 您是否尝试过 在连接了调试器的情况下将__mdebugstop () 行添加到 CLA 任务中、以查看 CLA 是否停止?

    此外、需要说明的一点是、确保通过 gpio_setControllerCore () driverlib 函数授予 CLA 对 GPIO 31 的访问权限。

    此致、

    Delaney