質問
tftpサーバーのサンプルコードを実行しようとしています。ハードウェアを合成したり、コードをコンパイルしたりしても、苦情はありません。ただし、lwip_init()ステートメントを追加すると、動作が停止するようです(printステートメントは出力されません)。これは非常にイライラするものであり、何が原因なのかわかりません。何か案は?ありがとう
#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();
...
}
vickyに応答して編集:
あなたが正しいかもしれない原因を説明できるかもしれません。 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関数の呼び出しを開始すると、多くの新しいものがリンクされるため、イメージが変更されます。イメージがその制約(プログラムサイズ、データサイズ、スタックサイズなど)をオーバーフローしましたか?
所属していません StackOverflow