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