|
在我看来,没有多少开发人员使用硬件跟踪。ARM指出可能只有不到5%的开发人员使用跟踪。太糟糕了!如果只有少数的开发人员在使用它,那为什么所有的ARM Cortex微控制器厂商都将这个强大的硬件以及复杂的跟踪引擎放到他们的器件中呢?是这样的,硬件跟踪可以是一个生命救星。因为只有使用硬件跟踪才能解决最复杂的bug和问题。也许因为只有最好的开发人员在使用它。
在本文中,我很荣幸地向大家介绍我的研究,如何使用Segger J-Trace for ARM实现指令跟踪NXP TWR-K64F120M开发板上的ARM Cortex-M4微控制器。
要不要使用跟踪?
只有少数工程师在使用指令跟踪,也许是因为大多数工程师并不知道它么?或者是因为对于高速的目标器件,跟踪需要一个昂贵的放着器来捕获跟踪数据才能获得合理的结果。或者是不管处于什么原因ARM在其器件中以一种难以理解的方式实现了硬件跟踪,并且有关它的文档分布的比较散,并且难以理解和阅读、对于我来说,我发现很难收集所有需要的信息,来跟踪NXP TWR-K64F120M开发板。但是,总会从困难的事情中学到很多新的东西。
我偶尔会使用Freescale CodeWarrior for MCU 10.x的硬件跟踪,它工作的很出色。然后,Kinetis Design Studio取代了它,并且没有包括硬件跟踪。 因为我的大多数板子没有跟踪端口,偶尔才会使用它,这对我来说不是一个大问题。 对于大多数CodeWarrior用户来说,这似乎是一样的:除了社区中的几个声音,很少有人关心Kinetis Design Studio不支持硬件跟踪。
但是,最近我遇到了DMA和中断的问题,其中硬件跟踪是一个有效的工具,用来从系统中获得足够的数据以便了解发生了什么,并缩小问题。 否则剩下的方法只有反复试验。 现在我通过ETM跟踪和Segger J-Trace的帮助解决了问题。 但是我花了一段时间才进入硬件指令跟踪的主题,并将Kinetis配置成获取需要的所有数据。
|