diff --git a/bsp_z7/lwip/include/lwipopts.h b/bsp_z7/lwip/include/lwipopts.h index a92f274..76ac420 100644 --- a/bsp_z7/lwip/include/lwipopts.h +++ b/bsp_z7/lwip/include/lwipopts.h @@ -166,7 +166,7 @@ a lot of data that needs to be copied, this should be set high. */ #define PBUF_POOL_SIZE 120 /* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ -#define PBUF_POOL_BUFSIZE 256 +#define PBUF_POOL_BUFSIZE 2048 /** SYS_LIGHTWEIGHT_PROT * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection diff --git a/bsp_z7/lwip/netif/xemacpsif.c b/bsp_z7/lwip/netif/xemacpsif.c index e9abf70..8c12c88 100644 --- a/bsp_z7/lwip/netif/xemacpsif.c +++ b/bsp_z7/lwip/netif/xemacpsif.c @@ -273,11 +273,20 @@ s32_t xemacpsif_input(struct netif *netif) /* no packet could be read, silently ignore this */ if (p == NULL) { + outbyte('x'); return 0; } /* points to packet payload, which starts with an Ethernet header */ ethhdr = p->payload; + xil_printf(" %p",p->payload); + + for (int j = 0; j < 6; j++) { + for (int i = 0; i < 8; i++) { + xil_printf(" %02x", *((uint8_t *)(p->payload) + i + j * 8 ) ); + } + xil_printf("\n"); + } #if LINK_STATS lwip_stats.link.recv++; @@ -298,13 +307,19 @@ s32_t xemacpsif_input(struct netif *netif) #endif /* PPPOE_SUPPORT */ /* full packet send to tcpip_thread to process */ if (netif->input(p, netif) != ERR_OK) { + outbyte('y'); LWIP_DEBUGF(NETIF_DEBUG, ("xemacpsif_input: IP input error\r\n")); pbuf_free(p); p = NULL; } + outbyte('o'); break; default: + outbyte('z'); + for (int i = 0; i < 14; i++) { + xil_printf(" %02x", *((uint8_t *)(p->payload) + i ) ); + } pbuf_free(p); p = NULL; break; diff --git a/bsp_z7/lwip/netif/xemacpsif_dma.c b/bsp_z7/lwip/netif/xemacpsif_dma.c index 74112e1..e22cbef 100644 --- a/bsp_z7/lwip/netif/xemacpsif_dma.c +++ b/bsp_z7/lwip/netif/xemacpsif_dma.c @@ -115,6 +115,17 @@ volatile u32_t notifyinfo[4*XLWIP_CONFIG_N_TX_DESC]; * for BDs. The rest 768 KB of memory is just unused. *********************************************************************************/ +void printInt(int i) { + outbyte(i / 100 + 0x30); + i = i % 100; + outbyte(i / 10 + 0x30); + i = i %10; + outbyte(i + 0x30); + outbyte(10); + +} + + #if defined __aarch64__ u8_t emac_bd_space[0x200000] __attribute__ ((aligned (0x200000))); #else @@ -291,6 +302,7 @@ void xemacps_process_sent_bds(xemacpsif_s *xemacpsif, XEmacPs_BdRing *txring) void emacps_send_handler(void *arg) { + outbyte('t'); struct xemac_s *xemac; xemacpsif_s *xemacpsif; XEmacPs_BdRing *txringptr; @@ -498,6 +510,7 @@ void setup_rx_bds(xemacpsif_s *xemacpsif, XEmacPs_BdRing *rxring) void emacps_recv_handler(void *arg) { + outbyte('r'); struct pbuf *p; XEmacPs_Bd *rxbdset, *curbdptr; struct xemac_s *xemac; @@ -538,10 +551,13 @@ void emacps_recv_handler(void *arg) } for (k = 0, curbdptr=rxbdset; k < bd_processed; k++) { + outbyte('p'); bdindex = XEMACPS_BD_TO_INDEX(rxring, curbdptr); p = (struct pbuf *)rx_pbufs_storage[index + bdindex]; + xil_printf("reading bd index %i bdindex %i p %p payload %p\n", index, bdindex, p, p->payload); + /* * Adjust the buffer size to the actual number of bytes received. */ @@ -550,6 +566,7 @@ void emacps_recv_handler(void *arg) #else rx_bytes = XEmacPs_BdGetLength(curbdptr); #endif + printInt(rx_bytes); pbuf_realloc(p, rx_bytes); /* Invalidate RX frame before queuing to handle @@ -775,6 +792,8 @@ XStatus init_dma(struct xemac_s *xemac) #endif XEmacPs_BdSetAddressRx(rxbd, (UINTPTR)p->payload); + xil_printf("setting bd index %i bdindex %i p %p payload %p\n", index, bdindex, p, p->payload); + rx_pbufs_storage[index + bdindex] = (UINTPTR)p; } XEmacPs_SetQueuePtr(&(xemacpsif->emacps), xemacpsif->emacps.RxBdRing.BaseBdAddr, 0, XEMACPS_RECV); diff --git a/bsp_z7/main.c b/bsp_z7/main.c index 6bca562..b667c5b 100644 --- a/bsp_z7/main.c +++ b/bsp_z7/main.c @@ -67,7 +67,7 @@ int main(void) { testEth(); - mission(); + //mission(); } static void prvSetupHardware(void) { diff --git a/bsp_z7/testEth.c b/bsp_z7/testEth.c index ec9a381..deeed88 100644 --- a/bsp_z7/testEth.c +++ b/bsp_z7/testEth.c @@ -142,7 +142,7 @@ void udp_receiver(void *arg, struct udp_pcb *pcb, struct pbuf *p, xil_printf("%i received len: %i tot_len: %i data: ", now, p->len, p->tot_len); char * pointer = p->payload; for(uint8_t i = 0; i < p->len; i++) { - xil_printf(" %c", pointer + i); + xil_printf(" %02x", *(pointer + i)); } xil_printf("\n"); }