1 概述
本文介紹使用ARM DS-5創(chuàng)建一個裸機程序,并用DS-5里面的ARM編譯器進行編譯,編譯之后通過DSTREAM仿真器將程序加載到MYD-SAMA5D34開發(fā)板的SRAM(內(nèi)存)上。
通過DS-5和DSTREAM,就可以對SRAM上的程序進行調(diào)試,包括單步調(diào)試、全速運行、設(shè)置斷點、寄存器、變量和函數(shù)調(diào)用等。
本文的程序是一個簡單的打印程序,程序在MYD-SAMA5D34開發(fā)板SRAM上運行,通過DSTREAM仿真器的半主機機制將打印信息傳送到主機上,在DS-5上顯示。
說明:如果是應(yīng)用程序開發(fā),請?zhí)^這一章節(jié),直接進入《ARM DS-5創(chuàng)建和編譯linux應(yīng)用程序》及其后面的 章節(jié),因為裸機程序和kernel調(diào)試部分都用到DSTREAM仿真器,沒有則無法進行。直接進行應(yīng)用程序的開發(fā)可以不用DSTREAM仿真器,直接使用DS-5就可以了。
2 設(shè)備
編號 |
設(shè)備 |
數(shù)量 |
用途 |
1 |
PC機 |
1 |
搭建整個開發(fā)平臺,包括安裝DS-5軟件,并通過DS-5編譯程序。 |
2 |
DS-5開發(fā)工具 |
1 |
ARM開發(fā)工具,在Linux或者Window主機下使用其自帶的Gcc編譯Linux應(yīng)用程序。
本文適用 DS-5 30天評估板請參考設(shè)備介紹中的鏈接。 |
3 |
DSTREAM仿真器 |
1 |
在調(diào)試開發(fā)板時,DSTREAM在PC機和開發(fā)板之間,用以接受PC機上DS-5的調(diào)試命令,并控制開發(fā)板執(zhí)行。 |
4 |
MYD-SAMA5D34 (D31/33/35)開發(fā)板 |
1 |
米爾科技基于Atmel芯片ARM Cortex-A5內(nèi)核開發(fā)板,板載的Linux和Android操作系統(tǒng)可以完整結(jié)合ARM DS-5進行開發(fā)。 本文用到開發(fā)板的5V電源、串口線和網(wǎng)線等配件 |
3 設(shè)備介紹
關(guān)于本例程使用的設(shè)備,除PC機是通用的設(shè)備不做介紹以外,其他設(shè)備請參考以下地址了解詳細情況。
(1)ARM DS-5詳細介紹:http://www.myir-tech.com/product/ds-5.htm。
(2)獲取ARM DS-5的30天評估板:http://www.myir-tech.com/faq_list.asp?id=473。
(3)MYD-SAMA5D34(D31/33/35)開發(fā)板詳細介紹:http://www.myir-tech.com/product/myd-sama5d3x.htm。
(4)MYD-SAMA5D34(D31/33/35)核心板/工控板詳細介紹:http://www.myir-tech.com/product/myc-sama5d3x.htm。
(5)DSTREAM仿真器詳細介紹:http://www.myir-tech.com/product/dstream.htm。
4 開發(fā)步驟
M1 創(chuàng)建工程并生成二進制文件
(1)從開發(fā)菜單選擇“ARM DS-5” > “Eclipse for DS-5”打開DS-5,或者直接雙擊DS-5桌面快捷圖標(biāo)(需自己創(chuàng)建)打開。然后點擊“Go to the workbench”進入DS-5的工程管理界面。
(2)選擇菜單欄 File > New > Project,在彈出的對話框中選擇“C/C++”下的“C Project”,再點擊“Next”。
(3)在C++ Project對話框中,“Project name”中輸入工程名稱,我們這里以“MYD-SAMA5D34”作為工程名稱,再點選“Bare-metal Executable”下的“Empty Project”,點擊“Next”進入下一步,如下圖:
(4)進入下一步后,點擊“Finish”完成新建并進入工作界面。
此時在DS-5左側(cè)的工程管理器(project explorer)會看到新創(chuàng)建的工程“MYD-SAMA5D34”,展開會看到”Includes”下自動包含了一些目錄,這些是我們編譯的時候要用到的,DS-5已經(jīng)自動添加好了。
(5)再選擇菜單File > New > source file”,彈出對話框中的“source file”中輸入文件名為”main.c”的C文件,點擊“Finish”完成。
(6)自動打開“main.c”文件后(或者雙擊打開),在注釋后面添加mian()函數(shù)代碼并保存。
/*
* main.c
*
* Created on: 2013-8-27
* Author: GARY
*
* Copyright: Shenzhen MYIR Tech Limited
* Support: www.myir-tech.com/bbs/
*
*/
#include
int main(int argc, char** argv)
{
while(1){
printf("Welcome to ARM DS-5!\n"); //打印內(nèi)容
}
return 0;
}
添加后如下圖:
(7)接下來我們還要創(chuàng)建一個“scatter”文件。擇菜單File > New >“Other…”,在彈出的對話框中選擇“scatter file editor” > “scatter file”,點擊“next”進入下一步。
(8)在父項目框中選擇剛剛創(chuàng)建的工程“MYD-SAMA5D34”,“File name”欄輸入scatter文件的名稱,我們這里用“sama5d3”(該文件可以用于MYD-SAMA5D3X系列開發(fā)板,包括MYD-SAMA5D31、MYD-SAMA5D33、MYD-SAMA5D34、MYD-SAMA5D35)。點擊“finish”完成,如下圖。
(9)DS-5自動打開“sama5d3.scat”文件,我們在文件中輸入如下的信息,具體可參考芯片用戶手冊中的SRAM地址。
SRAM 0x00300000
{
APP_CODE +0
{
* (+RO, +RW, +ZI)
}
ARM_LIB_STACKHEAP 0x00301000 EMPTY 0x00001000 ; Application heap and stack
{ }
}
輸入完成后如下圖。
(10)然后我們要配置一下編譯選項。點擊“MYD-SAMA5D34”工程,選擇菜單“Project” > “Properties”打開“Properties for MYD-SAMA5D34”對話框。如下圖,顯示工程的一些基本信息。
(11)選擇左側(cè)的“C/C++ Build”,點選其中的“general makefile automatically”(默認也是選擇),表示使用DS-5自動生成的Makefile文件。如果要用自己手動編寫的makefile文件,需要取消點選該項。
(12)點擊“C/C++ Build”前面的三角符號,點擊“Settings”選項,配置右側(cè)的“Tool Settings”編譯工具。
“ARM C Compiler” > “Code Generation” > “Target CPU (--cpu)”配置為“Cortex-A5”。
“ARM Assembler” > “Code Generation” > “Target CPU (--cpu)”配置為“Cortex-A5”。
“ARM Linker” > “Image Layout” > “Scatter file (--scatter)”選擇上面創(chuàng)建的scatter文件的地址,如下圖。
配置好后,點擊“OK”完成并返回工程管理界面。
(13)點選工程管理器(Project Explorer)下的“MYD-SAMA5D34”工程,選擇菜單”Project” >“Build Project”編譯工程。此時DS-5會自動在“Debug”目錄下創(chuàng)建makefile文件,并按照這些規(guī)則進行編譯。
如果Problems欄下沒有“Error”提示,說明編譯成功,同時在“MYD-SAMA5D34”工程的“Debug”目錄下生成二進制文件“MYD-SAMA5D34.axf”,如下圖。
M2 連接開發(fā)板
(14)連接好DSTREAM仿真器,包括DSTREAM仿真器5V電源線、轉(zhuǎn)接板、USB線(或網(wǎng)線)。
(15)連接好MYD-SAMA5D34開發(fā)板,包括開發(fā)板5V電源線、DSTREAM上的20PIN-JTAG調(diào)試線、以及串口線。
(16)給開發(fā)板上電,通過串口終端將開發(fā)板停止在“u-boot”界面,如下圖。這樣做是防止開發(fā)板進入系統(tǒng),影響裸機調(diào)試。
M3 調(diào)試配置
(16)點選工程管理器(Project Explorer)下的“MYD-SAMA5D34”工程,選擇菜單“Run” > “Debug Configurations…”,在彈出的對話框中右擊“DS-5 Debugger”,選擇“New”新建一個調(diào)試選項。
(17)在新建的調(diào)試選項中,將調(diào)試選項名稱改為“MYD-SAMA5D34_Debug”。在“Connection”選項的filter platform中輸入“SAMA5D3”,然后選擇過濾后 “SAMA5D3x”下 “Bare Metal Debug” > “Debug cortex-a5 via DSTREAM/RVI”。選項的目的是,通過DSTREAM對MYD-SAMA5D34開發(fā)板進行裸機調(diào)試。如下圖。
然后再點擊“connections”中的“Browse…”按鈕,選擇DS-5搜索到的DSTREAM仿真器,選擇后點擊“OK”使用該仿真器,如下圖。
(18)點擊調(diào)試選項名稱下方的“File”選項,在“Target Configuration”下點擊“Workspace…”按鈕,然后從“Open”對話框中選擇上面生成的二進制文件。
添加后如下圖,然后選擇“Load symbols”。
(19)點擊“Debug”按鈕開始調(diào)試。出現(xiàn)提示是否切換到調(diào)試窗口,點擊“Yes”即可。
(20)如果連接成功,可看到藍色標(biāo)示的“connected”文字,同時調(diào)試控制窗口顯示開發(fā)板相應(yīng)的內(nèi)核。如下圖,DS-5已經(jīng)連接上了開發(fā)吧,并且顯示當(dāng)前連接SAMA5D34里面的第一個Cortex-A5核(如果有多個核,會用#1、#2等標(biāo)注多核的序號)。
(21)點擊如上圖的綠色三角形“”,程序就會全速運行,在“App console”欄會打印從MYD-SAMA5D34開發(fā)板打印的信息。如下圖。
M4 調(diào)試視圖詳解
(21)還是上面的圖 “調(diào)試控制欄”,顯示當(dāng)前所有的調(diào)試名稱,并且可以進行調(diào)試控制。
上圖中,各控制按鈕的作用為:
?連接目標(biāo)板
?斷開連接
??刪除連接
?從main函數(shù)或者entry point調(diào)試
?繼續(xù)全速運行
?停止運行
???單步調(diào)試
?選擇按C程序單步調(diào)試,或者按匯編程序調(diào)試
(22)命令欄,可以在“commands”后面敲入命令,讓開發(fā)板執(zhí)行,比如敲入“step”就會進行單步調(diào)試。鼠標(biāo)位于輸入框內(nèi),按“Alt + /”可獲得命令提示。
(23)歷史欄,顯示所有歷史使用的命令。
(24)變量欄,顯示程序使用的所有變量,在調(diào)試的時候可以進行修改。
(25)寄存器欄,顯示內(nèi)核里面的所有寄存器,在調(diào)試的時候可以對寄存器進行修改。
(25)函數(shù)欄,顯示程序使用的所有函數(shù),以及它們的開始和結(jié)束地址。
(25)源代碼欄,顯示源代碼。
(26)匯編程序欄,顯示程序?qū)?yīng)的匯編程序、地址和操作數(shù)等。
(27)存儲器欄,通過輸入地址和大小,可以看到相應(yīng)存儲器的內(nèi)容。如下圖,地址輸入“0x00300000”(內(nèi)部SRAM地址),大小輸入“1024”,就可以看到對應(yīng)的存儲地址的值。
(28)應(yīng)用程序控制臺,這里顯示了通過半主機機制從開發(fā)板(如MYD-SAMA5D34)返回的打印信息。
(29)另外,還有一個比較重要的欄目“Progress”。有時候調(diào)試配置不正確,DS-5會一直“connecting”,從“調(diào)試控制”欄目又無法停止,這時候就要通過“progress”來停止了,如下圖使用進度條后面的紅色按鈕就可以停止了。
“Progress”可以從菜單欄“window” > “show view” > “Progress”調(diào)出。
以上就是使用ARM DS-5和DSTREAM仿真器對裸機進行調(diào)試的內(nèi)容。
5 說明
本文使用的是DS-5自帶的gcc編譯器,適用于ARM Cortex-A5/A7/A8/A9/A12/A15 Linux系統(tǒng),包括但不限于以下芯片系統(tǒng):
Avnet ZedBoard, Freescale i.MX6 Dual, Mindspeed T2200 / T3300, pandaboard.org OMAP 5432, Renesas RZ/A1H R7S721001, ST-Ericsson U8540, TI OMAP 543X and TI TMDX570LS04HDK / TMDX570LS12HDK / TMDX570LS31HDK / TMDXRM42HDK / TMDXRM46HDK / TMDXRM48HDK
Altera Arria V SoC, Altera Cyclone V SoC and Atmel ATSAMA5D3x
ARM Versatile Express AEMv7A RTSM (configured as Cortex-A15), ARM Versatile Express Cortex-A15x1 + Cortex-A7x1 RTSM, ARM Versatile Express Cortex-A15x4 + Cortex-A7x4 RTSM, ARM Versatile Express Cortex-A15x1 RTSM, ARM Versatile Express Cortex-A15x2 RTSM, ARM Versatile Express Cortex-A15x4 RTSM, ARM Versatile Express V2P Cortex-A15x2 + Corex-A7x3 and Freescale Vybrid VF6xx
ARM Versatile Express V2P Cortex-A15, ARM Versatile Express with Cortex-A15 NEON Soft Macrocell Model, ARM Versatile Express with Cortex-R5x2, ARM Versatile Express Cortex-A15x4 + CortexA7x4 RTSM, CALAO Systems Snowball board, NVIDIA Tegra 3, PandaBoard ES, ST-Ericsson AP9500, TI AM3352/4/6/7/8/9 / OMAP 4460 and Xilinx Zynq-7000 EPP ZC702
ARM Emulation Baseboard with ARM1156T2F-S Core Tile, ARM Versatile Express with Cortex-A15x2 Soft Macrocell Model, Atmel AT91SAM9G25 / AT91SAM9X35, LG Electronics L9, Mindspeed M84000 (Transcede 4000) and NXP LPC3131 / LPC3141 / LPC3152,
ARM Microcontroller Prototyping System (Cortex-M0/Cortex-M1/Cortex-M4), Keil MCBSTR9, ST STA2064/65, ST STR912, TI AM1707 / AM1808 / DM3725 / DM3730 / DM8168 / OMAP 3530 / OMAP L138
ARM Emulation Baseboard with ARM11 MPCore or Cortex-R4F Core Tile, ARM Microcontroller Prototyping System (Cortex-M3), ARM Platform Baseboard for ARM1176JZF-S, ARM Versatile Express A5x2, ARM Versatile Express with Cortex-A15 Soft Macrocell Model, Atmel AT91SAM9M10 / AT91SAM9G35 / AT91SAM9263-EK, CSR SiRFprimaII, Freescale i.MX233, Kyoto KZM-A9-Dual, ST SPEAr1310 and TI DM6467 / Blaze MDP
Atmel AT91SAM9M10, Core Logic CLM9721, Freescale i.MX50, nVidia Tegra 250, Samsung Exynos 4210, ST SPEAr 600, ST-Ericsson U8500 and TI Sitara AM1707/AM1808/AM387x, Integra C6A814x, and OMAP4430。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35295 -
安卓
+關(guān)注
關(guān)注
5文章
2126瀏覽量
57144 -
米爾科技
+關(guān)注
關(guān)注
5文章
227瀏覽量
20957
發(fā)布評論請先 登錄
相關(guān)推薦
評論