日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 文章介紹了嵌入式系統(tǒng)開發(fā)過程實(shí)際上就是一個(gè)調(diào)試診斷的過程,而且調(diào)試診斷將一直伴隨著一個(gè)產(chǎn)品的終身,即使是最成熟的產(chǎn)品也偶爾會出現(xiàn)這樣或那樣的問題,這都需要開發(fā)人員去診斷、排查。 嵌入式系

文章介紹了嵌入式系統(tǒng)開發(fā)過程實(shí)際上就是一個(gè)調(diào)試診斷的過程,而且調(diào)試診斷將一直伴隨著一個(gè)產(chǎn)品的終身,即使是最成熟的產(chǎn)品也偶爾會出現(xiàn)這樣或那樣的問題,這都需要開發(fā)人員去診斷、排查。

嵌入式系統(tǒng)的調(diào)試包括硬件調(diào)試、軟件調(diào)試以及綜合調(diào)試。硬件調(diào)試一般是指系統(tǒng)剛開發(fā)出來時(shí)上電前后的檢查,包括:

1)上電前檢查電源和地是否短路,目視檢查是否有虛焊、漏焊;

2)上電后檢查時(shí)鐘線上的頻率和波形、幅度是否正常,各電源電壓是否穩(wěn)定正常,各芯片溫度是否正常,各指示燈是否正常。

軟件調(diào)試一般是指保證硬件一切正常的情況下驗(yàn)證程序執(zhí)行的時(shí)序是否正確,邏輯和結(jié)果是否與設(shè)計(jì)要求相符,能否滿足功能和性能要求等。軟件調(diào)試的方法有很多,包括:

1)用指示燈跟蹤調(diào)試;

2)用串口打印調(diào)試;

3)用簡單的調(diào)試器進(jìn)行匯編代碼級調(diào)試;

4)用比較高端的調(diào)試器進(jìn)行源代碼級調(diào)試;

5)用仿真器進(jìn)行硬件仿真。

上述單純的硬件調(diào)試或軟件調(diào)試都是相對比較簡單的,困難的是綜合調(diào)試。下面我先舉一些自己在工作中曾經(jīng)碰到的疑難問題,然后再從中歸納出一些一般的調(diào)試方法和注意事項(xiàng)。

例 1:我們自主設(shè)計(jì)制作的PPC860(Motorola)網(wǎng)絡(luò)引擎平臺的調(diào)試已接近尾聲,同一批生產(chǎn)的4塊板子都通過了全部軟件測試,于是又去焊了第二批,可是在第二批板子中有1塊板子的FEC不能正常工作,我們幾個(gè)軟件和硬件工程師使用了各種手段,重新看了多遍芯片手冊,還是沒找出原因,于是把板子發(fā)回工廠重新焊接BGA,可是回來問題還是照樣存在,沒辦法最后打算將這塊板子當(dāng)作個(gè)樣處理,把板子上的芯片都焊下來。按常理來說這種做法很符合邏輯,因?yàn)樵骷际且粯拥模遄右彩且慌?,那就可能是這塊板子的某個(gè)地方焊接不好,但又不好查,反復(fù)重新焊接可能會把主板焊壞。后來有人從PPC860芯片上用放大鏡都要睜大眼睛才能看清的字符上(據(jù)說我國第一代國產(chǎn)高端處理器芯片“寒心”就是某“科學(xué)家”將“摩托”同一類型芯片上的這些字母磨掉后刻上“寒心一號”搖身一變造出來的!!!)發(fā)現(xiàn)這塊板子的CPU版本號是“D4”,而其他板子的CPU版本號是“D3”,可芯片手冊上并沒有這兩個(gè)版本之間的比較說明,從網(wǎng)上找到PPC860的勘誤手冊,發(fā)現(xiàn)在PPC860TZP50D4版本中,ECNTRL寄存器增加了一個(gè)叫FEC_PIN_MUX的位(bit2)來控制FEC各管腳的復(fù)用功能,如果要使用FEC就必須將該位設(shè)置為1,所以要在FEC的相關(guān)程序中加上ECNTRL |= 0x00000004語句行。

例2:當(dāng)我調(diào)試業(yè)余自制的MC68VZ328板子時(shí),電路板硬件檢查沒有問題,用Code warrior通過串口往flash中燒制編譯好的uClinux程序也一切正常,但是重新上電,發(fā)現(xiàn)串口沒有任何數(shù)據(jù),用萬用表檢查(當(dāng)時(shí)自己沒有示波器等“先進(jìn)設(shè)備”)也沒查出結(jié)果,然后每天上下班把這塊板子放在包里,沒事就拿出來瞪大眼睛看看,看著也不免窩火,但有一天卻發(fā)現(xiàn)一個(gè)標(biāo)著電阻符號的地方卻焊上了電容,回到家把電阻換上去再上電,串口一下就打印出uClinux的啟動(dòng)信息,呵,那滋味,比喝了蜂蜜都甜,當(dāng)然當(dāng)時(shí)也是因?yàn)闆]有太多經(jīng)驗(yàn),如果這問題放現(xiàn)在,估計(jì)一天內(nèi)肯定解決掉。另外在初次調(diào)試自制的S3C4510開發(fā)板時(shí),就是不能從串口輸出字符,費(fèi)了半天時(shí)間才發(fā)現(xiàn)把串口電平轉(zhuǎn)換芯片 max3232cse的第6腳上的旦電容極性焊反了。

例3:在調(diào)試SB1250嵌入式服務(wù)器主板時(shí),由于使用的是DDR1代內(nèi)存條,數(shù)據(jù)線和時(shí)鐘線上串并聯(lián)的去耦電容電阻相當(dāng)多,第一批焊回來的板子幾乎沒有一塊能夠順利進(jìn)入CFE(BIOS)菜單界面的,檢查時(shí)鐘波形和電源與借用的 DEMO板相比都很好,我把主板上DDR DIM槽周圍的那些去耦電阻電容都全部用烙鐵重新過一遍錫,嘿嘿,還真管用,這種方法屢試不爽,而且在后面調(diào)試PCI和HT總線時(shí)使用這招也很有用,可能是因?yàn)镾B1250系統(tǒng)是高頻電路,對焊接要求比較高,稍微有一點(diǎn)漏焊或者虛焊都不行,我是這樣認(rèn)為的。

從上述幾個(gè)例子中我們可以總結(jié)歸納以下幾點(diǎn)調(diào)試方法和注意事項(xiàng):

1)加深理解法:加深理解包括加深對硬件和軟件的理解,加深對硬件的理解主要是詳細(xì)閱讀相關(guān)的芯片數(shù)據(jù)手冊,而加深對軟件的理解是因?yàn)楝F(xiàn)在開發(fā)嵌入式系統(tǒng)并不是所有程序都需要自己編寫,很多都是已經(jīng)做好的,直接從網(wǎng)上獲取或者采購獲得,但這些軟件不一定是完全針對我們自己的目標(biāo)板的,所以在使用過程中經(jīng)常會發(fā)現(xiàn)一些問題,特別是底層軟件,而一旦出現(xiàn)問題,開發(fā)人員首先必須了解出現(xiàn)問題的代碼。只有建立在對相關(guān)硬件和軟件深入理解的基礎(chǔ)上才可能做出更符合實(shí)際的判斷,才可能更好地解決問題。

2)比較法:比較的方法有很多,比如將同樣的軟件放在兩個(gè)類似但不相同的硬件平臺上運(yùn)行比較現(xiàn)象;將兩個(gè)不同版本的軟件放在同一個(gè)硬件平臺上運(yùn)行比較現(xiàn)象;將相同的軟件放到相同批次但不同的兩個(gè)硬件平臺上運(yùn)行比較現(xiàn)象。對于一些不是很隱蔽的問題通過比較法通常能得到不錯(cuò)的效果。

3)分解法:當(dāng)碰到分析起來比較復(fù)雜、可能有很多因素的問題時(shí),可以把問題分成解幾個(gè)小問題來測試診斷,比如編寫幾個(gè)單獨(dú)的小測試程序?qū)Ω鞣N可能因素進(jìn)行排查測試,根據(jù)這些測試結(jié)果再進(jìn)行科學(xué)判斷。

4)軟硬件結(jié)合法:這種方法是需要一定靈感和悟性的。比如上面的例5,在測試過程中,可以在不破壞硬件的前提下臨時(shí)改變一下硬件的狀態(tài)(比如該例中將數(shù)據(jù)線和時(shí)鐘線短路),看問題現(xiàn)象會不會有所變化,如果有,那么多做類似試驗(yàn)找出變化規(guī)律和關(guān)鍵因素,然后再進(jìn)行分析解決。在底層軟件開發(fā)中,對于時(shí)序要求嚴(yán)格的硬件模塊的軟件編程要特別注意,一旦程序的時(shí)序出了問題,而這部分軟件已經(jīng)與其他系統(tǒng)軟件融合到一起,那么這種軟件讓別人去檢查是很難查出問題的。

5)診斷、排故要建立在大量實(shí)驗(yàn)的基礎(chǔ)之上,要多動(dòng)手,不能光知道臆想,不愿實(shí)際操作,還美其名曰“善于思考和分析”。嵌入式系統(tǒng)開發(fā)是一門實(shí)踐性很強(qiáng)的科學(xué),需要在實(shí)踐中總結(jié)出事物客觀規(guī)律,從而更好地認(rèn)識和利用它們,讓它們更好地按我們的意圖工作。

6)嵌入式系統(tǒng)開發(fā)調(diào)試要求開發(fā)人員有嚴(yán)謹(jǐn)細(xì)致的工作態(tài)度,決不放過調(diào)試過程中發(fā)現(xiàn)的任何一點(diǎn)蛛絲馬跡,因?yàn)樗芸赡芫褪谴蜷_潘多拉寶盒的鑰匙。

7)要有實(shí)事求是的工作作風(fēng),要有敢于懷疑一切的精神和勇氣,我們理當(dāng)尊重權(quán)威和前人的科技成果,但當(dāng)出現(xiàn)矛盾時(shí)我們更應(yīng)該相信實(shí)驗(yàn)結(jié)果,這樣科學(xué)才會進(jìn)步。

8)要勇于挑戰(zhàn)自我,拋開習(xí)慣性思維和成見,拓寬思路,多角度分析問題。

9)嵌入式系統(tǒng)開發(fā)特別是底層軟件和操作系統(tǒng)內(nèi)核開發(fā)因?yàn)樾枰瑫r(shí)跟軟件和硬件打交道,所以是一件比較艱苦的工作,很有挑戰(zhàn)性。即使我們各方面都做得非常好,考慮得非常細(xì)致周全,目標(biāo)系統(tǒng)仍然可能跟我們開一些小小的玩笑,我們經(jīng)常會碰到一個(gè)非常小的問題困擾我們幾天甚至幾周的時(shí)間,這期間我們可能茶飯不思、夜不能寐,因此嵌入式系統(tǒng)底層軟件開發(fā)人員不但要有平和的心態(tài),且具備一定的耐心和毅力,還要有勇于克服一切困難的勇氣和信心!只要我們做得足夠好,那么可能解決一個(gè)具體疑難的過程帶有一定偶然性,但我們終將排除所有阻礙!

所以說,嵌入式系統(tǒng)調(diào)試過程就是一個(gè)更加深入了解我們的目標(biāo)系統(tǒng)以及系統(tǒng)中的每個(gè)單元模塊特性的過程,就是一個(gè)鍛煉我們的邏輯思維和分析推理能力的過程,就是一個(gè)開拓思路、向習(xí)慣思維和權(quán)威挑戰(zhàn)的過程,就是一個(gè)培養(yǎng)嚴(yán)謹(jǐn)細(xì)致的工作態(tài)度和實(shí)事求是工作作風(fēng)的過程,就是一個(gè)鍛煉我們耐力和毅力的過程,最終是一個(gè)學(xué)習(xí)進(jìn)步的過程!

嵌入式系統(tǒng)調(diào)試診斷能力的提升是一個(gè)長期實(shí)踐、積累、提高的過程!


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在工業(yè)物聯(lián)網(wǎng)設(shè)備部署中,Modbus通信故障是導(dǎo)致系統(tǒng)停機(jī)的首要原因之一。據(jù)統(tǒng)計(jì),超過60%的現(xiàn)場問題源于通信配置錯(cuò)誤或數(shù)據(jù)解析異常。本文從嵌入式系統(tǒng)開發(fā)視角,系統(tǒng)闡述Modbus通信調(diào)試的方法論,結(jié)合實(shí)際案例解析如何高...

關(guān)鍵字: 嵌入式系統(tǒng) Modbus通信

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門狗 嵌入式系統(tǒng)

人工智能(AI)和機(jī)器學(xué)習(xí)(ML)是使系統(tǒng)能夠從數(shù)據(jù)中學(xué)習(xí)、進(jìn)行推理并隨著時(shí)間的推移提高性能的關(guān)鍵技術(shù)。這些技術(shù)通常用于大型數(shù)據(jù)中心和功能強(qiáng)大的GPU,但在微控制器(MCU)等資源受限的器件上部署這些技術(shù)的需求也在不斷增...

關(guān)鍵字: 嵌入式系統(tǒng) 人工智能 機(jī)器學(xué)習(xí)

Zephyr開源項(xiàng)目由Linux基金會維護(hù),是一個(gè)針對資源受限的嵌入式設(shè)備優(yōu)化的小型、可縮放、多體系結(jié)構(gòu)實(shí)時(shí)操作系統(tǒng)(RTOS)。近年來,Zephyr RTOS在嵌入式開發(fā)中的采用度逐步增加,支持的開發(fā)板和傳感器不斷增加...

關(guān)鍵字: 嵌入式系統(tǒng) 軟件開發(fā) 實(shí)時(shí)操作系統(tǒng) Zephyr項(xiàng)目

在資源受限的嵌入式系統(tǒng)中,代碼執(zhí)行效率和內(nèi)存占用始終是開發(fā)者需要權(quán)衡的核心問題。內(nèi)聯(lián)函數(shù)(inline functions)和宏(macros)作為兩種常見的代碼展開技術(shù),在性能、可維護(hù)性和安全性方面表現(xiàn)出顯著差異。本文...

關(guān)鍵字: 內(nèi)聯(lián)函數(shù) 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和服務(wù)器開發(fā)中,日志系統(tǒng)是故障排查和運(yùn)行監(jiān)控的核心組件。本文基于Linux環(huán)境實(shí)現(xiàn)一個(gè)輕量級C語言日志庫,支持DEBUG/INFO/WARN/ERROR四級日志分級,并實(shí)現(xiàn)按大小滾動(dòng)的文件輪轉(zhuǎn)機(jī)制。該設(shè)計(jì)在某...

關(guān)鍵字: C語言 嵌入式系統(tǒng)

在嵌入式系統(tǒng)和底層驅(qū)動(dòng)開發(fā)中,C語言因其高效性和可控性成為主流選擇,但缺乏原生單元測試支持成為開發(fā)痛點(diǎn)。本文提出一種基于宏定義和測試用例管理的輕量級單元測試框架方案,通過自定義斷言宏和測試注冊機(jī)制,實(shí)現(xiàn)無需外部依賴的嵌入...

關(guān)鍵字: C語言 嵌入式系統(tǒng) 驅(qū)動(dòng)開發(fā)

在嵌入式系統(tǒng)與驅(qū)動(dòng)開發(fā)中,內(nèi)存映射I/O(Memory-Mapped I/O, MMIO)是一種將硬件寄存器映射到處理器地址空間的技術(shù),允許開發(fā)者通過指針直接讀寫寄存器,實(shí)現(xiàn)高效、低延遲的硬件控制。本文通過C語言實(shí)戰(zhàn)案例...

關(guān)鍵字: 內(nèi)存映射 I/O操作 嵌入式系統(tǒng)

在嵌入式系統(tǒng)開發(fā)和多線程編程中,程序崩潰、內(nèi)存越界等復(fù)雜問題常令開發(fā)者困擾。GDB作為強(qiáng)大的調(diào)試工具,其條件斷點(diǎn)和內(nèi)存查看功能可精準(zhǔn)定位隱蔽缺陷。本文通過實(shí)際案例演示這些高級功能的應(yīng)用,幫助開發(fā)者提升調(diào)試效率。

關(guān)鍵字: GDB 嵌入式系統(tǒng)
關(guān)閉