如题,我使用6678+ndk_2_21_02_43作TCP的Client端,程序会实现DSP和对端TCP的server的连接。6678的RESETFULL引脚接到外部器件的输出引脚上进行复位控制。现在想实现的功能是6678进行复位前,可以主动向TCP的server端发送挥手,请求断开TCP链接,请问可以做到吗?
如题,我使用6678+ndk_2_21_02_43作TCP的Client端,程序会实现DSP和对端TCP的server的连接。6678的RESETFULL引脚接到外部器件的输出引脚上进行复位控制。现在想实现的功能是6678进行复位前,可以主动向TCP的server端发送挥手,请求断开TCP链接,请问可以做到吗?
我不认为这是可能的,因为它主要取决于如何触发重置(软/硬)。 如果通过RESETFULL引脚启动重置,则无法在断言引脚后发送TCP断开连接。 当RESETFULL被激活时,所有内核,外设和内部逻辑将立即重置。 此时,CPU停止执行指令,因此一旦重置开始,DSP就无法发送TCP断开数据包。 如果您需要执行清除操作,例如发送断开连接,则使用软重置或本地重置是更好的方法。
Reference : https://datasheets.b-cdn.net/files/TMS320C6678ACYPA-Texas-Instruments-datasheet-15685933.pdf?
我建议阅读第7.4.3和7.4.4节,它们解释了软重置和本地重置的详细信息。
由于DSP在软重置或本地重置之前仍处于活动状态,您可以插入一个预重置挂钩,以正常断开TCP连接,然后通过RSTCTRL/RSTCFG或PSC寄存器触发重置,如BIOS/McSDK本地重置示例所示。 (请参见以下路径中的示例:C:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\PCIE\)。 为供您参考,我正在本地重置上共享Previous E2E Post,相应的示例代码已在MCSDK中提供。 我希望这会有所帮助。
您也可以参考以前的E2E:e2e.ti.com/.../ndk-problem-with-closing-tcp-connection-from-dsp-side