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.
我正在使用 CLA 来计算 FFT 的项目。 FFT 代码在 C28x 上运行良好、但当我将其放入.CLA 文件时、问题就会开始。
在调试器中、如果我不手动将目标连接到 CLA 和"加载符号"、调试就不能显式 CLA 部件。 (我使用 Cla1ForceTask1andWait();来自示例项目)。
如果我进行连接和加载、我会逐步浏览 CLA 代码、但它不会导致数据发生任何更改! 我尝试用数组中的一些基本操作替换 FFT、例如更改选定的元素、但这也没有用处。 我只能在 C28x 主代码中看到我加载到数组中的值、但无法进行任何更改。
我在.cmd 文件(下面的代码)中执行了所有存储器管理、但我不是很好地理解如何编写.cmd、所以可能会留下一些关键的东西。 猜问题在该文件中的某个位置、但我无法确定。
提前感谢!
此致、Konstantin
--define=cla_C=1 #if cla_C // cla_暂 存区大小= 0x100; --undef_sym=__cla_暂 存区_end --undef_sym=__cla_暂 存区_start #endif //cla_ca_c memory { PAGE 0: // begin 用于启动 SARAM/*引导加载程序 :origin = 0x000000,length = 0x000002 RAMM0:origin = 0x000122、length = 0x0002DE RAMD0:origin = 0x00B000、length = 0x000800 RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */ RAMD1 :origin = 0x00B800,length = 0x000800 RAMLS0_1 :origin = 0x008000、length = 0x001000 RAMGS0_2:origin = 0x00C000、length = 0x003000 RAMGS9 :origin = 0x015000,length = 0x001000 RAMGS10 :origin = 0x016000,length = 0x001000 RAMGS11 :origin = 0x017000、length = 0x001000 reset:origin = 0x3FFFC0,length = 0x000002 page 1: boot_RSVD :origin = 0x000002、length = 0x000120 // M0的一部分,引导 ROM 将使用此作为栈*/ CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080 CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080 RAMLS2_3:origin 0x009000,length 0x001000 RAMFS4_5:0x001000 RAMGS4 :0x000_RAM1000 origin = 0x011000、length = 0x002000 RAMGS7:origin = 0x013000、length = 0x001000 RAMGS8 :origin = 0x014000、length = 0x001000 RAMGS12 :origin = 0x018000、length = 0x001000 RAMGS13 :origin = 0x019000、length = 0x001000 RAMGS14:origin = 0x01A000、length = 0x001000 RAMGS15:origin = 0x01B000、length = 0x001000 } SECTIONS { codestart :>开始, PAGE = 0 #ifdef __TI_Compiler_version__ #if __TI_Compiler_version__>=15009000 .TI.ramfunc:{}>RAMM1, PAGE = 0 #else ramfuncs :> RAMM0 PAGE = 0#endif #endif CLAscratch: {*.obj (CLAscratch) 。 += CLA_ScratchPad_size; *。obj (CLAscratch_end)}> RAMLS4_5、page = 1 Cla1Prog:> RAMLS4_5、page =1 .text :>> RAMM0 | RAMM1 | RAMD0 | RAMD1 |RAMGS0_2/* RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4*/,PAGE = 0 .cinit :> RAMGS0_2, PAGE = 0.Pinit :> RAMGS0_2, PAGE = 0.switch :> RAMGS0_2, PAGE = 0.reset :>重置, PAGE = 0、TYPE = DSECT /*未使用、*/ .stack :> RAMGS3_4、 PAGE = 1.ebss :> RAMGS8,PAGE = 1 .econst :> RAMGS5_6,PAGE = 1.esysmem :> RAMGS7,PAGE = 1 Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,PAGE = 1 CpuToCla1MsgRAM:> CLA1_MSGRAMIGH,PAGE = 1.BSS_CLA :> RAMLS4_5, PAGE = 1 //特定项 IOBuffer :>RAMLS2_3,align=512,page=1//2*256 } /* /================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //文件结束。 //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
您好!
我注意到您对 CLA 程序和数据使用相同的 LS RAM 块(RAMLS4_5)。 我假设 RAMLS4和 LS5在您的代码中配置为 CLA 的程序 RAM (请确认)。 您是否可以尝试将.bss_cla 段和其他数据段(如 CLAscratch )放入 RAML2_LS3块(假设在代码中将 LS2和 LS3编程为 CLA 数据 RAM、请确认)。
此致、
Vivek Singh
void CLA_configClaMemory (void) { extern uint32_t Cla1funcsRunStart、Cla1funcsLoadStart、Cla1funcsLoadSize; EALLOW; // //初始化并等待 CLA1ToCPUMsgRAM // MemCfgRegs.MSGxINIT.bit.init_CLA1TOCPU = 1; while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU!= 1){}; // //初始化并等待 CPUToCLA1MsgRAM // MemCfgRegs.MSGxINIT.bit.init_CPUTOCLA1 = 1; while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1!= 1){}; MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;//共享 btw CPU 和 cla1;if 0 -到 CPU MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 1;//prog MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1; MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 1; MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1; MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0;//数据 MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1; MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 0; MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1; MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 0; MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1; MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 0; EDIS; }
SECTIONS { codestart :>开始, PAGE = 0 #ifdef __TI_Compiler_version__ #if __TI_Compiler_version__>=15009000 .TI.ramfunc:{}>RAMM1, PAGE = 0 #else ramfuncs :> RAMM0 PAGE = 0#endif #endif CLAscratch: {*.obj (CLAscratch) 。 += CLA_ScratchPad_size; *。obj (CLAscratch_end)}> RAMLS2_3、page = 1 Cla1Prog:> RAMLS0_1、page =0// .text :>> RAMM0 | RAMM1 | RAMD0 | RAMD1 |RAMGS0_2/* RAMM0 | RAMD0 | RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4*/,PAGE = 0 .cinit :> RAMGS0_2, PAGE = 0.Pinit :> RAMGS0_2, PAGE = 0.switch :> RAMGS0_2, PAGE = 0.reset :>重置, PAGE = 0、TYPE = DSECT /*未使用、*/ .stack :> RAMGS3_4、 PAGE = 1.ebss :> RAMGS8,PAGE = 1 .econst :> RAMGS5_6,PAGE = 1.esysmem :> RAMGS7,PAGE = 1 Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,PAGE = 1 CpuToCla1MsgRAM:> CLA1_MSGRAMIGH,PAGE = 1.BSS_CLA :> RAMLS2_3, PAGE = 1 //特定项 IOBuffer :> RAMLS4_5,align=512,page=1//2*256
您好!
非常感谢、我在第0页将 CLA 程序重新配置为 LS0_1、并且将其中的大多数 LS 块(2到5)设置为数据块并用作数据块。 现在、程序至少执行 CLA 部分。 但现在发生了另一个问题:我无法单步执行 CLA 代码、错误提示器件正在运行、暂停并重试、但它已经停止、因为我在单步模式下运行了所有程序。 执行结果远非预期、因此调试不可避免、但由于这个问题、我无法执行调试。
CPU1_CLA1:不能单步执行目标程序:(错误-2060 @ 0x0)在器件运行时无法完成请求的操作。 停止器件、然后重试此操作。 (仿真包7.0.48.0)
此致、
Konstantin