разрыв кода при попытке запустить любую функцию lwip
Вопрос
Я пытаюсь запустить пример кода для сервера tftp. Я не получаю жалоб при синтезе моего оборудования или компиляции кода. Однако, когда я добавляю оператор lwip_init (), он перестает работать (он не выводит ни одного из операторов печати). Это очень расстраивает, и я понятия не имею, что вызывает это. Есть идеи? Благодаря
#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();
...
}
РЕДАКТИРОВАТЬ в ответ на Вики:
может быть, вы можете что-то объяснить, потому что вы можете быть правы Когда я компилирую его без lwip_init (), я получаю:
text data bss dec hex
7214 356 1104 8674 21e2
и с помощью lwip_init () я получаю:
text data bss dec hex
9726 356 559080 569162 8af4a
, который намного больше. Жаль, что не может дать предупреждение об этом
Решение
Предположительно (если вы делаете чистую перестройку), когда вы начинаете вызывать функции LWIP, он связывает множество новых вещей, поэтому ваше изображение изменилось. Превышено ли в вашем изображении какое-либо из ограничений (размер программы, размер данных, размер стека ...)?