ENET模塊調試筆記

硬件平臺: 公司智能單元電壓板編程

ARM: MK60FX512VMD12數組

PHY(以太網物理收發器): KSZ8041NLI函數

測試內容: 電壓板以太網模塊通訊測試

參考文獻:《ARM Cortex-M4自學筆記--基於Kinettis K60》ui

《TCP/IP詳解 卷1:協議》spa

主要調用的函數:.net

1. enet_init()函數;指針

2. enet_macSendData()函數;調試

具體的函數實現功能再也不贅述,詳情請查看《ARM Cortex-M4自學筆記--基於Kinettis K60》 P328。內存

實現功能:

經過定時器定時發送數據,實現終端利用MAC層與計算機進行數據通訊

/*********************************************************************************************************************************************************************************************************************************/

調試過程當中遇到的問題記錄:

(1) 我是在新建的.c和.h文件編程函數來調用driver文件夾下的enet驅動程序,編譯過程當中,編譯器提示驅動程序enet.h中,uin8,uint32, uint16沒有定義,編譯一直沒經過,向大神請教,原來是默認的底層驅動函數頭文件裏沒有包含common.h,在開始的部位添加#include<common.h>,編譯終於順利經過。

(2) 編譯經過以後,運行又出了問題,經過串口查看程序一直在打印

default_isr&#160; VECTOR_093

default_isr&#160; VECTOR_094

&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 因爲之前在調試程序的過程當中遇到過相似的情況,當時打印的是 default_isr&#160; VECTOR_3 後來查明的緣由是硬件錯誤,因此此次首先考慮是否是哪個期存器配置有錯誤或者是數組太大越界,或者是K60內存不夠,內存不夠的情況以前沒遇到過,內心就想把這個因素放到最後考慮,而後就打斷點單步調試,發現是enet_init()函數中存在問題。又把數組都覈實了一遍,仍是沒定位到真正的錯誤點。谷歌裏也沒搜到VECTOR_093究竟是什麼錯誤,實在沒辦法只能硬着頭皮再找大神請教。

&#160;&#160;&#160;&#160;&#160;&#160;&#160; 我在編譯器裏搜索時,輸入的是default_isr&#160; VECTOR_093,結果硬是查不到註釋說明,明哥直接搜的是default_isr很快就在voctors.h搜到了註釋位置,一看原來是enet發送、接受以及錯誤中斷錯誤,在反過去查代碼發現,默認的底層驅動函數enet.c裏這些中斷功能都是打開的,可是在實際中我並無調用這些中斷函數。enet_setIsr(E_EnetIsr type, ENET_ISR_CALLBACK isr_func)回調函數指針沒有綁定。對此理解不是很深,專門作實驗來驗證一下。加上這個綁定以後,在調用中斷函數,則沒有報錯!

&#160;&#160;&#160;&#160;&#160; 還有一個就是wireshark的使用,

image

/*********************************************************************************************************************************************************************************************************************************/

後 記

   大神明哥就要離我這個嵌軟菜鳥而去,師傅領進門,修行在我的。在這裏衷心祝福明哥前程似錦,永遠大牛!&#160; 謝謝在我職場的剛開始階段就能碰見這麼好的大牛,謝謝大牛每一次不厭其煩的指導,謝謝大牛對咱們的諄諄教誨!真的捨不得明哥。但路終究是要本身走的,沒有了明哥在前面爲咱們遮風擋雨,我只能憤然而前行,以期有朝一日可以對的起師傅。

相關文章
相關標籤/搜索