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