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