2009-09-11 3 views
0

J'essaye d'exécuter l'exemple de code pour le serveur de tftp. Je ne reçois aucune plainte lors de la synthèse de mon matériel ou de la compilation du code. Toutefois, lorsque j'ajoute l'instruction lwip_init(), elle semble cesser de fonctionner (elle ne renvoie aucune des instructions print). C'est très frustrant et je n'ai aucune idée de ce qui le cause. Des idées? Merciles pauses de code en essayant d'exécuter n'importe quelle fonction de lwip

#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 en réponse à vicky:

vous pouvez peut-être expliquer quelque chose parce que vous pourriez avoir raison. Quand je compile sans lwip_init(), je reçois:

text data bss dec hex 
7214 356 1104 8674 21e2 

et lwip_init() i get:

text data bss dec hex 
9726 356 559080 569162 8af4a 

qui est beaucoup plus grande. dommage qu'il ne puisse pas donner un avertissement à ce sujet

Répondre

1

Vraisemblablement (en supposant que vous faites une reconstruction propre) il lie beaucoup de nouvelles choses lorsque vous commencez à appeler des fonctions LWIP, donc votre image a changé. Votre image a-t-elle débordé l'une de ses contraintes (taille du programme, taille des données, taille de la pile ...)?

+0

J'ai eu ce problème, que je crois avoir corrigé en augmentant la taille de RAM du bloc utilisé (au moins je ne vois pas d'erreurs/avertissements) à ce sujet – giroy

Questions connexes