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.

[参考译文] RTOS/TMS320TCI6614:运行高速缓存的 TCI6614 RTOS DDR3无效

Guru**** 2585275 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/632625/rtos-tms320tci6614-tci6614-rtos-ddr3-running-cache-invalidate-fail

器件型号:TMS320TCI6614

工具/软件:TI-RTOS

尊敬的:先生

   我使用 TCI6614设计 基站,希望获得帮助并回答 以下问题、谢谢!

  Q(1)Cache validate running in DDR3,有时行会失效、导致内核读取此处下面0,代码的一些数据:

1 μ A)cache初始化
#pragma NO_HOOKS (FDD_Cache_init);
int32 FDD_cache_init()

CSL_CgemRegs* pstCgemRegs =(CSL_CgemRegs*) CSL_CGEM0_5_REG_BASE_ADDRESS_REGS;
uint32 i;
#if 0
CSL_XmcRegs* pstXmcRegs =(CSL_XmcRegs*) CSL_XMC_CONFIG_REGS;
pstXmcRegs->XMPAX[2].XMPAXL = 0x100000FF;
pstXmcRegs->XMPAX[2].XMPAXH=0x2100000B;
pstCgemRegs->MAR[0x21000000 >> 24]= 0;
//将逻辑空间0x2C000000~0x2C200000映射到MSMC的物理空间0x0 0C000000~0x0 0C200000
访问0x2C000000~0x2C200000时就相当于访问MSMC μ s
pstXmcRegs->XMPAX[3].XMPAXL = 0x00C00000 | 0x3f;//替换地址:0x0 0C000000
pstXmcRegs->XMPAX[3].XMPAXH = 0x2C000000 | 0x14;//基地址:0x2C000000、大小:2M
//无高速缓存
pstCgemRegs->MAR[0x2C000000 >> 24]= 0;// 0x2C000000~0x2CFFFFFF
#endif
/* 32K 高速缓存*/
pstCgemRegs->L1DCFG = 4;//32k 高速缓存
pstCgemRegs->L1PCFG = 4;//32k 高速缓存
/* 64K 高速缓存*/
pstCgemRegs->L2CFG = 2;
/* MSMC */
对于(I = 12;I < 16;I++)// 0x0C000000~0x0CFFFFFF

pstCgemRegs->MAR[i]= 1;

/* DDR3 */
//for (I = 152;I < 192;I++)// 0x98000000~0xBFFFFFFF、高速缓存
对于(i = 152;i < 256;i++)// 0x98000000~0xFFFFFFFF、缓存大小更改0828

pstCgemRegs->MAR[i]= 9;

pstCgemRegs->MAR[154]= 0;// 0x9A000000~0x9AFFFFF,无高速缓存
返回 MDD_OK;

2)cache读写测试,core0写入,core1读出 μ A
MAIN ()

………………μ A
while (1)

FDD_CORE_SYNC ();
tlen = 51200;
if (MDD_CURRENT_COREID = MDD_CORE0)

for (i=0;i<(tlen/4);i++)

DDR_DATA_WRITE[i]= j;

for (i=0;i<(tlen/25600);i++)
FDD_cache_writeback ((UINT32)(&DDR_DATA_write[0]+I*25600),25600);

FDD_CORE_SYNC ();
if (MDD_CURRENT_CORE_ID = MDD_Core1)

for (i=0;i<(tlen/25600);i++)

FDD_cache_invalidate ((uint32)(&DDR_DATA_write[0]+I*25600),25600);

memcpy (DDR_DATA_Read、DDR_DATA_WRITE、DATA_LEN);
for (i=0;i<(tlen/4);i++)

if (DDR_DATA_WRITE[i]!= j)

//g_err_data[g_err[0]%10000]= i;
G_ERR[0]++;
system_printf ("测试错误! %d、%d、%d\n"、DDR_DATA_WRITE[i]、j、g_err[0]);
system_flush();
//while (1);



J++;


q(2)TCP 协处理器问题:代码运行后 、TCP 协处理器的4个通道(Tcp3da_p0、TCP3DA_P1、Tcp3db_p0、TCP3D_P1)都被快速占用并保持在繁忙状态,这是否是错误状态?

Q(3)除仿真器和 CCS 之外,还有其它方法可以记录 RTOS 运行状态(将 RTOS 日志记录在脱机状态)?

再次感谢!

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

    您使用的是哪个 SDK 版本?

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


    编译器版本:TI v7.4.4

    运行时支持库:rts6600_elf.lib

    SYS/Bois:6.35.4.50

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

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

    尊敬的 David:

    以下是一些调试建议。

    1.请阅读 DDR3内存控制器用户指南第2.6.3节可能的竞态条件。 当您在两个主器件之间共享数据时、您需要遵循本节中的权变措施。

    2. TCP3D 取决于您的驱动程序,您需要检查 TCP3D 寄存器以了解更多详细信息。

    请 阅读此 wiki 页面 、您可以使用内核转储或 UART (如果您的板上有)来获取一些信息。

    http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS:_TI_RTOS_Tips_And_Tricks

    此致、

    艾伦