工具与软件:
您好、TI:
当我们有旧的 Linux SDK (7.3)时、我们升级到10.1 RTOS SDK、用于 MCU2_0和 MCU2_1、一切都正常、但当我们升级到新的 Linux SDK (10.1)时、我们看到 SGMII 端口无法初始化、那么、这可能是什么问题呢?
谢谢。此致、
Satya。
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.
工具与软件:
您好、TI:
当我们有旧的 Linux SDK (7.3)时、我们升级到10.1 RTOS SDK、用于 MCU2_0和 MCU2_1、一切都正常、但当我们升级到新的 Linux SDK (10.1)时、我们看到 SGMII 端口无法初始化、那么、这可能是什么问题呢?
谢谢。此致、
Satya。
您好!
如果我调用 Board_Cfg SGMII 函数内核冻结正在发生、如果我禁用此函数调用、则其他功能仍在运行、但 SGMII 端口已关闭、
默认 u-boot 级串行器/解串器在 SDK 中启用。
请检查 SDK 7.3中与串行器/解串器相关的 u-boot 和 Linux 中有哪些更改、并采用与最新 SDK 相同的更改。
此致、
Sudheer
您好!
[报价 userid="635888" url="~/support/processors-group/processors/f/processors-forum/1479634/dra829v-ep2000-main2_0-sgmii-ports-were-not-able-to-bringup-10-1-psdk-when-linux-is-also-10-1/5683564 #5683564"]还观察到,每当我们试图访问基地址 CSL_SERDES_10G0_BASE ,然后内核是冻结意味着它是与访问问题或 MPU 问题有关,如果是,我们如何解决这一点?
#define CSL_SERDES_10G0_BASE (0x5050000UL))
[报价]这意味着未启用串行器/解串器模块。
您能否确认您是否使用所需的 src 配置(例如时钟配置和模块上的电源)更新了 ethfw/utils/board/Serds/j721e/board_j721e_evm.c 文件?
请与在 SDK 7.3中所做的更改进行交叉。
此致、
Sudheer
您好、Sudheer:
我已启用如下所示的时钟和串行器/解串器10G0、看起来效果很好
BOARD_EN_SERDES4_AND_REFCLK 函数调用 Board_Cfg Sgmii 调用
静态 Board_STATUS Board_en_SERDES4_AND_REFCLK (void)
{
uint64_t clkRateHz = 100000000U、clkRateRead = 0U;
uint32_t moduleId = TISCI_DEV_SERDES_10G0;
int32_t i、结果;
uint32_t clkID[]={TISCI_DEV_SERDES_10G0_CORE_REF_CLK};
uint32_t parentID[]={TISCI_DEV_SERDES_10G0_CORE_REF_CLK_PARTNER_HSDIV4_16FFT_MAIN_2_HSDIVOUT4_CLK};
uint32_t moduleState;
uint32_t resetState;
uint32_t contextLossState;
int32_t ret = Sciclient_pmGetModuleState (TISCI_DEV_SERDES_10G0、&moduleState、
&resetState、&contextLossState、SCICLIENT_SERVICE_WAIT_FOREVER);
/*将模块设置为打开状态*/
if ((ret == CSL_PASS)&&(moduleState == 0U))
{
Sciclient_pmSetModuleState (TISCI_DEV_SERDES_10G0、
TISCI_MSG_VALUE_DEVICE_SW_STATE_ON、
TISCI_MSG_FLAG_AOP、
SCICLIENT_SERVICE_WAIT_FOREVER);
}
设计
{
}
for (i = 0;i <(sizeof (clkID)/sizeof (clkID[0]));i++)
{
/*禁用时钟*/
Result = Sciclient_pmModuleClkRequest (moduleId、
clkID[i]、
TISCI_MSG_VALUE_CLOCK_SW_STATE_UNREQ、
0u、
SCICLIENT_SERVICE_WAIT_FOREVER);
如果(CSL_SERDES_NO_ERR!=结果)
{
Return Board_FAIL;
}
/*设置父级*/
Result = Sciclient_pmSetModuleClkParent (moduleId、
clkID[i]、
parentID[i]、
SCICLIENT_SERVICE_WAIT_FOREVER);
如果(CSL_SERDES_NO_ERR!=结果)
{
Return Board_FAIL;
}
/*将时钟设置为所需的频率*/
Result = Sciclient_pmSetModuleClkFreq (moduleId、
clkID[i]、
clkRateHz、
TISCI_MSG_FLAG_CLOW_ALLOW_FREQ_CHANGE、
SCICLIENT_SERVICE_WAIT_FOREVER);
如果(CSL_SERDES_NO_ERR!=结果)
{
Return Board_FAIL;
}
/*确认是否设置了时钟*/
clkRateRead = 0U;
Result = Sciclient_pmGetModuleClkFreq (moduleId、
clkID[i]、
clkRateRead (&C)、
SCICLIENT_SERVICE_WAIT_FOREVER);
如果((CSL_SERDES_NO_ERR!= RESULT)||(clkRateRead!= clkRateHz))
{
Return Board_FAIL;
}
}
/*将模块设置为打开状态*/
Result = Sciclient_pmSetModuleState (moduleId、
TISCI_MSG_VALUE_DEVICE_SW_STATE_ON、
(TISCI_MSG_FLAG_AOP | TISCI_MSG_FLAG_DEVICE_RESET_ISO)。
SCICLIENT_SERVICE_WAIT_FOREVER);
如果(CSL_SERDES_NO_ERR!=结果)
{
Return Board_FAIL;
}
/*如果将状态更改为启用、则重置*/
Result = Sciclient_pmSetModuleRst (moduleId、
0x0U /*resetBit*/、
SCICLIENT_SERVICE_WAIT_FOREVER);
如果(CSL_SERDES_NO_ERR!=结果)
{
Return Board_FAIL;
}
Return Board_SOK;
}