1 / 45

第 3 章 ARM 開發工具

第 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.

Download Presentation

第 3 章 ARM 開發工具

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 3 章 ARM 開發工具 3.1. IAR Embedded Workbench for ARM 3.2. 瞭解ARM開發板 3.3. 安裝硬體工具 3.4. 第一個範例程式

  2. ARM 開發工具 本課程ARM程式的開發工具如下: ★ 開發軟體:IAR™ Embedded Workbench for ARM ★ 開發板套件:StartARM7 開發板,JTAG 連線

  3. 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 開發工具。

  4. 3.2. 瞭解ARM開發板

  5. 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

  6. 3.2. 瞭解ARM開發板(電源部分) PowerSEL 可以選擇使用外部電源或者USB 供電。外部電源經過7805 取得+5V 電源,USB 則是使用PC 提供+5V電源。由+5V 電源透過1117-330 再轉成+3.3V 提供CPU 與板上各元件操作電壓。

  7. 3.2. 瞭解ARM開發板(JTAG 部分) JTAG 接頭為標準ARM 20PIN JTAG 接頭。JATG 訊號直接連到CPU。CPU可直接透過JTAG 訊號重置,不需再使用外接的RESET 訊號,因此NRST 跳線可以不用連接。

  8. 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 為接地端。

  9. 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 連線打開/關閉。

  10. 3.2. 瞭解ARM開發板(UART 連線) StartARM7 提供兩組與PC RS-232 連線的介面。一組為SAM7S DBGU 連線,另一組為SAM7SUART0 連線。

  11. 3.2. 瞭解ARM開發板(LCD 部分) StartARM7開發板有搭配2x16文字型LCD。使用4bit資料傳輸方式,LCD_DB7-LCD_DB4 可透過跳線與PA14-PA11連接。PA8控制LCDRW,PA7 控制LCDRS,PA25 控制LCDE,PA24 控制LCD 背光。

  12. 3.2. 瞭解ARM開發板(AD 轉換電路部分) StartARM7 板上具有ADR4 與ADR5 兩組可變電阻分別接到SAM7S 的AD4 與AD5,透過調整ADR4 與ADR5 可以作AD 轉換實驗。SAM7S 的參考電壓由ADVREF 輸入。透過ADVREF 跳線連接到3.3V。用戶可自行更改ADVREF 電壓參考值。ADVREF 參考電壓可介於2.6V~VDDIN 之間。

  13. 3.2. 瞭解ARM開發板(AD 轉換電路部分) StartARM7 板上具有ADR4 與ADR5 兩組可變電阻分別接到SAM7S 的AD4 與AD5,透過調整ADR4 與ADR5 可以作AD 轉換實驗。SAM7S 的參考電壓由ADVREF 輸入。透過ADVREF 跳線連接到3.3V。用戶可自行更改ADVREF 電壓參考值。ADVREF 參考電壓可介於2.6V~VDDIN 之間。

  14. 3.2. 瞭解ARM開發板(蜂鳴器部分) 蜂鳴器可以使用PA0 控制,PA0 也可以當成PWM0 輸出。所以蜂鳴器可以使用一般GPIO 控制或使用PWM0 控制。

  15. 3.2. 瞭解ARM開發板(七段顯示器與SPI 部分) StartARM7板上有兩組七段顯示器,透過HC595 晶片控制。HC595 晶片為串列轉並列元件,可透SAM7S SPI 介面將資料送到HC595 後輸出。SPI訊號SPI_SPCK、SPI_MISO、SPI_MOSI與SPI_CS0可透過跳線與PA14-PA11連接。

  16. 3.2. 瞭解ARM開發板(LED 部分) LED1~LED4 透過PA21~PA24 控制明滅,跳線PA21~PA24 可以選擇PA21~PA24 是否用來控制LED1~LED4。

  17. 3.2. 瞭解ARM開發板(按鍵部分) KEY1~KEY4 分別使用SAM7S PA17~PA20 來控制。

  18. 3.2. 瞭解ARM開發板(I2C 部分) AT24C04 為I2C 介面的串列EEPROM,跳線SCL 與SDA 用來選擇與SAM7S PA4,PA3 連接。SAM7S 的PA4,PA3為TWI 介面,與I2C 介面可以相容。透過TWI 介面可以對AT24C01 讀寫。

  19. 3.2. 瞭解ARM開發板(CPU 部分) • 按鈕RST 連接到SAM7S NRST 腳,按下時NRST 拉低,可產生CPU 重置訊號。 • 跳線JTAGSEL連接到SAM7S JTAGSEL 腳,一般使用時斷開。 • 跳線ERASE 連接到SAM7S ERASE 腳,短接並上電可使SAM7S 抹除內部Flash 與NVRAM 內容。 • 跳線TST 連接到SAM7S TST 腳,短接並上電可使SAM7S 回復SAM-BA 連線程式到Flash 中。 • 跳線ADVREF 為SAM7S AD 參考電壓3.3V選擇跳線,短接時SAM7S AD 轉換參考電壓為3.3V。

  20. 3.2. 瞭解ARM開發板(CPU 接腳引出及CPU I/O 擴充部分)

  21. 3.2. 瞭解ARM開發板(I2C 部分) AT24C04 為I2C 介面的串列EEPROM,跳線SCL 與SDA 用來選擇與SAM7S PA4,PA3 連接。SAM7S 的PA4,PA3為TWI 介面,與I2C 介面可以相容。透過TWI 介面可以對AT24C01 讀寫。

  22. 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。

  23. 3.3. 安裝硬體工具(安裝JTAG 連線程式) JTAG,透過H-JTAG 程式,開發工具(IAR EW)才能透過Wiggler JTAG 與開發板連線,最新的H-JTAG 程式可在 http://www.hjtag.com/ 取得。

  24. 3.3. 安裝硬體工具(啟動H-JTAG 程式) • 安裝完成後執行桌面上H-JTAG 啟動程式。 • 若開發板已經將Wiggler JTAG 與PC連接,並接上USB提供電源,H-JTAG 應該會偵測出CPU型號。 • 此時可以先按關閉視窗,H-JTAG會縮到系統狀態列 • 此時H-JTAG 仍保持運行狀態,使用JTAG連線時必須保持H-JTAG 於運行狀態,請勿關閉。

  25. 3.4. 第一個範例程式(SAM7S64.eww) • 請將開發板範例複製到硬碟個人的子目錄,並將所有唯讀選項去除。 • 首先開啟第一個範例『GPIO_c』。 • 請到目錄“GPIO\GPIO_c\IAR”目錄下點兩下開啟IAR EW 專案檔案“SAM7S64.eww”,IAR EW 啟動後畫面如右。

  26. 3.4. 第一個範例程式(專案模式選擇) • 專案模式有三種 • RAM_DEBUG:進入除錯(Debug)時,將程式碼載入RAM中除錯,不會把程式碼燒到Flash,下載到RAM區域除錯速度較快。但使用中斷功能時必須記得將SRAM 區域映射到啟動區塊,IAR EW 可以幫我們完成記憶體映射,程式不用再設定。 • FLASH_DEBUG:進入除錯(Debug)時,將程式碼載入Flash中除錯,載入時需先進行Flash 寫入,IAR EW 會透過JTAG 自動完成。Flash 區塊預設映射到啟動區塊,但Flash 除錯執行速度較慢。 • BINARY:生成二進制檔案

  27. 3.4. 第一個範例程式(IAR EW 專案瀏覽) • 進行JTAG工具設定,將滑鼠游標移到專案檔上,按右鍵Options叫出專案設定視窗。Device選擇AT91SAM7S64,選擇正確CPU 可使IAR 具有更強的工具支援。

  28. 3.4. 第一個範例程式(設定編譯模式) 由於本課程主要使用 ARM 32bit指令集,不使用Thumb 16bit 指令集,所以請將編譯模式設定成ARM;SAM7S資料排列選擇小端(Little-endian)模式 。

  29. 3.4. 第一個範例程式(設定連結格式) 依圖 勾選C-SPY 選項,此步驟命令IAR EW 產生除錯訊息,在進行除錯時才能顯示除錯相關訊息。

  30. 3.4. 第一個範例程式(設定輸出格式) • 選擇其他格式輸出,在“Output format"中可以選擇許多種輸出格式,常用的有intel-extended (HEX 格式)與raw-binary(BIN 格式)。 • 如果希望同時產生Debug C-SPY 與其他檔案格式則『Output』分頁選擇C-SPY 輸出,並在『Extra Output』分頁選擇額外輸出檔案格式即可。

  31. 3.4. 第一個範例程式(設置除錯裝置) • 將游標點選Debugger 項目 • Debugger 設定選項裡,選擇Driver 為RDI,另外如果覺得ARM 啟動代碼很複雜,可以勾選 Run to [main]的選項,在除錯時跳過啟動代碼,直接執行到main 程式位置並停止。

  32. 3.4. 第一個範例程式(設定下載模式) • 在Download 部分,如果使用RAM_DEBUG 模式選勾選 Verify download,如右圖 • 如果選擇FLASH_DEBUG則必須勾選Use flash loader(s),當要在Flash 區域除錯時,IAR 會先透過JTAG下載程式碼於Flash內,之後再進入除錯模式。

  33. 3.4. 第一個範例程式(選擇RDI 驅動) • 在Debugger 選項選擇使用RDI 介面,接下來到RDI 選項設置,選擇RDI 驅動程式。目前是使用H-JTAG 驅動程式。 • 在圖中按[…],選擇H-JTAG.dll的路徑,一般H-JTAG 會安裝在C:\Program Files\H-JTAG V0.4.x\H-JTAG.dll 路徑,

  34. 3.4. 第一個範例程式(選擇RDI 驅動) • 在Debugger 選項選擇使用RDI 介面,接下來到RDI 選項設置,選擇RDI 驅動程式。目前是使用H-JTAG 驅動程式。 • 在圖中按[…],選擇H-JTAG.dll的路徑,一般H-JTAG 會安裝在C:\Program Files\H-JTAG V0.4.x\H-JTAG.dll 路徑,

  35. 3.4. 第一個範例程式(除錯按鈕) • 目前已經完成專案相關設定,可以先進入除錯模式體驗ARM 的功能。 • 按下除錯 (Debug) 按鈕進入除錯模式。

  36. 3.4. 第一個範例程式(IAR 除錯畫面) 進入除錯前IAR EW會利用JTAG下載程式到SAM7S的SRAM中,並作相關設置,由於在Debugger 設置時有勾選 Run to [main]選項,所以IAR EW 在主程式main 的位置停止。 在右圖中間為C 語言程式碼顯示與編輯視窗,綠色箭頭指到目前SAM7S CPU 執行位置;左邊的視窗為專案導覽視窗,可以點選與瀏覽本專案使用的檔案,右邊是組語解譯(Disassembly) 視窗,在除錯模式下才會出現,如果不需要看可以按小視窗上方小x 按鈕關掉此視窗。

  37. 3.4. 第一個範例程式(除錯功能鍵) 接下來為程式單步追蹤功能,下圖為除錯功能鍵 • Reset:重置程序,使程式執行回到最初狀態。 • Break:在游標處設置中斷點。 • Step Over:不進入子程序追蹤,直接執行到下一道指令。 • Step Into:進入子程序追蹤。 • Step Out:直接執行到子程序返回退出。 • Next Statement:下一行程式敘述,以程式行為追蹤單位。 • Run To Cursor:程式直接執行到游標位置後停止。 • Go:程式執行。 • Stop Debugging:退出除錯模式。

  38. 3.4. 第一個範例程式(除錯操作) 按Step Over,單步執行程式並觀察開發板上LED 的變化。 單步執行時,可以把滑鼠移到變數上,IAR EW 會自動顯示該變數值。

  39. 3.4. 第一個範例程式(除錯操作) 在IAR EW 選單選擇View􀃆Locals, 可以顯示區域變數視窗。

  40. 3.4. 第一個範例程式(除錯操作) • 在IAR EW 選單選擇View􀃆Statics, 可以顯示全域變數視窗。 • 接著試著設定中斷點,並讓程式執行(Go),看看程式是否在中斷點停止。 • 之後如果要修改程式,可立即編修。但需要重新載入才會執行編修後的結果。再次按下Debug 按鈕就會自動重新編譯與載入。 • 按下Stop Debugging 按鈕,退出除錯模式。

  41. 3.5. 複製目錄(專案) 最快學習的方式就是參考別人的程式。StartARM7 包含許多範例程式,可以複製這些範例程式來修改。例如將『GPIO_c』複製一份成為『GPIO_c_copy』如下圖所示

  42. 3.5. 複製目錄(專案) 不過使用IAR EW 工具時必須注意:當開啟新複製專案『GPIO_c_copy』的IAR 專案檔時,之前專案記錄已開啟的檔會被重新開啟,可是顯示的檔案卻是原來專案的檔案,也就是『GPIO_c』內的檔案。此時編輯main.c 會修改到『GPIO_c』內的main.c 而不是『GPIO_c_copy』的main.c。這點必須特別注意。

  43. 3.5. 複製目錄(專案) • 最保險的方式是在複製目錄之後,第一次開啟專案檔時將所有已開啟的檔案關閉。如下圖所示 • 再點選左邊專案列表中的檔案重新開啟檔案,才會是正確的檔案路徑。 • 如上圖所示,點選專案的檔案列表所開啟的檔案路徑才是新複製專案『GPIO_c_copy』的檔案路徑。

  44. 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 處理程序。

  45. 3.6. 專案架構(StartARM7 開發板定義程式) 在專案的[include]目錄中包含開發板定義檔 “Board.h”,其中定義了與開發板佈局相關的定義。

More Related