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