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.

TMS320C6657: 网络热插拔,网络的程序运行时拔掉网线几分钟后重新插上网络ping不通

Part Number: TMS320C6657


在程序运行的过程中拔掉网线,然后等待几分钟后重新插上,用电脑ping板子会ping不通,重新运行一遍程序之后网络才会恢复正常,但是我使用 NC_NetStop(1);重启NDK网络协议栈之后网络会卡在emac_open函数里面,感觉像是资源没有释放,同时观测eamcstatus寄存器值为00000018.我现在想解决这个问题,实现网线热插拔的功能。使用的各种插件为NDK2.21.2.43,pdk_C6657_1_1_2_6,使用的是基于mcsdk中helloworld的例程修改的网络程序。

  • MCSDK比较老了,请尝试使用最新的processor SDK里的NDK。
    https://www.ti.com/tool/download/PROCESSOR-SDK-RTOS-C665X

  • 你好,请问是在pdk里面nimu的emac例程的基础上来进行修改程序进行调试吗?

  • 请问是在pdk里面nimu的emac例程的基础上来进行修改程序进行调试吗?

    您要实现什么功能?使用最新的SDK也不能热插拔吗?

  • 你好感谢你的回复,我使用最新的rtospdk,编译生成测试例程后在ccs9.2上面成功实现热插拔功能,然后由于限制,只能在ccs5.5上编写我的工程,然后经过二者对比发现和pdk_C6657_1_1_2_6相比,在EMAC_commonInit中将0x02c08160寄存器配置成了000000A1,就能实现网线热插拔,pdk_C6657_1_1_2_6配置的参数是000400A1,这个寄存器是·MAC Control Register (MAC_CONTROL)第18位,

    EXT_EN
    Control Enable. Enables the fullduplex and gigabit mode to be selected from the FULLDUPLEX_IN and
    GIG_IN input signals and not from the FULLDUPLEX and GIG bits in this register. The
    FULLDUPLEX_MODE bit reflects the actual fullduplex mode selected.

    暂时不清楚为什么导致这样,但是只需要在NC_NetStart启动的NetworkOpen()第一行将寄存器写入值为0x000000A1就能实现网线热插拔。

    这个问题困扰了我很久,有一个月时间,希望能给后来的开发者提供一些帮助。