il codice si interrompe quando si tenta di eseguire qualsiasi funzione lwip
Domanda
Sto cercando di eseguire il codice di esempio per il server tftp. Non ricevo lamentele quando sintetizzo il mio hardware o compilo il codice. Tuttavia, quando aggiungo l'istruzione lwip_init (), sembra smettere di funzionare (non genera nessuna delle istruzioni di stampa). Questo è molto frustrante e non ho idea di cosa lo stia causando. Qualche idea? Grazie
#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();
...
}
EDIT in risposta a vicky:
forse puoi spiegare qualcosa perché potresti avere ragione. Quando lo compilo senza lwip_init (), ottengo:
text data bss dec hex
7214 356 1104 8674 21e2
e con lwip_init () ottengo:
text data bss dec hex
9726 356 559080 569162 8af4a
che è MOLTO più grande. peccato che non possa dare un avvertimento al riguardo
Soluzione
Presumibilmente (supponendo che tu stia facendo una ricostruzione pulita) si collega a molte nuove cose quando inizi a chiamare le funzioni LWIP, quindi la tua immagine è cambiata. La tua immagine ha traboccato alcuni dei suoi vincoli (dimensione del programma, dimensione dei dati, dimensione dello stack ...)?