資料介紹
現(xiàn)象
51交換機(jī)中移入ERPS功能后,通過ping設(shè)備抓包發(fā)現(xiàn)設(shè)備的mac地址的后兩位并不是設(shè)備的原先的地址,原先的mac地址為 fc:19:d0:01:02:03,但是設(shè)備arp應(yīng)答的地址卻是
fc:19:d0:01:05:07,設(shè)備arp應(yīng)答的地址時(shí)通過uip_ethaddr該全局變量獲取的。故pc發(fā)送icmp的目的mac地址
fc:19:d0:01:05:07,不為設(shè)備的mac地址,設(shè)備無法命中對應(yīng)的ACL規(guī)則,導(dǎo)致ping設(shè)備不通.
初步懷疑是新增ERPS代碼導(dǎo)致
故通過添加調(diào)試打印的方式進(jìn)行跟蹤查看該全局變量uip_ethaddr的mac地址是何時(shí)被修改的,從設(shè)備初始化開始加,最后發(fā)現(xiàn)在main函數(shù)中的while循環(huán)中,當(dāng)?shù)谝粋€(gè)10ms定時(shí)器出發(fā)后,進(jìn)入Drv_Port_IsolateApply()該函數(shù)的調(diào)用后uip_ethaddr該內(nèi)容的后面兩個(gè)字節(jié)就被修改了。當(dāng)時(shí)感覺很不可思議,怎么無緣無故就發(fā)生變化了呢。
則通過注釋ERPS的新增代碼發(fā)現(xiàn),當(dāng)注釋到uip_ERPS_PduHandle函數(shù)時(shí)發(fā)現(xiàn)能夠正常ping通設(shè)備。并且經(jīng)過測試發(fā)現(xiàn)當(dāng)將某個(gè)全局變量改大或者改小的話,問題也不會出。這就更加感覺離譜了,然后就懷疑是存儲變量的xdata區(qū)域是否有界限限定,但是咨詢后發(fā)現(xiàn)xdata區(qū)域大小是48K,所以并沒有超出范圍。
借助MAP文件分析
通過咨詢得到可以通過Keil編譯生成的MAP文件進(jìn)行查看uip_ethaddr該變量前后是否出現(xiàn)相關(guān)其他變量,是否出現(xiàn)內(nèi)存越界問題。借助MAP文件,經(jīng)過測試發(fā)現(xiàn)當(dāng)問題出現(xiàn)時(shí)總是發(fā)生在指針地址為02007FF6H地方,并且是從02007FFAH的位置開始踩內(nèi)存,踩內(nèi)存的大小為6個(gè)字節(jié)。
根據(jù)這一現(xiàn)象,則懷疑是否我們原先代碼就是存在這樣的問題的,然后從庫上下載代碼,并且通過調(diào)整幾個(gè)變量的大小,使得 uip_ethaddr的位置剛好落在02007FF6H處。最后驗(yàn)證發(fā)現(xiàn)確實(shí)是同樣存在問題的,uip_ethaddr的內(nèi)存的最后兩個(gè)字節(jié)被修改為05,07。然后再次調(diào)整,將某個(gè)全局變量落在該指針處,通過將該指針的內(nèi)容打印方式進(jìn)行確認(rèn)是否是在該問題02007FFAH的往后6個(gè)字節(jié)被踩掉了。結(jié)果驗(yàn)證確實(shí)如此,該全局?jǐn)?shù)組的數(shù)據(jù)從指針地址02007FFAH開始的往后6個(gè)字節(jié)被修改了。
故猜想是否只要有內(nèi)存落在該地址區(qū)間,這片內(nèi)存就會被改變,根據(jù)該猜想進(jìn)行驗(yàn)證,通過查找文檔發(fā)現(xiàn),可以直接指定某個(gè)變量在某個(gè)地址區(qū)間,Keil C可以讓你指定變量的存儲地址例如 你想定義一個(gè)整型變量 并把它初始化為0x4050 用C是不能夠把變量指定在某個(gè)地址的 另外你也不能指定位變量的地址 但是 對于不需要初始化的變量 你可以使用關(guān)鍵字_at_來指定地址,故根據(jù)文檔設(shè)置全局變量如下: uint8 xdata ucString2[64] _at_ 0x7FF6; 并且通過調(diào)試手段將該內(nèi)存的內(nèi)容給打印出來。經(jīng)過測試發(fā)現(xiàn),正如我們猜想的,還是在同一個(gè)位置地址02007FFAH處被踩了6 個(gè)字節(jié)。根據(jù)上述現(xiàn)象,我們就想采取使用占用地址的方式來規(guī)避該問題。
- 嵌入式 Linux 中的內(nèi)存管理
- arm嵌入式系統(tǒng)基礎(chǔ)總結(jié)教程
- ARM嵌入式系統(tǒng)BSP的程序設(shè)計(jì)總結(jié)
- Python在嵌入式項(xiàng)目中的輔助開發(fā)總結(jié)
- 嵌入式知識點(diǎn)總結(jié)
- 基于Python的實(shí)時(shí)嵌入式軟件測試腳本總結(jié)
- 嵌入式系統(tǒng)與嵌入式PLC
- 嵌入式系統(tǒng)論文總結(jié)
- 嵌入式設(shè)備固件的安全分析和測評技術(shù) 8次下載
- 單片機(jī)與嵌入式的詳細(xì)資料總結(jié)免費(fèi)下載 32次下載
- 嵌入式Linux設(shè)備驅(qū)動(dòng)程序開發(fā)基礎(chǔ)知識總結(jié)免費(fèi)下載 13次下載
- 嵌入式裝置內(nèi)存泄漏檢測系統(tǒng)設(shè)計(jì) 3次下載
- TI的嵌入式分析技術(shù)使設(shè)備更加智能 13次下載
- 基于嵌入式Linux LCD設(shè)備驅(qū)動(dòng)分析 14次下載
- 嵌入式設(shè)備故障檢測和診斷系統(tǒng)設(shè)計(jì)
- 嵌入式fpga是什么意思 1310次閱讀
- 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應(yīng)用 2563次閱讀
- 嵌入式設(shè)備系統(tǒng)日志記錄方法 5656次閱讀
- 嵌入式開發(fā)是否應(yīng)該使用動(dòng)態(tài)內(nèi)存分配 1691次閱讀
- 嵌入式C語言知識點(diǎn)總結(jié) 2733次閱讀
- 嵌入式系統(tǒng)節(jié)省內(nèi)存的解決方法 3268次閱讀
- 嵌入式系統(tǒng)內(nèi)存管理機(jī)制詳解 4552次閱讀
- 嵌入式系統(tǒng)開發(fā)學(xué)習(xí)心得體會_經(jīng)驗(yàn)總結(jié) 3w次閱讀
- 嵌入式行業(yè)發(fā)展?fàn)顩r_嵌入式行業(yè)人才需求_嵌入式系統(tǒng)就業(yè)前景分析 2.4w次閱讀
- 全面的嵌入式基礎(chǔ)知識總結(jié) 8721次閱讀
- 嵌入式開發(fā)就業(yè)前景分析_嵌入式領(lǐng)域的職業(yè)發(fā)展方向 1.8w次閱讀
- 嵌入式輸入設(shè)備設(shè)計(jì) 1275次閱讀
- 嵌入式輸入設(shè)備設(shè)計(jì)應(yīng)用 499次閱讀
- 必讀:嵌入式系統(tǒng)基礎(chǔ)及知識及接口技術(shù)總結(jié) 2238次閱讀
- 一種嵌入式系統(tǒng)的內(nèi)存分配方案 2382次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論