查看: 11111|回复: 2

数据可视化工具FreeMASTER v3.0发布评测

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39232
    最后登录
    2025-7-18
    发表于 2020-5-14 09:11:50 | 显示全部楼层 |阅读模式

    数据可视化工具FreeMASTER v3.0发布评测



    FreeMASTER是一个界面友好的,可用于实时观察目标系统中变量内容的数据可视化软件。可以通过多种通信方式将PC机和微控制器电路板连接,实时捕获和配置微控制器中(存放变量)的内存信息,并显示在PC机的软件窗口中。
    FreeMASTER软件最早用于汽车电子相关的软件开发中,后被广泛应用在多种开发环境,用以提供友好的人机交互界面。


    从笔者的开发经历中,特别是分析例如触摸感应等模拟传感器信号时,常用FreeMASTER实现一个简易的示波器,将单片机中实时采集的传感器信息绘制成时域曲线,显示在电脑界面上,从而便于分析数据,寻找其中的变化规律,进而提取特征信息用于特定的模式匹配。在进行最近比较火热的嵌入式AI开发,在海量的数据处理过程中,通过FreeMASTER的可视化界面,监控计算过程中间某些关键变量的变化过程,简直不要太方便了,就是在给领导和客户演示的时候也是逼格满满.


    笔者之前在本公众号中,发表过一篇关于基本使用FreeMASTER的短文,可以帮助嵌入式工程师在5分钟内上手使用FreeMASTER v2.0工具,见: 使用FreeMASTER捕获采样记录并导出重现曲线。


    近期,NXP官方发布了FreeMASTER v3.0,据说进行了很大的更新,在本文中,笔者对新版本的FreeMASTER进行了试用,并同大家分享使用体验。


    安装过程


    下载


    FreeMASTER的产品主页是:
    在下载页面中还能看到,官网仍然开放了历史版本v2.0和v2.5的下载链接。笔者常用的是v2.0版本。
    1.png
    比较惊喜的是,FreeMASTER终于开始能够跨平台了,本次更新提供了Linux系统的安装包。但是根据说明,在Linux上只支持FreeMASTER Lite服务和相关的文档,大家熟悉的桌面版没有提供Linux平台的支持。
    从安装包的大小来看,新版的安装包整整增大了一个数量级,从v2.x的40MB左右,一下子剧增到近300MB,笔者不禁脑补了一下,最近到底给它喂了些什么。


    安装
    下载之后双击安装包安装。安装过程也是全新的,用了InstallAnywhere打包工具对整个软件包进行打包。界面看起来更可爱一些,但略显简单。笔者作为一个资深的嵌入式系统工程师,还是更喜欢之前版本使用InstallShell打包工具简洁干练的工业风。
    2.png
    这里特别注意,在安装过程中,如果不是明确需要使用"FreeMASTER Lite服务",而只是使用原有大家熟悉的使用FreeMASTER桌面版提供的功能,可以在安装过程中勾选掉相关的选项。否则会需要提供专门的激活码.
    一开始安装的时候由于疏忽跳过了激活码,由于不知道怎样获得"激活码",本打算先安装试用部分功能,但没想到没有激活码竟然直接回滚安装,FreeMASTER的基本功能也被卸载了。后来询问其它同事才知道,这个激活码是在安装过程中自动创建申请的,最关键的,它是免费的。然后笔者重新安装,注意到了安装过程中的一个页面的一段说明:
    3.png
    之前安装到这个步骤的时候,自动弹出了一个网页,但是被笔者想当然地给关掉了。
    现在看来是自动发出的申请激活码的请求。但之前戳"NO"的时候直接回滚了整个安装,这次选"YES"。
    弹出网络浏览器并访问NXP官网,需要NXP注册账户授权,然后在网页中确认软件使用许可声明。
    4.png
    最后获得激活码。
    5.png
    PS: 笔者仔细阅读了一下这个激活码的回单,发现激活码是根据PC的某种"机器识别码"生成的,也就是说,它是绑定在PC上的。好吧,反正是free的,如果换台电脑就再申请一次就好。
    后续的安装还出现了不少提示说重复复制文件的问题,这可能是使用新的部署工具没有处理好文件的解压顺序导致的,不影响最终的安装功能。另外,安装过程后来还是通过网络执行了一遍在线激活过程。


    安装之后查了一下安装根目录,再一次被惊呆了,FreeMASTER竟然专门包含了一个JRE(Jave运行时环境),不必自行匹配相应的软件版本了。
    6.png
    特别注意,如果需要安装FreeMASTER Lite功能,必须确保电脑已经联网,并且能够顺利访问到nxp.com的官网。


    试用


    从pmp到pmpx
    按照笔者们对已经熟悉的老版本FreeMASTER的使用步骤,创建工程,导入MCU端的可执行文件解析符号表,根据符号表项创建变量,创建示波器页面,在示波器页面中加载变量,开始采样。一顿操作猛如虎,最终正常工作。这说明新版本确实是能做到兼容老版本用户的使用习惯。
    笔者注意到,v3.0版本创建工程的扩展名是".pmpx",而不是原来的".pmp",多了一个"x"。难道这是学了MS Office套件升级文件扩展名的思路? 笔者用sublime text打开工程文件查看其源代码,果不其然,新版本的工程文件已经换用可读的xml档案组织格式了,而老版本的工程文件是无法查看源代码的。这就意味着,在使用新版本的FreeMASTER时,可以以修改源文件的方式精细配置工程,这对于开发工程师来讲绝对是一个"有良心"的设计。
    7.png
    8.png
    另外,笔者还试着在新版的软件窗口中导入原有二进制编码的pmp工程文件,同老版使用完全一样,无缝完全兼容。看来FreeMASTER的开发人员在历史兼容性上下了很大的工夫。(实际上这个变更在v2.5中就已经实现了).


    ActiveX控件


    FreeMASTER的ActionX控件应该是它在基本功能外的另一个亮点。ActiveX控件是Microsoft Windows系统中的应用功能扩展库,可用于互联网的很小的程序,有时称为插件程序。
    通过使用ActiveX控件,在FreeMASTER运行框架下,可以使用网页作为界面,访问到单片机中内存中的变量。FreeMASTER的ActiveX控件仅提供面向电路板的内存访问服务,而网页UI的呈现则完全由用户自由发挥,这就为创建丰富的UI创造了灵活的平台。


    虽然FreeMASTER的手册中几乎没有提到如何将ActiveX控件用于用户产品设计的说明,但凭借笔者极强的想象力,还是摸索出一套可行的用法。


    实际上,FreeMASTER安装包中提供了一个通过JavaScript在htm网页中调用ActiveX控件的例子。位于"FreeMASTER 3.0\FreeMASTER\examples\scripting\JavaScript-ActiveX"目录下的"example.htm"文件。但是为了把这个代码运行起来,需要一波神操作。


    首先,从MCUXpresso SDK中导出一个hello_world工程(基于lpcxpresso55s69开发套件),之后在源代码中创建全局变量"var16","var16inc"及"arr16"并确保它们不会被编译器的自动优化掉。
    1. <p><font size="3" face="微软雅黑">volatile uint16_t var16 = 0u;</font></p><p><font size="3" face="微软雅黑">volatile uint16_t var16inc = 0;</font></p><p><font size="3" face="微软雅黑">volatile uint16_t arr16[10] = {0,1,2,3,4,5,6,7,8,9};</font></p>
    复制代码

    之后编译下载工程工程到开发板。


    然后就是FreeMASTER的操作了。创建FreeMASTER工程,导入之前编译好的可执行程序文件,之后在FreeMASTER中创建对应的"var16","var16inc"及"arr16"变量。将FreeMASTER安装目录下的"example.htm"文件复制到新创建的FreeMASTER用户工程目录下,然后在FreeMASTER工程中引用这个文件:
    9.png
    此时,可以看到网页上有一些按钮和一些内容框,试着戳了几下,会报错,显示没有有效连接。
    10.png
    此时,启动FreeMASTER工程,按这些按钮,就能读到和写入位于单片机内存中的变量了。
    11.png
    查看"example.htm"文件的源代码可以看到FreeMASTER的ActiveX读写远程变量基本函数的用法:
    1. function read_variable(name,span_id)
    2. {
    3.     /* ReadVariable uses FreeMASTER variable object from current project。Use
    4.      * ReadUIntVariable to access the memory directly using a symbol name。*/
    5.     if(pcm.ReadVariable(name))
    6.         document.getElementById(span_id).innerHTML = pcm.LastVariable_vValue;
    7.     else
    8.         on_error("Error when reading variable " + name + "。" + pcm.LastRetMsg);
    9. }

    10. function write_variable(name,input_id)
    11. {
    12.     var val = document.getElementById(input_id).value;
    13.       
    14.    /* WriteVariable uses FreeMASTER variable object from current project。Use
    15.      * WriteUIntVariable to access the memory directly using a symbol name。*/
    16.     if(pcm.WriteVariable(name,val))
    17.         document.getElementById("status").innerHTML = "Write of the " + name + " succeeded.";
    18.     else
    19.         on_error("Error when writting variable " + name + "。" + pcm.LastRetMsg);
    20. }
    复制代码

    JSON-PRC轻量级远程调用协议


    这里暂时略过对JSON-PRC协议的介绍。从实用角度看,它是用于替换ActiveX的,同样能够提供从网页到电路板的访问服务。
    在新版FreeMASTER的手册中,将JSON-PRC称之为一种"现代的"技术,特别要配合Chromium引擎使用。而Chromium引擎就是Google旗下大名鼎鼎的Chrome浏览器使用的内核。相对应地,ActiveX对应使用的是Microsoft IE浏览器技术。
    12.png
    同ActiveX相似,FreeMASTER的安装目录中也有JSON-PRC的样例代码,位于"FreeMASTER 3.0\FreeMASTER\examples\scripting\JavaScript-JSON-RPC"目录下。
    将这个目录整个复制到新创建的FreeMASTER工程目录下。之后在FreeMASTER工程中创建一个新的页面"JS-JSON-PRC"并引用JSON-PRC版本的"example.htm"网页文件。此时启动FreeMASTER工程后会报错,因为缺少一个关键的步骤。


    将FreeMASTER工程的网页解释器换成Chromium引擎。选中"project" -> "option",在"option"对话框中,选中"使用Chromium引擎"的选项。注意,切换到Chromium引擎后,基于IE的ActiveX控件就不能使用了。
    13.png
    此时再启动FreeMASTER工程,就能看到之前使用ActiveX控件实现的操作单片机内存变量的网页, 戳戳看也能正常读写内存了。从功能上看,使用Chromium引擎实现的网页同之前使用ActiveX几乎完全一样,但是显示效果看起来好很多,字体比较圆润。考虑到Chromium引擎已经成为众多流行浏览器内核的事实,FreeMASTER 在技术上需要与时俱进,这可能也是v3.0的设计初衷吧。
    14.png
    看一下JSON-PRC版的示例网页源码,可以看到在javascript脚本部分引用的关键组件:
    1. <font size="3" face="微软雅黑"><!-- load JSON-RPC and FreeMASTER wrapper object -->
    2. <script type="text/javascript" src="./simple-jsonrpc-js.js"></script>
    3. <script type="text/javascript" src="./freemaster-client.js"></script></font>
    复制代码


    这是同ActiveX方式的关键区别,对应地,在ActiveX版的样例代码中,在网页显示部分引用了ActiveX组件:
    1. <font size="3" face="微软雅黑"><!-- The main FreeMASTER ActiveX communication object -->
    2. <object id="pcm" height="0" width="0" classid="clsid:48A185F1-FFDB-11D3-80E3-00C04F176153"></object></font>
    复制代码


    当然,对变量读写函数的使用方式上也有一些不同:
    1. <font size="3" face="微软雅黑">function read_variable(name,span_id)
    2. {
    3.    /* ReadVariable uses FreeMASTER variable object from current project。Use
    4.      * ReadUIntVariable to access the memory directly using a symbol name。*/
    5.     return pcm.ReadVariable(name)
    6.         .then((value) => {
    7.             document.getElementById(span_id).innerHTML = value.data;
    8.         })
    9.         .catch((err) => {
    10.             on_error(err.msg);
    11.         });
    12. }
    13.    
    14. function write_variable(name,input_id)
    15. {
    16.     var val = document.getElementById(input_id).value;
    17.     /* WriteVariable uses FreeMASTER variable object from current project。Use
    18.      * WriteUIntVariable to access the memory directly using a symbol name。*/
    19.     pcm.WriteVariable(name,val)
    20.         .then(() => {
    21.             document.getElementById("status").innerHTML = "Write of the " + name + " succeeded.";
    22.         })
    23.         .catch((err) => {
    24.             on_error(err.msg);
    25.         });
    26. }</font>
    复制代码
    FreeMASTER Lite服务


    FreeMASTER Lite是v3.0新增的独立组件,用于脱离经典的FreeMASTER框架提供从桌面到电路板的数据访问。
    实际上,这几乎是一个并列于FreeMASTER桌面版的全新软件包。它以"服务"的形式运行在系统后台,提供了JSON-PRC接口用于访问远程连接的电路板。就像大多数操作系统服务的运行方式一样,FreeMASTER Lite没有用户窗口,通过命令行和配置文件传入参数。根据手册的描述,FreeMASTER Lite在操作系统中像一个标准的网页服务器一样,一方面同远程的电路板交互,另一方面可以接收来自python或者node.js脚本中的请求。


    由于时间关系,笔者还没有仔细研究如何使用这个FreeMASTER Lite的功能,以后有时间再做介绍。


    总结

    FreeMASTER v3.0兼容了经典FreeMASTER的所有功能,新增了Chromium引擎和JSON-PRC协议组件,用于作为IE引擎和ActiveX的换代产品。首次引入了FreeMASTER Lite软件包,用于提供命令行版本的连接PC机网页和电路板的服务。
    新版的FreeMASTER定位于提供运行某些新的FreeMASTER应用工程的运行时环境,而没打算让用户在这个平台上进行二次开发,设计自己的FreeMASTER应用工程。


    经过试用,笔者个人建议,经典FreeMASTER用户不用着急迁移到新平台上。如果你一定想使用Chromium引擎,在你的UI界面中增加一些炫酷的特效,那么可以试试桌面版的FreeMASTER v3.0。
    如果只是简单地使用一个数据可视化的工具,v2.5仍是目前的最佳选择。(没错,借着试用v3.0的兴致,笔者也试用了v2.5,然后决定把用了多年的v2.0更新到v2.5版本)。



    作者:苏勇@NXP       文章出处:恩智浦MCU加油站

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-6-10 23:03
  • 签到天数: 1502 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4688

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10080
    最后登录
    2025-7-2
    发表于 2020-5-14 10:38:11 | 显示全部楼层
    segger公司的jlink也有类似的功能。
    好强大的样子
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-5-8 16:59
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    2020-12-25
    发表于 2020-5-19 13:34:35 | 显示全部楼层
    有没有freemaster的2.0 或者2.5的使用笔记啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 05:04 , Processed in 0.092516 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表