版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章基于SoCEDS的嵌入式系统设计7.1SoCEDS简介7.2DS-5设计输入7.3设计项目的编译7.4设计项目的调试7.5基于ARM编译器的裸机实例7.6基于GNU编译器的裸机实例7.7ARMStreamline硬件性能分析器
7.1SoCEDS简介
7.1.1SoCEDS嵌入式系统设计套件Altera公司的嵌入式系统设计套件(SystemonaChipEmbeddedDesignSuite,SoCEDS)是针对AlteraSoC器件的综合软件设计工具。应用SoCEDS能够进行高效软件开发,提升软件质量,加快产品上市时间。SoCEDS可以完成基于AlteraSoCFPGA器件所有软件的开发,如图7.1所示。图7.1AlteraSoC嵌入式设计套装
1. Altera版ARMDevelopmentStudio5(DS-5)工具包
AlteraSoCEDS开发套件的核心是Altera版ARMDevelopmentStudio5(DS-5)工具包。ARMDS-5高级多核调试功能与FPGA自适应功能相结合,无缝链接至Altera的SignalTap Ⅱ嵌入式逻辑分析器。SoCEDS套件结合了业界增强型ARMDS-5工具套装以及AlteraSoC器件,为嵌入式开发人员提供了前所未有的全芯片可视化控制功能。
1)完整的开发环境
作为AlteraSoCEDS的一部分,Altera版ARMDS-5工具包为AlteraSoC器件提供了完整的嵌入式开发工具,其主要特性包括:
(1)支持电路板开发、驱动开发、操作系统(OS)移植、裸金属和Linux应用程序开发。
(2)支持应用程序开发,包括支持开发基于Linux的应用程序的Yocto插件。
(3)支持开发并调试多核芯片以对称多处理(SMP)和非对称多处理(AMP)模式运行的系统。
(4)基于ARM体系结构的多核调试功能,为AlteraSoC器件提供FPGA自适应调试
功能。
(5)采用集成在FPGA架构中的ARMCoreSight跟踪宏单元,支持ARMCortex-A9处理器以及任何定制内核进行同时调试,并提供跟踪连接。
(6) ARM流线性能分析器采用来自SoC和FPGA域的性能计数器,实现全系统级分析。
图7.2所示的ARMDS-5工具包支持对Linux应用程序的调试。
图7.2DS-5对Linux应用程序的调试
2) FPGA自适应调试
由于在FPGA中采用了定制逻辑,因此,每一个基于SoC的系统都是独一无二的。为了能够高效地调试系统,Altera版ARMDS-5工具包动态适应用户的不同配置,统一了来自CPU和FPGA域的所有软件调试信息,在标准DS-5用户界面中以分组的方式呈现这些信息。Altera和ARM开发的工具包可帮助设计者提高设计调试的可视化和控制功能,有效提高设计效能。
与AlteraSignalTap Ⅱ嵌入式逻辑分析仪一起使用,该工具包为CPU和FPGA域之间的高级信号级硬件提供了交叉触发功能。通过该功能,软件和FPGA设计人员可以分析并采集硬件至软件边界的踪迹,进行协同调试。如图7.3所示,通过在SignalTap Ⅱ嵌入式逻辑分析仪中的触发点设置,可启动软件踪迹采集。图7.3SignalTap Ⅱ逻辑分析仪中的触发点设置
3)与Altera工具和开发套件的兼容性
ARMDS-5工具包和其他Altera基于JTAG的工具可以通过AlteraUSB-Blaster电缆连接至AlteraSoC电路板。该工具包还可以对所有AlteraSoC开发套件和兼容电路板上的闪存ROM进行编程。
2.硬件和软件之间的交互开发方式
Altera硬件和软件之间的交互开发方式支持硬件和软件工程师按照自己熟悉的设计流程独立工作。交互方式采用了AlteraQuartus Ⅱ和Qsys生成的输出文件,产生软件设计流程中所需的接口文件。软件工程师可以尽量避免参与FPGA开发,而将精力集中在软件设计上,因而具有更高的效率。图7.4给出了Altera集成开发环境中硬件和软件之间的交互开发方式结构图。图7.4硬件和软件之间的交互开发方式
3. Linux应用开发
(1) SoCEDS:包括U-Boot和Linux开发环境、源文件以及经过预编译的库。对于Altera
SoC电路板,可以立即运行这些库,迅速开始软件开发工作。
(2) Yocto支持:Linux开发环境基于开源Yocto工程,为开发人员提供了开放的、高性价比的通用解决方案。
4.SoC硬件库
SoCEDS包括嵌入式应用程序二进制接口(EABI)GNU编译器工具链和SoC硬件库,支持裸机(bare-metal)应用开发。SoC硬件库提供底层软件接口,以支持SoC硬件实现,这一应用程序接口(API)方便了SoC硬件资源的使用、配置和控制。图7.5所示为SoC的硬件库结构层描述。图7.5SoC的硬件库结构层描述
SoC硬件库的应用包括:
(1)电路板开发支持;
(2)对SoC硬件的底层访问功能;
(3)器件驱动开发;
(4)诊断工具开发;
(5)定制启动加载程序开发;
(6)操作系统移植;
(7)裸机应用开发。
7.1.2SoCEDS安装
1. SoCEDS的安装步骤
(1)在Altera官方网站下载安装程序SoCEDSSetup-32.exe或更高版本软件。网址为/download/software/soc-eds。下载完成后双击运行。
(2)点击Next,选择Iaccepttheagreement,点击Next,如图7.6所示。图7.6接受授权协议
(3)选择所需的安装路径,点击Next,如图7.7所示。图7.7选择安装路径
(4)继续点击Next,SoCEDS进行安装。安装完成后点Finish,自动弹出ARMDS-5安装程序。
(5)在ARMDS-5安装对话框中,点击Next。
(6)选择接受LicenseAgreement项,点击Next,如图7.8所示。
(7)点击Next,可按默认路径安装,也可点击Browse更改安装路径,如图7.9所示。图7.8接受LicenseAgreement图7.9更改安装路径
(8)选择所需安装目录,点击OK,如图7.10所示。
(9)返回图7.9所示界面,点击Next,再次点击Next,出现DS-5安装对话框后,点击Install按钮开始安装。安装程序显示ARMDS-5的安装进度。
(10)安装完成后,自动弹出DS-5驱动安装向导对话框,点击下一步开始安装。最后点击Finish按钮完成DS-5安装。图7.10选择DS-5安装目录
2.安装DS-5License文件
(1)在Windows操作系统下,点击开始→所有程序→ARMDS-5→EclipseforDS-5,启动EclipseforDS-5。
也可以通过命令行终端启动EclipseforDS-5,在DS-5安装目录embedded下选中Embedded_Command_Shell.bat文件,并用鼠标左键双击该文件,即可启动Shell命令行终端,在命令行终端输入eclipse,即可启动EclipseforDS-5,如图7.11所示。图7.11通过命令行终端启动Eclipse
(2)启动Eclipse后,设置工作空间对话框将会弹出。点击Browse,设置所需的工作空间,点击OK,如图7.12所示。图7.12设定DS-5的工作空间
(3)在Eclipse开发环境主界面选择Help,点击ARMLicenseManager菜单命令,弹出ARMLicenseManager对话框,如图7.13所示。
注意:以下操作必须在计算机网络连接正常的情况下进行。图7.13打开ARMLicenseManager对话框
(4)在ARMLicenseManager对话框点击AddLicense按钮,在获得一个新的许可对话框中选择Generate30-dayevaluationlicense项,点击Next,如图7.14所示。图7.14获得新的EvaluationLicense
(5)在ChoosehostID对话框的下拉列表中选择本机的HostID,点击Next,如图7.15所示。图7.15选择HostID
(6)输入ARM账户信息。如果拥有ARM账户,直接在对话框中输入账户和密码。如果没有ARM账户,点击here创建一个新账户,如图7.16所示。图7.16创建新账户
(7)在创建ARM新账户对话框中输入注册信息。注意:密码是大写字母+小写字母+数字结构,顺序随意。输入完点击Finish,如图7.17所示。图7.17注册新账户
(8)点击Finish返回到输入ARM账户对话框,点击Finish。License生成后会弹出ARMLicenseManager对话框,点击Close,DS-5License安装完毕,如图7.18所示。
注意:本次安装的License有效期只有30天,试用期完后如需要请购买正版软件。图7.18ARMLicenseManager对话框
7.2DS-5设计输入
7.2.1创建C/C++ 工程创建一个新的C/C++ 工程的操作步骤如下:(1)从开始菜单或嵌入式命令行启动Eclipse。(2)设置工作空间(workspace)。建议选择一个专门的文件夹作为工作空间,用于存储项目文件。如果选择了一个含有其他资源的文件夹作为工作空间,那么在Eclipse开发环境中无法访问这些与项目无关的资源。此外,当创建或编译工程时有可能与这些资源产生冲突。
(3)在Eclipse开发环境主界面选择File→New→C++Project或CProject菜单,如图7.19所示。
(4)在C++Project或CProject对话框的Projectname中输入工程名。
(5)选中Usedefaultlocation前面的复选框,则在默认的文件夹中创建工程。如果不勾选,则可以选择用户想要存放的文件夹,如图7.20所示。图7.19新建C/C++ 工程图7.20设置工程属性
(6)选择所创建项目的类型。Eclipse提供了6种不同的项目类型。
①裸机可执行文件(Bare-metalExecutable):使用ARM编译工具链编译一个裸机可执行ELF镜像。
②裸机库(Bare-metallibrary):使用ARM编译工具链为裸机工程编译一个ELF格式的库。
③可执行文件(Executable):使用GNU编译工具链编译一个Linux系统可执行ELF镜像。
④共享库(SharedLibrary):使用GNU编译工具链为Linux应用程序创建一个动态库。
⑤静态库(StaticLibrary):使用GNU编译工具链为Linux应用程序创建一个ELF格式的库。
⑥ Makefile工程(Makefileproject):创建一个工程所需要的Makefile文件来编译工程。Makefile文件也可以自己编写。
7.2.2创建Makefile项目
如何为ARMLinux目标板创建一个新的C或C++ 的Makefile工程,具体步骤如下:
(1)参照7.2.1节创建一个新的C/C++ 工程的第(1)至(6)步。
(2)展开Makefileproject类型,选择EmptyProject。在右侧的Toolchains栏中选择所需的编译工具链,点击Finish,完成工程创建,如图7.21所示。
(3)在编译工程之前,需要一个包含所有编译工具设置的Makefile文件。可以从示例工程中拷贝一个Makefile文件到新建的工程中。在<DS-5安装目录>/examples/software文件夹中可以找到各种类型的示例工程。图7.21Makefile工程选项
可按如下方法编辑拷贝的Makefile文件:
①在OBJS行,用自己的目标文件名替换原文件名。
②在TARGET行,用自己的目标文件名替换原文件名。
③保存文件。
(4)添加C/C++ 文件到新建工程,即可编译新建的工程(或在Shell中用make命令编译工程)。
7.2.3导入工程
基于DS-5的Eclipse开发环境,也可导入已存在的工程,具体操作步骤如下:
(1)在基于DS-5的Eclipse开发环境主界面选择File→Import菜单命令。
(2)在弹出的Import对话框中,展开General,选中ExistingProjectsintoWorkspace,然后点击Next按钮,如图7.22所示。图7.22导入已存工程到当前工作空间
(3)在ImportProjects对话框窗口,选择Selectrootdirectory,点击其后的Browse按钮,弹出浏览文件夹对话框,选择所要导入的工程文件夹,点击确定,如图7.23所示。如果需要将导入工程拷贝到已存在的工作空间中,勾选ImportProjects对话框中的Copyprojectsintoworkspace复选框。
(4)点击ImportProjects对话框的Finish按钮,完成工程导入。图7.23选择工程文件夹
7.2.4创建源文件
新的DS-5工程创建完毕后,需要为工程创建所需的源文件,比如C/C++ 源程序、调试脚本文件、Makefile文件等,此处以创建调试脚本文件为例说明创建步骤。
(1)在EclipseforDS-5开发环境主界面选择File→New→Other菜单命令。
(2)在弹出的新建文件对话框中,展开DS-5Debugger,选中DS-5DebuggerScript,点击Next按钮,如图7.24所示。
(3)在弹出的NewDS-5DebuggerScript对话框中,点击Location文本框右侧的FileSystem或Workspace按钮选择文件存储位置。在FileName栏输入文件名,点击Finish按钮完成创建DS-5调试脚本文件,如图7.25所示。其他文件的创建方式与此类似。图7.25调试脚本对话框
7.3设计项目的编译
7.3.1ARM编译器和GNU编译器简介1.ARM编译器ARMDS-5中的ARM编译器专门用于为ARM架构提供最优支持。该编译器的开发历经20年,它被公认为业界标准的面向ARM处理器的C和C++ 编译器,用于生成面向ARM、Thumb、Thumb-2、VFP和NEON指令集的应用程序。ARM编译器支持所有ARM处理器中的新增处理器功能。
ARM编译器工具链可用于编译由C、C++ 或ARM汇编语言源代码编写的程序。它可为32位ARM、16位Thumb和Thumb-2指令集生成优化代码,并支持完整的符合ISO标准的C和C++ 代码,它还通过向量化NEON编译器支持NEONSIMD指令集。ARM编译器工具链由以下组件组成:
(1) ARM、ThumbC和C++ 编译器armcc。
(2) NEON向量化编译器,可使用命令armcc--vectorize进行调用。
(3) ARM和Thumb汇编器armasm。
(4) ARM链接器armlink。
(5) ARM库管理程序armar。
(6) ARM镜像格式转换工具fromelf。
应用ARM编译器工具链进行开发的流程如图7.26所示。图7.26应用ARM编译器工具链进行开发的流程
1)编译器(armcc)
ARM编译器工具链中的armcc可将标准C、C++ 源程序转换成基于ARM处理器架构的机器码,可编译相关C、C++ 代码生成的NEON向量指令,生成后缀为 .o的目标文件。
2)汇编器(armasm)
ARM编译器工具链中的armasm可将汇编指令转换为二进制的机器代码,可汇编NEONSIMD指令,生成后缀为 .o的目标文件。
3)链接器(armlink)
ARM编译器工具链中的armlink可以将编译得到的一个或者多个目标文件和相关的一个或多个目标库链接起来,生成可执行镜像(.axf)。
4)镜像格式转换工具(fromelf)
应用ARM编译器工具链中的fromelf工具,能够实现将可执行镜像格式转换为各种输出文件,如去掉镜像文件(.axf)中的调试信息将其转换为二进制文件(.bin)。
应用这些工具可以编译裸机嵌入式系统应用程序或库,包括DS-5安装目录下例程子目录中的各例程,用户可以通过Shell命令行或者在EclipseforDS-5集成开发环境中调用ARM编译工具。图7.27所示是在命令行中查询编译器armcc版本信息。图7.27查询armcc版本信息
2.GNU编译器
AlteraSoCEDS自带的裸机GNU编译工具是MentorSourceryCodeBenchLiteEdition4.6.3,安装在SoCEDS安装目录/embedded/host_tools/mentor/gnu/arm/baremetal中。此编译器是基于ARM架构的处理器,用于裸机程序编译。通过嵌入式命令行(Embedded_Command_Shell)启动,在计算机系统中将编译工具路径环境变量设置好,可直接键入命令,如arm-none-eabi-gcc命令。图7.28所示是在Shell命令行中查询该编译器版本信息。图7.28查询arm-none-eabi-gcc版本信息
AlteraSoCEDS自带的LinuxGNU编译工具是LinaroLinuxcompilerversion4.7.1(根据SoCEDS版本的不同会有所不同),此套编译器作为ARMDS-5的组件安装,位于SoCEDS安装目录/embedded/ds-5/bin中。此编译器是基于ARM架构的处理器,用于编译Linux应用程序。同样也可以从命令行直接启动编译工具,也可在Eclipse中创建Linux可执行程序项目,从而调用此套编译器。图7.29所示为在命令行中查询该编译器版本信息。图7.29查询arm-linux-guneabihf-gcc版本信息
7.3.2DS-5编译器及其选项设置
以armcc为例,在EclipseforDS-5环境中,新建或导入以ARMCompiler为编译器创建的DS-5工程,并用鼠标右键点击工程名,在右键菜单中选择Properties命令,如图7.30所示。在弹出的Properties对话框中,展开左侧的C/C++Build,点击Settings即可对armcc编译器进行设置,如图7.31所示。图7.30在右键菜单中选择Properties命令图7.31编译选项设置
在图7.31中可以看到ARM编译器的所有选项,如Alloptions中显示:--cpp-O0-g,其中包括了相关的编译指令。如果想添加或者修改指令,则点击SourceLanguage、Optimizations、CodeGeneration、Debugging等选项,然后在右侧展开的相关选项中进行选择设置。例如,在ARMC++Compiler下面:
(1)可以选择Includes选项,添加头文件包含搜索目录。
(2)可以选择Optimizations选项,其中包括:
①优化等级(Optimizationlevel):大写之母O后面带一个数字表示优化等级的高低,O0表示不优化,O1表示关闭影响调试结果的优化功能,O2表示该优化级别提供了最大的优化功能。
②优化方式(Optimizefor):可以选择尺寸最优、时间最优或默认。
(3)可以选择CodeGeneration选项,其中包括:
①数据存储格式(Byteorder):大端格式或小端格式。
②指令集选择(Instructionset):ARM指令或Thumb指令。
7.4设计项目的调试
ARMDS-5为用户提供了功能强大的调试工具,DS-5Debugger可与硬件目标板连接后进行在线调试,也可应用基于ARM架构处理器的模型进行调试,开发人员可完全控制程序执行流程并快速定位、纠正错误,其提供的功能有:
(1)加载镜像文件或符号。
(2)运行可执行镜像文件。
(3)设置断点、监视点。
(4)单步执行源程序及指令。
(5)访问变量、寄存器值。
(6)堆栈调用(navigatingthecallstack)。
(7)支持异常处理及Linux信号。
(8)可调试多线程Linux应用程序。
(9)可调试Linux内核模块,启动代码。
(10)可调试对称多核裸机系统。
7.4.1调试配置(DebugConfiguration)
项目编译成功后,启动配置调试对话框,在Eclipse主界面菜单栏选择Run->DebugConfigurations,如图7.32所示。图7.32启动DebugConfigurations对话框
在弹出的DebugConfigurations对话框中,选择左侧列表中的DS-5Debugger,单击左上角新建按钮(或双击DS-5Debugger选项,或右键菜单选择New)创建新的调试连接,如图7.33所示。图7.33新建调试连接
在新创建的DS-5调试器中开始配置调试选项。
1.Connection标签页
Connection标签页配置选项如图7.34所示。
(1) Selecttarget:指定目标器件及调试选项。
(2) DTSLOptions:指定调试器及跟踪选项配置。
(3) Connections:指定连接目标方式。
1) Selecttarget选项
如图7.34所示,在Connection标签页的Selecttarget列表中,可选择器件系列(如Altera->CycloneVSoC等)。不同的器件系列包含不同的配置选项,如CycloneVSoC下面可选择的配置选项有三大类:
(1) BareMetalDebug:此项用于调试裸机应用程序。
(2) LinuxApplicationDebug:此项用于调试Linux应用程序。
(3) LinuxKerneland/orDeviceDriverDebug:此项用于调试Linux内核及设备驱动。图7.34DS-5调试器配置Connection标签页
2) DTSLOptions选项
单击DTSLOptions选项右侧的Edit按钮,弹出DTSL配置编辑器,即DebugandTraceServicesLayer(DTSL)Configuration窗口,开始创建并配置跟踪会话。该窗口有6个标签页选项:CrossTrigger、TraceBuffer、Cortex-A9、STM、ETR和ETF标签页。
(1) CrossTrigger标签页。如图7.35所示,在此标签页配置SoCFPGA交叉触发选项。图7.35DTSL配置编辑器CrossTrigger标签页
① EnableFPGA->HPSCrossTrigger:使能FPGA到HPS的触发。
② EnableHPS->FPGACrossTrigger:使能HPS到FPGA的触发。
③ AssumeCrossTriggerscanbeaccessed:选择此项用于确认Preloader已加载,以使DS-5可访问交叉触发窗口。
(2) TraceBuffer标签页。该标签页用于选择跟踪信息捕捉方法,如图7.36所示。图7.36DTSL配置编辑器设置跟踪信息捕捉方式
① None:跟踪功能关闭。
② ETR:应用HPS可访问的任何缓冲存储器。
③ ETF:应用32KB的片上跟踪缓冲存储器。
④ DSTREAM4GBTraceBuffer:应用DSTREAM(ARM仿真器)的4G缓冲存储器。此选项仅在Targetconnection被配置为DSTREAM时可选。
在TraceBuffer标签页中,还可以设置时间戳频率(Timestampfrequency),如图7.37所示。图7.37DTSL配置编辑器设置时间戳频率
(3) Cortex-A9标签页。该标签页用于设置内核跟踪选项,如图7.38所示。
① EnableCortex-A90trace:勾选后使能跟踪内核0。
② EnableCortex-A91trace:勾选后使能跟踪内核1。
③ PTMTriggershaltexecution:勾选后使得跟踪时可终止程序。
④ EnablePTMTimestamps:勾选后允许启用PTM时间戳。
⑤ EnablePTMContextIDs:勾选后使能跟踪PTM上下文ID设备。
⑥ ContextIDSize:选择ID位宽,可选为8、16、32位。仅当PTMContextID勾选后可用。
⑦ CycleAccurate:勾选后创建循环精确跟踪。
⑧ Tracecapturerange:勾选后仅对确定范围地址进行跟踪。
⑨ StartAddress,EndAddress:确定跟踪首地址及末地址。图7.38配置内核跟踪选项
(4) STM标签页。在此配置是否启用STM(SystemTraceMacrocell)跟踪,如图7.39所示。图7.39配置启用STM
(5) ETR标签页。在此配置ETR(EmbeddedTraceRouter)选项,如图7.40所示,用于直接将跟踪信息写入一个可以被HPS访问的缓冲存储器。图7.40配置ETR选项
(6) ETF标签页。在此配置ETF(EmbeddedTraceFIFO)选项,如图7.41所示。ETF是HPS上的一个32KB的缓存,可以被调试器用来存储检索到的跟踪数据,但也可作为通过ETR或外部DSTREAM器件存储跟踪数据的灵活缓存。
① Configuretheon-chiptracebuffer:若ETF被设置为跟踪信息存储器,则选中此项。
② Size:定义ETF大小,默认设置为0x1000(4KB),但可以设为0x8000(32KB)以匹配实际缓存大小。图7.41配置ETF选项
3) Connections选项
单击图7.34下方Connections部分中Connection框右侧的Browse按钮,弹出SelectDebugHardware对话框(目标板需要通过电缆与计算机连接,如USB-Blaster)。在此用户可以指定用于与目标板通信的连接,基于不同的调试选项,有不同的设置。
(1)对于BareMetalDebug和LinuxKerneland/orDeviceDriverDebug目标类型,点击Browse按钮,弹出的对话框如图7.42所示,用户可选AlteraUSB-Blaster或者DSTREAMinstances。
(2)对于LinuxApplicationDebug目标类型,用户可选为RemoteSystemExplorerview。图7.42Connections连接选项
2.Files标签页
Files文件标签页选项如图7.43所示。
(1) Applicationonhosttodownload:设置要下载至目标的应用程序名。可通过浏览工作空间(Workspace)或文件系统(FileSystem)来设置。图7.43Files标签页选项
(2) Files:包含一组文件,通过点击“+”或“-”按钮来添加或移除文件。每个文件可以设置为以下2种类型:
① Loadsymbolsfromfile:调试器通过此文件载入标记。
② Addperipheraldescriptionfilesfromdirectory:调试器通过此路径中的SVD文件载入外设寄存器描述。SVD文件是在硬件开发中生成的。
3.Debugger标签页
Debugger标签页配置选项如图7.44所示。
(1) Runcontrol:该选项有Connectonly、Debugfromentrypoint和Debugfromsymbol,Runtargetinitializationdebuggerscript(.ds/.py)(运行用户指定目标初始化的调试器脚本),Rundebuginitializationdebuggerscript(.ds/.py)(运行用户指定调试初始化的调试器脚本)以及Executedebuggercommands(执行用户自定义调试命令)。
(2) Hostworkingdirectory(选择主机工作路径):设置DS-5调试器的工作路径。可以勾选Usedefault来使用DS-5的工作空间路径。
(3) Paths(路径):允许调试器搜索多个路径,通过单击“+”或“-”进行添加或移除。图7.44Debugger标签页配置选项
4.RTOSAwareness标签页
RTOSAwareness标签页如图7.45所示。如果应用了指定的实时操作系统(RTOS),则可以使调试器识别KeilTMCMSIS-RTOSRTX。图7.45TROSAwareness实时操作系统选项
5.Arguments标签页
Arguments标签页如图7.46所示。在该标签页中允许以文本方式输入调试参数。根据需要可以点击右下角的Variables按钮选择相应的变量作为程序参数。图7.46Arguments标签页
6.Environment标签页
Environment标签页如图7.47所示。在该标签页中可以设置程序执行过程中所用环境变量。图7.47环境变量设置
7.EventViewer标签页
EventViewer标签页如图7.48所示。在此标签页中可使能及配置查看STM(SystemTraceMacrocell)和ITM(InstrumentationTraceMacrocell)事件。SoCFPGA没有ITM,因此只有STM可用,当STMViewer启用后,可配置跟踪深度大小。图7.48EventViewer标签页
7.4.2调试视图(DebugViews)
在7.4.1节的DebugConfiguration相关调试配置选项设置完成后,点击DebugConfiguration对话框右下角的Debug按钮即开始连接目标板进行调试。根据对话框提示,如图7.49所示,选择Yes,切换至调试窗口,如图7.50所示。图7.49切换到调试窗口提示对话框图7.50DS-5调试视图(DebugViews)
1.DebugControl调试控制窗口
图7.50左上角有DebugControl(调试控制)子窗口,如图7.51所示。使用调试控制子窗口,可以非常轻松地管理调试连接、展现上下文和控制程序执行。调试连接在此视图中列出,并且只需一次单击即可启动连接,而与连接类型(例如JTAG或GDB)无关。在顶部栏中,开发人员可利用运行控制命令来执行程序,这具有很高的灵活性。在由于计算处理或断点设置而暂停执行时,进程、线程和调用堆栈信息将立即显示出来。DebugControl窗口允许与一个或多个目标同时建立多个连接,并且在用户将重心放在某个连接时自动刷新所有其他调试器视图窗口。图7.51DebugControl调试控制子窗口
2.Disassembly源代码反汇编窗口
图7.50中包含Disassembly子窗口,如图7.52所示,该窗口为对底层调试或优化感兴趣的开发人员提供了源代码的反汇编。DS-5调试器提供的反汇编,可用于自动或手动对ARM或Thumb指令进行解码。通过与程序执行完全同步,该反汇编子窗口突出显示了与所选源代码行匹配的所有指令,并且还可以用于单步执行机器指令以及源代码。在DebugControl调试控制子窗口,可通过运行、暂停和单步执行/单步跳过/单步跳出图标对程序执行进行控制。图7.52Disassembly源代码及反汇编子窗口
3.Commands调试命令行窗口
图7.50上部有Commands调试命令行窗口,如图7.53所示。DS-5调试器实现自己的类似于GDB的命令行接口,扩展了GNU工具的功能,并且包含JTAG/SWD和GDB连接。DS-5调试器命令提示符可从DS-5IDE内访问,也可以通过控制台从外部访问,前者还具备自动完成功能和工具提示帮助以方便使用。所有调试器操作(CLI或GUI驱动的)都显示在命令视图中并且记录在历史记录视图中,这允许用户只需通过选择文本并在脚本视图中拖放脚本,即可将任何命令序列转换为脚本。然后,用户可以随时调用已保存的脚本,在初始化或设置断点时自动执行已保存的脚本。图7.53Commands调试命令行窗口
4.Breakpoints断点和观察点窗口
图7.50右上方包括Breakpoints子窗口,如图7.54所示。断点和观察点已成为软件调试的重要环节,DS-5调试器使得该功能更加强大且更易于使用。软件和硬件断点可以轻松地从源代码进行设置,并且在断点视图中与观察点一起列出。Breakpoints子窗口用于禁用、启用、删除或配置断点和观察断点属性,确保程序以正确的顺序执行。图7.54Breakpoints子窗口
5.Registers寄存器、Memory内存、Variables变量和Functions表达式子窗口
在DS-5调试器内核中,协处理器和外设寄存器全都在寄存器视图中列出,如图7.55所示。
有许多方法可以使用DS-5调试器查看和修改内存内容。Memory内存窗口是传统的以线性方式展示内存空间的视图,如图7.56所示。此视图对于底层调试非常有用,可对此视图进行配置以便以不同的格式(默认为十六进制)和宽度显示数据,接受表达式和符号作为起始地址,并且可在特定的内存地址设置数据观察点。
6.Trace跟踪子窗口
DS-5调试器支持ARMCoreSightETM和PTM非侵入性程序跟踪,允许开发人员在出现错误时查看说明(以及关联的源代码)。它还使开发人员能够调试对时间敏感的问题,而用传统的侵入性单步技术很难发现这些问题。
DS-5调试器提供了灵活的跟踪显示功能,如图7.57所示。跟踪是用于调试和短期性能分析的宝贵工具,但很少有开发人员能够仅通过长长的已执行机器指令列表做到这一点,DS-5为开发人员提供了友好的方式来展示这些数据,例如将指令链接到相应的源代码、显示功能级别跟踪分析或者提供图形跟踪显示。基于跟踪数据,DS-5调试器还生成时间表图表,所含信息可帮助开发人员迅速理解其软件在目标上的执行方式以及哪些功能最占用CPU。通过提供不同的缩放级别,该时间表可基于每个时间单位的指令数,以其最高分辨率显示热点地图,并且提供按每组指令的典型延迟时间以不同的颜色来编码每条指令显示。
7.AppConsole应用程序控制台窗口
程序执行过程中,会在AppConsole窗口打印出相关信息,如图7.58所示。图7.58应用程序控制台窗口
7.5基于ARM编译器的裸机实例
7.5.1创建ARMCC项目可以通过两种方式来启动EclipseforDS-5。在<DS-5安装目录>/embedded目录下选中Embedded_Command_Shell.bat文件,双击启动Embedded_Command_Shell,键入eclipse命令后回车即可启动Eclipse,如图7.11所示;
另一种方式为选择开始→所有程序→ARMDS-5→EclipseforDS-5,通过嵌入式命令行启动,将所有编译工具命令添加到系统搜索路径中,可以直接调用,无需完整路径。采用第二种方式启动EclipseforDS-5后会弹出工作空间路径选择对话框,可根据开发需要自行选择工作空间路径,如图7.59所示。
图7.59选择工作空间(Workspace)
Eclipse启动后出现ARMDS-5欢迎界面,如图7.60所示。可以通过页面中的链接访问DS-5相关文档、教程和教学视频等。图7.60DS-5欢迎界面
(1) DS-5软件开发是基于项目的,并可在EclipseIDE中方便地进行项目管理。软件开发首先要新建项目,按前述方法启动Eclipse,本节中的流水灯实例程序全部代码应用C语言编写,所以新建一个C语言项目。具体操作是在主菜单中选择File→New→CProject命令,如图7.61所示。
(2)选择CProject命令后弹出项目类型选择对话框,如图7.62所示。本节中的流水灯实例程序是应用ARM编译器的裸机可执行程序类型,故此处选择Bare-metalExecutable项目类型。在其中的EmptyProject和HelloWorldProject两种模板子类型中,选择创建空的项目。在项目创建完成后手动新建源程序,选择完毕点击下一步(Next)。
(3)设置工程配置选项。在工程向导的选择配置(SelectConfigurations)窗口中提供调试(Debug)与发布(Release)两种选项,如图7.63所示。若设置为调试(Debug)选项,则编译后生成具有完整调试特性的二进制可执行文件,但程序优化性能级别为最低(level0);若设置为发布(Release)选项,则编译过程中会对程序做最高级别优化(level3),但在调试功能上不如调试选项。点击Finish之后,新建项目即可完成。图7.62选择项目类型图7.63工程配置选项
(4)在第6章硬件设计部分介绍SoCKIT开发板上左边4个LED由HPS的GPIO1外设控制,Qsys设计中添加的PIO接口控制右边4个LED。本实例项目应用SoCEDS提供的HWLIB中的API访问板上硬件,故需要在项目编译选项中添加HWLIB路径。
①在EclipseforDS-5左侧的ProjectExplorer中选中新建好的项目,用鼠标右键点击,在右键菜单中选择Properties。或在选中项目名称后,选择Eclipse主菜单Project->Properties命令,如图7.64所示。
②在弹出的PropertiesforLedWater对话框中,选择C/C++Build中的Settings子项,如图7.65所示。在右边的ARMCCompiler选项中点击Includes子项,该子项可添加三种目录。本实例需要添加的是项目编译时需要包含的HWLIB路径,并非系统路径或预处理所需路径。图7.65添加HWLIB路径
③点击图7.65对话框中Includepath(-I)右侧的第一个绿色带加号按钮,弹出如图7.66所示的路径选择对话框。点击Filesystem按钮,通过Windows资源管理器选择路径<SoCEDS安装路径>\ip\altera\hps\altera_hps\hwlib\include。完成后点击OK按钮。图7.66添加HWLIB路径
7.5.2建立项目文件
(1)在新建的C工程中添加主程序main.c,其中包含程序入口点main函数,主程序控制软件的整个执行流程,其中需要预包含所需系统头文件,以及将用到的设备驱动头文件。此处先建立源程序,至于主程序具体代码,在后续步骤再加以编辑。
选中在7.5.1节新建的C工程,选择主菜单File->New->SourseFile命令,如图7.67所示,或在工程名上点击右键选择New→SourseFile命令。图7.67创建源文件
在弹出的NewSourceFile对话框的Sourcefile栏中输入主程序文件名,如图7.68所示。模板(Template)选择默认C程序模板(DefaultCsourcetemplate),点击Finish按钮,即完成主程序main.c的创建。图7.68创建源文件
(2)创建硬件设备描述头文件hps_0.h。SoCEDS提供了由Qsys硬件系统信息转换为软件开发所需设备描述头文件的工具swinfo2header,使得软硬件设计衔接起来。
在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系统设计完成后产生的soc_system.sopcinfo文件,开发人员可根据项目情况进行修改,回车后在命令行当前目录下会生成hps_0.h文件,可将其拷贝至Eclipse当前软件项目目录中。图7.69产生hps_0.h头文件
脚本文件编辑完成后将其保存在当前项目目录中,在命令行中切换到当前项目目录,然后执行该脚本,即可在当前项目目录下生成hps_0.h,如图7.70所示。图7.70通过脚本文件产生hps_0.h头文件
在Eclipse中用鼠标右键点击项目名称,选择刷新(Refresh),可看到hps_0.h已被添加至当前项目,双击后可查看该文件的内容,如图7.71所示。图7.71将hps_0.h头文件加入Eclipse工程
(3)将<SoCEDS安装目录>\embedded\ip\altera\hps\altera_hps\hwlib\src\hwmgr中的看门狗驱动程序alt_watchdog.c拷贝至项目目录,如图7.72所示。图7.72拷贝看门狗alt_watchdog.c程序
由于alt_watchdog.c中包含C++ 编译器方可编译的函数,因此本节实例项目需要对看门狗驱动程序进行简单修改。本节实例仅应用了看门狗alt_wdog_start()和alt_wdog_reset()函数,故需对拷贝后的alt_watchdog.c做裁减。
(4)ARM链接器支持分散加载机制,可通过一个描述性分散文件(*.scat)指定链接生成的可执行映像存储器映射情况,使开发人员完全控制映像各部分的组织、布局情况。分散文件通常用于控制需要复杂存储器映射的映像,比如加载和执行映像均分布在多个分散的存储器映射区域。关于ARM链接器生成映像结构、分散加载机制及分散文件详细信息,可查看ARMDS-5帮助文档。在主菜单界面选择Help->HelpContents,弹出帮助主题窗口,在左侧导航栏选择ARMDS-5Documentation->ARMCompilertoolchain->usingthelinker->Usingscatterfiles,如图7.73所示。图7.73查看ARMDS-5帮助文档中的scatter信息
接下来需要为当前流水灯项目建立分散文件OnchipRAM.scat。选择File→New→Other,如图7.74所示。图7.74创建分散文件OnchipRAM.scat
在弹出的New新建文件向导对话框中,选择ScatterFileEditor下的ScatterFile选项,点击Next,如图7.75所示。图7.75为工程创建分散文件OnchipRAM.scat
在弹出的NewScatterFile对话框中选择当前项目文件夹为分散文件父文件夹,在Filename栏中输入文件名(如OnchipRam),如图7.76所示。点击Finish按钮,完成Scatter文件的创建。图7.76创建分散文件OnchipRAM.scat
本节流水灯实例项目仅需对映像存储器映射进行简单控制即可,控制映像在片内
64KB的OnchipRAM连续的存储区域加载执行。由第6章SoCFPGA硬件介绍可知,片内64KB的RAM存储器地址映射为0xFFFF0000~0xFFFFFFFF。
保存编辑好的Scatter文件并关闭该文件,再次双击打开该分散文件,可以看到映像加载区与执行区两种存储器映射视图,如图7.77所示。图7.77OnchipRAM.scat存储器映射视图
(5)编辑主程序文件main.c。首先需要包含用的头文件,包括C语言系统标准输入输出库、SoCFPGA器件HWLIB库、硬件系统设备描述以及看门狗驱动,在主程序中定义两个变量i、j来分别控制HPS的GPIO、Qsys中添加的PIO外设输出。程序中使i和j循环移位,从而使板上LED呈现流水灯实验现象。主程序main.c的具体代码如图7.78所示。图7.78main.c程序代码
7.5.3项目编译
对Eclipse项目进行编译之前,需要为ARMLinker指定生成可执行程序所需的分散文件OnchipRam.scat(该文件在前述步骤已成功创建),步骤如下:
在工程属性对话框的C/C++Build->Settings选项中,选择ARMLinker->ImageLayout,点击Scatterfile(--scatter)右侧的Browse按钮,选择编辑好的分散文件OnchipRam.scat,点击OK关闭属性对话框,如图7.79所示。图7.79为工程编译添加分散文件
编译项目步骤为:在主菜单中选择Project→BuildProject,或在工程名上选择右键菜单BuildProject。编译过程中可在Console窗口中查看相关信息。在该窗口可观察到,整个编译过程先启动ARMCCompiler进行编译生成目标文件,然后启动ARMCLinker链接为可执行程序。
编译完成后,生成LedWater.axf可执行程序映象,如图7.80所示。图7.80工程编译过程中的相关信息
7.5.4设计项目的调试
(1)参考6.2.2节,将生成的Preloader引导可执行文件E:\chapter7\Software\spl_bsp\uboot-socfpga\spl\u-boot-spl拷贝至当前项目目录,然后将Quartus Ⅱ编译完成的FPGA硬件设计(参考第6章相关内容)通过USB-Blaster下载至目标板中,如图7.81所示。图7.81下载硬件设计
(2)参考7.4节,当DS-5调试器成功连接到目标后,可在命令视图中键入命令进行调试会话。通过编写包含按次序执行的调试命令的脚本,可以便捷地控制调试会话。
在新建文件向导对话框中为本节流水灯项目创建调试脚本DebugLedWater.ds,如图7.82所示。图7.82创建调试脚本DebugLedWater.ds
调试脚本每行只能包括一条命令,以 # 开头的是注释内容,双击即可编辑创建的DebugLedWater.ds。关于调试命令的详细信息,可参考DS-5帮助主题,如图7.83所示。图7.83DS-5调试命令帮助
编辑调试脚本文件DebugLedWater.ds,具体内容如图7.84所示。调试脚本文件也可以拷贝DS-5例程中的调试脚本进行修改。图7.84调试脚本DebugLedWater.ds的内容
(3)调试配置(DebugConfiguration)。该部分操作可参考7.4.1节内容。
① Connection标签页:选择目标(Target)为Altera→CycloneVSoC→BareMetalDebug→DebugCortex-A9_0viaUSB-Blaster,点击Browse按钮选择当前与目标建立连接的USB-Blaster,如图7.85所示。图7.85配置Connection标签页选项
② Files标签页:选择Addperipheraldescriptionfilesfromdirectory,并点击下面的FileSystem按钮添加硬件设计中的设备描述目录,如图7.86所示。
③ Debugger标签页:将Runcontrol运行控制设置为Connectonly,勾选运行调试初始化脚本(Rundebuginitializationdebuggerscript(.ds/.py)),点击Workspace按钮,选择前述步骤创建的调试脚本文件,如图7.87所示。图7.86配置Files标签页选项图7.87配置Debugger标签页选项
(4)点击右下角的Debug按钮,弹出是否切换至调试视图对话框。选择Yes则切换至调试视图,DS-5Debugger自动连接目标板,按序执行DebugLedWater.ds中的调试命令,目标板系统开始运行,程序自动停在主函数入口处,如图7.88所示。图7.88启动调试
设置断点(BreakPoint),查看变量与寄存器内容。
在主程序中的while(1)循环的开头处设置一个断点,如图7.89所示,使变量i、j每次移位后停在断点处,使得目标板上LED每次改变状态后停下。点击DebugControl子窗口快捷按钮Continue(绿色箭头按钮)或按键盘上的F8键继续运行,则可使i、j继续移位。图7.89在主程序中设置断点
程序运行前,查看变量与复位寄存器视图,如图7.90所示。可见,此时还观察不到程序中局部或者全局变量,因为程序还未执行到定义变量的代码处。图7.90程序执行前变量、寄存器视图
点击DebugControl调试控制子窗口快捷按钮中的Continue按钮,或按F8执行程序,程序停在断点处,如图7.91所示。图7.91程序执行至断点处
此时,观察本地变量与rstmgr寄存器值的变化情况。可见,此时变量寄存器已出现局部变量i和j,且均为初始化的值,寄存器rstmgr_brgmodrst的值变为0x00000000且被高亮显示,如图7.92所示。因为在main.c第22行修改了该寄存器的值,使得程序28行可通过LWBRIDGE去控制挂载于FPGA引脚的外设LED灯。
继续执行程序,可查看变量i和j的循环移位情况。还可查看gpio1数据寄存器、l4wd0状态寄存器、altera_avalon_pio_led_pio_s1数据寄存器等的变化情况,同时可观察到目标板上led灯依次循环点亮。若删除断点继续执行,则由于程序使用了while(1)死循环,可观察到程序在目标板上持续运行。图7.92查看寄存器、变量值
7.6基于GNU编译器的裸机实例
本节将创建一个基于MentorGNU编译工具链的流水灯实例项目。与7.5节不同的是,本节将应用FPGAManager的API,在HPS端通过软件为FPGA下载sof硬件配置文件,所以需要预先调整目标器件MSEL引脚的设置,将之设置为被动配置(Passive)模式。MSEL引脚的具体配置方式参见表7.1所示。
7.6.1创建GNU项目
在SoCEDS安装目录下,双击Embedded_Command_Shell.bat,在Shell中输入Eclipse命令并回车,如图7.93所示。因为本节将创建基于GNU编译器的项目,所以需应用安装于<SoCEDS安装目录>/embedded/host_tools/mentor/gnu/arm/baremetal中的MentorGNU编译工具链。前面曾提到,通过命令行启动Eclipse可以将SoCEDS中所有工具路径环境变量设置好,因此本节需通过命令行方式启动Eclipse。不推荐通过Windows开始菜单或快捷方式启动,否则可能导致后续项目编译时找不到编译工具。图7.93通过Shell启动Eclipse
下面创建基于Makefile的项目。在EclipseforDS-5主菜单中选择File->New->MakefileProjectwithExistingCode,如图7.94所示。图7.94创建Makefile项目1
在弹出的ImportExistingCode对话中,在ProjectName栏输入工程名,已存在代码路径保持默认,会自动将项目保存在当前工作空间,语言支持也保持默认即可。在ToolchainforIdexerSettings中的工具链选择none,点击Finish按钮完成项目的创建,如图7.95所示。图7.95创建Makefile项目2
7.6.2创建项目文件
实例项目将通过SoCFPGA芯片中的ARMCortex-A9软件来配置SoCFPGA硬件部分,因此需要用到在Quartus Ⅱ中的硬件设计工程编译完成后生成的 .sof配置文件。在DebugConfigurations调试配置对话框的Files标签页中需要添加设备描述目录,为了方便,将Quartus Ⅱ硬件项目中产生的output_files和soc_system文件夹拷贝至当前软件项目目录,并放在hardware文件夹下,如图7.96所示。图7.96创建项目文件
接下来创建主程序文件main.c。程序先检测板上FPGA状态信息,检测器件是否上电;然后检测FPGA的MSEL引脚配置,确认是否是被动配置方式,本例应用HPS端软件方式来完成配置FPGA硬件;由于板上有4个LED由Qsys系统中的PIO控制,HPS需要通过LWH2FBRIDGE访问,因此主程序需对FPGA与HPS间的AXI桥接进行初始化;测试初始化工作完成后,进入while(1)死循环流水灯控制程序。
GNU软件项目编译生成目标文件之后,需要再链接生成可执行程序。SoCEDS提供的裸机MentorGNU链接器是arm-none-eabi-ld.exe,链接过程由链接脚本来控制。链接脚本主要用于规定如何把输入文件内的section放入输出文件内,并控制输出文件内各部分在程序地址空间内的布局。
在大型的软件项目开发中,项目源文件不计其数,其按类型、功能、模块分别放在若干个目录中,由Make工具来构建和管理项目。Make需要一个Makefile配置文件定义项目编译的规则,诸如哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。
以下是为当前项目创建Makefile文件的步骤。
(1)在当前工程中,选择Eclipse主菜单File->New->Other,打开New新建文件对话框,选择General->File,如图7.97所示。点击Next进入下一步。
(2)选择当前GNU项目LedWaterGNU目录作为所创建文件的父目录,键入文件名Makefile,点击Finish按钮,完成Makefile文件的创建,如图7.98所示。
(3)双击打开Makefile文件,对其内容进行编辑。关于Makefile文件编写规则的详细信息,可参考相关资料。
(4)至此,已为项目添加了所有需要的文件,可在工程浏览器(ProjectExplorer)中查看。双击文件可对相应文件内容进行查看、编辑。图7.97为GNU工程创建Makefile文件图7.98创建Makefile文件
7.6.3跟踪调试
(1)启动跟踪选项配置对话框。在DebugConfiguration对话框的Connection标签页中,选择好目标连接类型后,点击DTSLOptions右侧的Edit按钮,如图7.99所示。图7.99创建跟踪会话
(2)在弹出的DTSL配置编辑器界面,将Nameofconfiguration中的默认名称修改为LedWater。在TraceBuffer标签页中,选择跟踪捕获方式(Tracecapturemethod)为片上跟踪缓存(OnChipTraceBuffer(ETF))方式,时间戳频率保持默认值,如图7.100所示。图7.100配置跟踪捕获方式
(3)在DTSL配置编辑器的Cortex-A9标签页中,勾选EnableCortex-A9coretrace选项,使能Cortex-A9内核跟踪,如图7.101所示。图7.101配置内核跟踪选项
(4) DTSL配置编辑器的ETF标签页用于配置ETF(EmbeddedTraceFIFO)选项。ETF是HPS上的一个32KB缓存,勾选ETF标签页中的Configuretheon-chiptracebuffer(配置片上跟踪缓存)选项,默认设置ETF大小为0x1000(4KB),此处设为0x8000(32KB)以匹配实际缓存大小,如图7.102所示。点击OK按钮,返回DebugConfigurations对话框。图7.102配置ETF标签页选项
(5)按照前述方式,启动调试会话,程序停在主程序入口main函数处。此时跟踪视图如图7.103所示。
在主程序main.c的第73行(即while(1)循环下面的第一行)设置断点,如图7.104所示。图7.104设置断点
点击DebugControl调试控制子窗口快捷按钮栏中绿色箭头(Continue)按钮,或按键盘上的F8键执行程序,程序执行至73行断点处,查看Trace跟踪视图,可查看到此过程中各子函数的CPU资源占用情况,如图7.105所示。此时AppConsole应用程序控制台中显示的信息如图7.106所示。按Continue按钮或F8键,循环执行的跟踪视图如图7.107所示。图7.105程序从main入口执行至断点处各函数占用资源情况图7.106应用程序控制台视图图7.107进入死循环后的跟踪视图
7.7ARMStreamline硬件性能分析器
7.7.1ARMStreamline的基本特点ARMStreamline硬件性能分析器是ARMDS-5工具链的一部分,是ARMLinux和Android平台的系统级软件优化工具。它使软件开发人员能够充分利用基于ARM处理器的系统上的可利用资源,以创建高性能和高效的产品。它配有直观的图形用户界面,可显示从CPU和GPU性能计数器到源代码热点再到实际功耗等信息。
1.系统级时间轴分析(SystemLevelTimelineAnalysis)
时间轴视图将多个数据源组合在一起,为软件开发人员提供了完整的高性能分析工具。通过基于时间的可视化图形,用户可以轻松观察系统性能指标随数据捕获时间的变化情况。在性能计数器中发现了即时热点或者虚假变化之后,用户能够以图形的方式选择感兴趣的时间段来生成重点分析报告。图7.108所示为某系统时间轴视图。图7.108Timeline视图
2.深入性能挖掘(ProfileDrilldown)
ARMStreamline性能分析器支持基于时间和事件的采样(EBS),以便对C/C++应用程序中的代码热点进行深入挖掘。通过此功能,开发人员能够根据统计数据向进程、线程、函数、源代码行和汇编指令分配处理器时间或者硬件性能计数器,如高速缓存中未访问次数和执行的ARMNEON指令。图7.109所示为Callpaths代码视图。图7.109Callpaths代码视图
3.SMP系统的多核感知分析(Core-AwareAnalysis)
由于线程同步较差和并发不佳等问题,很容易达不到多核SOC的潜在性能增益。对于SMP平台,Streamline具有基于每个内核的性能技术图表和X射线显示模式,此模式会映射每个内核的进程和线程活动,这样开发人员就能够看清其代码分布情况,如图7.110所示。图7.110Multicore分析视图
4.集成ARMMail图形性能分析
集成用户界面和游戏内容等图形密集的任务并不仅仅在一个处理器上独立运行,因此开发人员需要能够看到跨应用程序和图形处理器的性能状况。Streamline可向上链接到Mail驱动程序以提供有关OpenGLES1.1和OpenGLES2.0使用情况的广泛统计信息,以及300多个软件和硬件性能计数器,并对帧缓冲区进行采样以实现更高的性能。图7.111所示为Mail图形性能分析视图。图7.111Mali图形性能分析视图
5.用户注释(Annotations)
Streamline性能分析器通过一个简单而功能强大的代码注释(CodeAnnotations)解决方案来协调调试和性能分析之间的关系。从按时间表跟踪机器状态变化到将帧缓冲区内容与性能问题交叉关联,简单代码测量可将用户的软件与性能分析链接在一起。为此,用户只需从用户或内核空间将其写入Streamline的内核模块(Gator驱动程序)即可。图7.112所示为Annotations视图。图7.112Annotations视图
6.Android和Linux集成
Gator驱动程序和daemon程序是以开源格式提供给用户的,它们利用ARMLinux内核中的新功能向开发人员提供来自操作系统的全面信息。Gator驱动程序可用于Linux内核2.6.32版本或更高版本,包括Android4.0(IceCreamSandwich)平台使用的最新3.x版本。
7.7.2设置ARMLinux目标机
1.准备工作
为了建立Linux内核(Kernel)和Gator驱动程序,计算机上必须安装以下工具:
(1)获得目标板运行的Linux内核源代码。目前,Streamline性能分析器只能支持Linux2.6.32及以上版本。Linux内核源代码可以在主机路径<SoCEDS安装目录>/embedded/embeddedsw/socfpga/source/linux-altera-3.7>获得,或者在网上下载,下载地址为。
(2)用于编译Linux内核的交叉编译器,或DS-5自带的ARMLunuxGCC。交叉编译器下载地址:/126046067/gcc-linaro-arm-linux-gnueabihf-4.7-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国政法大学《工程中的数值方法C》2023-2024学年第一学期期末试卷
- 郑州西亚斯学院《现代通信原理》2023-2024学年第一学期期末试卷
- 长江工程职业技术学院《公共服务质量管理》2023-2024学年第一学期期末试卷
- 消费级3D打印机打印精度改进
- 保险行业基础讲解模板
- 业务操作-房地产经纪人《业务操作》名师预测卷4
- 开学晨会发言稿
- 二零二五年政府形象广告服务合同规范
- 二零二五版国际学校外教引进与团队建设协议3篇
- 2024-2025学年新疆乌鲁木齐四十一中高二(上)期末数学试卷(含答案)
- 《道路交通安全法》课件完整版
- 向女朋友认错保证书范文
- 五分数加法和减法(课件)-数学五年级下册
- 2024年四川省绵阳市中考语文试卷(附真题答案)
- 设计材料与工艺课程 课件 第1章 产品设计材料与工艺概述
- 幼儿园反恐防暴技能培训内容
- 食品企业质检员聘用合同
- 中医诊所内外部审计制度
- 自然辩证法学习通超星期末考试答案章节答案2024年
- 2024年国家危险化学品经营单位安全生产考试题库(含答案)
- 护理员技能培训课件
评论
0/150
提交评论