|
|
| <!--插入廣告JS代碼--> |
作者:李希崗
創(chuàng)建日期:2003年5月20日
修改日期:2003年5月20日
版本:1.0
說明:本文是我學(xué)習(xí)ARM開發(fā)以來的一些經(jīng)驗總結(jié),以自己設(shè)計的S3C44B0X板為例,給出我調(diào)試開發(fā)ARM開發(fā)板的一些最基礎(chǔ)知識。我只是在自己的開發(fā)板調(diào)試過并且經(jīng)驗有限,有些知識只能做為參考,不一定準確,就算給大家一個“例程”吧,如果大家有不同意見,希望多多指正!
硬件篇
(一) 開發(fā)板的整體架構(gòu)
我設(shè)計的開發(fā)板是在三星44B0 demo板的基礎(chǔ)上,參考網(wǎng)絡(luò)上相關(guān)的資料,加入我的思想開發(fā)的。以下是該開發(fā)板的整體架構(gòu):
(二) 開發(fā)板的焊接
貼片式元器件的拆卸、焊接宜選用200~280℃調(diào)溫式尖頭烙鐵。
貼片式電阻器、電容器的基片大多采用陶瓷材料制作,這種材料受碰撞易破裂,因此在拆卸、焊接時應(yīng)掌握控溫、預(yù)熱、輕觸等技巧。
控溫是指焊接溫度應(yīng)控制在200~250℃左右。
預(yù)熱指將待焊接的元件先放在100℃左右的環(huán)境里預(yù)熱1~2分鐘,防止元件突然受熱膨脹損壞。
輕觸是指操作時烙鐵頭應(yīng)先對印制板的焊點或?qū)Ъ訜幔M量不要碰到元件。
另外還要控制每次焊接時間在3秒鐘左右,焊接完畢后讓電路板在常溫下自然冷卻。
以上方法和技巧同樣適用于貼片式晶體二、三極管的焊接。
貼片式集成電路的引腳數(shù)量多、間距窄、硬度小,如果焊接溫度不當(dāng),極易造成引腳焊錫短路、虛焊或印制線路銅箔脫離印制板等故障。拆卸貼片式集成電路時,可將調(diào)溫烙鐵溫度調(diào)至260℃左右,用烙鐵頭配合吸錫器將集成電路引腳焊錫全部吸除后,用尖嘴鑷子輕輕插入集成電路底部,一邊用烙鐵加熱,一邊用鑷子逐個輕輕提起集成電路引腳,使集成電路引腳逐漸與印制板脫離。用鑷子提起集成電路時一定要隨烙鐵加熱的部位同步進行,防止操之過急將線路板損壞。
換入新集成電路前要將原集成電路留下的焊錫全部清除,保證焊盤的平整清潔。然后將待焊集成電路引腳用細砂紙打磨清潔,均勻搪錫,再將待焊集成電路腳位對準印制板相應(yīng)焊點,焊接時用手輕壓在集成電路表面,防止集成電路移動,另一只手操作電烙鐵蘸適量焊錫將集成電路四角的引腳與線路板焊接固定后,再次檢查確認集成電路型號與方向,正確后正式焊接,將烙鐵溫度調(diào)節(jié)在250℃左右,一只手持烙鐵給集成電路引腳加熱,另一只手將焊錫絲送往加熱引腳焊接,直至全部引腳加熱焊接完畢,最后仔細檢查和排除引腳短路和虛焊,待焊點自然冷卻后,用毛刷蘸無水酒精再次清潔線路板和焊點,防止遺留焊渣。
檢修模塊電路板故障前,宜先用毛刷蘸無水酒精清理印制板,清除板上灰塵、焊渣等雜物,并觀察原電路板是否存在虛焊或焊渣短路等現(xiàn)象,以及早發(fā)現(xiàn)故障點,節(jié)省檢修時間。
一點點建議:建議您先焊接一些主要的器件,比如說S3C44B0﹑SST39VF160﹑HY57V641620﹑JTAG﹑復(fù)位電路﹑電源部分,這樣您焊接好后,就可以進行FLASH的直接燒寫,確定FLASH的功能是否正確。
(三) 開發(fā)板電源調(diào)試
焊接過后的電路板,很可能存在短路﹑虛焊的情況,如果你此時直接通入電源的話,很可能造成主芯片的發(fā)熱和燒毀,我已經(jīng)出現(xiàn)這樣的情況了,焊接好電路后,直接通入電源,F(xiàn)LASH就開始發(fā)熱,直到燙手…
此時一定不要輕舉妄動,都花一點時間測試電源部分的正確。
比如測試S3C44B0的電源是否正確,包括+3.3V和+2.5V,如果不正確,立刻進行檢測,看是否有錯誤的情況。應(yīng)該接電源的腳分別如下:
接+3.3V的引腳:9腳﹑47腳﹑125腳
接+2.5V的引腳:138腳﹑109腳﹑62腳﹑34腳﹑21腳
如果測試完全正常,那么就要開始檢測s3c44B0的電源地是否正確,正常情況下有如下引腳應(yīng)該接地,如果沒有接地的話,可以判斷已經(jīng)斷路。應(yīng)該接地的引腳如下:
應(yīng)該接地的引腳:10腳﹑22腳﹑35腳﹑48腳﹑63腳﹑73腳﹑74腳﹑90腳﹑110腳﹑126腳﹑139腳﹑152腳
上述引腳有的并非地線,電路只有將該腳接地才可以工作。
(四) 開發(fā)板調(diào)試的第一步
呵呵,如果您的焊接方法沒有問題,電源完全是好的,那么你就已經(jīng)成功一半了。試通電一次,看電源指示燈是否亮了,電源只是燈亮度正常,那么你就已經(jīng)成功了。如果你在調(diào)試過程中,發(fā)現(xiàn)電源指示燈很暗的話,估計是某些電路是短路了,趕快拔掉電源,看一下是否某些芯片發(fā)熱或者已經(jīng)冒煙了…
記住:有幾個跳線一定要跳的,就是JP5﹑JP6﹑JP7一定要短路,如果不短路的話,你的所有電源都沒有。JP1不短路﹑JP2短路﹑JP3短路,他們分別對應(yīng)OM0﹑OM1﹑OM1
JP8短接2—3。確定是S3C44B0工作方式big mode 和little mode。
好了,如果全部正常的話,直接用JTAG調(diào)試板,連接好JTAG部分,啟動WIN98,進入我給你的光盤,找到簡單應(yīng)用程序的目錄。里面有一個程序,是直接燒寫S3C44B0的FLASH的。在您燒寫之前,查看JTAG連接是否正常,JTAG上的短路線是否已經(jīng)短路,如果全部正常的話,直接進入燒寫了。
在燒寫之前有幾個地方需要注意:
并口延長線分別連接PC機并行口和JTAG下載板,JTAG下載板通過扁平排線連接ARM板。
S3C44B0X有兩個復(fù)位引腳,其中nRESET是CPU復(fù)位引腳,nTRST是JTAG單元復(fù)位引腳,一般的S3C44B0X系統(tǒng)都有一個跳線,用短路塊將兩個復(fù)位端連在一起,這樣一按復(fù)位按鍵,兩個復(fù)位引腳都復(fù)位了。而JTAG下載板上面也有一個跳線,這個跳線是JTAG單元復(fù)位引腳。
在燒寫Flash的時候,PC機會通過JTAG下載板上的那個跳線來復(fù)位ARM板的JTAG單元,所以應(yīng)該用短路塊將JTAG下載板上的跳線短路,而ARM板上的跳線(連接nRESET和nTRST)的則不應(yīng)該短路;
全部準備好了,現(xiàn)在可以燒寫代碼了!網(wǎng)上有一個叫Fluted.exe的程序,使用它就可以完成Flash燒寫。這里面針對不同的CPU還需要不同的Bsd文件,不同的Flash芯片需要對Fcd文件進行相應(yīng)的修改。S3C44B0X的BSD文件S3C44B0X.bsd可以在三星公司網(wǎng)站找到,適用于SST39VF160的fcd文件在網(wǎng)上搜索得到。
特別說明:這個燒寫Flash的程序只能在Windows98系統(tǒng)下才能運行!不支持Windows2000、WindowsNT和WindowsXP,所有你需要切換到Windows98下面才能進行這項工作!
對于我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,將自己的目標代碼model.bin與上面的三個文件放在同一個目錄下面,運行Fluted.exe就可以進行Flash燒寫了。
由于Fluted.exe要輸入相應(yīng)的配置參數(shù),所以我干脆做了一個批處理文件f.bat:
FluteD a -f model.bin -v -s 0
這樣運行這個批處理文件就可以開始燒寫了,燒寫界面如下:
如果你是自己設(shè)計ARM板,第一次燒寫Flash,那么你可以檢查一下系統(tǒng):首先看看CPU的各種電壓是否正常,可以看看系統(tǒng)時鐘輸入的波形,32768晶體的一個引腳上應(yīng)該能看到32768的正弦波。如果是剛焊新的Flash,那么一般Flash里面數(shù)據(jù)都是0Xff,用示波器可以看到數(shù)據(jù)線都是高電平,地址線上面有規(guī)則的方波信號。你一按復(fù)位按鍵,方波立馬消失變成低電平。
如果寫入成功的話,WRITE &&VIRIFY成功的話,你已經(jīng)成功了……
恭喜你了。!
很可能由于電源高頻干擾或者錯誤接地,或者SST39VF160兩個地址線短路出現(xiàn)清除FLASH,能夠?qū)懭隖LASH,可是VERIFY出錯的問題,我遇到的就是那個兩個地址線短路的情況,結(jié)果寫入都正確,可是VERIFY時錯誤了,
錯誤信息如下:verify missed at 0x11111 orianglal :0x20 jtag:0x45
如果您在開發(fā)自己的開發(fā)板的時候也出現(xiàn)類似情況,我這里給你提示了,呵呵
成功已經(jīng)離你不遠了……
SDT軟件篇
已經(jīng)有了自己的平臺,那么怎么樣知道你的硬件是否真的好了呢?唯一的辦法就是用SDT進行調(diào)試硬件,我們正式開始我的下一篇—SDT軟件篇。
(一) SDT軟件的安裝
點擊SDT2.51安裝程序中的setup.exe,出現(xiàn)如下安裝界面:
接著出現(xiàn)如下畫面:然后出現(xiàn)拷貝文件過程如下:
安裝完成時:
此處必須重新啟動計算機,以使設(shè)置生效。
(二) 啟動SDT2.51
安裝完畢,點擊程序組中的ARM Project Manager啟動主程序,界面如下:
(三) 利用我提供的模板開始自己的項目
很多剛剛學(xué)習(xí)ARM的人往往會遇到這樣一個問題:自己寫了程序,編譯也通過了,結(jié)果怎么也生成不了二進制格式的目標代碼(*.bin)。如何生成目標代碼需要參考SDT2.51安裝文件夾pdf中的userguide.pdf,在它的392頁有詳細說明,教你怎么Converting ARM linker ELF output to binary ROM formats。
為了給大家?guī)矸奖,在我提供的小?yīng)程序中,可以將他保存為一個模板,操作如下
打開我提供的小應(yīng)用程序的工程,點擊菜單File下的Save As Template:
然后在彈出的窗口中隨意選擇一個目錄下,新建一個自己的文件夾,隨便取一個Project名稱,確認即可在主程序上出現(xiàn)新Project界面,F(xiàn)在可以在剛才建立的文件夾下面編輯代碼,包括匯編代碼和C程序代碼。注意匯編代碼必不可少,它是用來進行系統(tǒng)初始化和C程序入口的,這些范例代碼可以在三星網(wǎng)站去下載。
(四) 如何添加自己的源碼
點擊菜單Project下的Add File To Project……,在彈出的窗口中,瀏覽自己的Project文件夾下面的程序代碼,將代碼添加到創(chuàng)建的項目。這時依次點擊rom、debug、Sources前面的十字架,就會看到自己剛才添加成功的代碼,雙擊任何一個代碼文件就可以打開它進行編輯:
說明:SDT2.51好象有一個bug,當(dāng)你直接雙擊一個代碼文件時,可能會出現(xiàn)非法錯誤。我的機器就是這樣。希望各位當(dāng)編寫代碼時用uedit,這樣比較方便。(五) 生成可以在FLASH中運行的代碼
編輯代碼大家都會了,那么如何將自己寫的代碼放在FLASH中,并直接運行呢?看過S3C44B0 DATASHEET的人或者知道計算機啟動過程的人都會知道,BIOS是一個什么東西,
那么對于S3C44B0的啟動也無非如此。你生成的代碼必須存放在0x00000000為開始的FLASH中,這樣當(dāng)S3C44B0復(fù)位的時候,從這里取指令執(zhí)行。
那么如何設(shè)置呢?如下:
點擊ENTRY AND BASE,接著會出現(xiàn)如下對話框:(六) 生成可在FLASH中運行的目標碼
現(xiàn)在選擇菜單build或者點擊快捷圖標就可以編譯代碼,點擊Force build之后就生成了二進制目標代碼(*.bin),這可以在項目文件夾下面找到。在主程序窗口下面的信息框可以看到編譯的情況,包括警告和錯誤信息,最終代碼生成的情況等等;好了,生成了bin文件。下一步就可以進行寫入FLASH里了。
(七) 寫入可運行的目標碼
激動人心的時刻就要到來了,如果你按照我的步驟一步一步走,離成功不遠了!
檢測硬件是否正常(按照我上訴硬件篇中的步驟)。如果硬件準備就緒,寫入目標碼過程如下:
對于我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,將自己的目標代碼model.bin與上面的三個文件放在同一個目錄下面,運行Fluted.exe就可以進行Flash燒寫了。
由于Fluted.exe要輸入相應(yīng)的配置參數(shù),所以我干脆做了一個批處理文件f.bat:
FluteD a -f model.bin -v -s 0
這樣運行這個批處理文件就可以開始燒寫了,燒寫界面如下:
這個程序首先打開fcd文件和bin文件,然后檢查設(shè)備ID,如果ID錯誤的話程序會停止運行。這意味著你的硬件系統(tǒng)有問題,或者JTAG接線有錯誤等等。然后開始擦除FLASH里面的數(shù)據(jù),根據(jù)Flash的大小擦除時間有長有短;擦除完畢就開始對Flash編程,將目標代碼寫進去。編程完畢開始校驗,如果出錯會給出提示信息的,告訴你在哪個地址區(qū)域出錯,寫進去的數(shù)據(jù)是什么,讀出來的數(shù)據(jù)又是什么,只有校驗完全成功才是燒寫OK!
一般朋友易犯的錯誤:
有些朋友將目標代碼定位在0X0C000000,結(jié)果燒寫后校驗也完全成功了,但復(fù)位之后板子卻沒有任何反應(yīng)!這是因為寫到SDRAM之后校驗肯定也是對的,但復(fù)位之后程序是從0X00000000開始執(zhí)行的,而不是從0X0C000000開始的,所有板子肯定沒有反應(yīng)了!
(八) 如何調(diào)試程序
各位朋友都知道,調(diào)試程序是在SDRAM中運行的,那么我們必須將自己編譯好的程序放到SDRAM中,那么如何才能將程序放入SDRAM中呢?操作如下:
就我的板子而言,SDRAM的片選引腳接在nSCS0上面,它的地址從0X0C000000開始,所有要把目標程序定位在這里。
如前面所說步驟,先單擊一下主程序窗口ROM下的Debug,然后點擊菜單中的set,在彈出的窗口中選擇點擊Entry And Base,在Read-only下面的框里面輸入0X0c000000(程序空間),在Read-write下面的框里面輸入0X0c5f0000(這是數(shù)據(jù)空間),確認即可:
按照上述步驟,設(shè)置SDT2.51,然后別忘了重新編譯。會生成AXF文件,這個文件就是我們要調(diào)試的程序了。
(九) 調(diào)試之前需要知道的……
SDT2.51支持軟件仿真和硬件debug,默認是軟件仿真,這個很簡單,大家一看就會。關(guān)鍵的是硬件debug,它支持串口、并口和以太網(wǎng)仿真,串口和并口我不知道怎么玩。
我的板子是通過并口JTAG進行硬件調(diào)試的,但實際上卻是通過以太網(wǎng)的。這里面有一個轉(zhuǎn)換軟件——JTAG.exe,它把發(fā)送到以太網(wǎng)的數(shù)據(jù)攔截下來,遵從JTAG協(xié)議,轉(zhuǎn)換到并口上面,然后通過JTAG接口板,控制ARM板上面的CPU,進行硬件Debug。
JTAG.exe在王云飛的網(wǎng)頁上面有下載,包括并口JTAG接口板的電路圖,我就是照他的圖紙做的板子。
需要說明一下:JTAG.exe只能在Win98下運行,Win2000下不行,所以如果你要進行硬件仿真的話,必須切換到Win98系統(tǒng)下面。這很不爽,哪位朋友找到能在Win2000下面跑的JTAG.exe的話,麻煩告訴我一聲!當(dāng)然如果只是進行程序編寫、編譯、軟件仿真,SDT2.51在Win98、Win2000和WinXP都沒有問題的!
雙擊JTAG.exe,它就在后臺運行了。
(十) 開始仿真了……
使用這種方式仿真,還要進行一些設(shè)置才行。點擊Debug菜單或者快捷圖標,出現(xiàn)ARM Debugger程序窗口:
然后選擇菜單Options下面的Config Debugger:
在Target Environment下面選擇Remote_A,然后點擊Configure:
選擇Heartbeat,在Ethernet后面輸入你的計算機IP地址并確認。這里面肯定要你機器上面裝有網(wǎng)卡,而且IP地址要指定了,如果是自動分配IP的話,就不太方便了,每次都要查找自己機子的IP。
(十一) 裝載目標碼到板子…
如果是第一次設(shè)置Debugger,確認以后,系統(tǒng)就會自動裝載代碼到ARM板上,你也可以點擊Reload圖標重新轉(zhuǎn)載代碼。如果代碼很大的話,時間會稍長一點,可能要幾十秒,一般幾秒就搞定,出現(xiàn)如下窗口:出現(xiàn)了上面的這個畫面才說明你裝載成功了,如果出現(xiàn)與此完全不同的東西,或者莫名其妙的代碼,你就要檢查硬件了!
現(xiàn)在按F8就可以單步仿真了,你可以看到綠色的圖標一步一步向下走。
如果出現(xiàn)以下幾種情況的處理方法:
1)如果程序一單步就跑飛,可能就是硬件問題了,檢查時鐘電路,電源濾波是否良好?
2)初學(xué)者建議時鐘倍頻不用太高,如果時鐘輸入是10MHz的話,二倍頻將主頻定在20MHz,這樣調(diào)試起來可能麻煩少一點。大家都知道頻率高了會出現(xiàn)很多意想不到的情況。
匯編程序走完,就要進入C代碼了,下面是從匯編到C的入口:
按F8就進入C代碼仿真了,界面如下:
(十二) 軟件的其他使用方法我在這里不在說明,希望各位能夠迅速建立自己學(xué)習(xí)ARM的信心…后記
本文歡迎轉(zhuǎn)載,但請注明出處,如果您愿意修改里面的內(nèi)容,請您標注您修改的地方。并email回本人。對文章內(nèi)容有任何疑問請Email聯(lián)系本人,共同研究!
類似這樣的文章我還會繼續(xù)……,文章只是我與大家交流心得的一種體現(xiàn),如果您對文章有所見解或者有所疑義,請您聯(lián)系我并共同研究。
我的產(chǎn)品計劃:根據(jù)網(wǎng)友的需求,我將盡量推出價位低功能全的開發(fā)板,并且會給各位朋友一個遐想的空間……
1) S3C44B0開發(fā)套件,比較完整的ARM解決方案,十分低廉的價格,提供硬件開發(fā)板,簡單源程序,移植完整的uclinux操作系統(tǒng),提供相關(guān)驅(qū)動(網(wǎng)卡驅(qū)動和LCD驅(qū)動)。
2) S3C4510開發(fā)套件,比較完整的ARM解決方案,十分低廉的價格,提供硬件開發(fā)板,簡單源程序,移植完整的uclinux操作系統(tǒng),提供相關(guān)驅(qū)動(網(wǎng)卡驅(qū)動和LCD驅(qū)動)。
3) DSP開發(fā)套件:比較完整的DSP解決方案,十分低廉的價格,提供硬件開發(fā)板,簡單源程序,移植完整的ucosII的操作系統(tǒng)。
目前:S3C4510正在研發(fā)當(dāng)中……