版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章基于SoCEDS的嵌入式系統(tǒng)設(shè)計(jì)7.1SoCEDS簡(jiǎn)介7.2DS-5設(shè)計(jì)輸入7.3設(shè)計(jì)項(xiàng)目的編譯7.4設(shè)計(jì)項(xiàng)目的調(diào)試7.5基于ARM編譯器的裸機(jī)實(shí)例7.6基于GNU編譯器的裸機(jī)實(shí)例7.7ARMStreamline硬件性能分析器第7章基于SoCEDS的嵌入式系統(tǒng)設(shè)計(jì)7.1SoC
7.1SoCEDS簡(jiǎn)介
7.1.1SoCEDS嵌入式系統(tǒng)設(shè)計(jì)套件Altera公司的嵌入式系統(tǒng)設(shè)計(jì)套件(SystemonaChipEmbeddedDesignSuite,SoCEDS)是針對(duì)AlteraSoC器件的綜合軟件設(shè)計(jì)工具。應(yīng)用SoCEDS能夠進(jìn)行高效軟件開(kāi)發(fā),提升軟件質(zhì)量,加快產(chǎn)品上市時(shí)間。SoCEDS可以完成基于AlteraSoCFPGA器件所有軟件的開(kāi)發(fā),如圖7.1所示。
7.1SoCEDS簡(jiǎn)介
7.1.1SoCEDS圖7.1AlteraSoC嵌入式設(shè)計(jì)套裝圖7.1AlteraSoC嵌入式設(shè)計(jì)套裝
1.?Altera版ARMDevelopmentStudio5(DS-5)工具包
AlteraSoCEDS開(kāi)發(fā)套件的核心是Altera版ARMDevelopmentStudio5(DS-5)工具包。ARMDS-5高級(jí)多核調(diào)試功能與FPGA自適應(yīng)功能相結(jié)合,無(wú)縫鏈接至Altera的SignalTap?Ⅱ嵌入式邏輯分析器。SoCEDS套件結(jié)合了業(yè)界增強(qiáng)型ARMDS-5工具套裝以及AlteraSoC器件,為嵌入式開(kāi)發(fā)人員提供了前所未有的全芯片可視化控制功能。
1.?Altera版ARMDevelopment
1)完整的開(kāi)發(fā)環(huán)境
作為AlteraSoCEDS的一部分,Altera版ARMDS-5工具包為AlteraSoC器件提供了完整的嵌入式開(kāi)發(fā)工具,其主要特性包括:
(1)支持電路板開(kāi)發(fā)、驅(qū)動(dòng)開(kāi)發(fā)、操作系統(tǒng)(OS)移植、裸金屬和Linux應(yīng)用程序開(kāi)發(fā)。
(2)支持應(yīng)用程序開(kāi)發(fā),包括支持開(kāi)發(fā)基于Linux的應(yīng)用程序的Yocto插件。
(3)支持開(kāi)發(fā)并調(diào)試多核芯片以對(duì)稱多處理(SMP)和非對(duì)稱多處理(AMP)模式運(yùn)行的系統(tǒng)。
1)完整的開(kāi)發(fā)環(huán)境
作為AlteraSoCE
(4)基于ARM體系結(jié)構(gòu)的多核調(diào)試功能,為AlteraSoC器件提供FPGA自適應(yīng)調(diào)試
功能。
(5)采用集成在FPGA架構(gòu)中的ARMCoreSight跟蹤宏單元,支持ARMCortex-A9處理器以及任何定制內(nèi)核進(jìn)行同時(shí)調(diào)試,并提供跟蹤連接。
(6)?ARM流線性能分析器采用來(lái)自SoC和FPGA域的性能計(jì)數(shù)器,實(shí)現(xiàn)全系統(tǒng)級(jí)分析。
圖7.2所示的ARMDS-5工具包支持對(duì)Linux應(yīng)用程序的調(diào)試。
(4)基于ARM體系結(jié)構(gòu)的多核調(diào)試功能,為Alter圖7.2DS-5對(duì)Linux應(yīng)用程序的調(diào)試圖7.2DS-5對(duì)Linux應(yīng)用程序的調(diào)試
2)?FPGA自適應(yīng)調(diào)試
由于在FPGA中采用了定制邏輯,因此,每一個(gè)基于SoC的系統(tǒng)都是獨(dú)一無(wú)二的。為了能夠高效地調(diào)試系統(tǒng),Altera版ARMDS-5工具包動(dòng)態(tài)適應(yīng)用戶的不同配置,統(tǒng)一了來(lái)自CPU和FPGA域的所有軟件調(diào)試信息,在標(biāo)準(zhǔn)DS-5用戶界面中以分組的方式呈現(xiàn)這些信息。Altera和ARM開(kāi)發(fā)的工具包可幫助設(shè)計(jì)者提高設(shè)計(jì)調(diào)試的可視化和控制功能,有效提高設(shè)計(jì)效能。
2)?FPGA自適應(yīng)調(diào)試
由于在FPGA中采用
與AlteraSignalTap?Ⅱ嵌入式邏輯分析儀一起使用,該工具包為CPU和FPGA域之間的高級(jí)信號(hào)級(jí)硬件提供了交叉觸發(fā)功能。通過(guò)該功能,軟件和FPGA設(shè)計(jì)人員可以分析并采集硬件至軟件邊界的蹤跡,進(jìn)行協(xié)同調(diào)試。如圖7.3所示,通過(guò)在SignalTap?Ⅱ嵌入式邏輯分析儀中的觸發(fā)點(diǎn)設(shè)置,可啟動(dòng)軟件蹤跡采集。
與AlteraSignalTap?Ⅱ嵌入式邏輯分析儀圖7.3SignalTap?Ⅱ邏輯分析儀中的觸發(fā)點(diǎn)設(shè)置圖7.3SignalTap?Ⅱ邏輯分析儀中的觸發(fā)點(diǎn)設(shè)置
3)與Altera工具和開(kāi)發(fā)套件的兼容性
ARMDS-5工具包和其他Altera基于JTAG的工具可以通過(guò)AlteraUSB-Blaster電纜連接至AlteraSoC電路板。該工具包還可以對(duì)所有AlteraSoC開(kāi)發(fā)套件和兼容電路板上的閃存ROM進(jìn)行編程。
3)與Altera工具和開(kāi)發(fā)套件的兼容性
AR
2.硬件和軟件之間的交互開(kāi)發(fā)方式
Altera硬件和軟件之間的交互開(kāi)發(fā)方式支持硬件和軟件工程師按照自己熟悉的設(shè)計(jì)流程獨(dú)立工作。交互方式采用了AlteraQuartus?Ⅱ和Qsys生成的輸出文件,產(chǎn)生軟件設(shè)計(jì)流程中所需的接口文件。軟件工程師可以盡量避免參與FPGA開(kāi)發(fā),而將精力集中在軟件設(shè)計(jì)上,因而具有更高的效率。圖7.4給出了Altera集成開(kāi)發(fā)環(huán)境中硬件和軟件之間的交互開(kāi)發(fā)方式結(jié)構(gòu)圖。
2.硬件和軟件之間的交互開(kāi)發(fā)方式
Altera硬件圖7.4硬件和軟件之間的交互開(kāi)發(fā)方式圖7.4硬件和軟件之間的交互開(kāi)發(fā)方式
3.?Linux應(yīng)用開(kāi)發(fā)
(1)?SoCEDS:包括U-Boot和Linux開(kāi)發(fā)環(huán)境、源文件以及經(jīng)過(guò)預(yù)編譯的庫(kù)。對(duì)于Altera
SoC電路板,可以立即運(yùn)行這些庫(kù),迅速開(kāi)始軟件開(kāi)發(fā)工作。
(2)?Yocto支持:Linux開(kāi)發(fā)環(huán)境基于開(kāi)源Yocto工程,為開(kāi)發(fā)人員提供了開(kāi)放的、高性價(jià)比的通用解決方案。
3.?Linux應(yīng)用開(kāi)發(fā)
(1)?SoCED
4.SoC硬件庫(kù)
SoCEDS包括嵌入式應(yīng)用程序二進(jìn)制接口(EABI)GNU編譯器工具鏈和SoC硬件庫(kù),支持裸機(jī)(bare-metal)應(yīng)用開(kāi)發(fā)。SoC硬件庫(kù)提供底層軟件接口,以支持SoC硬件實(shí)現(xiàn),這一應(yīng)用程序接口(API)方便了SoC硬件資源的使用、配置和控制。圖7.5所示為SoC的硬件庫(kù)結(jié)構(gòu)層描述。
4.SoC硬件庫(kù)
SoCEDS包括嵌入式應(yīng)用程序圖7.5SoC的硬件庫(kù)結(jié)構(gòu)層描述圖7.5SoC的硬件庫(kù)結(jié)構(gòu)層描述
SoC硬件庫(kù)的應(yīng)用包括:
(1)電路板開(kāi)發(fā)支持;
(2)對(duì)SoC硬件的底層訪問(wèn)功能;
(3)器件驅(qū)動(dòng)開(kāi)發(fā);
(4)診斷工具開(kāi)發(fā);
(5)定制啟動(dòng)加載程序開(kāi)發(fā);
(6)操作系統(tǒng)移植;
(7)裸機(jī)應(yīng)用開(kāi)發(fā)。
SoC硬件庫(kù)的應(yīng)用包括:
(1)電路板開(kāi)發(fā)支持;
7.1.2SoCEDS安裝
1.?SoCEDS的安裝步驟
(1)在Altera官方網(wǎng)站下載安裝程序SoCEDSSetup-32.exe或更高版本軟件。網(wǎng)址為/download/software/soc-eds。下載完成后雙擊運(yùn)行。
(2)點(diǎn)擊Next,選擇Iaccepttheagreement,點(diǎn)擊Next,如圖7.6所示。
7.1.2SoCEDS安裝
1.?SoCED圖7.6接受授權(quán)協(xié)議圖7.6接受授權(quán)協(xié)議
(3)選擇所需的安裝路徑,點(diǎn)擊Next,如圖7.7所示。圖7.7選擇安裝路徑
(3)選擇所需的安裝路徑,點(diǎn)擊Next,如圖7.7所
(4)繼續(xù)點(diǎn)擊Next,SoCEDS進(jìn)行安裝。安裝完成后點(diǎn)Finish,自動(dòng)彈出ARMDS-5安裝程序。
(5)在ARMDS-5安裝對(duì)話框中,點(diǎn)擊Next。
(6)選擇接受LicenseAgreement項(xiàng),點(diǎn)擊Next,如圖7.8所示。
(7)點(diǎn)擊Next,可按默認(rèn)路徑安裝,也可點(diǎn)擊Browse更改安裝路徑,如圖7.9所示。
(4)繼續(xù)點(diǎn)擊Next,SoCEDS進(jìn)行安裝。安裝圖7.8接受LicenseAgreement圖7.8接受LicenseAgreement圖7.9更改安裝路徑圖7.9更改安裝路徑
(8)選擇所需安裝目錄,點(diǎn)擊OK,如圖7.10所示。
(9)返回圖7.9所示界面,點(diǎn)擊Next,再次點(diǎn)擊Next,出現(xiàn)DS-5安裝對(duì)話框后,點(diǎn)擊Install按鈕開(kāi)始安裝。安裝程序顯示ARMDS-5的安裝進(jìn)度。
(10)安裝完成后,自動(dòng)彈出DS-5驅(qū)動(dòng)安裝向?qū)?duì)話框,點(diǎn)擊下一步開(kāi)始安裝。最后點(diǎn)擊Finish按鈕完成DS-5安裝。
(8)選擇所需安裝目錄,點(diǎn)擊OK,如圖7.10所示。圖7.10選擇DS-5安裝目錄圖7.10選擇DS-5安裝目錄
2.安裝DS-5License文件
(1)在Windows操作系統(tǒng)下,點(diǎn)擊開(kāi)始→所有程序→ARMDS-5→EclipseforDS-5,啟動(dòng)EclipseforDS-5。
也可以通過(guò)命令行終端啟動(dòng)EclipseforDS-5,在DS-5安裝目錄embedded下選中Embedded_Command_Shell.bat文件,并用鼠標(biāo)左鍵雙擊該文件,即可啟動(dòng)Shell命令行終端,在命令行終端輸入eclipse,即可啟動(dòng)EclipseforDS-5,如圖7.11所示。
2.安裝DS-5License文件
(1)在圖7.11通過(guò)命令行終端啟動(dòng)Eclipse圖7.11通過(guò)命令行終端啟動(dòng)Eclipse
(2)啟動(dòng)Eclipse后,設(shè)置工作空間對(duì)話框?qū)?huì)彈出。點(diǎn)擊Browse,設(shè)置所需的工作空間,點(diǎn)擊OK,如圖7.12所示。圖7.12設(shè)定DS-5的工作空間
(2)啟動(dòng)Eclipse后,設(shè)置工作空間對(duì)話框?qū)?huì)彈
(3)在Eclipse開(kāi)發(fā)環(huán)境主界面選擇Help,點(diǎn)擊ARMLicenseManager菜單命令,彈出ARMLicenseManager對(duì)話框,如圖7.13所示。
注意:以下操作必須在計(jì)算機(jī)網(wǎng)絡(luò)連接正常的情況下進(jìn)行。
(3)在Eclipse開(kāi)發(fā)環(huán)境主界面選擇Help,圖7.13打開(kāi)ARMLicenseManager對(duì)話框圖7.13打開(kāi)ARMLicenseManager對(duì)話
(4)在ARMLicenseManager對(duì)話框點(diǎn)擊AddLicense按鈕,在獲得一個(gè)新的許可對(duì)話框中選擇Generate30-dayevaluationlicense項(xiàng),點(diǎn)擊Next,如圖7.14所示。圖7.14獲得新的EvaluationLicense
(4)在ARMLicenseManager對(duì)話框
(5)在ChoosehostID對(duì)話框的下拉列表中選擇本機(jī)的HostID,點(diǎn)擊Next,如圖7.15所示。圖7.15選擇HostID
(5)在ChoosehostID對(duì)話框的下拉列表
(6)輸入ARM賬戶信息。如果擁有ARM賬戶,直接在對(duì)話框中輸入賬戶和密碼。如果沒(méi)有ARM賬戶,點(diǎn)擊here創(chuàng)建一個(gè)新賬戶,如圖7.16所示。圖7.16創(chuàng)建新賬戶
(6)輸入ARM賬戶信息。如果擁有ARM賬戶,直接在
(7)在創(chuàng)建ARM新賬戶對(duì)話框中輸入注冊(cè)信息。注意:密碼是大寫字母+小寫字母+數(shù)字結(jié)構(gòu),順序隨意。輸入完點(diǎn)擊Finish,如圖7.17所示。圖7.17注冊(cè)新賬戶
(7)在創(chuàng)建ARM新賬戶對(duì)話框中輸入注冊(cè)信息。注意:
(8)點(diǎn)擊Finish返回到輸入ARM賬戶對(duì)話框,點(diǎn)擊Finish。License生成后會(huì)彈出ARMLicenseManager對(duì)話框,點(diǎn)擊Close,DS-5License安裝完畢,如圖7.18所示。
注意:本次安裝的License有效期只有30天,試用期完后如需要請(qǐng)購(gòu)買正版軟件。
(8)點(diǎn)擊Finish返回到輸入ARM賬戶對(duì)話框,點(diǎn)圖7.18ARMLicenseManager對(duì)話框圖7.18ARMLicenseManager對(duì)話框
7.2DS-5設(shè)計(jì)輸入
7.2.1創(chuàng)建C/C++?工程創(chuàng)建一個(gè)新的C/C++?工程的操作步驟如下:(1)從開(kāi)始菜單或嵌入式命令行啟動(dòng)Eclipse。(2)設(shè)置工作空間(workspace)。建議選擇一個(gè)專門的文件夾作為工作空間,用于存儲(chǔ)項(xiàng)目文件。如果選擇了一個(gè)含有其他資源的文件夾作為工作空間,那么在Eclipse開(kāi)發(fā)環(huán)境中無(wú)法訪問(wèn)這些與項(xiàng)目無(wú)關(guān)的資源。此外,當(dāng)創(chuàng)建或編譯工程時(shí)有可能與這些資源產(chǎn)生沖突。
7.2DS-5設(shè)計(jì)輸入
7.2.1創(chuàng)建C/C++?
(3)在Eclipse開(kāi)發(fā)環(huán)境主界面選擇File→New→C++Project或CProject菜單,如圖7.19所示。
(4)在C++Project或CProject對(duì)話框的Projectname中輸入工程名。
(5)選中Usedefaultlocation前面的復(fù)選框,則在默認(rèn)的文件夾中創(chuàng)建工程。如果不勾選,則可以選擇用戶想要存放的文件夾,如圖7.20所示。
(3)在Eclipse開(kāi)發(fā)環(huán)境主界面選擇File→N圖7.19新建C/C++?工程圖7.19新建C/C++?工程圖7.20設(shè)置工程屬性圖7.20設(shè)置工程屬性
(6)選擇所創(chuàng)建項(xiàng)目的類型。Eclipse提供了6種不同的項(xiàng)目類型。
①裸機(jī)可執(zhí)行文件(Bare-metalExecutable):使用ARM編譯工具鏈編譯一個(gè)裸機(jī)可執(zhí)行ELF鏡像。
②裸機(jī)庫(kù)(Bare-metallibrary):使用ARM編譯工具鏈為裸機(jī)工程編譯一個(gè)ELF格式的庫(kù)。
③可執(zhí)行文件(Executable):使用GNU編譯工具鏈編譯一個(gè)Linux系統(tǒng)可執(zhí)行ELF鏡像。
(6)選擇所創(chuàng)建項(xiàng)目的類型。Eclipse提供了6種
④共享庫(kù)(SharedLibrary):使用GNU編譯工具鏈為L(zhǎng)inux應(yīng)用程序創(chuàng)建一個(gè)動(dòng)態(tài)庫(kù)。
⑤靜態(tài)庫(kù)(StaticLibrary):使用GNU編譯工具鏈為L(zhǎng)inux應(yīng)用程序創(chuàng)建一個(gè)ELF格式的庫(kù)。
⑥?Makefile工程(Makefileproject):創(chuàng)建一個(gè)工程所需要的Makefile文件來(lái)編譯工程。Makefile文件也可以自己編寫。
④共享庫(kù)(SharedLibrary):使用GNU
7.2.2創(chuàng)建Makefile項(xiàng)目
如何為ARMLinux目標(biāo)板創(chuàng)建一個(gè)新的C或C++?的Makefile工程,具體步驟如下:
(1)參照7.2.1節(jié)創(chuàng)建一個(gè)新的C/C++?工程的第(1)至(6)步。
(2)展開(kāi)Makefileproject類型,選擇EmptyProject。在右側(cè)的Toolchains欄中選擇所需的編譯工具鏈,點(diǎn)擊Finish,完成工程創(chuàng)建,如圖7.21所示。
(3)在編譯工程之前,需要一個(gè)包含所有編譯工具設(shè)置的Makefile文件??梢詮氖纠こ讨锌截愐粋€(gè)Makefile文件到新建的工程中。在<DS-5安裝目錄>/examples/software文件夾中可以找到各種類型的示例工程。
7.2.2創(chuàng)建Makefile項(xiàng)目
如何為ARM圖7.21Makefile工程選項(xiàng)圖7.21Makefile工程選項(xiàng)
可按如下方法編輯拷貝的Makefile文件:
①在OBJS行,用自己的目標(biāo)文件名替換原文件名。
②在TARGET行,用自己的目標(biāo)文件名替換原文件名。
③保存文件。
(4)添加C/C++?文件到新建工程,即可編譯新建的工程(或在Shell中用make命令編譯工程)。
可按如下方法編輯拷貝的Makefile文件:
①
7.2.3導(dǎo)入工程
基于DS-5的Eclipse開(kāi)發(fā)環(huán)境,也可導(dǎo)入已存在的工程,具體操作步驟如下:
(1)在基于DS-5的Eclipse開(kāi)發(fā)環(huán)境主界面選擇File→Import菜單命令。
(2)在彈出的Import對(duì)話框中,展開(kāi)General,選中ExistingProjectsintoWorkspace,然后點(diǎn)擊Next按鈕,如圖7.22所示。
7.2.3導(dǎo)入工程
基于DS-5的Eclipse開(kāi)圖7.22導(dǎo)入已存工程到當(dāng)前工作空間圖7.22導(dǎo)入已存工程到當(dāng)前工作空間
(3)在ImportProjects對(duì)話框窗口,選擇Selectrootdirectory,點(diǎn)擊其后的Browse按鈕,彈出瀏覽文件夾對(duì)話框,選擇所要導(dǎo)入的工程文件夾,點(diǎn)擊確定,如圖7.23所示。如果需要將導(dǎo)入工程拷貝到已存在的工作空間中,勾選ImportProjects對(duì)話框中的Copyprojectsintoworkspace復(fù)選框。
(4)點(diǎn)擊ImportProjects對(duì)話框的Finish按鈕,完成工程導(dǎo)入。
(3)在ImportProjects對(duì)話框窗口,選圖7.23選擇工程文件夾圖7.23選擇工程文件夾
7.2.4創(chuàng)建源文件
新的DS-5工程創(chuàng)建完畢后,需要為工程創(chuàng)建所需的源文件,比如C/C++?源程序、調(diào)試腳本文件、Makefile文件等,此處以創(chuàng)建調(diào)試腳本文件為例說(shuō)明創(chuàng)建步驟。
(1)在EclipseforDS-5開(kāi)發(fā)環(huán)境主界面選擇File→New→Other菜單命令。
(2)在彈出的新建文件對(duì)話框中,展開(kāi)DS-5Debugger,選中DS-5DebuggerScript,點(diǎn)擊Next按鈕,如圖7.24所示。
7.2.4創(chuàng)建源文件
新的DS-5工程創(chuàng)建完畢后,第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
(3)在彈出的NewDS-5DebuggerScript對(duì)話框中,點(diǎn)擊Location文本框右側(cè)的FileSystem或Workspace按鈕選擇文件存儲(chǔ)位置。在FileName欄輸入文件名,點(diǎn)擊Finish按鈕完成創(chuàng)建DS-5調(diào)試腳本文件,如圖7.25所示。其他文件的創(chuàng)建方式與此類似。
(3)在彈出的NewDS-5DebuggerS圖7.25調(diào)試腳本對(duì)話框圖7.25調(diào)試腳本對(duì)話框
7.3設(shè)計(jì)項(xiàng)目的編譯
7.3.1ARM編譯器和GNU編譯器簡(jiǎn)介1.ARM編譯器ARMDS-5中的ARM編譯器專門用于為ARM架構(gòu)提供最優(yōu)支持。該編譯器的開(kāi)發(fā)歷經(jīng)20年,它被公認(rèn)為業(yè)界標(biāo)準(zhǔn)的面向ARM處理器的C和C++?編譯器,用于生成面向ARM、Thumb、Thumb-2、VFP和NEON指令集的應(yīng)用程序。ARM編譯器支持所有ARM處理器中的新增處理器功能。
7.3設(shè)計(jì)項(xiàng)目的編譯
7.3.1ARM編譯器和GN
ARM編譯器工具鏈可用于編譯由C、C++?或ARM匯編語(yǔ)言源代碼編寫的程序。它可為32位ARM、16位Thumb和Thumb-2指令集生成優(yōu)化代碼,并支持完整的符合ISO標(biāo)準(zhǔn)的C和C++?代碼,它還通過(guò)向量化NEON編譯器支持NEONSIMD指令集。ARM編譯器工具鏈由以下組件組成:
ARM編譯器工具鏈可用于編譯由C、C++?或ARM匯編
(1)?ARM、ThumbC和C++?編譯器armcc。
(2)?NEON向量化編譯器,可使用命令armcc--vectorize進(jìn)行調(diào)用。
(3)?ARM和Thumb匯編器armasm。
(4)?ARM鏈接器armlink。
(5)?ARM庫(kù)管理程序armar。
(6)?ARM鏡像格式轉(zhuǎn)換工具fromelf。
應(yīng)用ARM編譯器工具鏈進(jìn)行開(kāi)發(fā)的流程如圖7.26所示。
(1)?ARM、ThumbC和C++?編譯器ar圖7.26應(yīng)用ARM編譯器工具鏈進(jìn)行開(kāi)發(fā)的流程圖7.26應(yīng)用ARM編譯器工具鏈進(jìn)行開(kāi)發(fā)的流程
1)編譯器(armcc)
ARM編譯器工具鏈中的armcc可將標(biāo)準(zhǔn)C、C++?源程序轉(zhuǎn)換成基于ARM處理器架構(gòu)的機(jī)器碼,可編譯相關(guān)C、C++?代碼生成的NEON向量指令,生成后綴為?.o的目標(biāo)文件。
2)匯編器(armasm)
ARM編譯器工具鏈中的armasm可將匯編指令轉(zhuǎn)換為二進(jìn)制的機(jī)器代碼,可匯編NEONSIMD指令,生成后綴為?.o的目標(biāo)文件。
1)編譯器(armcc)
ARM編譯器工具鏈中的
3)鏈接器(armlink)
ARM編譯器工具鏈中的armlink可以將編譯得到的一個(gè)或者多個(gè)目標(biāo)文件和相關(guān)的一個(gè)或多個(gè)目標(biāo)庫(kù)鏈接起來(lái),生成可執(zhí)行鏡像(.axf)。
4)鏡像格式轉(zhuǎn)換工具(fromelf)
應(yīng)用ARM編譯器工具鏈中的fromelf工具,能夠?qū)崿F(xiàn)將可執(zhí)行鏡像格式轉(zhuǎn)換為各種輸出文件,如去掉鏡像文件(.axf)中的調(diào)試信息將其轉(zhuǎn)換為二進(jìn)制文件(.bin)。
3)鏈接器(armlink)
ARM編譯器工具鏈
應(yīng)用這些工具可以編譯裸機(jī)嵌入式系統(tǒng)應(yīng)用程序或庫(kù),包括DS-5安裝目錄下例程子目錄中的各例程,用戶可以通過(guò)Shell命令行或者在EclipseforDS-5集成開(kāi)發(fā)環(huán)境中調(diào)用ARM編譯工具。圖7.27所示是在命令行中查詢編譯器armcc版本信息。
應(yīng)用這些工具可以編譯裸機(jī)嵌入式系統(tǒng)應(yīng)用程序或庫(kù),包括D圖7.27查詢armcc版本信息圖7.27查詢armcc版本信息
2.GNU編譯器
AlteraSoCEDS自帶的裸機(jī)GNU編譯工具是MentorSourceryCodeBenchLiteEdition4.6.3,安裝在SoCEDS安裝目錄/embedded/host_tools/mentor/gnu/arm/baremetal中。此編譯器是基于ARM架構(gòu)的處理器,用于裸機(jī)程序編譯。通過(guò)嵌入式命令行(Embedded_Command_Shell)啟動(dòng),在計(jì)算機(jī)系統(tǒng)中將編譯工具路徑環(huán)境變量設(shè)置好,可直接鍵入命令,如arm-none-eabi-gcc命令。圖7.28所示是在Shell命令行中查詢?cè)摼幾g器版本信息。
2.GNU編譯器
AlteraSoCEDS自帶圖7.28查詢arm-none-eabi-gcc版本信息圖7.28查詢arm-none-eabi-gcc版本信息
AlteraSoCEDS自帶的LinuxGNU編譯工具是LinaroLinuxcompilerversion4.7.1(根據(jù)SoCEDS版本的不同會(huì)有所不同),此套編譯器作為ARMDS-5的組件安裝,位于SoCEDS安裝目錄/embedded/ds-5/bin中。此編譯器是基于ARM架構(gòu)的處理器,用于編譯Linux應(yīng)用程序。同樣也可以從命令行直接啟動(dòng)編譯工具,也可在Eclipse中創(chuàng)建Linux可執(zhí)行程序項(xiàng)目,從而調(diào)用此套編譯器。圖7.29所示為在命令行中查詢?cè)摼幾g器版本信息。
AlteraSoCEDS自帶的LinuxGNU編圖7.29查詢arm-linux-guneabihf-gcc版本信息圖7.29查詢arm-linux-guneabihf-g
7.3.2DS-5編譯器及其選項(xiàng)設(shè)置
以armcc為例,在EclipseforDS-5環(huán)境中,新建或?qū)胍訟RMCompiler為編譯器創(chuàng)建的DS-5工程,并用鼠標(biāo)右鍵點(diǎn)擊工程名,在右鍵菜單中選擇Properties命令,如圖7.30所示。在彈出的Properties對(duì)話框中,展開(kāi)左側(cè)的C/C++Build,點(diǎn)擊Settings即可對(duì)armcc編譯器進(jìn)行設(shè)置,如圖7.31所示。
7.3.2DS-5編譯器及其選項(xiàng)設(shè)置
以armcc圖7.30在右鍵菜單中選擇Properties命令圖7.30在右鍵菜單中選擇Properties命令圖7.31編譯選項(xiàng)設(shè)置圖7.31編譯選項(xiàng)設(shè)置
在圖7.31中可以看到ARM編譯器的所有選項(xiàng),如Alloptions中顯示:--cpp-O0-g,其中包括了相關(guān)的編譯指令。如果想添加或者修改指令,則點(diǎn)擊SourceLanguage、Optimizations、CodeGeneration、Debugging等選項(xiàng),然后在右側(cè)展開(kāi)的相關(guān)選項(xiàng)中進(jìn)行選擇設(shè)置。例如,在ARMC++Compiler下面:
(1)可以選擇Includes選項(xiàng),添加頭文件包含搜索目錄。
(2)可以選擇Optimizations選項(xiàng),其中包括:
在圖7.31中可以看到ARM編譯器的所有選項(xiàng),如All
①優(yōu)化等級(jí)(Optimizationlevel):大寫之母O后面帶一個(gè)數(shù)字表示優(yōu)化等級(jí)的高低,O0表示不優(yōu)化,O1表示關(guān)閉影響調(diào)試結(jié)果的優(yōu)化功能,O2表示該優(yōu)化級(jí)別提供了最大的優(yōu)化功能。
②優(yōu)化方式(Optimizefor):可以選擇尺寸最優(yōu)、時(shí)間最優(yōu)或默認(rèn)。
(3)可以選擇CodeGeneration選項(xiàng),其中包括:
①數(shù)據(jù)存儲(chǔ)格式(Byteorder):大端格式或小端格式。
②指令集選擇(Instructionset):ARM指令或Thumb指令。
①優(yōu)化等級(jí)(Optimizationlevel):
7.4設(shè)計(jì)項(xiàng)目的調(diào)試
ARMDS-5為用戶提供了功能強(qiáng)大的調(diào)試工具,DS-5Debugger可與硬件目標(biāo)板連接后進(jìn)行在線調(diào)試,也可應(yīng)用基于ARM架構(gòu)處理器的模型進(jìn)行調(diào)試,開(kāi)發(fā)人員可完全控制程序執(zhí)行流程并快速定位、糾正錯(cuò)誤,其提供的功能有:
7.4設(shè)計(jì)項(xiàng)目的調(diào)試
ARMDS-5為用戶提供了
(1)加載鏡像文件或符號(hào)。
(2)運(yùn)行可執(zhí)行鏡像文件。
(3)設(shè)置斷點(diǎn)、監(jiān)視點(diǎn)。
(4)單步執(zhí)行源程序及指令。
(5)訪問(wèn)變量、寄存器值。
(6)堆棧調(diào)用(navigatingthecallstack)。
(7)支持異常處理及Linux信號(hào)。
(8)可調(diào)試多線程Linux應(yīng)用程序。
(9)可調(diào)試Linux內(nèi)核模塊,啟動(dòng)代碼。
(10)可調(diào)試對(duì)稱多核裸機(jī)系統(tǒng)。
(1)加載鏡像文件或符號(hào)。
(2)運(yùn)行可執(zhí)行鏡
7.4.1調(diào)試配置(DebugConfiguration)
項(xiàng)目編譯成功后,啟動(dòng)配置調(diào)試對(duì)話框,在Eclipse主界面菜單欄選擇Run->DebugConfigurations,如圖7.32所示。
7.4.1調(diào)試配置(DebugConfigurati圖7.32啟動(dòng)DebugConfigurations對(duì)話框圖7.32啟動(dòng)DebugConfigurations對(duì)
在彈出的DebugConfigurations對(duì)話框中,選擇左側(cè)列表中的DS-5Debugger,單擊左上角新建按鈕(或雙擊DS-5Debugger選項(xiàng),或右鍵菜單選擇New)創(chuàng)建新的調(diào)試連接,如圖7.33所示。
在彈出的DebugConfigurations對(duì)話框圖7.33新建調(diào)試連接圖7.33新建調(diào)試連接
在新創(chuàng)建的DS-5調(diào)試器中開(kāi)始配置調(diào)試選項(xiàng)。
1.Connection標(biāo)簽頁(yè)
Connection標(biāo)簽頁(yè)配置選項(xiàng)如圖7.34所示。
(1)?Selecttarget:指定目標(biāo)器件及調(diào)試選項(xiàng)。
(2)?DTSLOptions:指定調(diào)試器及跟蹤選項(xiàng)配置。
(3)?Connections:指定連接目標(biāo)方式。
在新創(chuàng)建的DS-5調(diào)試器中開(kāi)始配置調(diào)試選項(xiàng)。
1.
1)?Selecttarget選項(xiàng)
如圖7.34所示,在Connection標(biāo)簽頁(yè)的Selecttarget列表中,可選擇器件系列(如Altera->CycloneVSoC等)。不同的器件系列包含不同的配置選項(xiàng),如CycloneVSoC下面可選擇的配置選項(xiàng)有三大類:
(1)?BareMetalDebug:此項(xiàng)用于調(diào)試裸機(jī)應(yīng)用程序。
(2)?LinuxApplicationDebug:此項(xiàng)用于調(diào)試Linux應(yīng)用程序。
(3)?LinuxKerneland/orDeviceDriverDebug:此項(xiàng)用于調(diào)試Linux內(nèi)核及設(shè)備驅(qū)動(dòng)。
1)?Selecttarget選項(xiàng)
如圖7.3圖7.34DS-5調(diào)試器配置Connection標(biāo)簽頁(yè)圖7.34DS-5調(diào)試器配置Connection標(biāo)簽頁(yè)
2)?DTSLOptions選項(xiàng)
單擊DTSLOptions選項(xiàng)右側(cè)的Edit按鈕,彈出DTSL配置編輯器,即DebugandTraceServicesLayer(DTSL)Configuration窗口,開(kāi)始創(chuàng)建并配置跟蹤會(huì)話。該窗口有6個(gè)標(biāo)簽頁(yè)選項(xiàng):CrossTrigger、TraceBuffer、Cortex-A9、STM、ETR和ETF標(biāo)簽頁(yè)。
(1)?CrossTrigger標(biāo)簽頁(yè)。如圖7.35所示,在此標(biāo)簽頁(yè)配置SoCFPGA交叉觸發(fā)選項(xiàng)。
2)?DTSLOptions選項(xiàng)
單擊DTSL圖7.35DTSL配置編輯器CrossTrigger標(biāo)簽頁(yè)圖7.35DTSL配置編輯器CrossTrigger標(biāo)
①?EnableFPGA->HPSCrossTrigger:使能FPGA到HPS的觸發(fā)。
②?EnableHPS->FPGACrossTrigger:使能HPS到FPGA的觸發(fā)。
③?AssumeCrossTriggerscanbeaccessed:選擇此項(xiàng)用于確認(rèn)Preloader已加載,以使DS-5可訪問(wèn)交叉觸發(fā)窗口。
①?EnableFPGA->HPSCross
(2)?TraceBuffer標(biāo)簽頁(yè)。該標(biāo)簽頁(yè)用于選擇跟蹤信息捕捉方法,如圖7.36所示。圖7.36DTSL配置編輯器設(shè)置跟蹤信息捕捉方式
(2)?TraceBuffer標(biāo)簽頁(yè)。該標(biāo)簽頁(yè)用于
①?None:跟蹤功能關(guān)閉。
②?ETR:應(yīng)用HPS可訪問(wèn)的任何緩沖存儲(chǔ)器。
③?ETF:應(yīng)用32KB的片上跟蹤緩沖存儲(chǔ)器。
④?DSTREAM4GBTraceBuffer:應(yīng)用DSTREAM(ARM仿真器)的4G緩沖存儲(chǔ)器。此選項(xiàng)僅在Targetconnection被配置為DSTREAM時(shí)可選。
在TraceBuffer標(biāo)簽頁(yè)中,還可以設(shè)置時(shí)間戳頻率(Timestampfrequency),如圖7.37所示。
①?None:跟蹤功能關(guān)閉。
②?ETR:應(yīng)用圖7.37DTSL配置編輯器設(shè)置時(shí)間戳頻率圖7.37DTSL配置編輯器設(shè)置時(shí)間戳頻率
(3)?Cortex-A9標(biāo)簽頁(yè)。該標(biāo)簽頁(yè)用于設(shè)置內(nèi)核跟蹤選項(xiàng),如圖7.38所示。
①?EnableCortex-A90trace:勾選后使能跟蹤內(nèi)核0。
②?EnableCortex-A91trace:勾選后使能跟蹤內(nèi)核1。
③?PTMTriggershaltexecution:勾選后使得跟蹤時(shí)可終止程序。
④?EnablePTMTimestamps:勾選后允許啟用PTM時(shí)間戳。
(3)?Cortex-A9標(biāo)簽頁(yè)。該標(biāo)簽頁(yè)用于設(shè)置內(nèi)
⑤?EnablePTMContextIDs:勾選后使能跟蹤PTM上下文ID設(shè)備。
⑥?ContextIDSize:選擇ID位寬,可選為8、16、32位。僅當(dāng)PTMContextID勾選后可用。
⑦?CycleAccurate:勾選后創(chuàng)建循環(huán)精確跟蹤。
⑧?Tracecapturerange:勾選后僅對(duì)確定范圍地址進(jìn)行跟蹤。
⑨?StartAddress,EndAddress:確定跟蹤首地址及末地址。
⑤?EnablePTMContextIDs:勾圖7.38配置內(nèi)核跟蹤選項(xiàng)圖7.38配置內(nèi)核跟蹤選項(xiàng)
(4)?STM標(biāo)簽頁(yè)。在此配置是否啟用STM(SystemTraceMacrocell)跟蹤,如圖7.39所示。圖7.39配置啟用STM
(4)?STM標(biāo)簽頁(yè)。在此配置是否啟用STM(Sy
(5)?ETR標(biāo)簽頁(yè)。在此配置ETR(EmbeddedTraceRouter)選項(xiàng),如圖7.40所示,用于直接將跟蹤信息寫入一個(gè)可以被HPS訪問(wèn)的緩沖存儲(chǔ)器。圖7.40配置ETR選項(xiàng)
(5)?ETR標(biāo)簽頁(yè)。在此配置ETR(Embedde
(6)?ETF標(biāo)簽頁(yè)。在此配置ETF(EmbeddedTraceFIFO)選項(xiàng),如圖7.41所示。ETF是HPS上的一個(gè)32KB的緩存,可以被調(diào)試器用來(lái)存儲(chǔ)檢索到的跟蹤數(shù)據(jù),但也可作為通過(guò)ETR或外部DSTREAM器件存儲(chǔ)跟蹤數(shù)據(jù)的靈活緩存。
①?Configuretheon-chiptracebuffer:若ETF被設(shè)置為跟蹤信息存儲(chǔ)器,則選中此項(xiàng)。
②?Size:定義ETF大小,默認(rèn)設(shè)置為0x1000(4KB),但可以設(shè)為0x8000(32KB)以匹配實(shí)際緩存大小。
(6)?ETF標(biāo)簽頁(yè)。在此配置ETF(Embedde圖7.41配置ETF選項(xiàng)圖7.41配置ETF選項(xiàng)
3)?Connections選項(xiàng)
單擊圖7.34下方Connections部分中Connection框右側(cè)的Browse按鈕,彈出SelectDebugHardware對(duì)話框(目標(biāo)板需要通過(guò)電纜與計(jì)算機(jī)連接,如USB-Blaster)。在此用戶可以指定用于與目標(biāo)板通信的連接,基于不同的調(diào)試選項(xiàng),有不同的設(shè)置。
(1)對(duì)于BareMetalDebug和LinuxKerneland/orDeviceDriverDebug目標(biāo)類型,點(diǎn)擊Browse按鈕,彈出的對(duì)話框如圖7.42所示,用戶可選AlteraUSB-Blaster或者DSTREAMinstances。
(2)對(duì)于LinuxApplicationDebug目標(biāo)類型,用戶可選為RemoteSystemExplorerview。
3)?Connections選項(xiàng)
單擊圖7.34圖7.42Connections連接選項(xiàng)圖7.42Connections連接選項(xiàng)
2.Files標(biāo)簽頁(yè)
Files文件標(biāo)簽頁(yè)選項(xiàng)如圖7.43所示。
(1)?Applicationonhosttodownload:設(shè)置要下載至目標(biāo)的應(yīng)用程序名??赏ㄟ^(guò)瀏覽工作空間(Workspace)或文件系統(tǒng)(FileSystem)來(lái)設(shè)置。
2.Files標(biāo)簽頁(yè)
Files文件標(biāo)簽頁(yè)選項(xiàng)如圖圖7.43Files標(biāo)簽頁(yè)選項(xiàng)圖7.43Files標(biāo)簽頁(yè)選項(xiàng)
(2)?Files:包含一組文件,通過(guò)點(diǎn)擊“+”或“-”按鈕來(lái)添加或移除文件。每個(gè)文件可以設(shè)置為以下2種類型:
①?Loadsymbolsfromfile:調(diào)試器通過(guò)此文件載入標(biāo)記。
②?Addperipheraldescriptionfilesfromdirectory:調(diào)試器通過(guò)此路徑中的SVD文件載入外設(shè)寄存器描述。SVD文件是在硬件開(kāi)發(fā)中生成的。
(2)?Files:包含一組文件,通過(guò)點(diǎn)擊“+”或“
3.Debugger標(biāo)簽頁(yè)
Debugger標(biāo)簽頁(yè)配置選項(xiàng)如圖7.44所示。
(1)?Runcontrol:該選項(xiàng)有Connectonly、Debugfromentrypoint和Debugfromsymbol,Runtargetinitializationdebuggerscript(.ds/.py)(運(yùn)行用戶指定目標(biāo)初始化的調(diào)試器腳本),Rundebuginitializationdebuggerscript(.ds/.py)(運(yùn)行用戶指定調(diào)試初始化的調(diào)試器腳本)以及Executedebuggercommands(執(zhí)行用戶自定義調(diào)試命令)。
(2)?Hostworkingdirectory(選擇主機(jī)工作路徑):設(shè)置DS-5調(diào)試器的工作路徑??梢怨催xUsedefault來(lái)使用DS-5的工作空間路徑。
(3)?Paths(路徑):允許調(diào)試器搜索多個(gè)路徑,通過(guò)單擊“+”或“-”進(jìn)行添加或移除。
3.Debugger標(biāo)簽頁(yè)
Debugger標(biāo)簽頁(yè)圖7.44Debugger標(biāo)簽頁(yè)配置選項(xiàng)圖7.44Debugger標(biāo)簽頁(yè)配置選項(xiàng)
4.RTOSAwareness標(biāo)簽頁(yè)
RTOSAwareness標(biāo)簽頁(yè)如圖7.45所示。如果應(yīng)用了指定的實(shí)時(shí)操作系統(tǒng)(RTOS),則可以使調(diào)試器識(shí)別KeilTMCMSIS-RTOSRTX。
4.RTOSAwareness標(biāo)簽頁(yè)
RTOS圖7.45TROSAwareness實(shí)時(shí)操作系統(tǒng)選項(xiàng)圖7.45TROSAwareness實(shí)時(shí)操作系統(tǒng)選項(xiàng)
5.Arguments標(biāo)簽頁(yè)
Arguments標(biāo)簽頁(yè)如圖7.46所示。在該標(biāo)簽頁(yè)中允許以文本方式輸入調(diào)試參數(shù)。根據(jù)需要可以點(diǎn)擊右下角的Variables按鈕選擇相應(yīng)的變量作為程序參數(shù)。
5.Arguments標(biāo)簽頁(yè)
Arguments標(biāo)圖7.46Arguments標(biāo)簽頁(yè)圖7.46Arguments標(biāo)簽頁(yè)
6.Environment標(biāo)簽頁(yè)
Environment標(biāo)簽頁(yè)如圖7.47所示。在該標(biāo)簽頁(yè)中可以設(shè)置程序執(zhí)行過(guò)程中所用環(huán)境變量。圖7.47環(huán)境變量設(shè)置
6.Environment標(biāo)簽頁(yè)
Environm
7.EventViewer標(biāo)簽頁(yè)
EventViewer標(biāo)簽頁(yè)如圖7.48所示。在此標(biāo)簽頁(yè)中可使能及配置查看STM(SystemTraceMacrocell)和ITM(InstrumentationTraceMacrocell)事件。SoCFPGA沒(méi)有ITM,因此只有STM可用,當(dāng)STMViewer啟用后,可配置跟蹤深度大小。
7.EventViewer標(biāo)簽頁(yè)
EventV圖7.48EventViewer標(biāo)簽頁(yè)圖7.48EventViewer標(biāo)簽頁(yè)
7.4.2調(diào)試視圖(DebugViews)
在7.4.1節(jié)的DebugConfiguration相關(guān)調(diào)試配置選項(xiàng)設(shè)置完成后,點(diǎn)擊DebugConfiguration對(duì)話框右下角的Debug按鈕即開(kāi)始連接目標(biāo)板進(jìn)行調(diào)試。根據(jù)對(duì)話框提示,如圖7.49所示,選擇Yes,切換至調(diào)試窗口,如圖7.50所示。
7.4.2調(diào)試視圖(DebugViews)
在7圖7.49切換到調(diào)試窗口提示對(duì)話框圖7.49切換到調(diào)試窗口提示對(duì)話框圖7.50DS-5調(diào)試視圖(DebugViews)圖7.50DS-5調(diào)試視圖(DebugViews)
1.DebugControl調(diào)試控制窗口
圖7.50左上角有DebugControl(調(diào)試控制)子窗口,如圖7.51所示。使用調(diào)試控制子窗口,可以非常輕松地管理調(diào)試連接、展現(xiàn)上下文和控制程序執(zhí)行。調(diào)試連接在此視圖中列出,并且只需一次單擊即可啟動(dòng)連接,而與連接類型(例如JTAG或GDB)無(wú)關(guān)。在頂部欄中,開(kāi)發(fā)人員可利用運(yùn)行控制命令來(lái)執(zhí)行程序,這具有很高的靈活性。在由于計(jì)算處理或斷點(diǎn)設(shè)置而暫停執(zhí)行時(shí),進(jìn)程、線程和調(diào)用堆棧信息將立即顯示出來(lái)。DebugControl窗口允許與一個(gè)或多個(gè)目標(biāo)同時(shí)建立多個(gè)連接,并且在用戶將重心放在某個(gè)連接時(shí)自動(dòng)刷新所有其他調(diào)試器視圖窗口。
1.DebugControl調(diào)試控制窗口
圖7.圖7.51DebugControl調(diào)試控制子窗口圖7.51DebugControl調(diào)試控制子窗口
2.Disassembly源代碼反匯編窗口
圖7.50中包含Disassembly子窗口,如圖7.52所示,該窗口為對(duì)底層調(diào)試或優(yōu)化感興趣的開(kāi)發(fā)人員提供了源代碼的反匯編。DS-5調(diào)試器提供的反匯編,可用于自動(dòng)或手動(dòng)對(duì)ARM或Thumb指令進(jìn)行解碼。通過(guò)與程序執(zhí)行完全同步,該反匯編子窗口突出顯示了與所選源代碼行匹配的所有指令,并且還可以用于單步執(zhí)行機(jī)器指令以及源代碼。在DebugControl調(diào)試控制子窗口,可通過(guò)運(yùn)行、暫停和單步執(zhí)行/單步跳過(guò)/單步跳出圖標(biāo)對(duì)程序執(zhí)行進(jìn)行控制。
2.Disassembly源代碼反匯編窗口
圖7.圖7.52Disassembly源代碼及反匯編子窗口圖7.52Disassembly源代碼及反匯編子窗口
3.Commands調(diào)試命令行窗口
圖7.50上部有Commands調(diào)試命令行窗口,如圖7.53所示。DS-5調(diào)試器實(shí)現(xiàn)自己的類似于GDB的命令行接口,擴(kuò)展了GNU工具的功能,并且包含JTAG/SWD和GDB連接。DS-5調(diào)試器命令提示符可從DS-5IDE內(nèi)訪問(wèn),也可以通過(guò)控制臺(tái)從外部訪問(wèn),前者還具備自動(dòng)完成功能和工具提示幫助以方便使用。所有調(diào)試器操作(CLI或GUI驅(qū)動(dòng)的)都顯示在命令視圖中并且記錄在歷史記錄視圖中,這允許用戶只需通過(guò)選擇文本并在腳本視圖中拖放腳本,即可將任何命令序列轉(zhuǎn)換為腳本。然后,用戶可以隨時(shí)調(diào)用已保存的腳本,在初始化或設(shè)置斷點(diǎn)時(shí)自動(dòng)執(zhí)行已保存的腳本。
3.Commands調(diào)試命令行窗口
圖7.50上部圖7.53Commands調(diào)試命令行窗口圖7.53Commands調(diào)試命令行窗口
4.Breakpoints斷點(diǎn)和觀察點(diǎn)窗口
圖7.50右上方包括Breakpoints子窗口,如圖7.54所示。斷點(diǎn)和觀察點(diǎn)已成為軟件調(diào)試的重要環(huán)節(jié),DS-5調(diào)試器使得該功能更加強(qiáng)大且更易于使用。軟件和硬件斷點(diǎn)可以輕松地從源代碼進(jìn)行設(shè)置,并且在斷點(diǎn)視圖中與觀察點(diǎn)一起列出。Breakpoints子窗口用于禁用、啟用、刪除或配置斷點(diǎn)和觀察斷點(diǎn)屬性,確保程序以正確的順序執(zhí)行。
4.Breakpoints斷點(diǎn)和觀察點(diǎn)窗口
圖7.圖7.54Breakpoints子窗口圖7.54Breakpoints子窗口
5.Registers寄存器、Memory內(nèi)存、Variables變量和Functions表達(dá)式子窗口
在DS-5調(diào)試器內(nèi)核中,協(xié)處理器和外設(shè)寄存器全都在寄存器視圖中列出,如圖7.55所示。
5.Registers寄存器、Memory內(nèi)存、Var第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
有許多方法可以使用DS-5調(diào)試器查看和修改內(nèi)存內(nèi)容。Memory內(nèi)存窗口是傳統(tǒng)的以線性方式展示內(nèi)存空間的視圖,如圖7.56所示。此視圖對(duì)于底層調(diào)試非常有用,可對(duì)此視圖進(jìn)行配置以便以不同的格式(默認(rèn)為十六進(jìn)制)和寬度顯示數(shù)據(jù),接受表達(dá)式和符號(hào)作為起始地址,并且可在特定的內(nèi)存地址設(shè)置數(shù)據(jù)觀察點(diǎn)。
有許多方法可以使用DS-5調(diào)試器查看和修改內(nèi)存內(nèi)容。M第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
6.Trace跟蹤子窗口
DS-5調(diào)試器支持ARMCoreSightETM和PTM非侵入性程序跟蹤,允許開(kāi)發(fā)人員在出現(xiàn)錯(cuò)誤時(shí)查看說(shuō)明(以及關(guān)聯(lián)的源代碼)。它還使開(kāi)發(fā)人員能夠調(diào)試對(duì)時(shí)間敏感的問(wèn)題,而用傳統(tǒng)的侵入性單步技術(shù)很難發(fā)現(xiàn)這些問(wèn)題。
6.Trace跟蹤子窗口
DS-5調(diào)試器支持ARM
DS-5調(diào)試器提供了靈活的跟蹤顯示功能,如圖7.57所示。跟蹤是用于調(diào)試和短期性能分析的寶貴工具,但很少有開(kāi)發(fā)人員能夠僅通過(guò)長(zhǎng)長(zhǎng)的已執(zhí)行機(jī)器指令列表做到這一點(diǎn),DS-5為開(kāi)發(fā)人員提供了友好的方式來(lái)展示這些數(shù)據(jù),例如將指令鏈接到相應(yīng)的源代碼、顯示功能級(jí)別跟蹤分析或者提供圖形跟蹤顯示?;诟檾?shù)據(jù),DS-5調(diào)試器還生成時(shí)間表圖表,所含信息可幫助開(kāi)發(fā)人員迅速理解其軟件在目標(biāo)上的執(zhí)行方式以及哪些功能最占用CPU。通過(guò)提供不同的縮放級(jí)別,該時(shí)間表可基于每個(gè)時(shí)間單位的指令數(shù),以其最高分辨率顯示熱點(diǎn)地圖,并且提供按每組指令的典型延遲時(shí)間以不同的顏色來(lái)編碼每條指令顯示。
DS-5調(diào)試器提供了靈活的跟蹤顯示功能,如圖7.57所第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
7.AppConsole應(yīng)用程序控制臺(tái)窗口
程序執(zhí)行過(guò)程中,會(huì)在AppConsole窗口打印出相關(guān)信息,如圖7.58所示。
7.AppConsole應(yīng)用程序控制臺(tái)窗口
程序圖7.58應(yīng)用程序控制臺(tái)窗口圖7.58應(yīng)用程序控制臺(tái)窗口
7.5基于ARM編譯器的裸機(jī)實(shí)例
7.5.1創(chuàng)建ARMCC項(xiàng)目可以通過(guò)兩種方式來(lái)啟動(dòng)EclipseforDS-5。在<DS-5安裝目錄>/embedded目錄下選中Embedded_Command_Shell.bat文件,雙擊啟動(dòng)Embedded_Command_Shell,鍵入eclipse命令后回車即可啟動(dòng)Eclipse,如圖7.11所示;
7.5基于ARM編譯器的裸機(jī)實(shí)例
7.5.1創(chuàng)建A
另一種方式為選擇開(kāi)始→所有程序→ARMDS-5→EclipseforDS-5,通過(guò)嵌入式命令行啟動(dòng),將所有編譯工具命令添加到系統(tǒng)搜索路徑中,可以直接調(diào)用,無(wú)需完整路徑。采用第二種方式啟動(dòng)EclipseforDS-5后會(huì)彈出工作空間路徑選擇對(duì)話框,可根據(jù)開(kāi)發(fā)需要自行選擇工作空間路徑,如圖7.59所示。
另一種方式為選擇開(kāi)始→所有程序→ARMDS-5→E圖7.59選擇工作空間(Workspace)圖7.59選擇工作空間(Workspace)
Eclipse啟動(dòng)后出現(xiàn)ARMDS-5歡迎界面,如圖7.60所示??梢酝ㄟ^(guò)頁(yè)面中的鏈接訪問(wèn)DS-5相關(guān)文檔、教程和教學(xué)視頻等。
Eclipse啟動(dòng)后出現(xiàn)ARMDS-5歡迎界面,如圖圖7.60DS-5歡迎界面圖7.60DS-5歡迎界面
(1)?DS-5軟件開(kāi)發(fā)是基于項(xiàng)目的,并可在EclipseIDE中方便地進(jìn)行項(xiàng)目管理。軟件開(kāi)發(fā)首先要新建項(xiàng)目,按前述方法啟動(dòng)Eclipse,本節(jié)中的流水燈實(shí)例程序全部代碼應(yīng)用C語(yǔ)言編寫,所以新建一個(gè)C語(yǔ)言項(xiàng)目。具體操作是在主菜單中選擇File→New→CProject命令,如圖7.61所示。
(1)?DS-5軟件開(kāi)發(fā)是基于項(xiàng)目的,并可在Ecli第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
(2)選擇CProject命令后彈出項(xiàng)目類型選擇對(duì)話框,如圖7.62所示。本節(jié)中的流水燈實(shí)例程序是應(yīng)用ARM編譯器的裸機(jī)可執(zhí)行程序類型,故此處選擇Bare-metalExecutable項(xiàng)目類型。在其中的EmptyProject和HelloWorldProject兩種模板子類型中,選擇創(chuàng)建空的項(xiàng)目。在項(xiàng)目創(chuàng)建完成后手動(dòng)新建源程序,選擇完畢點(diǎn)擊下一步(Next)。
(2)選擇CProject命令后彈出項(xiàng)目類型選擇對(duì)
(3)設(shè)置工程配置選項(xiàng)。在工程向?qū)У倪x擇配置(SelectConfigurations)窗口中提供調(diào)試(Debug)與發(fā)布(Release)兩種選項(xiàng),如圖7.63所示。若設(shè)置為調(diào)試(Debug)選項(xiàng),則編譯后生成具有完整調(diào)試特性的二進(jìn)制可執(zhí)行文件,但程序優(yōu)化性能級(jí)別為最低(level0);若設(shè)置為發(fā)布(Release)選項(xiàng),則編譯過(guò)程中會(huì)對(duì)程序做最高級(jí)別優(yōu)化(level3),但在調(diào)試功能上不如調(diào)試選項(xiàng)。點(diǎn)擊Finish之后,新建項(xiàng)目即可完成。
(3)設(shè)置工程配置選項(xiàng)。在工程向?qū)У倪x擇配置(Sel圖7.62選擇項(xiàng)目類型圖7.62選擇項(xiàng)目類型圖7.63工程配置選項(xiàng)圖7.63工程配置選項(xiàng)
(4)在第6章硬件設(shè)計(jì)部分介紹SoCKIT開(kāi)發(fā)板上左邊4個(gè)LED由HPS的GPIO1外設(shè)控制,Qsys設(shè)計(jì)中添加的PIO接口控制右邊4個(gè)LED。本實(shí)例項(xiàng)目應(yīng)用SoCEDS提供的HWLIB中的API訪問(wèn)板上硬件,故需要在項(xiàng)目編譯選項(xiàng)中添加HWLIB路徑。
①在EclipseforDS-5左側(cè)的ProjectExplorer中選中新建好的項(xiàng)目,用鼠標(biāo)右鍵點(diǎn)擊,在右鍵菜單中選擇Properties?;蛟谶x中項(xiàng)目名稱后,選擇Eclipse主菜單Project->Properties命令,如圖7.64所示。
(4)在第6章硬件設(shè)計(jì)部分介紹SoCKIT開(kāi)發(fā)板上第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
②在彈出的PropertiesforLedWater對(duì)話框中,選擇C/C++Build中的Settings子項(xiàng),如圖7.65所示。在右邊的ARMCCompiler選項(xiàng)中點(diǎn)擊Includes子項(xiàng),該子項(xiàng)可添加三種目錄。本實(shí)例需要添加的是項(xiàng)目編譯時(shí)需要包含的HWLIB路徑,并非系統(tǒng)路徑或預(yù)處理所需路徑。
②在彈出的PropertiesforLedWat圖7.65添加HWLIB路徑圖7.65添加HWLIB路徑
③點(diǎn)擊圖7.65對(duì)話框中Includepath(-I)右側(cè)的第一個(gè)綠色帶加號(hào)按鈕,彈出如圖7.66所示的路徑選擇對(duì)話框。點(diǎn)擊Filesystem按鈕,通過(guò)Windows資源管理器選擇路徑<SoCEDS安裝路徑>\ip\altera\hps\altera_hps\hwlib\include。完成后點(diǎn)擊OK按鈕。圖7.66添加HWLIB路徑
③點(diǎn)擊圖7.65對(duì)話框中Includepath(
7.5.2建立項(xiàng)目文件
(1)在新建的C工程中添加主程序main.c,其中包含程序入口點(diǎn)main函數(shù),主程序控制軟件的整個(gè)執(zhí)行流程,其中需要預(yù)包含所需系統(tǒng)頭文件,以及將用到的設(shè)備驅(qū)動(dòng)頭文件。此處先建立源程序,至于主程序具體代碼,在后續(xù)步驟再加以編輯。
選中在7.5.1節(jié)新建的C工程,選擇主菜單File->New->SourseFile命令,如圖7.67所示,或在工程名上點(diǎn)擊右鍵選擇New→SourseFile命令。
7.5.2建立項(xiàng)目文件
(1)在新建的C工程中添圖7.67創(chuàng)建源文件圖7.67創(chuàng)建源文件
在彈出的NewSourceFile對(duì)話框的Sourcefile欄中輸入主程序文件名,如圖7.68所示。模板(Template)選擇默認(rèn)C程序模板(DefaultCsourcetemplate),點(diǎn)擊Finish按鈕,即完成主程序main.c的創(chuàng)建。
在彈出的NewSourceFile對(duì)話框的Sour圖7.68創(chuàng)建源文件圖7.68創(chuàng)建源文件
(2)創(chuàng)建硬件設(shè)備描述頭文件hps_0.h。SoCEDS提供了由Qsys硬件系統(tǒng)信息轉(zhuǎn)換為軟件開(kāi)發(fā)所需設(shè)備描述頭文件的工具swinfo2header,使得軟硬件設(shè)計(jì)銜接起來(lái)。
在SoCEDS安裝路徑中,雙擊Embedded_Command_Shell.bat打開(kāi)嵌入式命令行Shell,進(jìn)入Qsys工程所在目錄,并輸入以下命令:
sopc-create-header-filessoc_system.sopcinfo–singlehps_0.h–modulehps_0
圖7.69中,sopc-create-header-files第二個(gè)選項(xiàng)為Qsys系統(tǒng)設(shè)計(jì)完成后產(chǎn)生的soc_system.sopcinfo文件,開(kāi)發(fā)人員可根據(jù)項(xiàng)目情況進(jìn)行修改,回車后在命令行當(dāng)前目錄下會(huì)生成hps_0.h文件,可將其拷貝至Eclipse當(dāng)前軟件項(xiàng)目目錄中。
(2)創(chuàng)建硬件設(shè)備描述頭文件hps_0.h。SoC圖7.69產(chǎn)生hps_0.h頭文件圖7.69產(chǎn)生hps_0.h頭文件
腳本文件編輯完成后將其保存在當(dāng)前項(xiàng)目目錄中,在命令行中切換到當(dāng)前項(xiàng)目目錄,然后執(zhí)行該腳本,即可在當(dāng)前項(xiàng)目目錄下生成hps_0.h,如圖7.70所示。圖7.70通過(guò)腳本文件產(chǎn)生hps_0.h頭文件
腳本文件編輯完成后將其保存在當(dāng)前項(xiàng)目目錄中,在命令行中
在Eclipse中用鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目名稱,選擇刷新(Refresh),可看到hps_0.h已被添加至當(dāng)前項(xiàng)目,雙擊后可查看該文件的內(nèi)容,如圖7.71所示。
在Eclipse中用鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目名稱,選擇刷新(R圖7.71將hps_0.h頭文件加入Eclipse工程圖7.71將hps_0.h頭文件加入Eclipse工程
(3)將<SoCEDS安裝目錄>\embedded\ip\altera\hps\altera_hps\hwlib\src\hwmgr中的看門狗驅(qū)動(dòng)程序alt_watchdog.c拷貝至項(xiàng)目目錄,如圖7.72所示。
(3)將<SoCEDS安裝目錄>\embedd圖7.72拷貝看門狗alt_watchdog.c程序圖7.72拷貝看門狗alt_watchdog.c程序
由于alt_watchdog.c中包含C++?編譯器方可編譯的函數(shù),因此本節(jié)實(shí)例項(xiàng)目需要對(duì)看門狗驅(qū)動(dòng)程序進(jìn)行簡(jiǎn)單修改。本節(jié)實(shí)例僅應(yīng)用了看門狗alt_wdog_start()和alt_wdog_reset()函數(shù),故需對(duì)拷貝后的alt_watchdog.c做裁減。
由于alt_watchdog.c中包含C++?編譯器方
(4)ARM鏈接器支持分散加載機(jī)制,可通過(guò)一個(gè)描述性分散文件(*.scat)指定鏈接生成的可執(zhí)行映像存儲(chǔ)器映射情況,使開(kāi)發(fā)人員完全控制映像各部分的組織、布局情況。分散文件通常用于控制需要復(fù)雜存儲(chǔ)器映射的映像,比如加載和執(zhí)行映像均分布在多個(gè)分散的存儲(chǔ)器映射區(qū)域。關(guān)于ARM鏈接器生成映像結(jié)構(gòu)、分散加載機(jī)制及分散文件詳細(xì)信息,可查看ARMDS-5幫助文檔。在主菜單界面選擇Help->HelpContents,彈出幫助主題窗口,在左側(cè)導(dǎo)航欄選擇ARMDS-5Documentation->ARMCompilertoolchain->usingthelinker->Usingscatterfiles,如圖7.73所示。
(4)ARM鏈接器支持分散加載機(jī)制,可通過(guò)一個(gè)描述性圖7.73查看ARMDS-5幫助文檔中的scatter信息圖7.73查看ARMDS-5幫助文檔中的scatter
接下來(lái)需要為當(dāng)前流水燈項(xiàng)目建立分散文件OnchipRAM.scat。選擇File→New→Other,如圖7.74所示。
接下來(lái)需要為當(dāng)前流水燈項(xiàng)目建立分散文件OnchipRA圖7.74創(chuàng)建分散文件OnchipRAM.scat圖7.74創(chuàng)建分散文件OnchipRAM.scat
在彈出的New新建文件向?qū)?duì)話框中,選擇ScatterFileEditor下的ScatterFile選項(xiàng),點(diǎn)擊Next,如圖7.75所示。圖7.75為工程創(chuàng)建分散文件OnchipRAM.scat
在彈出的New新建文件向?qū)?duì)話框中,選擇Scatter第7章--基于SoC-EDS的嵌入式系統(tǒng)設(shè)計(jì)課件
在彈出的NewScatterFile對(duì)話框中選擇當(dāng)前項(xiàng)目文件夾為分散文件父文件夾,在Filename欄中輸入文件名(如OnchipRam),如圖7.76所示。點(diǎn)擊Finish按鈕,完成Scatter文件的創(chuàng)建。
在彈出的NewScatterFile對(duì)話框中選擇當(dāng)圖7.76創(chuàng)建分散文件OnchipRAM.scat圖7.76創(chuàng)建分散文件OnchipRAM.scat
本節(jié)流水燈實(shí)例項(xiàng)目?jī)H需對(duì)映像存儲(chǔ)器映射進(jìn)行簡(jiǎn)單控制即可,控制映像在片內(nèi)
64KB的OnchipRAM連續(xù)的存儲(chǔ)區(qū)域加載執(zhí)行。由第6章SoCFPGA硬件介紹可知,片內(nèi)64KB的RAM存儲(chǔ)器地址映射為0xFFFF0000~0xFFFFFFFF。
本節(jié)流水燈實(shí)例項(xiàng)目?jī)H需對(duì)映像存儲(chǔ)器映射進(jìn)行簡(jiǎn)單控制即可
保存編輯好的Scatter文件并關(guān)閉該文件,再次雙擊打開(kāi)該分散文件,可以看到映像加載區(qū)與執(zhí)行區(qū)兩種存儲(chǔ)器映射視圖,如圖7.77所示。圖7.77OnchipRAM.scat存儲(chǔ)器映射視圖
保存編輯好的Scatter文件并關(guān)閉該文件,再次雙擊打
(5)編輯主程序文件main.c。首先需要包含用的頭文件,包括C語(yǔ)言系統(tǒng)標(biāo)準(zhǔn)輸入輸出庫(kù)、SoCFPGA器件HWLIB庫(kù)、硬件系統(tǒng)設(shè)備描述以及看門狗驅(qū)動(dòng),在主程序中定義兩個(gè)變量i、j來(lái)分別控制HPS的GPIO、Qsys中添加的PIO外設(shè)輸出。程序中使i和j循環(huán)移位,從而使板上LED呈現(xiàn)流水燈實(shí)驗(yàn)現(xiàn)象。主程序main.c的具體代碼如圖7.78所示。
(5)編輯主程序文件main.c。首先需要包含用的頭圖7.78main.c程序代碼圖7.78main.c程序代碼
7.5.3項(xiàng)目編譯
對(duì)Eclipse項(xiàng)目進(jìn)行編譯之前,需要為ARMLinker指定生成可執(zhí)行程序所需的分散文件OnchipRam.scat(該文件在前述步驟已成功創(chuàng)建),步驟如下:
在工程屬性對(duì)話框的C/C++Build->Settings選項(xiàng)中,選擇ARMLinker->ImageLayout,點(diǎn)擊Scatterfile(--scatter)右側(cè)的Browse按鈕,選擇編輯好的分散文件OnchipRam.scat,點(diǎn)擊OK關(guān)閉屬性對(duì)話框,如圖7.79所示。
7.5.3項(xiàng)目編譯
對(duì)Eclipse項(xiàng)目進(jìn)行編譯圖7.79為工程編譯添加分散文件圖7.79為工程編譯添加分散文件
編譯項(xiàng)目步驟為:在主菜單中選擇Project→BuildProject,或在工程名上選擇右鍵菜單BuildProject。編譯過(guò)程中可在Console窗口中查看相關(guān)信息。在該窗口可觀察到,整個(gè)編譯過(guò)程先啟動(dòng)ARMCCompiler進(jìn)行編譯生成目標(biāo)文件,然后啟動(dòng)ARMCLinker鏈接為可執(zhí)行程序。
編譯完成后,生成LedWater.axf可執(zhí)行程序映象,如圖7.80所示。
編譯項(xiàng)目步驟為:在主菜單中選擇Project→Buil圖7.80工程編譯過(guò)程中的相關(guān)信息圖7.80工程編譯過(guò)程中的相關(guān)信息
7.5.4設(shè)計(jì)項(xiàng)目的調(diào)試
(1)參考6.2.2節(jié),將生成的Preloader引導(dǎo)可執(zhí)行文件E:\chapter7\Software\spl_bsp\uboot-socfpga\spl\u-boot-spl拷貝至當(dāng)前項(xiàng)目目錄,然后將Quartus?Ⅱ編譯完成的FPGA硬件設(shè)計(jì)(參考第6章相關(guān)內(nèi)容)通過(guò)USB-Blaster下載至目標(biāo)板中,如圖7.81所示。
7.5.4設(shè)計(jì)項(xiàng)目的調(diào)試
(1)參考6.2.2節(jié)圖7.81下載硬件設(shè)計(jì)圖7.81下載硬件設(shè)計(jì)
(2)參考7.4節(jié),當(dāng)DS-5調(diào)試器成功連接到目標(biāo)后,可在命令視圖中鍵入命令進(jìn)行調(diào)試會(huì)話。通過(guò)編寫包含按次序執(zhí)行的調(diào)試命令的腳本,可以便捷地控制調(diào)試會(huì)話。
在新建文件向?qū)?duì)話框中為本節(jié)流水燈項(xiàng)目創(chuàng)建調(diào)試腳本DebugLedWater.ds,如圖7.82所示。
(2)參考7.4節(jié),當(dāng)DS-5調(diào)試器成功連接到目標(biāo)后圖7.82創(chuàng)建調(diào)試腳本DebugLedWater.ds圖7.82創(chuàng)建調(diào)試腳本DebugLedWater.ds
調(diào)試腳本每行只能包括一條命令,以?#?開(kāi)頭的是注釋內(nèi)容,雙擊即可編輯創(chuàng)建的DebugLedWater.ds。關(guān)于調(diào)試命令的詳細(xì)信息,可參考DS-5幫助主題,如圖7.83所示。
調(diào)試腳本每行只能包括一條命令,以?#?開(kāi)頭的是注釋內(nèi)容圖7.83DS-5調(diào)試命令幫助圖7.83DS-5調(diào)試命令幫助
編輯調(diào)試腳本文件DebugLedWater.ds,具體內(nèi)容如圖7.84所示。調(diào)試腳本文件也可以拷貝DS-5例程中的調(diào)試腳本進(jìn)行修改。
編輯調(diào)試腳本文件DebugLedWater.ds,具體圖7.84調(diào)試腳本DebugLedWater.ds的內(nèi)容圖7.84調(diào)試腳本DebugLedWater.ds的內(nèi)容
(3)調(diào)試配置(DebugConfiguration)。該部分操作可參考7.4.1節(jié)內(nèi)容。
①?Connection標(biāo)簽頁(yè):選擇目標(biāo)(Target)為Altera→CycloneVSoC→BareMetalDebug→DebugCortex-A9_0viaUSB-Blaster,點(diǎn)擊Browse按鈕選擇當(dāng)前與目標(biāo)建立連接的USB-Blaster,如圖7.85所示。
(3)調(diào)試配置(DebugConfiguratio圖7.85配置Connection標(biāo)簽頁(yè)選項(xiàng)圖7.85配置Connection標(biāo)簽頁(yè)選項(xiàng)
②?Files標(biāo)簽頁(yè):選擇Addperipheraldescriptionfilesfromdirectory,并點(diǎn)擊下面的FileSystem按鈕添加硬件設(shè)計(jì)中的設(shè)備描述目錄,如圖7.86所示。
③?Debugger標(biāo)簽頁(yè):將Runcontrol運(yùn)行控制設(shè)置為Connectonly,勾選運(yùn)行調(diào)試初始化腳本(Rundebuginitializationdebuggerscript(.ds/.py)),點(diǎn)擊Workspace按鈕,選擇前述步驟創(chuàng)建的調(diào)試腳本文件,如圖7.87所示。
②?Files標(biāo)簽頁(yè):選擇Addperiphera圖7.86配置Files標(biāo)簽頁(yè)選項(xiàng)圖7.86配置Files標(biāo)簽頁(yè)選項(xiàng)圖7.87配置Debugger標(biāo)簽頁(yè)選項(xiàng)圖7.87配置Debugger標(biāo)簽頁(yè)選項(xiàng)
(4)點(diǎn)擊右下角的Debug按鈕,彈出是否切換至調(diào)試視圖對(duì)話框。選擇Yes則切換至調(diào)試視圖,DS-5Debugger自動(dòng)連接目標(biāo)板,按序執(zhí)行DebugLedWater.ds中的調(diào)試命令,目標(biāo)板系統(tǒng)開(kāi)始運(yùn)行,程序自動(dòng)停在主函數(shù)入口處,如圖7.88所示。
(4)點(diǎn)擊右下角的Debug按鈕,彈出是否切換至調(diào)試圖7.88啟動(dòng)調(diào)試圖7.88啟動(dòng)調(diào)試
設(shè)置斷點(diǎn)(BreakPoint),查看變量與寄存器內(nèi)容。
在主程序中的while(1)循環(huán)的開(kāi)頭處設(shè)置一個(gè)斷點(diǎn),如圖7.89所示,使變量i、j每次移位后停在斷點(diǎn)處,使得目標(biāo)板上LED每次改變狀態(tài)后停下。點(diǎn)擊DebugControl子窗口快捷按鈕Continue(綠色箭頭按鈕)或按鍵盤上的F8鍵繼續(xù)運(yùn)行,則可使i、j繼續(xù)移位。
設(shè)置斷點(diǎn)(BreakPoint),查看變量與寄存器內(nèi)容圖7.89在主程序中設(shè)置斷點(diǎn)圖7.89在主程序中設(shè)置斷點(diǎn)
程序運(yùn)行前,查看變量與復(fù)位寄存器視圖,如圖7.90所示??梢?jiàn),此時(shí)還觀察不到程序中局部或者全局變量,因?yàn)槌绦蜻€未執(zhí)行到定義變量的代碼處。
程序運(yùn)行前,查看變量與復(fù)位寄存器視圖,如圖7.90所示圖7.90程序執(zhí)行前變量、寄存器視圖圖7.90程序執(zhí)行前變量、寄存器視圖
點(diǎn)擊DebugControl調(diào)試控制子窗口快捷按鈕中的Continue按鈕,或按F8執(zhí)行程序,程序停在斷點(diǎn)處,如圖7.91所示。
點(diǎn)擊DebugControl調(diào)試控制子窗口快捷按鈕中圖7.91程序執(zhí)行至斷點(diǎn)處圖7.91程序執(zhí)行至斷點(diǎn)處
此時(shí),觀察本地變量與r
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度數(shù)據(jù)中心服務(wù)器租賃合同
- 2024醫(yī)院病房清潔服務(wù)合同
- 2024年展覽保險(xiǎn)服務(wù)協(xié)議
- 2024年度0kv線路工程建設(shè)的合作開(kāi)發(fā)合同
- 2024年度婚禮主持委托合同
- 2024年定制版太陽(yáng)能系統(tǒng)維護(hù)合同
- 2024年度太陽(yáng)能熱水系統(tǒng)安裝合同
- 2024年度城市供水供電供氣合同
- 2024年三人股東責(zé)任承擔(dān)協(xié)議
- 04版建筑工程合同
- 無(wú)肝素透析的護(hù)理課件-2
- 每日消防安全巡查記錄表
- 起重作業(yè)吊裝令
- 三角函數(shù)知識(shí)點(diǎn)復(fù)習(xí)總結(jié)填空
- 大學(xué)鋼琴即興伴奏教案
- 最新VTE指南解讀(靜脈血栓栓塞癥的臨床護(hù)理指南解讀)
- 博鰲亞洲論壇海南年會(huì)PPT模板
- 新教材人教版高中化學(xué)選擇性必修三全冊(cè)教學(xué)課件
- 2023年銀行業(yè)風(fēng)險(xiǎn)管理(中級(jí))考試考試題庫(kù)(真題整理)
- 監(jiān)護(hù)儀培訓(xùn)-PPT課件
- 溝通技巧游戲
評(píng)論
0/150
提交評(píng)論