找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1879|回復(fù): 5
收起左側(cè)

STM32單片機(jī)移植LWIP問題

[復(fù)制鏈接]
ID:378659 發(fā)表于 2023-7-30 14:37 | 顯示全部樓層 |閱讀模式
代碼功能是創(chuàng)建客戶端,靜態(tài)ip,在407跑通了,但是直接復(fù)制移植到429的板子就運(yùn)行報(bào)錯(cuò),請(qǐng)問可能是啥原因,lwip初始化成功,tcp客戶端也初始化成功,之后就運(yùn)行調(diào)試串口打印出這個(gè)
Assertion "arp_table.q == NULL" failed at  line 369 in ..\LWIP\lwip-1.4.1\src\netif\etharp.c[ i]



那幾行代碼是
/* 1) empty entry available? */
  if (empty < ARP_TABLE_SIZE) {
    i = empty;
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %"U16_F"\n", (u16_t)i));
  } else {
    /* 2) found recyclable stable entry? */
    if (old_stable < ARP_TABLE_SIZE) {
      /* recycle oldest stable*/
      i = old_stable;
      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i));
      /* no queued packets should exist on stable entries */
      LWIP_ASSERT("arp_table[ i].q == NULL", arp_table[ i].q == NULL);                       //這里就是369行
    /* 3) found recyclable pending entry without queued packets? */
    }


回復(fù)

使用道具 舉報(bào)

ID:378659 發(fā)表于 2023-8-1 10:26 | 顯示全部樓層
liyonghua111 發(fā)表于 2023-7-31 12:52
這個(gè)錯(cuò)誤可能是由于lwIP庫(kù)中的一個(gè)斷言失敗導(dǎo)致的。斷言是在代碼中用來檢查某個(gè)條件是否為真的語句,如果條 ...

應(yīng)該沒有任何數(shù)據(jù)包在ARP表上,我試過把遠(yuǎn)端ip設(shè)置為0.0.0.0初始化就能過也不會(huì)有上述報(bào)錯(cuò)了,但是一旦ping一下本地ip就會(huì)有上述報(bào)錯(cuò),網(wǎng)絡(luò)配置一定沒問題,因?yàn)閘an8720初始化過了,tcp客戶端創(chuàng)建成功,唯一的差異是407和429的板子晶振速度不一樣,但是延時(shí)函數(shù)給lwip提供的1ms一定是對(duì)地,lwip社區(qū)好像百度查不到
回復(fù)

使用道具 舉報(bào)

ID:378659 發(fā)表于 2023-8-1 10:21 | 顯示全部樓層
zsyzdx 發(fā)表于 2023-7-31 09:21
有可能頻率不對(duì),建議看下是不是晶振的大小這些有區(qū)別!

不太可能是晶振問題吧,硬件環(huán)境都一樣
回復(fù)

使用道具 舉報(bào)

ID:190832 發(fā)表于 2023-7-31 15:14 | 顯示全部樓層
換FreeRTOS-TCPIP吧
回復(fù)

使用道具 舉報(bào)

ID:1087948 發(fā)表于 2023-7-31 12:52 | 顯示全部樓層
這個(gè)錯(cuò)誤可能是由于lwIP庫(kù)中的一個(gè)斷言失敗導(dǎo)致的。斷言是在代碼中用來檢查某個(gè)條件是否為真的語句,如果條件為假,則會(huì)觸發(fā)斷言失敗并報(bào)錯(cuò)。

在您的情況下,報(bào)錯(cuò)信息指出斷言失敗發(fā)生在etharp.c文件的369行,具體是在以下代碼段:

c
/* no queued packets should exist on stable entries */
LWIP_ASSERT("arp_table.q == NULL", arp_table.q == NULL);
根據(jù)代碼注釋可以看出,此處的斷言用于確保穩(wěn)定的ARP表項(xiàng)不應(yīng)該有排隊(duì)的數(shù)據(jù)包。如果斷言失敗,意味著ARP表項(xiàng)中存在排隊(duì)的數(shù)據(jù)包,這可能會(huì)導(dǎo)致后續(xù)的錯(cuò)誤。

要解決這個(gè)問題,您需要檢查和確認(rèn)以下幾點(diǎn):

確保在調(diào)用此斷言之前,沒有任何數(shù)據(jù)包被添加到了ARP表項(xiàng)中。
檢查您的代碼邏輯,確保在使用ARP表項(xiàng)之前,已經(jīng)正確初始化并設(shè)置了相關(guān)參數(shù)。
檢查您的網(wǎng)絡(luò)配置,確保網(wǎng)絡(luò)環(huán)境和硬件配置正確,并且與407和429板子之間的差異沒有導(dǎo)致問題。
如果問題仍然存在,建議您查閱lwIP庫(kù)的文檔或?qū)で髄wIP社區(qū)的支持,以獲取更詳細(xì)的幫助和指導(dǎo)。
回復(fù)

使用道具 舉報(bào)

ID:320306 發(fā)表于 2023-7-31 09:21 | 顯示全部樓層
有可能頻率不對(duì),建議看下是不是晶振的大小這些有區(qū)別!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表