SLIP 経由で uip デバイスに ping を実行すると、uart に次のようなパケットが表示されます。
uip_buf[0] 0x45
uip_buf[1] 0x0
uip_buf[2] 0x0
uip_buf[3] 0x3c
uip_buf[4] 0x1
uip_buf[5] 0x20
uip_buf[6] 0x0
uip_buf[7] 0x0
uip_buf[8] 0x80
uip_buf[9] 1
uip_buf[10] 0xb5
uip_buf[11] 0x51
uip_buf[12] 0xc0
uip_buf[13] 0xa8
uip_buf[14] 0x1
uip_buf[15] 0x1
uip_buf[16] 0xc0
uip_buf[17] 0xa8
コードから、このイーサネット ヘッダーは、dest addr、src addr、および type で構成されると想定されます。ただし、パケットを処理するには、タイプを 0x0008 にする必要がありますが、明らかに 0xa8c0 (uip_buf [13:12] または uip_buf [17:16]) です。したがって、比較は常に失敗します。
if(BUF->type == HTONS(UIP_ETHTYPE_IP)) // 0xa8c0 != 0x0008
比較を行う行は、イーサネットの実装からのものです... SLIP 経由で送信される場合、タイプ フィールドが異なる可能性はありますか?