簡單描述一下問題,就是使用lwip的udp傳輸協議通過電腦PC給stm32設備進行升級,以便后期維護。
可是我發現升級過程中,是存在兩個狀態的就是應用狀態和bootloader狀態,當應用程序時上位機發來升級的命令,stm32會自己重啟,重啟過程中進入bootloader,判斷EEPROM的標志位是否確認升級,然后對flash進行解鎖,等待網口發來大數據,接著往flash里寫便可以了。
遇到的問題是,在應用機上可以PING通,然后發來升級命令后,我也確認了stm32的確重啟,也進入了bootloader,實際上里邊有一個while死循環,但是這個時候發現ping不同了,我對網絡并不是十分了解,那個腦袋大,不斷檢查代碼,就是發現不了問題,但現象很奇怪,約有2-3分鐘后,又能ping通了,然后繼續下載成功了,可是這肯定哪有問題。
 
后來請大拿查看一二后,他查看了一下兩個狀態的mac,因為我告訴他ip額網管都是一樣的,當然他首先使用arp -d 清除路由表命令發現馬上ping通,然后才查看的兩個狀態的mac才發現竟然不一樣,終于知道原因了。
于是,返回代碼在兩個程序中找到mac地址的設置,lwip的mac設置在ethernet.c里邊,修改一致后問題解決。
說明一下本文出自:http://www.xiaovdiy.cn/?post=186 |