主题中讨论的其他器件:C2000WARE
您好!
我正在尝试运行 一个具有构建配置 CPU1_FLASH 的 CLA CLA_ex1_ADC_fir 示例。 但我面临一个问题。 程序在 Interrupt_illegalOperationHandler (void)处结束、因此不执行 CLA 任务。 如果我将配置更改为 CPU1_RAM、则程序可以正常运行。 您知道什么可能出错了吗?
我怀疑 memcpy 函数 ...
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.
您好!
我正在尝试运行 一个具有构建配置 CPU1_FLASH 的 CLA CLA_ex1_ADC_fir 示例。 但我面临一个问题。 程序在 Interrupt_illegalOperationHandler (void)处结束、因此不执行 CLA 任务。 如果我将配置更改为 CPU1_RAM、则程序可以正常运行。 您知道什么可能出错了吗?
我怀疑 memcpy 函数 ...
[引用 USER="Sal Pezzino]]我认为这与 ramfuncs 的 memcpy 和 CLA 代码/数据有关。 您是否正在使用最新 的 C2000Ware? 这应该被修复。 之前、memcpy 的参数顺序不正确。
SAL
[/报价]
感谢您的回复 Sal、
我使用的是 C200Ware v1.00.01.00、因此它是最新版本。
我还验证了 memcpy 函数中的参数。
memcpy (((uint32_t *)&Cla1ProgRunStart、(uint32_t *)&Cla1ProgLoadStart、(uint32_t)&Cla1ProgLoadSize);
memcpy (((uint32_t *)&Cla1ConstRunStart、(uint32_t *)&Cla1ConstLoadStart、(uint32_t)&Cla1ConstLoadSize);
这些参数似乎顺序正确。
现在、在执行 DEVICE_DELAY_US (1000)期间、程序仍在 INTERRUPT_ILLEGALOperationHandler (void)中结束;在按照所需的延迟对 ADC 进行初始化之后。
我删除了这个延迟(只是为了尝试)并且 CLA 任务被执行、然而一段时间后、 INTERRUPT_ILLEGALOperationHandler 再次发生。 因此、它与延迟函数无关。 我的观点是、处理器几乎没有执行任何操作、但仍然失败。
INTERRUPT_ILLEGALOperationHandler (void)应该何时发生?
当 CLA 执行任务时、存储器的某些部分是否有可能被意外地重新关闭?
J.
请更改.TI.ramfunc 的链接器命令文件分配
.TI.ramfunc:load = flash_BANK0_SEC4,
运行= RAMLS4、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)
SAL