器件型号:DK-TM4C129X
您好!
BOOT_serial 位于0x0、应用程序从0x4000开始。
我要尝试的是,一旦应用程序启动,它就会访问 Unix 服务器,以获取自己分配的 IP 和服务器 IP,然后调用 lwip_init()。
所以,我修改了 ParseBOOTPReply()来检索 IP。
// //从响应中提取我们的 IP 地址。 // *((uint32_t *)(void *)(&uip_hostaddr)= psbootbootp -> ui32YIAddr; // //保存为 lwip 初始化分配的服务器 IP 的副本 // bootbootp_Server_Assigned_ip = psbootp->ui32YIAddr; UARTprintf ("BOOTP Assigned IP=%d \n"、BOOTP_SERVER_Assigned_IP); // //从响应中提取服务器地址。 // *((uint32_t *)(void *)(&g_sServerAddr)= psBOOTP->ui32SIAddr;
应用程序启动后,它会调用 lwipinit(),并调用 ConfigureEent()和 UpdateBOOTP()。
Configureenet(); UpdateBOOTP();//调用例程以执行 BOOTP 和 ////获取服务器分配的 IP 地址 BOOTP_SERVER_Assigned_IP = ntohl (BOOTP_SERVER_Assigned_IP);//转换接收到的网络字节 // //初始化 lwIP。 // // lwIPInit (g_ui32SysClock、pui8MAC、0、0、0、0、 ipaddr_use_dhcp); lwIPInit (g_ui32SysClock、pui8MAC、BOOTP_SERVER_Assigned_IP、0、0、0、 ipaddr_use_static);
此应用程序使用闪存或基于 ROM 的 bootlaore+DHCP、因此获取电路板的 IP 没有问题。
但是、如果调用两个函数来使用 BOOOTP 检索 IP、则应用程序会卡住。
即使我尝试在没有引导加载程序的情况下在0x00启动应用程序、以查看上述模块是否可以获得 IPS、但这不会让我成功。
您能给我一些提示、帮助吗?
此致、
Jin