0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

硬件辅助软件分析

PCB线路板打样 来源:LONG 2019-08-13 17:39 次阅读

得益于功能越来越强大的μP,嵌入式系统变得越来越复杂,嵌入式软件程序变得越来越大,程序越大,更难以调试。更重要的是,在大型嵌入式程序中捕获错误可能会对公司工程资源造成负担。由于嵌入式系统的应用程序很大,程序员缺乏对代码中各种可执行模块的深入了解。此区域是软件分析的用武之地。该术语指的是可以收集有关程序中函数的执行时间,频率和调用模式的数据的软件。这种分析可能是优化代码的第一步。通过让您知道哪些功能非常耗时,它可以让您加快这些代码区域的速度。此外,它还可以让您知道执行程序是否在应用程序期间至少调用您编写的所有代码。

分析工具通常通过将额外的软件嵌入应用程序源代码的关键点来收集信息。或者,您也可以使用外部电路从系统总线捕获分析信息。您可以使用无辅助软件分析或外部硬件辅助软件分析。

C编译器通常为您提供分析开关(-p),对编译的代码起作用以生成分析信息。例如,自由软件基金会(www.gnu.org/fsf/fsf.html)Gnu C编译器为您提供了“-p”编译器开关,您可以使用它来准备目标代码以使用“gprof”收集分析数据“ 效用。当您调用-p开关时,编译器会在每个编译过程的开头添加额外的代码(清单1)。这个额外的“检测代码”可以调用运行时记录实用程序。该列表显示了典型过程的初始x86代码序列(在此示例中为lapinit())。该代码使用自由软件基金会的Gnu汇编语法,该语法具有操作代码,源和目标的一般指令格式。

当您输入每个过程时,检测代码会调用mcount()支持例程。然后,检测代码传递mcount()变量的地址,以支持记录执行程序的调用历史记录的数据结构。在程序执行结束时,检测代码调用(exit()并自动生成mon.out配置文件.mon.out文件包含呼叫发生信息和统计采样信息。操作系统收集统计数据。通过检查应用程序的程序计数器,计时器滴答(例如每10到20毫秒)。

操作系统的prof实用程序使用mon.out文件中的配置文件数据生成应用程序的执行配置文件。应用程序可执行文件的图像中的符号信息。对于图像文件中的每个过程符号,操作系统确定该符号与下一个符号之间的执行时间百分比。

分析信息很有用,因为它使您能够识别在程序中执行时间过长的过程。这些过程非常适合进一步优化。使用这种“源代码检测”,mcount()需要 很长时间。此外,此技术要求您重新编译应用程序软件以插入检测代码。

分析工具具有不同程度的复杂性 - 从命令行分析工具到基于图形用户界面的工具。例如,Cygnus的$ 2000/座(嵌入式)GNU-Pro C编译器和$ 299(用于Linux)CodeFusion IDE附带gprof和gcov命令行分析工具。

一些分析工具,例如Applied Microsystem Corp(AMC)的CodeTEST-Hardware-In-Ckt,提供了一个由硬件探测辅助的嵌入式测试平台(图1)。该工具使您可以在软件开发的最后阶段专注于嵌入式软件测试和分析。 CodeTEST-Hardware-In-Ckt比其他分析工具需要更少侵入性的仪器。此外,该工具进行非抽样测量。

您必须“检测”应用程序,并且此检测非常类似于prof实用程序所需的检测。但是,在这种情况下,检测是“轻量级的”(清单2)。这种方法不需要昂贵的调用mcount() - 类似的过程。相反,它只需要将识别值写入内存位置;该标识值出现在处理器的内存总线上。外部捕获硬件响应将数据放入示例__TAG_PORT地址的写入。当发生这些写入时,捕获硬件会将写入的标识值和时间戳记录到记录缓冲区中。

您还必须以与过程条目类似的方式检测过程的退出代码即结尾。唯一标识值“标签”与代码中的每个检测点相关联。写入的地址值(称为标记端口)解决了您选择此问题的方式。根据目标μP探头,只要目标系统或CPU终止总线周期,您就可以在目标存储器映射中的任何位置找到标签端口。您通常可以将标记端口放在目标RAM中,RAM设备本身会同步终止所有写周期,包括标记写入。

AMC规定您必须确保任何处理器的片上数据存储器不会将写入缓存到tagport或捕获地址。如果内存确实缓存了这些写入,那么直写而不是回写必须处理写入。此技术可确保在执行写入指令后,标签值很快出现在处理器总线上。不幸的是,写缓冲技术仍然会延迟标签信息的出现。

出于这个原因,硬件辅助分析比具有时间关键实时嵌入式系统的纯软件方法更受欢迎。您通常通过在编译之前处理源代码来插入检测。或者,工具提供程序不是使用编译器来检测代码,而是提供后处理工具,它可以检测已编译的模块。 AMC的LiveCODE工具是可执行代码检测的一个示例,它允许您在应用程序在目标系统中运行时执行交互式跟踪(图2)。 LiveCODE通过将特定于处理器的本机分支指令发送到内存中要在目标中进行所需检测的点来自动检测可执行文件。然后程序分支到内存中的另一个位置,该位置工具执行用户插入的语句。然后,LiveCODE将控制返回到分支点,并且编译的应用程序继续执行。

LiveCODE自动准备图像,以便程序将这些段的执行历史显示为已编译的子系统,模块和函数树视图格式的应用程序。交互式序列图显示了执行期间函数入口和出口的图形表示(图2)。您可以在执行跟踪中前进和后退。 LiveCODE可以节省宝贵的开发时间,因为您可以在程序执行时与程序进行交互,选择要跟踪的代码部分,插入调试代码语句,或者在不停止执行或不必重新编译应用程序的情况下修改变量。 LiveCODE支持PowerPC处理器体系结构,可用于Windows和Solaris主机系统。价格从4000美元起。 AMC计划在下一季度升级LiveCODE以处理其他处理器架构。

CodeTEST提供源代码执行的高级和实时可见性。例如,在跟踪执行功能期间,该工具会对嵌入式软件执行跟踪,而不是硬件。软件“instrumenter”实用程序准备用户的程序以进行在线验证。该实用程序读取程序源文件并将测试点指令插入代码中。指导者处理C和C ++源代码程序。

CodeTEST系列包括CodeTEST-Performance,可同时测量多达32,000个函数,从而监控大多数程序中每个例程的每次执行。因为它进行非抽样测量,所以该工具显示真实的最差和最佳情况时间,在任务,功能或分支级别显示结果。使用该工具的性能特征列表,您可以优化代码的选择部分。

CodeTEST还包括CodeTEST-Memory,它跟踪嵌入式程序中的动态内存分配。由于该工具为跟踪的每一行添加了时间戳,因此您可以确定函数中的循环执行所需的时间。使用CodeTEST/Statement Coverage工具,您可以识别在给定测试场景中将执行的代码部分。交互式XY图显示了工具在测试时间内实现的覆盖范围。

CodeTEST组的另一个元素包括CodeTEST-Decision Coverage工具,该工具显示指示执行期间执行的真/假状态的数据。程序流程。 CodeTEST-MCDC工具(修改后的条件决策覆盖范围)提供了对程序代码中每个决策点的每个条件的详细分析,以及强制更改代码以研究其行为的过程。此功能可帮助您生成满足美国联邦航空管理局规定的代码。

CodeTEST可在CodeTEST-HW-Ckt,CodeTEST-Software-In-Ckt和CodeTEST-Native版本中使用。当嵌入式硬件不可用时,CodeTEST-Native为桌面环境提供纯软件方法。硬件准备就绪后,CodeTEST-Software-In-Ckt工具使用本机阶段的工具,并将运行时精度引入嵌入式软件测试。最后,硬件辅助的CodeTEST-Hardware-In-Ckt工具提供了一个目标探测器,用于系统操作的真实实时目标测试。

CodeTEST-Software-In-Ckt和CodeTEST-Native都与设备无关。 CodeTEST-Software-In-Ckt的价格从跟踪,内存或报表覆盖模块的4000美元开始;决策覆盖模块7000美元;和MCDC模块的20,000美元。对于Trace,Memory或Statement Coverage模块,CodeTEST-Native的起价为2500美元。 CodeTEST在Windows和Unix工作站下运行。 CodeTEST支持英特尔(www.intel.com)8096CX,JX和HX; IBM(www.ibm.com)和摩托罗拉(www.motorola.com)PowerPC 603,740,750,823,821和850μs; MIPS(www.mips.com)4600,4700,4650,4300和3000μPs;英特尔/AMD的386和486;和竞争对手的68020,30,40,60,68332和68302。

竞争产品,Diab Data的纯软件RTA套件,结合了图形运行时分析工具,提供关键洞察力,最大限度地提高计划性能,提高嵌入式应用的可靠性和内存使用率。该工具套件依赖于Diab Data的D-CC和D-C ++编译器套件生成的信息,包括Visual Interactive Profiler(VIP),运行时错误检查器和Visual Link Map Analyzer工具(图3)。

VIP测量并分析程序的运行时行为。它首先在编译时检测程序。当检测程序执行时,它在目标上构建一个配置文件数据库,并从用户设置的中断标记中获得定时信息。测试完成后,它会将配置文件数据上传到主机,供VIP分析和显示。

虽然平面分析技术(如mcount()实用程序)只显示程序花费的执行时间。一个函数,分层分析还可以进一步显示程序在每个子进程中花费多少时间在一个函数上。因此,层次分析揭示了平面分析技术会遗漏的热点。 VIP在交互式图形显示中显示配置文件数据,使您能够快速发现嵌套的时序信息,以便集中有效的优化工作。

RTA Suite的运行时错误检查工具检测到很难识别的软件错误,因为它们在程序执行之前不会显示出来。使用运行时错误检查程序,您可以快速可靠地查找错误。这些错误包括内存泄漏,数组访问和边界外的其他数据结构,访问空闲或无效内存,多次释放内存,通过空指针访问以及堆栈溢出。

RTA Suite的Visual Link Map Analyzer允许您以交互方式轻松创建,可视化,编辑和优化内存映射设置。它还在高端μP中提供多种寻址技术。根据Integrated Systems Inc的pSOSystem产品软件开发总监N Rajan的说法,您不需要使用三条指令来访问数据区中的变量(x):

LoadHX,R3;加载高16位的地址;

LoadLX,Rs;加载低16位的地址;和

加载0(R3),R4;现在加载X的值为“0”偏移。

相反,您可以通过一条指令访问变量:

加载X(R3),R4,

其中偏移值可以是±32。

通过这种方式,RTA Suite允许您在链接模块时定义一个小数据区域,并在此部分中放置用户变量或数据。唯一的限制是数据区不能大于64千字节。此限制适合大多数应用。通过将R3寄存器指向此小数据区域部分的中间,您可以使用一条指令访问此部分中的任何变量,从而生成紧凑的代码,从而加快执行速度。

RTA Suite支持PowerPC,68K/CPU32,ColdFire和MCORE系列。 RTA Suite适用于D-CC和D-C ++编译器支持并适用于所有主要Windows和Unix主机的所有目标。

在选择软件分析产品时,请记住,尽管硬件测试工具,例如作为逻辑分析仪和在线仿真器(ICE),它们很适合调试硬件问题,它们无法深入了解软件代码的执行情况。

“使用传统的ICE是不可能的,因为处理器正在成为AMD的工程师David Mann表示,太快,采用复杂的封装技术,并且调试时系统总线活动较少。因此,他说,“微处理器供应商正朝着JTAG类型的控制方向发展,理想情况下,这种控制方式可以产生程序跟踪。”将来,软件配置将获得更强大的硬件辅助功能。 AMC经理Jay Gould表示,您可能会看到更多特定于处理器的分析工具。

片上硬件辅助软件分析

在线仿真器(ICE)广泛用于嵌入式软件开发。虽然ICE是低端到中端CPU的有效工具,但是模拟32位设备是令人生畏的。由于处理器的复杂架构,高时钟速度,片上高速缓存和封装,观察处理器总线很困难。这种情况促使处理器厂商加入片上调试电路,以简化ICE构建并推广替代硬件辅助软件开发方法。

两种这样的方法,摩托罗拉(www.motorola。 com)背景调试模式(BDM)和AMD的AMDebug端口值得注意。 BDM的在线仿真通过串行链路上的专用调试命令使处理器保持在后台模式。例如,摩托罗拉的ColdFire系列μP(MCF5202/3/4/6)支持JTAG IEEE 1149.1,并提供一组功能强大的调试工具。对于实时跟踪,ColdFire提供了一个并行输出端口,该端口分区为4位处理器状态[PST]和调试数据[DDATA]总线。 PST [3:0]允许μP发送处理器执行状态,DDATA [3:0]显示操作数数据。结合PST和DDATA可帮助您跟踪μP的动态路径执行情况,以实时调试硬件。

然而,BDM无助于软件分析程序执行,因为它要求您停止CPU和使用特殊调试寄存器负责程序控制。这些寄存器允许您设置程序计数器断点,地址断点,配置存储器和寄存器,然后使用Go命令重新启动CPU。因此,如果没有专门的硬件,就无法使用BDM来分析基于RTOS的应用程序。

“使用配备片上跟踪功能的处理器可满足许多嵌入式项目的主要工具要求,” David Mann,AMD工程师。 “鉴于跟踪数据可以由目标处理器本身访问或提供给控制目标的远程主机,因此可以很灵活地使用数据。”

AMDebug端口基于增强的JTAG接口,可在AMD的x86处理器上使用,并集成了片上跟踪缓存,您可以主要用于跟踪程序的指令流。但是,您也可以使用跟踪缓存来收集性能分析信息。跟踪缓存存储20位跟踪条目,包括4位跟踪代码和16位跟踪值。跟踪程序的执行时,压缩的跟踪条目会在执行过程中自动进入跟踪缓存。收集配置文件数据时,跟踪控制寄存器(很像断点控制寄存器)会启动新的跟踪条目的生成。

片上断点控制寄存器在程序停止程序执行时到达程序地址。跟踪控制寄存器选择执行跟踪应该开始和停止的程序地址。为了启用性能分析,这些跟踪控制寄存器还可以启动和停止计数器,该计数器测量已执行的执行时间。但是,要分析配置文件数据,您需要后处理软件工具。通过这种方式,AMDebug提供基本的性能分析。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    2921

    浏览量

    64744
  • PCB打样
    +关注

    关注

    17

    文章

    2965

    浏览量

    21378
  • 华强PCB
    +关注

    关注

    8

    文章

    1831

    浏览量

    27457
  • 华强pcb线路板打样

    关注

    5

    文章

    14629

    浏览量

    42573
收藏 人收藏

    评论

    相关推荐

    IR镇流器设计辅助软件下载

    IR镇流器设计辅助软件IRPLBDA4的4.0版本。新版软件增加了许多新的功能,不仅支持DC输入电压应用,还具有新的时域图形功能。这个新的图形功能基于一种简化的数字分析技术,能够显示镇
    发表于 10-15 14:15

    用于可重构硬件容错过程的辅助布线电路设计

    ,提出一种支持可重构单元阵列快速容错的辅助布线电路,该电路结构由二维的辅助布线模块构成,每个辅助布线模块可以读取并修改所在可重构单元的可编程开关配置数据.可重构单元阵列容错时,辅助布线
    发表于 04-24 09:01

    单片机辅助软件

    单片机辅助软件,让你省心、放心
    发表于 07-20 19:30

    PROTEL辅助软件

    本帖最后由 aric666 于 2015-8-24 21:55 编辑 PROTEL辅助软件,很实用,不***pageup和PageDown进行放大缩小。兼容多种PCB设计软件
    发表于 07-27 15:17

    辅助软件

    本帖最后由 Q13131378788 于 2015-5-5 11:50 编辑 有什么电子辅助软件,比如设计好电路,用什么软件测试啊。求文件
    发表于 04-14 22:24

    单片机常用辅助软件自取!

    51单片机常用辅助开发工具软件免费下载!51Hex_Bin、51波特率初值设定、51定时器计算、lcd汉字取模软件、单片机小精灵软件、谱曲软件
    发表于 03-24 22:44

    仪器硬件和测试软件和仿真软件的应用

      随着计算机的运算速度和处理数据能力的不断增加,及计算机仿真技术的广泛应用,仪器的硬件和测试软件及仿真软件的结合越来越紧密。  首先,硬件的模块化设计,使得通过不同的
    发表于 06-27 06:58

    如何对一个MCU项目问题的硬件软件进行分析

    一个MCU项目问题的硬件软件分析
    发表于 03-17 08:11

    硬件射频测试和软件的区别,细说拉力试验机软件硬件之间的区别 精选资料分享

    -时间、位移-时间、应力-应变等曲线,可随意切换到想看的曲线画面,并可查看用户设置等。可实现复杂的多步嵌套循环控制.可设置自动返回、自动判断断裂、自动归零等功能。强大的数据分析统计和曲线图形分析辅助...
    发表于 09-13 07:25

    辅助软件AI Creator使用文档

    辅助软件AI Creator使用文档附件见下方:*附件:AI Creator1.1使用说明.pdf
    发表于 03-23 11:47

    红外光谱辅助分析软件

    红外光谱辅助分析软件
    发表于 12-05 12:08 159次下载
    红外光谱<b class='flag-5'>辅助</b><b class='flag-5'>分析</b><b class='flag-5'>软件</b>

    IR镇流器设计辅助软件

    IR 镇流器设计辅助软件
    发表于 08-08 15:26 34次下载
    IR镇流器设计<b class='flag-5'>辅助</b><b class='flag-5'>软件</b>

    用Proteus仿真软件辅助单片机教学

    摘要:Proteus仿真软件能够在通用PC机上实现单片机项目的仿真设计和调试,用该软件辅助单片机教学可以节约教学资源,提高学习效果。本文介绍了我院在使用Proteus仿真软件
    发表于 09-10 11:04 244次下载

    LogAnalyzer(日志分析器)辅助应用程序简析

    LogAnalyzer(日志分析器)是HostMonitor的一个辅助应用程序,它包含在高级主机监视器软件包中。
    的头像 发表于 09-14 09:56 1642次阅读

    Advanced Host Monitor软件辅助组件

    LogAnalyzer(日志分析器)是HostMonitor的一个辅助应用程序,它包含在高级主机监视器软件包中。
    的头像 发表于 10-26 09:49 712次阅读