一些嵌入式調(diào)試的工作經(jīng)驗
關(guān)于嵌入式調(diào)試的一些經(jīng)驗 :
(1)熟悉芯片:接觸的嵌入式硬件平臺有兩個,一個dsp2812,一個是arm7架構(gòu)的2292,這種嵌入式芯片datasheet都是鳥語寫的,要看能把人累死。我是把那些文檔當(dāng)工具書來查了。開始根本不看datsheet,把它給的例程跑通!要是想做開發(fā)板熟悉芯片幾個功能就好,一個是電源管理,一個是時鐘管理,內(nèi)存管理,還有是中斷管理。先跑最小系統(tǒng),然后拓展功能。
(2)開發(fā) 如果有了一塊開發(fā)板,就要對其進(jìn)行開發(fā)了。開發(fā)時要調(diào)研,在這上吃了大虧, 原因是調(diào)研不夠祥盡。lwip協(xié)議站移植,主處理芯片為arm2292,網(wǎng)卡芯片為8019as,著重調(diào)研以下幾項: 1為何要用這個協(xié)議棧,好處哪些,壞處哪些(因此選用了lwip而不是uip)。2在我們的平臺上是否有搭建的可行性(決定了裸跑協(xié)議站而沒有上mcos操作系統(tǒng)),3現(xiàn)行主流協(xié)議棧移植代碼(可參照進(jìn)行開發(fā),要查到和自己開發(fā)最相近的文檔哈),相關(guān)資料的查找(主要是8019芯片資料,這款芯的datasheet相當(dāng)垃圾,介紹的一點(diǎn)不全,當(dāng)時沒有想到對這款芯片家族資料進(jìn)行查找,其實結(jié)構(gòu)功能都一樣,害得耽誤功夫),咨詢外協(xié)團(tuán)隊的查找(arm2292是周立功代理的芯片,他們有強(qiáng)大的技術(shù)支持,老衲五木寫過移植的教程留下了qq,老古論壇為8019as的專業(yè)論壇,有幸得到了聯(lián)系方式)。
在下面 讀硬件原理圖,弄清原理,是個苦功夫,對于單片機(jī)不用了解很多,知道和應(yīng)用相關(guān)模塊就ok。
再下面是對開發(fā)軟件平臺的了解,每種開發(fā)平臺都有自己的特點(diǎn),對他們的操作試著了解。
讀取寄存器,寫幾行代碼,不斷讀取每個要用的寄存器,看下能否成功!
再往下就是加程序調(diào)試了,兩種方法,一是自己寫,按照datasheet的說明文檔,另一種是借它山之石。調(diào)試是和datasheet跟進(jìn)的,是個經(jīng)驗過程,總結(jié)以下技巧:
(1)程序單步跟蹤,看變量
(2)程序模塊化,一個模塊一個模塊封掉排查
(3)弄清數(shù)據(jù)流圖,數(shù)據(jù)流動的每個過程都了解清楚,主要了解單片機(jī)的架構(gòu)功能,比如雙口ram的優(yōu)點(diǎn),設(shè)計的思想,isa總線結(jié)構(gòu)設(shè)計的思想,數(shù)據(jù)怎樣從起使端流到目的端等等!
(4)在程序中加標(biāo)簽變量,有時每個函數(shù)都加個,看看在哪個函數(shù)中出錯
(5)接口程序的排查,每個功能模塊的出錯率不大,可能出錯的是接口程序
遇到難題就百度下,有的問題很多人都會
遇到,還有不斷的給技術(shù)支持打電話都是免費(fèi)的,外協(xié)團(tuán)隊很重要啊,完后表示感謝下呀!這個項目給我最大啟示是看成熟的技術(shù)是怎么做的。懷疑硬件問題那就拿成熟的評估板跑好了。從硬件,驅(qū)動,到軟件一點(diǎn)點(diǎn)排查!嵌入式是個好東西,真想有時間從板子到驅(qū)動,再到上層應(yīng)用一點(diǎn)點(diǎn)跟下來,嵌入式移植最關(guān)鍵的是數(shù)據(jù)結(jié)構(gòu),內(nèi)存管理,與接口的函數(shù),做完移植就又換毫不相干的任務(wù)了,無奈無奈。待續(xù)。
評論