位置:51电子网 » 技术资料 » 通信网络

复杂器件内部的实时可视性的实现方法

发布时间:2008/5/27 0:00:00 访问次数:467

        

    

     如果在一个系统中拥有几个处理器和外设,要开发具有成本效益、可靠的产品,尤其是在今天很短的产品开发时间的条件下,了解所有这些芯片的实时动态特性将变得非常重要。实时嵌入式系统越来越多地在多内核asic或系统级芯片(soc)上实现,以利用这些器件所具有的低功耗、低成本和更高集成度的优点。

    开发者所拥有的很多这些标准设计工具是依赖于了解老的技术产品的内部运行情况来实现的,已经不适用于这些新型的、功能强大的多功能设计了。通过集成,soc架构在单个硅片上拥有多个处理器、存储器、外设、控制器和其它重要的子系统组件。高速内部总线连接这些不同的组件,整体的性能决定于他们之间的数据流的高效管理。瓶颈、延迟和对于像总线和存储器等共享资源的竞争这些问题,对于实时数据传输来说是致命的。为了获得最佳性能,开发者应比以前更需要了解芯片内部运行的具体情况。

    然而,对系统组件之间的事务处理的监控不再是像以前那样连接一个逻辑分析仪或者总线分析仪那么简单了,因为很多感兴趣的信号深“埋”在芯片内部。对soc的可视性需要一套硬件和软件相混合的装置来采集soc本身内部的数据,并由特征描述以及关联工具提供支持,这些工具能帮助开发者分析所采集的数据。

    当然可以通过不同的方式实现可视性。在很多情况下,可以观察许多组件(如存储器、系统总线和i/o端口)来采集信息。换言之,当评估过程本身影响到结果的时候,要评估总线利用率和存储器竞争情况就很难。挑战在于在不影响系统性能的情况下采集和上载数据点。

    回到现实情况

    传统上,当没有逻辑分析仪可用,或者太难于设置时,开发者使用软件测试工具来获得对他们设计的可视性。他们会向目标对象增加调试代码来采集、处理和上载调试数据。例如,在进入和离开一个函数时打开和关闭某个计时器,无论是过去还是现在,对于通过软件分析器来对函数进行描述来说,这种方法都是一种的简捷方法。

    尽管这只需要增加很少的c语言printf指令到测试代码中,对采集的数据进行格式化,并输出到一个标准的i/o器件,但此时这些代码对代码的大小、存储器利用、缓冲器性能、时序和系统资源竞争都有很大的影响。这些缺点使得printf只适合于测试非实时的控制代码。对于实时的或者确定性代码,例如,用在消费媒体播放器和录制设备、手持无线通信设备、电信、机器人技术或汽车上的应用,需要采用其它的对系统影响较小的技术,以避免干扰目标程序的执行或错失实时期限。

    减少干扰

    有很多方法可以在增加可视性的同时减少干扰。从概念上来说,对一个系统进行监测涉及到数据采集、数据缓冲、上载来自目标器件的数据、后续处理以及进行显示等。认真安排这些活动在什么时候以及哪里发生,可以将它们对系统性能的影响减到最小。减少与测试代码以及数据采集设备相关的存储器区域,可以采集到更多的数据,并增加对系统实时行为测试的精度或广度。

    一般需要数据点几倍大小的存储空间来记录关联信息,这些关联信息用于更准确地对其进行理解。例如,除了在采集时的数据值,可能还需要标记数据相关联的变量名字,获得一个数据采集时间的时间戳,并注意当在获得时间戳时正在执行的函数等。有几种方法用于获得和组织这种关联信息,并且不需要依赖于printf和其字符串格式化功能。通常在数据中包含pattern,如果用某种方式来采集数据,那么可以推断出一些额外的特性,而不需要将它们包含到缓冲器中。增加可视性的一些方法包括:

    1. 记录格式

    如果在缓冲器中采集一个变量,则不再需要对所采集的什么变量进行标记。如果需要采集多个值,就可以创建一种记录格式,每一个值对应一个给定的位置,这样避免了不得不对采集的内容再次进行标注的情况。

    2. 多个缓冲器

    通过将相似的数据点分组在一起,可以简化循环缓冲管理,减少对每个数据点的采集延时。同样地,如果按照优先级来对数据采集进行隔离,那么当系统在100%的利用状态时,可能使循环缓冲器抓取到非关键信息的溢出,而不是用一个非实时的上载来弄乱了实时系统的时限要求。在任何情况下,都需要用来标记溢出的机制。并且如果缓冲器存在一些前提条件,例如需要重构的时间戳,则可能追踪丢失了多少数据。

    3. 采样数据

    配置硬件计数器并使其运行对系统的影响很小。无论如何,读取一个计数器并上载

        

    

     如果在一个系统中拥有几个处理器和外设,要开发具有成本效益、可靠的产品,尤其是在今天很短的产品开发时间的条件下,了解所有这些芯片的实时动态特性将变得非常重要。实时嵌入式系统越来越多地在多内核asic或系统级芯片(soc)上实现,以利用这些器件所具有的低功耗、低成本和更高集成度的优点。

    开发者所拥有的很多这些标准设计工具是依赖于了解老的技术产品的内部运行情况来实现的,已经不适用于这些新型的、功能强大的多功能设计了。通过集成,soc架构在单个硅片上拥有多个处理器、存储器、外设、控制器和其它重要的子系统组件。高速内部总线连接这些不同的组件,整体的性能决定于他们之间的数据流的高效管理。瓶颈、延迟和对于像总线和存储器等共享资源的竞争这些问题,对于实时数据传输来说是致命的。为了获得最佳性能,开发者应比以前更需要了解芯片内部运行的具体情况。

    然而,对系统组件之间的事务处理的监控不再是像以前那样连接一个逻辑分析仪或者总线分析仪那么简单了,因为很多感兴趣的信号深“埋”在芯片内部。对soc的可视性需要一套硬件和软件相混合的装置来采集soc本身内部的数据,并由特征描述以及关联工具提供支持,这些工具能帮助开发者分析所采集的数据。

    当然可以通过不同的方式实现可视性。在很多情况下,可以观察许多组件(如存储器、系统总线和i/o端口)来采集信息。换言之,当评估过程本身影响到结果的时候,要评估总线利用率和存储器竞争情况就很难。挑战在于在不影响系统性能的情况下采集和上载数据点。

    回到现实情况

    传统上,当没有逻辑分析仪可用,或者太难于设置时,开发者使用软件测试工具来获得对他们设计的可视性。他们会向目标对象增加调试代码来采集、处理和上载调试数据。例如,在进入和离开一个函数时打开和关闭某个计时器,无论是过去还是现在,对于通过软件分析器来对函数进行描述来说,这种方法都是一种的简捷方法。

    尽管这只需要增加很少的c语言printf指令到测试代码中,对采集的数据进行格式化,并输出到一个标准的i/o器件,但此时这些代码对代码的大小、存储器利用、缓冲器性能、时序和系统资源竞争都有很大的影响。这些缺点使得printf只适合于测试非实时的控制代码。对于实时的或者确定性代码,例如,用在消费媒体播放器和录制设备、手持无线通信设备、电信、机器人技术或汽车上的应用,需要采用其它的对系统影响较小的技术,以避免干扰目标程序的执行或错失实时期限。

    减少干扰

    有很多方法可以在增加可视性的同时减少干扰。从概念上来说,对一个系统进行监测涉及到数据采集、数据缓冲、上载来自目标器件的数据、后续处理以及进行显示等。认真安排这些活动在什么时候以及哪里发生,可以将它们对系统性能的影响减到最小。减少与测试代码以及数据采集设备相关的存储器区域,可以采集到更多的数据,并增加对系统实时行为测试的精度或广度。

    一般需要数据点几倍大小的存储空间来记录关联信息,这些关联信息用于更准确地对其进行理解。例如,除了在采集时的数据值,可能还需要标记数据相关联的变量名字,获得一个数据采集时间的时间戳,并注意当在获得时间戳时正在执行的函数等。有几种方法用于获得和组织这种关联信息,并且不需要依赖于printf和其字符串格式化功能。通常在数据中包含pattern,如果用某种方式来采集数据,那么可以推断出一些额外的特性,而不需要将它们包含到缓冲器中。增加可视性的一些方法包括:

    1. 记录格式

    如果在缓冲器中采集一个变量,则不再需要对所采集的什么变量进行标记。如果需要采集多个值,就可以创建一种记录格式,每一个值对应一个给定的位置,这样避免了不得不对采集的内容再次进行标注的情况。

    2. 多个缓冲器

    通过将相似的数据点分组在一起,可以简化循环缓冲管理,减少对每个数据点的采集延时。同样地,如果按照优先级来对数据采集进行隔离,那么当系统在100%的利用状态时,可能使循环缓冲器抓取到非关键信息的溢出,而不是用一个非实时的上载来弄乱了实时系统的时限要求。在任何情况下,都需要用来标记溢出的机制。并且如果缓冲器存在一些前提条件,例如需要重构的时间戳,则可能追踪丢失了多少数据。

    3. 采样数据

    配置硬件计数器并使其运行对系统的影响很小。无论如何,读取一个计数器并上载

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!