工具/软件:TI-RTOS
您好!
我想通过用户应用程序动态分配网络 IP 地址。 对于这些地址、我创建了以下用于更新 IP 地址的代码。 当可以在网络挂钩函数中执行此操作时、这种方法效果良好。 但当我们在执行过程中从用户应用程序更新时、它不起作用。
我正在使用以下工具版本。
tirtos_tivac_2_16_01_14
NDK_2_25_00_09
BIOS_6_45_02_31
以下是用于更新 IP 地址的代码:
空 IP_Address_Update (IPLOCAL * stIpLocalAddr)
{
CI_IPNet NA;
CI_route RT;
句柄 hCfgIpAddr;
/*设置手册 IP 地址*/
bzero (不适用、sizeof (不适用));
na.ipaddr = inet_addr (stIpLocalAddr->ipaddr);
na.ipMask = inet_addr (stIpLocalAddr->IPMask);
strcpy (na.Domain、stIpLocalAddr-> Domain);
NA.NetType = 0;
/*获取当前静态 IP 条目*/
CfgGetEntry (0、CFGTAG _IPNet、1、1、&hCfgIpAddr);
/*删除当前静态 IP 条目*/
CfgRemoveEntry (0、hCfgIpAddr);
/*添加新的静态 IP 条目*/
CfgAddEntry (0、CFGTAG _IPNet、1、0、sizeof (CI_IPNet)、(UINT8 *)不适用、 0);
/*
*添加默认网关。 因为它是默认值、所以
*目标地址和掩码都为零(我们继续操作
*和为清晰起见显示了分配)。
*
bzero (&RT、sizeof (RT));
rt.IPDestAddr = 0;
rt.IPDestMask = 0;
rt.IPGateAddr = inet_addr (stLocalIpAddr->IPGateAddr);
CfgAddEntry (hCfgIpAddr、CFGTAG _route、0、0、sizeof (CI_route)、 (uint8 *)&RT、0);
}
当我在 Hook 函数中添加它时、它运行得非常好。 请参阅下面的快照。
当我从用户应用程序进行更新并且任务由于堆栈溢出而终止时、请参阅以下错误。
在这里、我使用 GPIO 中断来更新 IP 地址。 当 GPIO 设置为高电平时、将调用中断处理程序并发布挂起任务的事件以执行 IP 地址更新。
您能帮我解决这个问题吗?
此致
巴拉