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.

[参考译文] TM4C1294NCPDT:手动配置 DHCP 或静态 IP 存在问题(尚未解决)

Guru**** 2614275 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/767754/tm4c1294ncpdt-problems-yet-with-manual-configuration-of-dhcp-or-static-ip

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:SYSBIOS

大家好、  

 我所面临的这个问题与 https://e2e.ti.com/support/microcontrollers/other/f/908/t/766896有关、 

使用闪存中的 MAC 地址
TI.SYSBIOS.family.ARM.m3/Hwi:第143行:E_ALREADYDefinited:Hwi 已定义:INTR# 56
00000.000 ExecStart:已打开
00000.000 DHCPOpen:NIMUIOCTL (NIMU_GET_DEVICE_MAC)失败、错误代码为-22

void NetStart(){
//debug ("NetStart Callback\r\n");
}

void netStop (){
//debug ("NetStop Callback\r\n");
}

void serviceReport (uint a、uint b、uint c、handle cfg){
//debug ("NetStop Callback\r\n");
}void serviceReport (uint a、uint b、uint c、uint c、handle cfg){//debug ('/////udeServiceReport\r\n\r\n




);}udeNet (npinuipeNet、'nudeNet、'nudeNet 连接
)



/*将我们的全局主机名添加到 hCfg (在所有已连接的域中声明)*/
CfgAddEntry (hCfg、CFGTAG _SYSINFO、CFGITEM_DHCP_HOSTNAME、0、
strlen (主机名)、
(uint8 *)主机名、0);

/*使用 DHCP 获取接口1上的 IP 地址*/
{
CI_SERVICE_DHCPc dhcpc;
uint8 dhcp_options[]=
{
DHCPPT_SUBNET_MASK、
};

/*如果由"IfIdx"指定,则指定 DHCP 服务打开*/
bzero (&dhcpc、sizeof (dhcpc));
dhcpc.cisargs.Mode = 1;
dhcpc.cisargs.IfIdx = 1;
dhcpc.cisargs.pCbSrv =&serviceReport;
dhcpc.param.pOptions = DHCP_OPTIONS;
dhcpc.param.len = 1;
CfgAddEntry (hCfg、CFGTAG 服务、CFGITEM_SERVICE_DHCPCLIENT、0、
sizeof (dhcpc)、(uint8 *)&dhcpc、0);
}
}

void configIpInitStatic (handle hCfg)
{
RemottaConfig * rc = getRemottaConfig ();
char * DomainName ="scientt.scom";
char ipAddress[20]、netmask[20]、gateway[20];

debug ("CONFIGURANDO static IP\r\n");


/*将我们的全局主机名添加到 hCfg (在所有已连接的域中声明)*/
CfgAddEntry (hCfg、CFGTAG _SYSINFO、CFGITEM_DHCP_HOSTNAME、0、
strlen (主机名)、
(uint8 *)主机名、0);

/*在接口1上手动配置 IP 地址*/
{
CI_IPNet NA;
CI_route RT;
/*设置手册 IP 地址*/
bzero (不适用、sizeof (不适用));
getStringAddressFromInt (RC->configData.ethParam.ipAddress、ipAddress);
getStringAddressFromInt (RC->configData.ethParam.networkMask,网络掩码);
na.ipaddr = inet_addr (ipAddress);
na.ipMask = inet_addr (netmask);
strcpy (na.Domain、DomainName);
NA.NetType = 0;

CfgAddEntry (hCfg、CFGTAG _IPNet、1、0、
sizeof (CI_IPNet)、(uint8 *)&nA、0);

/*
*添加默认网关。 因为它是默认值、所以
*目标地址和掩码都为零(我们继续操作
*和为清晰起见显示了分配)。
*
bzero (&RT、sizeof (RT));
rt.IPDestAddr = 0;
rt.IPDestMask = 0;
getStringAddressFromInt (RC->configData.ethParam.gateway、网关);
rt.IPGateAddr = inet_addr (网关);

CfgAddEntry (hCfg、CFGTAG _route、0、0、
sizeof (CI_route)、(uint8 *)&RT、0);
}
}

void configUdpInit (handle hCfg)
{
{
int receiveBufSize = 2048;
CfgAddEntry (hCfg、CFGTAG _IP、CFGITEM_IP_SOCKUDPRXLIMIT、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&receiveBufSize、0);
}
}


void configTcpInit(句柄 hCfg)
{
{
int transmitBufSize = 2048;
CfgAddEntry (hCfg、CFGTAG _IP、CFGITEM_IP_SOCKTCPTXBUF、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&transmitBufSize、0);
}
{
int receiveBufSize = 2048;
CfgAddEntry (hCfg、CFGTAG _IP、CFGITEM_IP_SOCKTCPRXBUF、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&receiveBufSize、0);
}
{
int receiveBufLimit=2048;
CfgAddEntry (hCfg、CFGTAG _IP、CFGITEM_IP_SOCKTCPRXLIMIT、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&receiveBufLimit、0);
}

}

extern void llTimerTick();
int NetworkConfig (void)
{
int ret;
handle hCfg;
RemottaConfig * rc = getRemottaConfig ();
Clock_Params startclockParams;


debug ("\r\nNetworkConfig Configuracion - Initialization\r\nNC_SystemOpen\r\n");

//

创建时钟周期= timclockpick.Params;//

创建时钟周期 configParams,NULL);

ret = NC_SystemOpen (NC_Priority_low,NC_OPMODE_INTERRUPT);
if (ret)
{
sprintf (_message,"NC_SystemOpen Failed (%d),"n";
debug (_message);
return -1;
}

hCfg = CfgNew ();
if






nc

(nc)



Configuration (nc);unt) configh (nc);配置为静态配置(nc);(nc)






/*添加 NDK 低优先级任务堆栈大小的配置设置。 *
int STACKSIZE = 1024;
CfgAddEntry (hCfg、CFGTAG _OS、CFGITEM_OS_TASKLOW、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&STACKSIZE、0);

/*添加 NDK 标准优先级任务堆栈大小的配置设置。 *
STACKSIZE = 1024;
CfgAddEntry (hCfg、CFGTAG _OS、CFGITEM_OS_TASKSTKNORM、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&STACKSIZE、0);

/*添加 NDK 高优先级任务堆栈大小的配置设置。 *
STACKSIZE = 1024;
CfgAddEntry (hCfg、CFGTAG _OS、CFGITEM_OS_TASKSTHIGH、
CFG_ADDMODE_UNIQUE、sizeof (uint)、(uint8 *)&STACKSIZE、0);


//
//使用此配置启动系统
//
//我们继续启动,直到函数返回小于1。 这允许
//我们有一个“reboot”命令。
//
debug ("NC_NetStart\r\n");
do
{
ret = NC_NetStart (hCfg、NetStart、netStop、openConnections);
}while (ret > 0);

sprintf (_message、"NC_NetStart retCode =%d\r\n"、





完成);r (_message);// Delete Configuration (



nc);close

(nc)–return (nc);(nc) debug (nc);turn (nc



空 startupTask (UArg0、UArg0 arg1){

// NetworkConfig()之前的代码

;

//
}之后的代码

提前通知 Tks

莱安德罗

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

    抱歉、在出现错误和代码之前、我的注释会发生什么情况。
    我需要手动配置 NDK 以使用 NDK 或静态。 因此、我在使用 CGCONF 时复制生成的代码(如 Todd 建议的那样)、但它仍然不起作用。

    NetworkConfig 从 startupTask (从 RTOS 启动)调用。
    在 XGCONF 中、我刚刚选中了复选框"将 NDK/Global 添加到我的配置中"。 是否应取消选择此选项?

    NC_Netstop (0)是一个旨在解决此问题的尝试、但未成功。

    提前通知 Tks。
    莱安德罗

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

    您是否包含生成文件的内存管理部分? 如果只执行项目清理、然后导出 CCS 项目、可能会更容易。 然后连接它。

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

    e2e.ti.com/.../4544.tcpecho.zipHiTodd、

     我刚刚在新的 tcpecho 演示程序中进行了所需的更改、现在出现了以下错误:

    闪存中的 SS

    启动 TCP 回显示例

    系统提供商设置为 SysMin。 停止目标以查看 ROV 中的任何 SysMin 内容。

    初始化任务-正在启动

    NetworkConfig

    DHCP000打开:NIMUIOCTL (NIMU_GET_DEVICE_MAC)失败,错误代码为-22

    服务状态:DHCP:  失败 :      :000

    FSR = 0x0000

    HFSR = 0x40000000

    DFSR = 0x0000000b

    MMAR = 0xd50000d2

    BFAR = 0xd50000d2

    AFSR = 0x00000000

    正在终止执行...

    有一个 startpTask,它只调用我的 NetworkConfiguration。

    错误发生在 NC_NetStart 调用中。

    我将在此处附加项目。

    Tks 寻求任何帮助

    此致、

    莱安德罗

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

    您好!

    使用闪存中的 MAC 地址

    也许  可使用 LM 闪存工具为 MAC 编程 USER0/1寄存器(USER_REGn)。 源代码可能不希望闪存中存在 MAC 地址。

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

    您好!

     我不确定我是否理解该流程。 借助 LM 闪存编程器、我可以获得 MAC 地址。 查看附加的图像。

     我应该配置不同的 MAC 地址吗?

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

    莱安德罗

    您遇到的问题是网络代码仍在生成中。 因此、网络正尝试由您和生成的代码打开。

    执行以下操作

    1.在.cfg 中使用此文件构建生成的大型.c 文件:global.enableCodeGeneration = true;

    2.将生成的文件保存在项目中以外的其他位置,并添加"true"以使其明显可见(例如 C:\temp\tcpEcho_pem4f_true.c

    3.在.cfg 中更改为 Global. enableCodeGeneration = false。

    4、现在将生成的文件与 tcpEcho_pem4f_true.c 进行比较 您将看到您需要提供的东西。

    注意:仍然存在 ti_ndk_config_Global_stackThread 任务。 它只是为您创建时钟(抱歉、我误导了您这个时钟...我忘了它这么做了)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果 MAC 与您在 LM Flash 中输入的内容匹配、则应该可以。 您必须提交 MAC、否则下次 POR 时 MAC 将返回0x0。 此外、检查 MAC 地址模式以查看它是否符合您的预期。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    莱安德罗

    这是否得到了解决?

    Todd

    [2/6更新:由于原始海报没有回复、我将关闭此主题]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Todd、您好、很抱歉耽误您的回答。
    我现在能够以编程方式设置静态 IP 和 DHCP。 Tks 寻求帮助。