下載/瀏覽

Download Report

Transcript 下載/瀏覽

第 3 章 ARM 開發工具
3.1. IAR Embedded Workbench for ARM
3.2. 瞭解ARM開發板
3.3. 安裝硬體工具
3.4. 第一個範例程式
ARM 開發工具
本課程ARM程式的開發工具如下:
★ 開發軟體:IAR™Embedded Workbench for
ARM
★ 開發板套件:StartARM7 開發板,JTAG 連
線
3.1. IAR Embedded Workbench for
ARM
IAR™
公司是瑞典的軟體開發商,提供許多嵌入式系統開發工具,
也包括ARM 的開發工具,本書介紹的工具是IAR公司所發行
的32k限制試用版Embedded Workbench for ARM 32K Kickstart
Edition,以下以IAR EW 簡稱。此工具軟體可以到IAR™
網站免
費下載,
網址:
http://supp.iar.com/Download/SW/?item=EWARM-KS32
下載之前必須先填寫註冊資料,待收到IAR確認E-mail 信函後,
點選信函中的網址,即可引導到IAR產品下載網址,網址包含
註冊的序號資訊,安裝IAR套件時必須輸入,下載完成後請先
安裝IAR 開發工具。
3.2. 瞭解ARM開發板
3.2. 瞭解ARM開發板
StartARM7 開發板具有以下特點
• 2 個 UART 接口,其中一個用於SAM7S Debug
• 標準20 Pin JTAG 插座,可接JTAG 或ICE
• 1 個I2C 串列EEPROM
• 2 個SPI 介面7 段顯示器
• 1 個蜂鳴器,可使用PWM 驅動
• 4 個通用LED
• 4 個通用按鈕
• 1 個重置按鈕
• 1 個2x16 文字型LCD
• 2 個AD 轉換可變電阻
• CPU 所有接腳引出
• PA 所有接腳拉出EXT 擴展介面
• USB Device 插座,可由USB 取得供電
• 不使用USB 供電時可用外部電源插座, 輸入DC +9V
3.2. 瞭解ARM開發板
(電源部分)
PowerSEL 可以選擇使用外部電源或者USB 供電。外部電源經過7805
取得+5V 電源,USB 則是使用PC 提供+5V電源。由+5V 電源透過
1117-330 再轉成+3.3V 提供CPU 與板上各元件操作電壓。
3.2. 瞭解ARM開發板
(JTAG 部分)
JTAG 接頭為標準ARM 20PIN JTAG 接頭。JATG 訊號直接連到CPU。CPU
可直接透過JTAG 訊號重置,不需再使用外接的RESET 訊號,因此NRST 跳
線可以不用連接。
3.2. 瞭解ARM開發板
(USB 部分)
•USB 訊號線1 提供+5V 電源,VBUS_DET 訊號可以用來偵測是否有
USB 線插入USB 接頭。
•USB 訊號線2 為USB- 訊號線,連接到SAM7S USB_DM 腳。
•USB 訊號線3 為USB+訊號線,連接到SAM7S USB_DP 腳。
•USB 訊號線4 為接地端。
3.2. 瞭解ARM開發板
(USB 部分)
USB 全 速 裝 置 連 線 偵 測 以 USB+ 訊 號 是 否 上 拉 1.5KΩ 為 判 斷 依 據 。
USB_DP_PUP控制是否將USB_DP訊號上拉1.5KΩ。當USB_DP_PUP=low,
Q2導通PC可偵測到USB連線。當USB_DP_PUP=hi,Q2 斷開PC 認為USB
斷線。USB_DP_PUP 連接到SAM7S 的PA16,透過控制PA16 可以使用軟
體控制USB 連線打開/關閉。
3.2. 瞭解ARM開發板
(UART 連線)
StartARM7 提供兩組與PC RS-232 連線的介面 。一組為SAM7S DBGU 連線,
另一組為SAM7S UART0 連線。
3.2. 瞭解ARM開發板
(LCD 部分)
StartARM7開發板有搭配2x16文字型LCD。使用4bit資料傳輸方
式,LCD_DB7 - LCD_DB4 可透過跳線與PA14 - PA11連接。
PA8控制LCDRW,PA7 控制LCDRS,PA25 控制LCDE,PA24
控制LCD 背光。
3.2. 瞭解ARM開發板
(AD 轉換電路部分)
StartARM7 板上具有ADR4 與ADR5 兩組可變電阻分別接到SAM7S 的
AD4 與AD5,透過調整ADR4 與ADR5 可以作AD 轉換實驗。SAM7S
的參考電壓由ADVREF 輸入。透過ADVREF 跳線連接到3.3V。用戶可
自 行 更 改 ADVREF 電 壓 參 考 值 。 ADVREF 參 考 電 壓 可 介 於
2.6V~VDDIN 之間。
3.2. 瞭解ARM開發板
(AD 轉換電路部分)
StartARM7 板上具有ADR4 與ADR5 兩組可變電阻分別接到SAM7S 的
AD4 與AD5,透過調整ADR4 與ADR5 可以作AD 轉換實驗。SAM7S
的參考電壓由ADVREF 輸入。透過ADVREF 跳線連接到3.3V。用戶可
自 行 更 改 ADVREF 電 壓 參 考 值 。 ADVREF 參 考 電 壓 可 介 於
2.6V~VDDIN 之間。
3.2. 瞭解ARM開發板
(蜂鳴器部分)
蜂鳴器可以使用PA0 控制,PA0 也可以當成PWM0 輸出。所以蜂鳴器可
以使用一般GPIO 控制或使用PWM0 控制。
3.2. 瞭解ARM開發板
(七段顯示器與SPI 部分)
StartARM7 板上有兩組七段
顯示器,透過HC595 晶片控
制。HC595 晶片為串列轉並
列元件,可透 SAM7S SPI
介面將資料送到HC595 後輸
出。 SPI訊號SPI_SPCK、
SPI_MISO、 SPI_MOSI 與
SPI_CS0可透過跳線與PA14PA11連接。
3.2. 瞭解ARM開發板
(LED 部分)
LED1~LED4 透過PA21~PA24 控制明滅,跳線PA21~PA24
PA21~PA24 是否用來控制LED1~LED4。
可以選擇
3.2. 瞭解ARM開發板
(按鍵部分)
KEY1~KEY4 分別使用SAM7S PA17~PA20 來控制。
3.2. 瞭解ARM開發板
(I2C 部分)
AT24C04 為I2C 介面的串列EEPROM,跳線SCL 與SDA 用來選擇與
SAM7S PA4,PA3 連接。SAM7S 的PA4,PA3為TWI 介面,與I2C 介面
可以相容。透過TWI 介面可以對AT24C01 讀寫。
3.2. 瞭解ARM開發板
(CPU 部分)
•按鈕RST 連接到SAM7S NRST 腳
,按下時NRST 拉低,可產生CPU
重置訊號。
•跳線 JTAGSEL 連接到 SAM7S
JTAGSEL 腳,一般使用時斷開。
•跳線ERASE 連接到SAM7S ERASE
腳,短接並上電可使SAM7S 抹除
內部Flash 與NVRAM 內容。
•跳線TST 連接到SAM7S TST 腳,
短接並上電可使SAM7S 回復SAMBA 連線程式到Flash 中。
•跳線ADVREF 為SAM7S AD 參考
電壓3.3V選擇跳線,
短接時
SAM7S AD 轉換參考電壓為3.3V。
3.2. 瞭解ARM開發板
(CPU 接腳引出及CPU I/O 擴充部分)
3.2. 瞭解ARM開發板
(I2C 部分)
AT24C04 為I2C 介面的串列EEPROM,跳線SCL 與SDA 用來選擇與
SAM7S PA4,PA3 連接。SAM7S 的PA4,PA3為TWI 介面,與I2C 介面
可以相容。透過TWI 介面可以對AT24C01 讀寫。
3.3. 安裝硬體工具
(Wiggler JTAG)
•除了有開發板之外,還必須有JTAG或ICE 硬體連接到開發板,使得PC
可與開發板連線控制。
•注意,因為Wiggler 本身並沒有硬體加速器,完全使用PC 的CPU 資源
產生時序訊號控制ARM 核心,所以PC 的CPU 不要太慢以免造成連線
不穩定,另外Windows 系統也不要有太多常駐程式,會影響JTAG 控
制訊號品質。
•請先將JTAG 的20Pin 插頭插到StartARM7 開發板上,另一端接到PC 的
並列埠(25Pin 印表機連接座)。開發板使用PC 的USB 供電,所以請先
將電源選擇跳線選擇USB 供電,並將USB 纜線連接到PC。
3.3. 安裝硬體工具
(安裝JTAG 連線程式)
JTAG,透過H-JTAG 程式,開發工具(IAR EW)才能透過Wiggler JTAG 與
開發板連線,最新的H-JTAG 程式可在 http://www.hjtag.com/ 取得。
3.3. 安裝硬體工具
(啟動H-JTAG 程式)
• 安裝完成後執行桌面上 H-JTAG 啟動
程式。
• 若開發板已經將Wiggler JTAG 與PC連
接, 並接上USB提供電源,H-JTAG
應該會偵測出CPU型號。
• 此時可以先按關閉視窗, H-JTAG 會
縮到系統狀態列
• 此時H-JTAG 仍保持運行狀態,使用
JTAG連線時必須保持 H-JTAG 於運行
狀態,請勿關閉。
3.4. 第一個範例程式
(SAM7S64.eww)
•請將開發板範例複製到硬碟個人的
子目錄,並將所有唯讀選項去除。
•首先開啟第一個範例『GPIO_c』。
•請到目錄 “GPIO\GPIO_c\IAR”目錄
下點兩下開啟 IAR EW 專案檔案
“SAM7S64.eww”, IAR EW 啟動後
畫面如右。
3.4. 第一個範例程式
(專案模式選擇)
專案模式有三種
• RAM_DEBUG:進入除錯(Debug)時,將程式碼載入RAM中除錯,不會把程
式碼燒到Flash,下載到RAM區域除錯速度較快。 但使用中斷功能時必須記
得將SRAM 區域映射到啟動區塊,IAR EW 可以幫我們完成記憶體映射,程
式不用再設定。
• FLASH_DEBUG:進入除錯(Debug)時,將程式碼載入Flash中除錯,載入時
需先進行Flash 寫入,IAR EW 會透過JTAG 自動完成。 Flash 區塊預設映射
到啟動區塊,但Flash 除錯執行速度較慢。
• BINARY:生成二進制檔案
3.4. 第一個範例程式
(IAR EW 專案瀏覽)
•進行JTAG工具設定,將滑鼠游標移
到專案檔上, 按右鍵Options叫出專
案設定視窗。
Device
選擇
AT91SAM7S64,選擇正確 CPU 可
使IAR 具有更強的工具支援。
3.4. 第一個範例程式
(設定編譯模式)
由於本課程主要使用 ARM
32bit 指令集,
不使用
Thumb 16bit 指令集,所以
請將編譯模式設定成 ARM
;SAM7S 資料排列選擇小
端 (Little-endian) 模式 。
3.4. 第一個範例程式
(設定連結格式)
依圖 勾選 C-SPY 選項,此步
驟命令IAR EW 產生除錯訊
息, 在進行除錯時才能顯示
除錯相關訊息。
3.4. 第一個範例程式
(設定輸出格式)
• 選擇其他格式輸出,在“Output
format"中可以選擇許多種輸
出格式,
常用的有intelextended (HEX 格式) 與 rawbinary (BIN 格式)。
• 如果希望同時產生Debug
CSPY 與其他檔案格式則 『
Output』分頁選擇 C-SPY 輸出
,並在『Extra Output』分頁選
擇額外輸出檔案格式即可。
3.4. 第一個範例程式
(設置除錯裝置)
•將游標點選 Debugger 項目
•Debugger 設定選項裡,選擇
Driver 為RDI, 另外如果覺
得 ARM 啟動代碼很複雜,
可以勾選 Run to [main]的選
項,在除錯時跳過啟動代碼
,直接執行到 main 程式位
置並停止。
3.4. 第一個範例程式
(設定下載模式)
•在Download 部分,如果
使用RAM_DEBUG 模式
選勾選 Verify download,
如右圖
•如果選擇
FLASH_DEBUG 則必須
勾選 Use flash loader(s),
當要在 Flash 區域除錯時
,IAR 會先透過 JTAG下
載程式碼於Flash內,之後
再進入除錯模式。
3.4. 第一個範例程式
(選擇RDI 驅動)
• 在 Debugger 選項選擇使
用RDI 介面,接下來到RDI
選項設置,選擇 RDI 驅動
程式。目前是使用H-JTAG
驅動程式。
• 在圖中按[…], 選擇HJTAG.dll的路徑, 一般HJTAG 會安裝在C:\ Program
Files\H-JTAG V0.4.x\ HJTAG.dll 路徑,
3.4. 第一個範例程式
(選擇RDI 驅動)
• 在 Debugger 選項選擇使
用RDI 介面,接下來到RDI
選項設置,選擇 RDI 驅動
程式。目前是使用H-JTAG
驅動程式。
• 在圖中按[…], 選擇HJTAG.dll的路徑, 一般HJTAG 會安裝在C:\ Program
Files\H-JTAG V0.4.x\ HJTAG.dll 路徑,
3.4. 第一個範例程式
(除錯按鈕)
•目前已經完成專案相關設定,可以先進入除錯模式體驗ARM 的功能。
•按下除錯 (Debug) 按鈕進入除錯模式。
3.4. 第一個範例程式
(IAR 除錯畫面)
進入除錯前IAR EW會利用JTAG下載程式到SAM7S的SRAM中,並作相關
設置,由於在Debugger 設置時有勾選 Run to [main]選項,所以IAR EW 在
主程式main 的位置停止。
在右圖中間為C 語言程式碼顯示
與編輯視窗,綠色箭頭指到目前
SAM7S CPU 執行位置;左邊的視
窗為專案導覽視窗,可以點選與
瀏覽本專案使用的檔案,右邊是
組語解譯(Disassembly) 視窗,在
除錯模式下才會出現,如果不需
要看可以按小視窗上方小x 按鈕關
掉此視窗。
3.4. 第一個範例程式
(除錯功能鍵)
接下來為程式單步追蹤功能,下圖為除錯功能鍵
•Reset:重置程序,使程式執行回
到最初狀態。
•Break:在游標處設置中斷點。
•Step Over:不進入子程序追蹤,直
接執行到下一道指令。
•Step Into:進入子程序追蹤。
•Step Out:直接執行到子程序返回
退出。
•Next Statement:下一行程式敘述,
以程式行為追蹤單位。
•Run To Cursor:程式直接執行到游
標位置後停止。
•Go:程式執行。
•Stop Debugging:退出除錯模式。
3.4. 第一個範例程式
(除錯操作)
按Step Over,單步執行程式並觀察開發板上LED 的變化。
單步執行時,可以把滑鼠移到變數上,IAR EW 會自動顯示該變數值。
3.4. 第一個範例程式
(除錯操作)
在IAR EW 選單選擇
View Locals, 可以
顯示區域變數視窗。
3.4. 第一個範例程式
(除錯操作)
• 在IAR EW 選單選擇View
Statics, 可以顯示全域
變數視窗。
• 接著試著設定中斷點,並
讓程式執行(Go),看看程
式是否在中斷點停止。
• 之後如果要修改程式,可
立即編修。但需要重新載
入才會執行編修後的結果
。再次按下Debug 按鈕就
會自動重新編譯與載入。
• 按下Stop Debugging 按鈕
,退出除錯模式。
3.5. 複製目錄(專案)
最快學習的方式就是參考別人的程式。StartARM7 包含許多範例程式,可
以 複 製 這 些 範 例 程 式 來 修 改 。 例 如 將 『GPIO_c』 複 製 一 份 成 為
『GPIO_c_copy』如下圖所示
3.5. 複製目錄(專案)
不過使用IAR EW 工具時必須注意:當開啟新複製專案『GPIO_c_copy』
的IAR 專案檔時,之前專案記錄已開啟的檔會被重新開啟,可是顯示的檔
案卻是原來專案的檔案,也就是『GPIO_c』內的檔案。此時編輯main.c 會
修改到『GPIO_c』內的main.c 而不是『GPIO_c_copy』的main.c。這點必須
特別注意。
3.5. 複製目錄(專案)
•最保險的方式是在複製目錄之後,第一次開啟專案檔時將所有已開啟的
檔案關閉。如下圖所示
•再點選左邊專案列表中的檔案重新開啟檔案,才會是正確的檔案路徑。
•如上圖所示,點選專案的檔案列表所開啟的檔案路徑才是新複製專案
『GPIO_c_copy』的檔案路徑。
3.6. 專案架構
StartARM7 使用IAR EW 作為開發工具,其中專案目錄架構分配如下:
•[IAR]:儲存IAR 專案檔設定與編譯產生的目的檔。
•[Include]:各種標頭檔,其中幾個重要的標頭檔說明如下:
•AT91SAM7S64.h:SAM7S64 定義檔,C 語言引入用。
•AT91SAM7S64.inc:SAM7S64 定義檔,組合語言引入用。
•lib_AT91SAM7S64.h:各種控制暫存器存取程序定義。
•Board.h:各種資料型態與StartARM7 開發板相關定義。
•[Modules]:各個模組驅動程式。
•[Resource]:IAR 系統資源設定檔。
•[Src]:主程式與應用程式碼。
•[Startup]:C 語言啟動程式與IRQ 處理程序。
3.6. 專案架構
(StartARM7 開發板定義程式)
在專案的[include]目錄中包含開發板定義檔 “Board.h”,其中定義了與開發
板佈局相關的定義。