嵌入式开发调试学习与思考
生活随笔
收集整理的這篇文章主要介紹了
嵌入式开发调试学习与思考
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
截至今天,自己負(fù)責(zé)的一個(gè)項(xiàng)目算是告一段落,前前后后5個(gè)多月時(shí)間。
該項(xiàng)目是對(duì)公司設(shè)計(jì)的基于powerpc的處理器進(jìn)行FPGA仿真階段的軟件驗(yàn)證,以及bootloader和kernel移植,以便芯片進(jìn)行投產(chǎn),主要完成的工作如下:
(1)調(diào)試環(huán)境的搭建
(2)處理器核功能驗(yàn)證,如異常 cache TLB等
(3)bootloader以及kernel中處理器基本外設(shè)驅(qū)動(dòng)調(diào)試,如USB SPI I2C MAC SDIO UART等,kernel最小系統(tǒng)啟動(dòng)進(jìn)控制臺(tái)。
由于該項(xiàng)目處于預(yù)研階段,并且FPGA仿真板數(shù)量不多,所以公司投入人力不大,只安排讓我來做這個(gè)項(xiàng)目。
對(duì)我來說,莫大榮幸有機(jī)會(huì)來獨(dú)立完成這樣一項(xiàng)軟硬件綜合調(diào)試(各種硬件問題搞得我都快要奔潰了)
由于FPGA板很久不用了不穩(wěn)定,加之各種硬件問題。折騰5個(gè)月的時(shí)間總算是將FPGA階段工作完成。
但是在最后階段USB調(diào)試通過,整個(gè)系統(tǒng)調(diào)試完成時(shí),心里卻有一種悵然若失的感覺,畢業(yè)工作之后一直縈繞我腦中的一個(gè)問題:
嵌入式開發(fā)調(diào)試,最后我到底學(xué)到了什么?
工作至今三年有余,翻看自己的csdn博客發(fā)現(xiàn),剛工作時(shí)寫博客總結(jié),總是會(huì)關(guān)注一些具體代碼細(xì)節(jié),如C語言的變參宏定義 某個(gè)具體驅(qū)動(dòng)的實(shí)現(xiàn)等。
工作2年后,更多的總結(jié)是一些有意思的代碼框架,以及自己對(duì)問題的見解,如kernel的時(shí)鐘機(jī)制,系統(tǒng)調(diào)用等。
這是一種進(jìn)步。
但是今天我卻感覺,對(duì)于嵌入式開發(fā)調(diào)試,學(xué)到的最重要的東西并不是上述這些知識(shí),而是積累下來的思路和經(jīng)驗(yàn)。
記憶力是有限的,我之前有過這樣的疑惑:
做過一些項(xiàng)目,對(duì)于處理器及各種外設(shè)都接觸調(diào)試過,但是再次調(diào)試還是需要對(duì)其datasheet,涉及的specification,以及軟件代碼進(jìn)行復(fù)習(xí)。
做過項(xiàng)目的一些調(diào)試,寫博客總結(jié)相關(guān)知識(shí),但是一個(gè)月后,再看博客,跟看別人寫的一樣,頂多混過臉熟。
但是我卻發(fā)現(xiàn),雖然這樣,但是我再次調(diào)試,卻比第一次接觸時(shí)要從容很多。
但是我知道遇到問題,首先去排查哪個(gè)過程出錯(cuò),枚舉?class driver? 硬件是否正常,示波器測(cè)phy給出的clock是否正確,phy的狀態(tài)引腳是否正常。
實(shí)在不行,USB協(xié)議分析儀唄,抓下USB包,一個(gè)包一個(gè)包排查。
調(diào)試mac,TCp/IP協(xié)議我也只是臉熟,mac的datasheet我也得在熟悉下。
但是遇到問題,我知道首先確定phy自動(dòng)協(xié)商完成了沒,再將mac以及dma寄存器全部打印出來對(duì)比,將dma descriptor queue打印出來,根據(jù)狀態(tài)描述符來查,懷疑硬件問題,可以采用mac以及phy的loopback模式來進(jìn)行排除。總能將問題定位出來。
調(diào)試spi i2c uart,協(xié)議需要熟悉下。
但是遇到問題,spi 3根線,i2c 2根線,uart 4根線(調(diào)試串口,非全功能串口),示波器直接抓信號(hào),對(duì)著協(xié)議和數(shù)據(jù)手冊(cè)查,一定能找出問題。
這些是在調(diào)試過程中積累下來的思路和經(jīng)驗(yàn),當(dāng)然,工作3年初學(xué)者跟大牛的經(jīng)驗(yàn)相比,還是有很長的路,需要努力學(xué)習(xí)。
但是卻說明了,工作中學(xué)習(xí)知識(shí)之外,更多的是對(duì)解決問題思路和經(jīng)驗(yàn)的積累。
所以以后就不要糾結(jié)于知識(shí)的遺忘,而應(yīng)該注重解決問題思路的培養(yǎng)和經(jīng)驗(yàn)的積累。
kerneler,不僅是為表明自己是內(nèi)核系統(tǒng)開發(fā)者,更多的是希望自己成為一個(gè)追求事物本質(zhì)的人!
該項(xiàng)目是對(duì)公司設(shè)計(jì)的基于powerpc的處理器進(jìn)行FPGA仿真階段的軟件驗(yàn)證,以及bootloader和kernel移植,以便芯片進(jìn)行投產(chǎn),主要完成的工作如下:
(1)調(diào)試環(huán)境的搭建
(2)處理器核功能驗(yàn)證,如異常 cache TLB等
(3)bootloader以及kernel中處理器基本外設(shè)驅(qū)動(dòng)調(diào)試,如USB SPI I2C MAC SDIO UART等,kernel最小系統(tǒng)啟動(dòng)進(jìn)控制臺(tái)。
由于該項(xiàng)目處于預(yù)研階段,并且FPGA仿真板數(shù)量不多,所以公司投入人力不大,只安排讓我來做這個(gè)項(xiàng)目。
對(duì)我來說,莫大榮幸有機(jī)會(huì)來獨(dú)立完成這樣一項(xiàng)軟硬件綜合調(diào)試(各種硬件問題搞得我都快要奔潰了)
由于FPGA板很久不用了不穩(wěn)定,加之各種硬件問題。折騰5個(gè)月的時(shí)間總算是將FPGA階段工作完成。
但是在最后階段USB調(diào)試通過,整個(gè)系統(tǒng)調(diào)試完成時(shí),心里卻有一種悵然若失的感覺,畢業(yè)工作之后一直縈繞我腦中的一個(gè)問題:
嵌入式開發(fā)調(diào)試,最后我到底學(xué)到了什么?
工作至今三年有余,翻看自己的csdn博客發(fā)現(xiàn),剛工作時(shí)寫博客總結(jié),總是會(huì)關(guān)注一些具體代碼細(xì)節(jié),如C語言的變參宏定義 某個(gè)具體驅(qū)動(dòng)的實(shí)現(xiàn)等。
工作2年后,更多的總結(jié)是一些有意思的代碼框架,以及自己對(duì)問題的見解,如kernel的時(shí)鐘機(jī)制,系統(tǒng)調(diào)用等。
這是一種進(jìn)步。
但是今天我卻感覺,對(duì)于嵌入式開發(fā)調(diào)試,學(xué)到的最重要的東西并不是上述這些知識(shí),而是積累下來的思路和經(jīng)驗(yàn)。
記憶力是有限的,我之前有過這樣的疑惑:
做過一些項(xiàng)目,對(duì)于處理器及各種外設(shè)都接觸調(diào)試過,但是再次調(diào)試還是需要對(duì)其datasheet,涉及的specification,以及軟件代碼進(jìn)行復(fù)習(xí)。
做過項(xiàng)目的一些調(diào)試,寫博客總結(jié)相關(guān)知識(shí),但是一個(gè)月后,再看博客,跟看別人寫的一樣,頂多混過臉熟。
但是我卻發(fā)現(xiàn),雖然這樣,但是我再次調(diào)試,卻比第一次接觸時(shí)要從容很多。
以最近兩星期進(jìn)行的一些外設(shè)模塊調(diào)試為例。
但是我知道遇到問題,首先去排查哪個(gè)過程出錯(cuò),枚舉?class driver? 硬件是否正常,示波器測(cè)phy給出的clock是否正確,phy的狀態(tài)引腳是否正常。
實(shí)在不行,USB協(xié)議分析儀唄,抓下USB包,一個(gè)包一個(gè)包排查。
調(diào)試mac,TCp/IP協(xié)議我也只是臉熟,mac的datasheet我也得在熟悉下。
但是遇到問題,我知道首先確定phy自動(dòng)協(xié)商完成了沒,再將mac以及dma寄存器全部打印出來對(duì)比,將dma descriptor queue打印出來,根據(jù)狀態(tài)描述符來查,懷疑硬件問題,可以采用mac以及phy的loopback模式來進(jìn)行排除。總能將問題定位出來。
調(diào)試spi i2c uart,協(xié)議需要熟悉下。
但是遇到問題,spi 3根線,i2c 2根線,uart 4根線(調(diào)試串口,非全功能串口),示波器直接抓信號(hào),對(duì)著協(xié)議和數(shù)據(jù)手冊(cè)查,一定能找出問題。
等等。。
各種奇奇怪怪的問題,總能找到解決方法。
現(xiàn)在遇到問題不會(huì)像剛工作時(shí)那樣手忙腳亂,因?yàn)槲蚁嘈?#xff0c;各種調(diào)試工具,示波器,萬用表,邏輯分析儀,協(xié)議分析儀,抓信號(hào),量電壓,軟硬件結(jié)合調(diào)試,總會(huì)找到問題所在!
這些是在調(diào)試過程中積累下來的思路和經(jīng)驗(yàn),當(dāng)然,工作3年初學(xué)者跟大牛的經(jīng)驗(yàn)相比,還是有很長的路,需要努力學(xué)習(xí)。
但是卻說明了,工作中學(xué)習(xí)知識(shí)之外,更多的是對(duì)解決問題思路和經(jīng)驗(yàn)的積累。
所以以后就不要糾結(jié)于知識(shí)的遺忘,而應(yīng)該注重解決問題思路的培養(yǎng)和經(jīng)驗(yàn)的積累。
kerneler,不僅是為表明自己是內(nèi)核系統(tǒng)開發(fā)者,更多的是希望自己成為一個(gè)追求事物本質(zhì)的人!
總結(jié)
以上是生活随笔為你收集整理的嵌入式开发调试学习与思考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 串口的流控制
- 下一篇: 我要做一个什么样的程序员