分析复杂器件内部的实时可视性的设计方法
以某一规定间隔截取音频信号,从而将模拟音频信号变换为数字信号的过程。每次采样时均指定一个表示在采样瞬间的音频信号的幅度的数字。
配置硬件计数器并使其运行对系统的影响很小。无论如何,读取一个计数器并上载其值都是具有干扰性的。对计数器的记录越频繁,记录就越准确,但采集和上载的干扰就越大。在确定确实需要更准确的信息之前,保持较低的记录频率。例如,一个记录当前哪个函数在执行的周期性分析器能确保得到一个非常准确的代码使用百分比情况。这样的分析器仅收集了在每个函数调用的记录期间所采集的信息的一部分,于是干扰很小。也可以按低优先级任务来对数据点采样,尽管这样可能使得结果产生一些偏差。
4. 确定性的数据
如果数据采样获取的频率固定的话,不必要加入一个时间戳。作为一种替代选择,如果数据必须通过一组连续的运算块,只需记录数据值和时间戳,因为可以从时间戳的次序确定实际的程序块。如果获取了几个值,可能更有效率,以确保数据流能通过一系列的程序块,此时只需记录函数和时间戳,并采用数据记录格式。
5. 动态/智能记录
通常只在需要时采集数据(换言之,在对某些信息感兴趣的情况下),这样减少了数据采集产生的影响。利用几个调试标记,可以缩小采集的范围。这可以通过设置一个特定的标记来实现,节约缓冲器空间。设置或检查一个标记只需要一个或者两个处理器周期,因此这是非常有用的方法,即使是对于基于硬件的计数器亦是如此。
6. 块状记录
在某些情况下,在不影响执行时(如没有实时运算时)有可能可以暂停对象。此时可以通过在能安全暂停的情况下触发一次暂停来"避免"缓冲期上载开销,然后在系统暂停的时候再对缓冲器上载。
7. 按块上载
如果任务比较空闲,可以在系统没有完全利用时用来上载缓冲器。尽管这不会减少上载开销,但却可以将上载的影响转移到一个对系统性能影响更小的时段。
8. RTOS监测
RTOS,即:实时系统(Real-time operating system),实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。它的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。 为了便于理解,机场的售票系统就是一个典型的实时系统。
对于更复杂的监测,可以在实时操作系统上找到支持。很多操作系统具有内置的机制和库,能支持片上监测硬件,即易于配置又为管理循环缓冲器和向外发送数据流需要的基础架构提供基本代码,并提供用于自监测的Hook函数。通过对记录过程抽象化以及卸载数据,可以快速地对监测的对象、监测的方式、监测的频率、获取数据的位置以及卸载方式等进行重新配置。在创建自己的基础来测试代码之前,应首先检查RTOS提供的内容。
RTOS就是这样的一个标准内核,包括了各种片上外设初始化和数据结构的格式化,不必、也不推荐用户再对硬件设备和资源进行直接操作,所有的硬件设置和资源访问都要通过RTOS核心。硬件这样屏蔽起来以后,用户不必清楚硬件系统的每一个细节就可以进行开发,这样就减少了开发前的学习量。
一般来说,对硬件的直接访问越少,系统的可靠性越高。RTOS是一个经过测试的内核,与一般用户自行编写的主程序内核相比,更规范,效率和可靠性更高。对于一个精通单片机硬件系统和编程的"老手"而言,通过RTOS对系统进行管理可能不如直接访问更直观、自由度大,但是通过RTOS管理能够排除人为疏忽因素,提高软件可靠性。
另外,高效率地进行多任务支持是RTOS设计从始至终的一条主线,采用RTOS管理系统可以统一协调各个任务,优化CPU时间和系统资源的分配,使之不空闲、不拥塞。针对某种具体应用,精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率;但是对于大多数一般用户和新手而言,采用RTOS是可以提高资源利用率的,尤其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。
9. 避免访问存储器和其它系统资源
只有在硬件机制不足的情况下,才应该用软件手段作为补充,例如当需要非常大的缓冲器或者当有限的处理降低了整体的干扰时。理想的情况是,如果在不使用系统总线或存储器的情况下监测系统总线或存储器,将能得到更准确的结果。如果将采集的数据量控制到最小,就可以避免使用存储器中的缓冲器,只是通过JTAG或总线直接发送。
10. 连续采集
在一段时间内从流体中连续采集样品,对于该时段而言,称之为连续采样。连续采样