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