【原创】利用FreeMASTER控制实时数据
0赞我在之前写过一篇使用freemaster完成飞思卡尔DSC调试的博客,最近有朋友提了一些相关问题,顺便写了这个博客,希望对大家有帮助。
飞思卡尔freemaster主页:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FREEMASTER,关于该工具的详细信息以及使用教程都可以在这里找到。
第一次接触freemaster是迫于飞思卡尔的codewarrior for dsc调试工具不怎么给力,无法在线实时观测变量,所幸有这么一个调试工具,总算把问题解决了,用过几次之后,逐渐发现了他的好处,现在已是爱不释手。
FreeMASTER对于各位来说可能不是非常熟悉,但是,的确它被列入飞思卡尔开发工具已经很多年了。可是这么多年来飞思卡尔并未对其做大量的宣传,只是在飞思卡尔的一些参考设计中能看到他的身影,不知道freescale是作何考虑。
FreeMASTER是一种实时调试监控器。下面详细说明它可以解决的问题。你可以编写实时系统软件,例如运行电器的电机、汽车发动机控制系统、安全气囊中的传感器、飞机控制界面或任何含有反馈回路的系统(飞思卡尔在这些方面都用freemaster做过许多例子,可以到freescale网站上下载例程研究)。现在,对动态系统进行实时调试。有的时候你需要停止系统运行研究它的状态。不仅需要观察系统的动态运行,还需要进行一些干预,了解工作过程中为什么出错!对于常规调试器来说这是做不到的,FreeMASTER恰恰可以解决这个问题,that‘s right。
采用FreeMASTER,你可以建立一个调试对象的通信通道;可以按照自己确定的采样率来实时监测感兴趣的变量;可以实时修改这些变量,即将数据送入调试对象的管道中,动态修改系统的行为。
FreeMASTER采用示波器显示本地数据。可以显示多种变量,示波器含有所需的各种控制选项。
图1所示FreeMASTER跟踪两个简单变量。一个是上升到最大,然后下降至零的短值。另一个采用表中读取的数据生成正弦波。我将步进增量改变到一半,为的是证明可以将数值送入调试对象。
图 1: FreeMASTER跟踪显示实时变量值。
freemaster的扩展性也是非常好的,显示区可通过HTML任意扩展。一旦掌握了FreeMASTER,就可以添加各种第三方基于ActiveX的仪器“widget”,将其嵌入显示区中,可以按照示波器工作方式编写变量,读取和/或改变数值。从而根据测试或演示的系统创建或简洁或复杂的仪表板。这种开放式设计使FreeMASTER成为极为灵活且强大的工具。图2示例是飞思卡尔官方例程:发动机发生爆震以及采用基于Power Architecture技术的Qorivva MCU进行反馈控制的截屏。
图 2: FreeMASTER工具的数据可视区可任意扩展。
不仅仅是这些,你可以嵌入幻灯片、演示文本、数据表或产品或问题的整包信息,不信你就试试。freeMASTER的塔式系统汽车传感器项目就是一个实际的例子。数据表、电路图和预制的所有传感器全部内置在一个FreeMASTER项目。
FreeMASTER还配有数据跟踪功能,称作Recorder。Recorder采用目标缓冲器保存数据读数,然后将缓冲器下载到数据显示器。它可采用比示波器更高、更可靠的采样率(约10微秒分辨率)捕获数据。显然,这对应用的实时性可能会产生一定影响,但数据捕获对于分析的价值是无法估量的。您可以确定需要捕获的变量(最大八个),规定目标缓冲器的尺寸。
我们还可以规定启动采样的触发事件。采用示波器进行“实时”分析可看到发生的情况。相对于数据可视化的详细程度,这实际上是一个比较粗略的视图。您不能以精细的粒度缩小放大数据进行分析。采样率也不能恰好一致。采样间隔过程中会发生很多情况。例如,如果以高步进增量“实时”提取同一正弦波数据,结果非常难看。图3中很难看出完整的正弦波图形,取决于数据变化速度,这种显示结果显然是不够的。
图 3: 示波器实时有限。
记录器分辨率相当精细,以微秒为单位。采用同样高步进增量跟踪数据如图4所示。从图中可以看出,以微秒为单位的分辨率正弦波形相当平滑。
图 4: 数据记录器以精细时间分辨率捕获数据。
即使如此,凡事都是相对的。如图5所示,放大数据。以微秒分辨率观察数据时,可以看到,我们从数值表中提取数据时产生的递增变化。
图 5: FreeMASTER缩放功能概念演示。
所有这些证明,可以采用FreeMASTER按照应用所需的详细程度研究数据。还可以将数据捕获到文本文件中,供今后采用其他工具进行分析。
设置数据跟踪一般需要配置FreeMASTER中的记录器,规定需要跟踪的变量。如果想改变默认的缓冲器尺寸,可以修改标头文件,非常简单。
平台支持和连接
实时数据监控不可能不在一定程度上影响性价比。读取或保存数据,然后将其推送到管道中需要一个过程。但FreeMASTER具有多种通信方法,其中有些侵扰非常低,如OSBDM。其他工具则需要目标驱动器。下表汇总了平台支持和连接协议。BDM连接对运行中软件的侵扰几乎为零。我们前面谈过的数据跟踪需要目标驱动器。
表 1: FreeMASTER使用环境和方法。
硬件在环仿真
改变数据输出目标也许是这种工具最令人兴奋的功能。与数据可视化引擎的设计一样,数据流本身不限于FreeMASTER。数据可通过ActiveX接口供任何使用ActiveX服务的应用访问,如MATLAB®、Excel、Internet Explorer、PERL、VBScript、Jscript等。至于您如何使用完全取决于您的想象。
FreeMASTER数据输入MATLAB或Simulink是两个高水平用例。
您可以输入实时、实际环境下的数据,而不是理论数据进行复杂模拟,观察模型的表现。
另外,也可以采用相同的输入,同时在处理器和模型中运行,采用FreeMASTER输出处理器的结果。对比两个系统的结果,观察模型在实际环境下的运行情况,确定模型是否有效,如果有效,条件是什么。
FreeMASTER支持在高度复杂的动态和非线性系统环境下测试模型。这种方法的确很爽。
如果深入了解,我想您一定会对freemaster感到着迷。不过,这种灵巧的工具还有更神奇之处。
FreeMASTER可与CodeWarrior工具轻松集成。
由于一般需要目标驱动器,因此往往需要添加源码并将其整合到项目中。如前所述,这样可以提供灵活性,在改变缓冲器尺寸等处理时很容易。配置FreeMASTER支持可视化显示时,可以将信息保存到FreeMASTER项目文件中。利用拖放功能将FreeMASTER项目文件加入相关的CodeWarrior项目中。在CodeWarrior工具内双击,即可启动FreeMASTER。就这么简单,不需要任何其他处理。
这个工具的确实现了我们的支持理念,您不需要使用特定的开发环境。FreeMASTER是一个单独的应用。您可以在此处下载这个工具以及所需的通信驱动器软件。您可以将它们部署在其他开发环境下,如IAR工具。
说了这么多,可能有的朋友不相信或者心理有疑惑,一句话,用用试试就知道了。
另外推荐一篇介绍freemaster的文章,请大家参考
【转】玩转飞思卡尔在线调试工具FreeMaster
FreeMaster(以前叫PC-Master)是飞思卡尔为嵌入式系统开发的运行在PC机上的图形化在线调试工具,最初是方便在线实时调试电机应用而开发的(所以说飞思卡尔的汽车电子这么NB呢,连调试工具都这么NB,哈哈),只不过后来大家都发现了它的好用,所以才在各个领域上发展起来(跟Matlab的发展史有点像,呵呵)。前段时间在写关于Codewarrior10.2的应用时,我还曾经抱怨过飞思卡尔裁剪掉了Codewarrior10.x的在线跟踪功能,现在想想还真有点冤枉了人家,其实FSL早就有FreeMaster作为在线调试的支持工具了,所以裁减掉一些臃肿的Codewarrior10.x功能也就无可厚非(哎,裁剪掉之后10.x都是那么的慢,不知道不裁的话会是什么样的情况,哈哈)。
说完了上面的一些内容,下面该说说让我如此兴奋的连载本篇博客的原因了。FreeMaster作为图像化的在线调试工具,具有友好的界面和实用的性能,不仅支持简单的串口SCI调试,而且最新版更是开始支持BDM(HC08/HCS08/HC12/HCS12/HCS12x)、JTAG(针对56F800系列DSC)、USB、CAN、Ethernet等在线调试(CAN和Ethernet需要在付费版本里才有,不过前几种已经够用了)。其现在支持的平台包括DSC系列56F8xxx、HC08/HCS08、HC12/HCS12/HCS12x、PowerPC系列MPC55x和MPC56x、Codefire系列MCF51xxMCF52xx和Cortex-M4的Kinetis系列,并且支持飞思卡尔自家操作系统MQX,上面这些特点足以说明其强大之处。另外让我兴奋的另一个原因就是,作为曾经搞过智能车的人来说(貌似看过我博客的相识网友都好多搞过智能车),我用过FreeMaster之后越来越觉着,智能车调试方法有可能会因此掀起一场新的革新(我过段时间开发一下试试),呵呵,可能我想的有些远了说的也有些多了,下面就正式进入正题,本篇博客主要是让没用过FreeMaster的网友尝尝鲜,以后我会开发出来具体的调试方法跟大家分享:
1.首先继续老套路,先挑重点简单介绍下FreeMaster的一些特点,毕竟我上面吹了那么多该说说它为什么名副其实了(注意,咳咳,我可不是飞思卡尔的托,哈哈),其中肯定有吸引你的一种,呵呵:
(1)图形化调试环境;
(2)支持RS232通信接口和其他如BDM、JTAG、CAN接口等等;
(3)实时跟踪嵌入式C中的变量;
(4)虚拟话的示波器窗口实时显示跟踪变量(其跟踪速率受你选用的通信接口的波特率所限);
(5)通过目标板上的记录区(Recorder)快速读取数据;
(6)内置支持标准数据类型(包括整型,浮点,位等);
(7)支持Active X 接口支持VBScript和JScript;
(8)支持Matlab仿真接口;
(9)支持通过以太网远程通信控制(免费版本不支持该功能)。
2.好了,说了那么多,这步就上手安装初尝FreeMaster的魅力把,哈哈。在使用之前需要到官网下载两个文件即FreeMaster的安装文件和通信驱动文件,官网地址为http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FREEMASTER&fpsp=1&tab=Design_Tools_Tab,选择如下图(下载需要登录):
3.先安装前者,再安装后者。安装完之后如下图所示
点击进入安装文件,双击PCMaster.exe打开FreeMaster软件,默认是打开即检测通信接口的(默认是com1,波特率9600),这个时候如果你没有连接相应的串口会弹出通信错误,这个是正常不要被吓到,呵呵。
4.下面我就以其驱动文件提供基于Kinetis Tower的示例(提供了CW和IAR两种例程,我选择了IAR)给大家演示一下使用方法,follow me:
(1)进入路径\Program Files\Freescale\FreeMASTER Serial Communication V1.5\examples\Kxx\TWR-K60N512\iar如下图所示,可以看到例程是缺少工作空间的所以直接打不开,方法是打开IAR软件建立个工作空间(workspace)之后把下图所示.ewp文件即工程文件拖到工作空间即可打开了。
(2)打开后的IAR例程如下图,FreeMaster文件组里为FreeMaster的SDK开发包,这个是必须要添加到工程里的,然后还有在source文件组里的freemaster_cfg.h即FreeMaster的配置文件,这个既然是例程,所以就是已经配置好的了,这里就不用改了。
需要提的是,该例程还是有一处地方需要修改一下,如下图,在main.c里,例程默认是采用UART3的,这个没问题但是波特率例程给出的是115200有些大,经过我测试,通信成功率有些小尤其是采用USB转串口的时候,所以建议把波特率修改成9600,如下图:
(4)都修改好之后,把程序下载到tower板子上,例程默认是采用J-Link下载的,这个可以根据实际情况修改下载方式,下载完毕之后打开路径\Program Files\Freescale\FreeMASTER Serial Communication V1.5\examples\Kxx\TWR-K60N512下的demo.pmp即与例程相配套的FreeMaster软件配置。打开后还需要修改下通信配置修改com口为你实际串口的com,然后波特率改成9600,如下图
(5)上面配置之后,点击左上角红色按钮开始通信,通信成功后我们可以点击左面工程下的demo scope(示波器)和demo Recoder(记录仪)实时在线查看变量,如下图