ARM開發調試教程-不錯的ARM開發心得

硬件篇
(一) 開發板的整體架構
我設計的開發板是在三星44B0 demo板的基礎上,參考網絡上相關的資料,加入我的思想開發的。以下是該開發板的整體架構:

(二) 開發板的焊接
貼片式元器件的拆卸、焊接宜選用200~280℃調溫式尖頭烙鐵。

貼片式電阻器、電容器的基片大多采用陶瓷材料製作,這種材料受碰撞易破裂,因此在拆卸、焊接時應掌握控溫、預熱、輕觸等技巧。

控溫是指焊接溫度應控制在200~250℃左右。

預熱指將待焊接的元件先放在100℃左右的環境裏預熱1~2分鐘,防止元件突然受熱膨脹損壞。

輕觸是指操作時烙鐵頭應先對印製板的焊點或導帶加熱,儘量不要碰到元件。

另外還要控制每次焊接時間在3秒鐘左右,焊接完畢後讓電路板在常溫下自然冷卻。
以上方法和技巧同樣適用於貼片式晶體二、三極管的焊接。

貼片式集成電路的引腳數量多、間距窄、硬度小,如果焊接溫度不當,極易造成引腳焊錫短路、虛焊或印製線路銅箔脫離印製板等故障。拆卸貼片式集成電路時,可將調溫烙鐵溫度調至260℃左右,用烙鐵頭配合吸錫器將集成電路引腳焊錫全部吸除後,用尖嘴鑷子輕輕插入集成電路底部,一邊用烙鐵加熱,一邊用鑷子逐個輕輕提起集成電路引腳,使集成電路引腳逐漸與印製板脫離。用鑷子提起集成電路時一定要隨烙鐵加熱的部位同步進行,防止操之過急將線路板損壞。

換入新集成電路前要將原集成電路留下的焊錫全部清除,保證焊盤的平整清潔。然後將待焊集成電路引腳用細砂紙打磨清潔,均勻搪錫,再將待焊集成電路腳位對準印製板相應焊點,焊接時用手輕壓在集成電路表面,防止集成電路移動,另一隻手操作電烙鐵蘸適量焊錫將集成電路四角的引腳與線路板焊接固定後,再次檢查確認集成電路型號與方向,正確後正式焊接,將烙鐵溫度調節在250℃左右,一隻手持烙鐵給集成電路引腳加熱,另一隻手將焊錫絲送往加熱引腳焊接,直至全部引腳加熱焊接完畢,最後仔細檢查和排除引腳短路和虛焊,待焊點自然冷卻後,用毛刷蘸無水酒精再次清潔線路板和焊點,防止遺留焊渣。

檢修模塊電路板故障前,宜先用毛刷蘸無水酒精清理印製板,清除板上灰塵、焊渣等雜物,並觀察原電路板是否存在虛焊或焊渣短路等現象,以及早發現故障點,節省檢修時間。

一點點建議:建議您先焊接一些主要的器件,比如說S3C44B0﹑SST39VF160﹑HY57V641620﹑JTAG﹑復位電路﹑電源部分,這樣您焊接好後,就可以進行FLASH的直接燒寫,確定FLASH的功能是否正確。



(三) 開發板電源調試
焊接過後的電路板,很可能存在短路﹑虛焊的情況,如果你此時直接通入電源的話,很可能造成主芯片的發熱和燒燬,我已經出現這樣的情況了,焊接好電路後,直接通入電源,FLASH就開始發熱,直到燙手…

此時一定不要輕舉妄動,都花一點時間測試電源部分的正確。

比如測試S3C44B0的電源是否正確,包括+3.3V和+2.5V,如果不正確,立刻進行檢測,看是否有錯誤的情況。應該接電源的腳分別如下:

接+3.3V的引腳:9腳﹑47腳﹑125腳
接+2.5V的引腳:138腳﹑109腳﹑62腳﹑34腳﹑21腳

如果測試完全正常,那麼就要開始檢測s3c44B0的電源地是否正確,正常情況下有如下引腳應該接地,如果沒有接地的話,可以判斷已經斷路。應該接地的引腳如下:

應該接地的引腳:10腳﹑22腳﹑35腳﹑48腳﹑63腳﹑73腳﹑74腳﹑90腳﹑110腳﹑126腳﹑139腳﹑152腳

上述引腳有的並非地線,電路只有將該腳接地纔可以工作。

(四) 開發板調試的第一步

呵呵,如果您的焊接方法沒有問題,電源完全是好的,那麼你就已經成功一半了。試通電一次,看電源指示燈是否亮了,電源只是燈亮度正常,那麼你就已經成功了。如果你在調試過程中,發現電源指示燈很暗的話,估計是某些電路是短路了,趕快拔掉電源,看一下是否某些芯片發熱或者已經冒煙了…

記住:有幾個跳線一定要跳的,就是JP5﹑JP6﹑JP7一定要短路,如果不短路的話,你的所有電源都沒有。JP1不短路﹑JP2短路﹑JP3短路,他們分別對應OM0﹑OM1﹑OM1
JP8短接2—3。確定是S3C44B0工作方式big mode 和little mode。

好了,如果全部正常的話,直接用JTAG調試板,連接好JTAG部分,啓動WIN98,進入我給你的光盤,找到簡單應用程序的目錄。裏面有一個程序,是直接燒寫S3C44B0的FLASH的。在您燒寫之前,查看JTAG連接是否正常,JTAG上的短路線是否已經短路,如果全部正常的話,直接進入燒寫了。

在燒寫之前有幾個地方需要注意:

並口延長線分別連接PC機並行口和JTAG下載板,JTAG下載板通過扁平排線連接ARM板。
S3C44B0X 有兩個復位引腳,其中nRESET是CPU復位引腳,nTRST是JTAG單元復位引腳,一般的S3C44B0X系統都有一個跳線,用短路塊將兩個復位端連在一起,這樣一按復位按鍵,兩個復位引腳都復位了。而JTAG下載板上面也有一個跳線,這個跳線是JTAG單元復位引腳。

在燒寫Flash的時候,PC機會通過JTAG下載板上的那個跳線來複位ARM板的JTAG單元,所以應該用短路塊將JTAG下載板上的跳線短路,而ARM板上的跳線(連接nRESET和nTRST)的則不應該短路;

全部準備好了,現在可以燒寫代碼了!網上有一個叫Fluted.exe的程序,使用它就可以完成Flash燒寫。這裏面針對不同的CPU還需要不同的Bsd 文件,不同的Flash芯片需要對Fcd文件進行相應的修改。S3C44B0X的BSD文件S3C44B0X.bsd可以在三星公司網站找到,適用於 SST39VF160的fcd文件在網上搜索得到。

特別說明:這個燒寫Flash的程序只能在Windows98系統下才能運行!不支持Windows2000、WindowsNT和WindowsXP,所有你需要切換到Windows98下面才能進行這項工作!

對於我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,將自己的目標代碼model.bin與上面的三個文件放在同一個目錄下面,運行Fluted.exe就可以進行Flash燒寫了。

由於Fluted.exe要輸入相應的配置參數,所以我乾脆做了一個批處理文件f.bat:
FluteD a -f model.bin -v -s 0

這樣運行這個批處理文件就可以開始燒寫了,燒寫界面如下:


如果你是自己設計ARM板,第一次燒寫Flash,那麼你可以檢查一下系統:首先看看CPU的各種電壓是否正常,可以看看系統時鐘輸入的波形,32768晶體的一個引腳上應該能看到32768的正弦波。如果是剛焊新的Flash,那麼一般Flash裏面數據都是0Xff,用示波器可以看到數據線都是高電平,地址線上面有規則的方波信號。你一按復位按鍵,方波立馬消失變成低電平。

如果寫入成功的話,WRITE &&VIRIFY成功的話,你已經成功了……
恭喜你了!!!

很可能由於電源高頻干擾或者錯誤接地,或者SST39VF160兩個地址線短路出現清除FLASH,能夠寫入FLASH,可是VERIFY出錯的問題,我遇到的就是那個兩個地址線短路的情況,結果寫入都正確,可是VERIFY時錯誤了,
錯誤信息如下:verify missed at 0x11111 orianglal :0x20 jtag:0x45
如果您在開發自己的開發板的時候也出現類似情況,我這裏給你提示了,呵呵
成功已經離你不遠了……
第1頁第2頁

 




SDT軟件篇
已經有了自己的平臺,那麼怎麼樣知道你的硬件是否真的好了呢?唯一的辦法就是用SDT進行調試硬件,我們正式開始我的下一篇—SDT軟件篇。

(一) SDT軟件的安裝
點擊SDT2.51安裝程序中的setup.exe,出現如下安裝界面:


接着出現如下畫面:
然後出現拷貝文件過程如下:
安裝完成時:

此處必須重新啓動計算機,以使設置生效。
(二) 啓動SDT2.51
安裝完畢,點擊程序組中的ARM Project Manager啓動主程序,界面如下:

(三) 利用我提供的模板開始自己的項目
很多剛剛學習ARM的人往往會遇到這樣一個問題:自己寫了程序,編譯也通過了,結果怎麼也生成不了二進制格式的目標代碼(*.bin)。如何生成目標代碼需要參考SDT2.51安裝文件夾pdf中的userguide.pdf,在它的392頁有詳細說明,教你怎麼 Converting ARM linker ELF output to binary ROM formats。
爲了給大家帶來方便,在我提供的小應程序中,可以將他保存爲一個模板,操作如下
打開我提供的小應用程序的工程,點擊菜單File下的Save As Template:

然後在彈出的窗口中隨意選擇一個目錄下,新建一個自己的文件夾,隨便取一個Project名稱,確認即可在主程序上出現新Project界面。現在可以在剛纔建立的文件夾下面編輯代碼,包括彙編代碼和C程序代碼。注意彙編代碼必不可少,它是用來進行系統初始化和C程序入口的,這些範例代碼可以在三星網站去下載。

(四) 如何添加自己的源碼
點擊菜單Project下的Add File To Project……,在彈出的窗口中,瀏覽自己的Project文件夾下面的程序代碼,將代碼添加到創建的項目。這時依次點擊rom、debug、Sources前面的十字架,就會看到自己剛纔添加成功的代碼,雙擊任何一個代碼文件就可以打開它進行編輯:

說明:SDT2.51好象有一個bug,當你直接雙擊一個代碼文件時,可能會出現非法錯誤。我的機器就是這樣。希望各位當編寫代碼時用uedit,這樣比較方便。

(五) 生成可以在FLASH中運行的代碼
編輯代碼大家都會了,那麼如何將自己寫的代碼放在FLASH中,並直接運行呢?看過S3C44B0 DATASHEET的人或者知道計算機啓動過程的人都會知道,BIOS是一個什麼東西,
那麼對於S3C44B0的啓動也無非如此。你生成的代碼必須存放在0x00000000爲開始的FLASH中,這樣當S3C44B0復位的時候,從這裏取指令執行。

那麼如何設置呢?如下:

點擊ENTRY AND BASE,接着會出現如下對話框:



(六) 生成可在FLASH中運行的目標碼

現在選擇菜單build或者點擊快捷圖標就可以編譯代碼,點擊Force build之後就生成了二進制目標代碼(*.bin),這可以在項目文件夾下面找到。在主程序窗口下面的信息框可以看到編譯的情況,包括警告和錯誤信息,最終代碼生成的情況等等;

好了,生成了bin文件。下一步就可以進行寫入FLASH裏了。

(七) 寫入可運行的目標碼
激動人心的時刻就要到來了,如果你按照我的步驟一步一步走,離成功不遠了!!
檢測硬件是否正常(按照我上訴硬件篇中的步驟)。如果硬件準備就緒,寫入目標碼過程如下:

對於我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,將自己的目標代碼model.bin與上面的三個文件放在同一個目錄下面,運行Fluted.exe就可以進行Flash燒寫了。
由於Fluted.exe要輸入相應的配置參數,所以我乾脆做了一個批處理文件f.bat:
FluteD a -f model.bin -v -s 0
這樣運行這個批處理文件就可以開始燒寫了,燒寫界面如下:

這個程序首先打開fcd文件和bin文件,然後檢查設備ID,如果ID錯誤的話程序會停止運行。這意味着你的硬件系統有問題,或者JTAG接線有錯誤等等。然後開始擦除FLASH裏面的數據,根據Flash的大小擦除時間有長有短;擦除完畢就開始對Flash編程,將目標代碼寫進去。編程完畢開始校驗,如果出錯會給出提示信息的,告訴你在哪個地址區域出錯,寫進去的數據是什麼,讀出來的數據又是什麼,只有校驗完全成功纔是燒寫OK!

一般朋友易犯的錯誤:
有些朋友將目標代碼定位在0X0C000000,結果燒寫後校驗也完全成功了,但復位之後板子卻沒有任何反應!這是因爲寫到SDRAM之後校驗肯定也是對的,但復位之後程序是從0X00000000開始執行的,而不是從0X0C000000開始的,所有板子肯定沒有反應了!

(八) 如何調試程序
各位朋友都知道,調試程序是在SDRAM中運行的,那麼我們必須將自己編譯好的程序放到SDRAM中,那麼如何才能將程序放入SDRAM中呢?操作如下:

就我的板子而言,SDRAM的片選引腳接在nSCS0上面,它的地址從0X0C000000開始,所有要把目標程序定位在這裏。
如前面所說步驟,先單擊一下主程序窗口ROM下的Debug,然後點擊菜單中的set,在彈出的窗口中選擇點擊Entry And Base,在Read- only下面的框裏面輸入0X0c000000(程序空間),在Read-write下面的框裏面輸入0X0c5f0000(這是數據空間),確認即可:
按照上述步驟,設置SDT2.51,然後別忘了重新編譯。會生成AXF文件,這個文件就是我們要調試的程序了。

(九) 調試之前需要知道的……
SDT2.51支持軟件仿真和硬件debug,默認是軟件仿真,這個很簡單,大家一看就會。關鍵的是硬件debug,它支持串口、並口和以太網仿真,串口和並口我不知道怎麼玩。
我的板子是通過並口JTAG進行硬件調試的,但實際上卻是通過以太網的。這裏面有一個轉換軟件——JTAG.exe,它把發送到以太網的數據攔截下來,遵從JTAG協議,轉換到並口上面,然後通過JTAG接口板,控制ARM板上面的CPU,進行硬件Debug。
JTAG.exe在王雲飛的網頁上面有下載,包括並口JTAG接口板的電路圖,我就是照他的圖紙做的板子。
需要說明一下:JTAG.exe只能在Win98下運行,Win2000下不行,所以如果你要進行硬件仿真的話,必須切換到Win98系統下面。這很不爽,哪位朋友找到能在Win2000下面跑的JTAG.exe的話,麻煩告訴我一聲!當然如果只是進行程序編寫、編譯、軟件仿真,SDT2.51在 Win98、Win2000和WinXP都沒有問題的!
雙擊JTAG.exe,它就在後臺運行了。

(十) 開始仿真了……

使用這種方式仿真,還要進行一些設置才行。點擊Debug菜單或者快捷圖標,出現ARM Debugger程序窗口:


然後選擇菜單Options下面的Config Debugger:

在Target Environment下面選擇Remote_A,然後點擊Configure:

選擇Heartbeat,在Ethernet後面輸入你的計算機IP地址並確認。這裏面肯定要你機器上面裝有網卡,而且IP地址要指定了,如果是自動分配IP的話,就不太方便了,每次都要查找自己機子的IP。

(十一) 裝載目標碼到板子…

如果是第一次設置Debugger,確認以後,系統就會自動裝載代碼到ARM板上,你也可以點擊Reload圖標重新轉載代碼。如果代碼很大的話,時間會稍長一點,可能要幾十秒,一般幾秒就搞定,出現如下窗口:

出現了上面的這個畫面才說明你裝載成功了,如果出現與此完全不同的東西,或者莫名其妙的代碼,你就要檢查硬件了!

現在按F8就可以單步仿真了,你可以看到綠色的圖標一步一步向下走。

如果出現以下幾種情況的處理方法:
1)如果程序一單步就跑飛,可能就是硬件問題了,檢查時鐘電路,電源濾波是否良好?
2)初學者建議時鐘倍頻不用太高,如果時鐘輸入是10MHz的話,二倍頻將主頻定在20MHz,這樣調試起來可能麻煩少一點。大家都知道頻率高了會出現很多意想不到的情況。

彙編程序走完,就要進入C代碼了,下面是從彙編到C的入口:
按F8就進入C代碼仿真了,界面如下:

(十二) 軟件的其他使用方法我在這裏不在說明,希望各位能夠迅速建立自己學習ARM的信心…

後記
本文歡迎轉載,但請註明出處,如果您願意修改裏面的內容,請您標註您修改的地方。並email回本人。對文章內容有任何疑問請Email聯繫本人,共同研究!

類似這樣的文章我還會繼續……,文章只是我與大家交流心得的一種體現,如果您對文章有所見解或者有所疑義,請您聯繫我並共同研究。

我的產品計劃:根據網友的需求,我將盡量推出價位低功能全的開發板,並且會給各位朋友一個遐想的空間……

1) S3C44B0開發套件,比較完整的ARM解決方案,十分低廉的價格,提供硬件開發板,簡單源程序,移植完整的uClinux操作系統,提供相關驅動(網卡驅動和LCD驅動)。
2) S3C4510開發套件,比較完整的ARM解決方案,十分低廉的價格,提供硬件開發板,簡單源程序,移植完整的uClinux操作系統,提供相關驅動(網卡驅動和LCD驅動)。

3) DSP開發套件:比較完整的DSP解決方案,十分低廉的價格,提供硬件開發板,簡單源程序,移植完整的ucosII的操作系統。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章