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.

[参考译文] CCS/TMS320C6678:有关端口重新初始化的一些问题

Guru**** 2589280 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/584061/ccs-tms320c6678-some-issues-about-port-re-initialization

器件型号:TMS320C6678

工具/软件:Code Composer Studio

您好!  

FPGA 和 c6678之间的 SRIO 配置如下所示。

 -。 X2模式:陆地0和通道1连接为一个端口。

 -。 直接 IO:FPGA 将数据发送到 DDR3存储器

 -。 我可以检查 FPGA 上的 SRIO 状态:clock_lock、port_initialized、link_initialized、mode_1x、port_error

    MODE_1x 意味着端口被一个通道而非两个通道初始化

1>端口有时初始化为 MODE_1x 而不是 MODE_2x。

当端口为 MODE_1x 时、我需要重新启动链路协商。

是否有任何控制寄存器可手动启动协商?

我可以知道哪个寄存器是链路初始化的2x 模式还是1x 模式

2>读取 SP0_ERR_STAT

我已将读取 SP0_ERR_STAT 的简单函数设置为如下所示。

有时返回值为"0"表示 hSrio 为 NULL。 哪种情况下 SRIO 句柄可以为 NULL?

uint32_t SRIO_ERROR_STATUS ()
{
CSL_SrioHandle hSrio;

hSrio = CSL_SRIO_Open (0);
if (hSrio ==空)
返回0;

返回 hSrio->RIO_SP[0]。RIO_SP_ERR_STAT;
}

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

    我已将此内容转发给 SRIO 专家。 他们的反馈应发布在此处。

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

    您是否已检查 PLM 端口(n)路径控制寄存器(PLM_SP (n)_path_CTL)以确保路径模式设置为模式2或模式3?

    在实例编号为0的情况下,SRIO 处理程序不可能为 NULL,请参阅下面的 CSL_SRIO_Open ()定义。 相反、RIO_SP_ERR_STAT 返回零。

    CSL_SrioHandle CSL_SRIO_Open (Int32 instNum)

    CSL_SrioHandle RET_val =(CSL_SrioHandle) 0;
    如果(instNum =0)

    RET_val =(CSL_SrioHandle) CSL_SRIO_CONFIG_REGS;

    /*此处出现的控件表示传递了无效的实例编号*/
    return (ret_val);


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

    根据数据表、SP_ERR_STAT 的位0 (端口未初始化)和位1 (端口正常)是相互排斥的。 RIO_SP_ERR_STAT 是否可能返回零?

    但是、当我需要重新启动 SRIO 链路设置时、如何强制物理层重新初始化链路。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yoonsun、

    有趣的是、位0和位1应该是相互排斥的。 您是否已进入函数 CSL_SRIO_Open ()来精确定位返回值?

    为 KeyStone 软件辅助错误恢复 e2e.ti.com/.../491162描述的序列也应有助于重新初始化链接。

    此致、
    Garrett

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

    Garrett、

    我修改了 SRIO_ERROR_STATUS 函数。 该函数仅返回 SP_ERR_STAT。

    无论如何、它有时返回"0"。  

    您能不能给我任何线索、哪些情况 SP_ERR_STAT 为"0"?

    uint32_t SRIO_ERROR_STATUS (void)
    {
    CSL_SrioHandle hSrio;
    
    hSrio = CSL_SRIO_Open (0);
    // if (hSrio == NULL)
    // 返回0;
    
    返回 hSrio->RIO_SP[0]。RIO_SP_ERR_STAT;
    } 

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

    寄存器 SPM_ERR_STAT 自身应该有位和位1互斥、而不是零、您是否检查了存储器是否有任何可能
    hSrio->RIO_SP[0]。RIO_SP_ERR_STAT 是否被覆盖?

    此致、
    Garrett