前言
如果您是一個單片機(jī)愛好者,當(dāng)見到一款功能強(qiáng)大、性價比高的處理器時,一定會有一股很想掌握它、運(yùn)用它的沖動,起碼我是這樣。5年前第一次接觸單片機(jī)(標(biāo)準(zhǔn)的51系列),就被它強(qiáng)大的功能所吸引,而癡迷于它,一直到今天。在這期間的不同時期,各種增強(qiáng)型51,PIC、AVR,DSP和ARM等不同程度的吸引和誘惑著我。有的已經(jīng)玩過了,有的則沒有,但很想玩的這股沖動一直存在心里,特別是對ARM。記得2002年我就知道了ARM這個東東,眼睜睜地看著它一天天的火熱,但由于對其開發(fā)工具及開發(fā)過程的不了解等原因一直只處于認(rèn)識的階段,盡管也曾玩過ZLG的2104開發(fā)板!可能是ZLG團(tuán)隊做的太出色的原因吧(詳細(xì)的教材與源碼,還有非常方便的工程模板),沒過多久、沒費(fèi)多少勁就把里面的實驗做完了,然后由于自已性格上的缺陷把它給扔在了一邊,導(dǎo)致不到一個月就把大部分的東東還給了周老師。直到前段時間,讓我有機(jī)會真真正正的玩起了ARM!像最初玩8051那樣的盡興(出現(xiàn)問題時,吃不下飯、睡不著覺的那種痛苦和解決問題后的那種暢快)。
這篇文檔就是記錄了我在前段時間學(xué)習(xí)、調(diào)試目前最低價的ARM核處理器——AT91SAM7Sxx時出現(xiàn)的問題與解決方法。它盡量完整地記錄了我從開始不懂ARM,到最終完成AT91SAM7S64各種外圍實驗的各個環(huán)節(jié)及整個過程,包括我在開始一個實驗前的一些想法,實驗?zāi)康模约案鱾€實驗中,我以單片機(jī)的思維去思考時遇到的各種問題,和這些問題的解決方法。現(xiàn)將自己的一點經(jīng)驗以及體會拿出來與大家共同分享,一來是希望能夠為那些在ARM門口徘徊迷茫的人提供一些借鑒,使他們順利越過這道門檻;二來是希望能夠拋磚引玉,以結(jié)識更多有共同愛好的朋友。由于我也是新手上路,文章中難免疏漏與錯誤,希望大家不吝指正,如果在調(diào)試AT91SAM7Sxx時有什么問題,歡迎大家共同討論。
第一章 開發(fā)工具與調(diào)試環(huán)境
一.目標(biāo)板
所用實驗板是參考ATMEL公司官方網(wǎng)站上發(fā)布的《AT91SAM7S-EK Evaluation Board User Guide》設(shè)計的,相當(dāng)于AT91SAM7Sxx評估測試板,主要用于各種外圍實驗,結(jié)構(gòu)框圖如圖1-1所示。大家可以自己搭板子,或者直接購買現(xiàn)成的AT91SAM7Sxx評估板。
圖1-1. 結(jié)構(gòu)框圖
實驗板主要以AT91SAM7S64微控制器為核心,外部擴(kuò)展4路模擬量輸入,4個按鈕和4個LED, I2C接口存儲器,兩個UART接口(其中一個可作程序下載的DBUG接口),1個USB設(shè)備接口。
AT91SAM7S系列微控制器是ATMEL公司最近推出的全球首個起步價低于3美元的ARM7內(nèi)核閃存控制器,共有AT91SAM7S32/64/128/256四個型號,內(nèi)部分別具有32KB/64KB/128KB/256KB的Flash ROM和8KB/16KB/16KB/32KB的SRAM,無需擴(kuò)展存儲器;除AT91SAM7S32外,其它都集成了USB 2.0 Device,另外還有10位的ADC、12路的DMA、I2C、SPI、PWM、實時時鐘等眾多外圍部件,功能強(qiáng)大,特別適合具有8位單片機(jī)基礎(chǔ)轉(zhuǎn)學(xué)32 ARM的用戶。
二.開發(fā)工具
在8位單片機(jī)的開發(fā)過程中,都會用到諸集成調(diào)試環(huán)境和仿真器。同8位單片機(jī)一樣,ARM也有自己的集成開發(fā)環(huán)境和硬件訪真器。本次實驗就是使用ADS1.2集成開發(fā)環(huán)境和技創(chuàng)的TecorICE并口JTAG仿真器,使用時類似于51的仿真器直接掛接在keil下使用那樣。
我個人認(rèn)為無論是ARM、DSP還是51或PIC等,其開發(fā)工具和開發(fā)過程都是類似的。簡單的講都是先在集成開發(fā)環(huán)境中編輯用戶程序,然后經(jīng)過編譯、連接產(chǎn)生目標(biāo)文件,再通過硬件仿真器進(jìn)行仿真調(diào)試。而對于普通51仿真器與ARM仿真器,使用起來并沒明顯的不同,主要的差別大概在于仿真接口(或者說是仿真頭)。普通51仿真器是使用與目標(biāo)單片機(jī)管腳兼容的仿真頭替代目標(biāo)單片機(jī),用戶程序是在仿真器內(nèi)部的仿真芯片上運(yùn)行。ARM核處理器內(nèi)置ICE(仿真調(diào)試模塊),該模塊通過標(biāo)準(zhǔn)的JTAG接口引腳與ARM仿真器相連,此時ARM仿真器作為上位調(diào)試軟件與ARM核芯片之間的協(xié)議轉(zhuǎn)換器。用戶的目標(biāo)調(diào)試文件被下載到目標(biāo)板上的存儲器(可以是外部的或ARM處理器內(nèi)部的存儲器)中,通過控制目標(biāo)芯片的仿真模塊實現(xiàn)仿真調(diào)試。