El código se rompe al intentar ejecutar cualquier función lwip
Pregunta
Estoy intentando ejecutar el código de muestra para el servidor tftp. No recibo ninguna queja al sintetizar mi hardware o al compilar el código. Sin embargo, cuando agrego la sentencia lwip_init (), parece que deja de funcionar (no muestra ninguna de las sentencias impresas). Esto es muy frustrante y no tengo idea de lo que lo está causando. ¿Algunas ideas? Gracias
#include <stdio.h>
#include "xenv_standalone.h"
#include "xparameters.h"
#include "platform.h"
#include "netif/xadapter.h"
#include "lwip/init.h"
#define EMAC_BASEADDR XPAR_LLTEMAC_0_BASEADDR
int main()
{
print("-- Starting main() -- \r\n");
struct netif *netif, server_netif;
struct ip_addr ipaddr, netmask, gw;
/* the mac address of the board. this should be unique per board */
unsigned char mac_ethernet_address[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x02 };
netif = &server_netif;
microblaze_init_icache_range(0, XPAR_MICROBLAZE_0_CACHE_BYTE_SIZE);
microblaze_init_dcache_range(0, XPAR_MICROBLAZE_0_DCACHE_BYTE_SIZE);
/* enable caches */
XCACHE_ENABLE_ICACHE();
XCACHE_ENABLE_DCACHE();
platform_setup_interrupts();
/* initliaze IP addresses to be used */
IP4_ADDR(&ipaddr, 192, 168, 1, 10);
IP4_ADDR(&netmask, 255, 255, 255, 0);
IP4_ADDR(&gw, 192, 168, 1, 1);
print_app_header();
print_ip_settings(&ipaddr, &netmask, &gw);
lwip_init();
...
}
EDITAR en respuesta a vicky:
tal vez puedas explicar algo porque podrías tener razón. Cuando lo compilo sin lwip_init (), obtengo:
text data bss dec hex
7214 356 1104 8674 21e2
y con lwip_init () obtengo:
text data bss dec hex
9726 356 559080 569162 8af4a
que es mucho más grande. Lástima que no pueda dar una advertencia sobre esto.
Solución
Presumiblemente (asumiendo que estás haciendo una reconstrucción limpia) se está vinculando con muchas cosas nuevas cuando comienzas a llamar a las funciones LWIP, por lo que tu imagen ha cambiado. ¿Su imagen ha desbordado alguna de sus restricciones (tamaño del programa, tamaño de los datos, tamaño de la pila ...)?