FreeMASTER Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FreeMASTER Knowledge Base

Discussions

Sort by:
Version 3.2.2 of the NXP FreeMASTER tool has just been published online.  This version is backward compatible and fully replaces older 3.2.x releases (see previous announcements). It brings new features and bugfixes described below. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.     Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.2.2 is a minor update of the 3.2.x mainline release line. It overwrites previous 3.2 version installed on the host computer. Older 2.x, 3.0 and 3.1 versions are not removed.  This version backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs, array-to-graph views and connectivity to 3rd party applications. There are CEF and Microsoft Edge WebView2 as two Chromium-based HTML rendering engines with full support of JSON-RPC, HTML5 and JavaScript to create custom dashboards and other user interfaces that run inside FreeMASTER. Older Internet Explorer rendering engine with ActiveX interface and protocol defined for versions 2.x is also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. Version 3.2.2 contains FreeMASTER Lite and Node.JS modules internally referred as version 1.2. Installing FreeMASTER Lite will require you to enter an activation code generated for this version. Get your free code on the License Keys tab at the license information page. New Features Version 3.2.2 introduces the following new features extending data visualization and communication options: Variable Watch views extended Variable Watch views now able to display a new optional column to the grid, which displays address of each variable. Also, a source of the information is displayed (ELF, TSA or dynamic) along with the numeric address value. This may be extremely useful during troubleshooting the variable configuration.  Application Calibration - save & load variable values The variables displayed together in one of the Watch views can be selected and their immediate values exported to a JSON file. Later the file can be loaded and all values written back to physical variables. This feature is useful to bring application quickly to a recent state or to restore calibration values being tuned. ActiveX/JSON-RPC interface extended Functionality of ActiveX/JSON-RPC methods GetSymbolInfo and GetAddressInfo was extended so that also the C-language type name can be retrieved. Additionally, the ActiveX methods which accept 1D array on input (e.g. WriteDoubleArray)  have been made friendly to Matlab scripting. Vectors of N elements in Matlab scripts are actually 2D arrays (Nx1) which were not compatible with the FreeMASTER ActiveX interface. The Matlab format is now accepted too. CMSIS-DAP v2.1 supported The CMSIS-DAP v2.1 introduced by NXP MCU-Link interface is built on top of new WebUSB communication class. FreeMASTER 3.2.2 supports this new communication as well as it maintains backward compatibility with older versions. Data capture in raw format Data captured to file by Oscilloscope or Recorder views can now be stored in raw binary format for faster processing. This capture mode extends the default storing in double floating point format. Bugfixes and other extensions: FreeMASTER Fixed handling of unsupported DWARF version 5 (error message shown instead of crash). Fixed script method StartComm() to handle the "preset" configuration properly. Fixed creation of second "New Window" for recorder. Fixed storing/restoring of window layout to or from a standalone layout file. Fixed opening online projects using the "https:" URIs. Fixed DefineVariable script method with variables created with defined numeric transformation. Fixed text labels of the Recorder manual control button inside the recorder view. New versions of P&E Micro Multilink firmware added to fix Power Architecture Nexus2+ connection issue. FreeMASTER Lite Fixed flow control and stop bits options parsing during RS232 communication setup. Fixed TriggerOnly ignored option during Recorder configuration.   Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicates with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms.   JTAG/ BDM Serial CAN TCP/IP Segger RTT FreeMASTER Desktop app. x86 for Windows ✓ ✓ ✓ ✓ ✓   Separate packages are available for FreeMASTER Lite containing x64 binaries for Windows & Linux platforms with the following supported communication interfaces.   Serial CAN TCP/IP FreeMASTER Lite x64 for Windows ✓ ✓ ✓ FreeMASTER Lite x64 for Linux ✓ ✗ ✓   Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Version 3.2 of the NXP FreeMASTER tool has just been published online.  This is the first version of the new 3.2.x release line. It is backward compatible with previous 3.x and 2.x versions (see previous release announcements). The latest version brings new features and bugfixes described in this article. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.     Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.2.0 is the first version of the new 3.2.x release line. The installer does not replace the older installations in the system, version 3.2 it may co-exist simultaneously with the older versions.  Version 3.2 is fully backward compatible with all previous versions and it adds new features described here. Traditionally, it supports runtime monitoring of embedded applications, displaying variable values, oscilloscope real time graphs, fast transient recorder graphs and enables connectivity to 3rd party applications. The major new feature introduced by this version is a support of Microsoft Edge WebView2 browser component which can be used to render dashboard and other control applications running embedded in the FreeMASTER main application window. In total, there are now three options of hosting the active HTML content inside the FreeMASTER: the legacy Microsoft Internet Explorer component introduced in versions 1.x and 2.x; Chromium CEF component introduced in version 3.0 and the new Microsoft Edge WebView2 component. The new Edge WebView2 is also based on a Chromium engine so it is fully compatible with the FreeMASTER's JSON-RPC client interface. Additionally the Edge also partially supports the COM+ host object embedding which enables to access the "legacy" FreeMASTER ActiveX interface. Such versatility enables a smooth migration path for old dashboards and control pages created originally for Internet Explorer into the modern browser framework. Note that the Internet Explorer browser and related technology is being phased out by Microsoft and the IE-based applications may no longer operate properly in near future. Please read more in the IE migration whitepaper accessible at the FreeMASTER Welcome page. FreeMASTER Lite service which is a part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  Note: Installing FreeMASTER Lite will require you to enter an activation code. Get your free code on the License Keys tab at the license information page. FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. New Features The key new feature is a support of Microsoft Edge WebView2 browser component which can be used to migrate old dashboards and other HTML applications running in FreeMASTER from Internet Explorer to the modern browser with minimal changes in the HTML and JScript code. Additionally, the ActiveX and JSON-RPC interface has been extended by new methods enabling to access project content and project options programmatically from a script environment. Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicate with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Check what new features or updates were introduced in each FreeMASTER Release. FreeMASTER 3.2 FreeMASTER 3.2.3 Update  New! FreeMASTER 3.2.2 Update  FreeMASTER 3.2.1 Update  FreeMASTER 3.2  FreeMASTER 3.1 FreeMASTER 3.1.4 - Update FreeMASTER 3.1.3 - Update FreeMASTER 3.1.2 - Update FreeMASTER 3.1.1 - Update FreeMASTER 3.1 - Release Announcement FreeMASTER 3.0 FreeMASTER 3.0.3 - Update FreeMASTER 3.0.1 - Update FreeMASTER 3.0 - Release Announcement Introducing FreeMASTER 3.0
View full article
This article is meant to be a starting guide for engineers using FreeMASTER tool. Introduction How To Install FreeMASTER Tool 3.x  How To Get FreeMASTER Driver for Embedded Application  Webinars Watch FreeMASTER Four-Part Webinar Series Development How To Implement a Control HTML Page using JSON-RPC API  How To Configure FreeMASTER Driver (video) How To Connect To The Target Board (video) How To Expose Variables Via TSA (Target Side Addressing) (video) How To Use FreeMASTER Communication Library in a custom C/C++ project How To Use FreeMASTER Communication Library in a custom Python script
View full article
Version 3.2.3 of the NXP FreeMASTER tool has just been published online.  This version is backward compatible and fully replaces older 3.2.x releases (see previous announcements). It brings new features and bugfixes described below. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.     Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.2.3 is a minor update of the 3.2.x mainline release line. It overwrites previous 3.2 version installed on the host computer. Older 2.x, 3.0 and 3.1 versions are not removed.  This version backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs, array-to-graph views and connectivity to 3rd party applications. There are CEF and Microsoft Edge WebView2 as two Chromium-based HTML rendering engines with full support of JSON-RPC, HTML5 and JavaScript to create custom dashboards and other user interfaces that run inside FreeMASTER. Older Internet Explorer rendering engine with ActiveX interface and protocol defined for versions 2.x is also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. Version 3.2.3 contains FreeMASTER Lite and Node.JS modules internally referred as version 1.3. Installing FreeMASTER Lite will require you to enter an activation code generated for this version. Get your free code on the License Keys tab at the license information page. New Features Version 3.2.3 introduces the following new features extending data visualization and communication options: Segger RTT plug-in extended The RTT communication plug-in now enables extra connection options to be provided by user. This may be needed to specify memory address or range of addresses where JLink RTT client searches for a communication buffer. Segger JLink plug-in extended The JLink plug-in now enables a custom script file (JLinkScript) to be executed by JLink library while connecting to target. This may be needed when extra steps are necessary e.g. to enable target memory access point (MEM-AP) interface. P&E Micro plug-in extended The P&E Micro plug-in has been extended. The latest firmware and device files have been added to support new NXP microcontrollers. ELF/Dwarf version 5 support Application executable files compiled using the latest GCC which use Dwarf V5 format by default can now be directly parsed by FreeMASTER. X-Y graphs extended Recorder, oscilloscope and Array Viewer X-Y graphs now enable to break the graph line when negative delta is detected on X axis. This may be useful when tracking inter-variable dependencies during cyclic events. CEF component updated CEF Chromium browser component has been updated to version 121.3.4+g2af7b91+chromium-121.0.6167.139. This solves issues observed after January 2024 update of Chrome browser. Regular-expression MAP file parser extended Parsing the text-based MAP files is quite outdated way of loading the MCU application symbolic information. However, this option may still be useful when other methods such as reading the ELF file or loading runtime TSA tables are not available. The latest version extends the MAP file parsing by options to define and load symbol type information. Loading ELF or MAP file from HTTPS URL The ELF/MAP files are now possible to be downloaded from HTTP/HTTPS server using an URL address.  Connection string as command-line argument The connect-string can now be specified using the "/cs" command-line argument. This may be extremely useful during automated test procedures or when starting multiple concurrent FreeMASTER instances to interface different target boards. Bugfixes and other extensions: FreeMASTER Fixed the warning dialog showing the full connect string when connection takes longer than expected. Fixed format of JSON-RPC responses of WriteMultipleVariables() and ReadMultipleVariables() methods. FreeMASTER Lite The Segger JLink, RTT and P&E Micro plug-in configuration options have been extended the same as in the desktop version. Added BDM plugin to FreeMASTER Lite for Windows x64. Added health check endpoint. Default path is `/health`, can be customized via input argument `--health <route>`. Upgraded Internal NodeJS to version 18.5.0. Fixed write 1 byte variable function. Issue: FreeMATER Lite was writing the ASCI code of the first character of the string argument instead of the numeric value (ex: “1” was written as 49 instead of 1)   Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicates with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms.   JTAG/ BDM Serial CAN TCP/IP Segger RTT FreeMASTER Desktop app. x86 for Windows ✓ ✓ ✓ ✓ ✓   Separate packages are available for FreeMASTER Lite containing x64 binaries for Windows & Linux platforms with the following supported communication interfaces.   JTAG/ BDM Serial CAN TCP/IP Segger RTT FreeMASTER Lite x64 for Windows ✓* ✓ ✓ ✓ ✓ FreeMASTER Lite x64 for Linux ✗ ✓ ✗ ✓ ✗ *Requires 64 bit version of the 3 rd party library. Tested with Segger (JLink_x64.dll).   Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Along with the release of MCUXpresso 11.7.0 (Jan 2023) there was and also an update to the MCU-Link debug probe firmware (version 3.108). We changed the major version number for this MCU-Link firmware release because it marks an update to be based on CMSIS-DAP 2.1, meaning the probe now enumerates as a WinUSB device instead of a USB HID device.  At the time of publishing this article, FreeMASTER 3.2 is the latest release and this version of the tool does not support SWD/JTAG connections over WinUSB. For that reason, please continue to use version 2.263 of the MCU-Link firmware if you want to use this type of interface with FreeMASTER. Note that the USB bridges to SPI, I2C and UART (VCOM) are still based on HID with the v3.xxx MCU-Link firmware, so if you are using only those interfaces via MCU-Link then you can update the firmware without hitting problems. We are working on support for WinUSB for the SWD/JTAG connection with FreeMASTER and will post more information once this is available. #FreeMASTER #MCU-Link #MCUXpressoIDE
View full article
If MCAT “App Control” tab is not displayed correctly like in the picture below, where gauges and fault indicators are missing, it is because a gauge component was not registered automatically in the windows system.   In order to fix this this issue apply following step to register gauge component: 1. Close the FreeMASTER project. 2. Extract agauge.CAB file located in C:\NXP\MC_DevKits\MCSPTE1AK344\sw\MCSPTE1AK344_PMSM_FOC_2Sh_ll\FreeMASTER_control\MCAT\control_page NOTE: You may use any archive software with CAB archive support includes WinZip, WinRAR or 7-Zip.           3. Run command prompt as an administrator. 4. Change active directory to extracted folder cd C:\NXP\MC_DevKits\MCSPTE1AK344\sw\MCSPTE1AK344_PMSM_FOC_2Sh_ll\FreeMASTER_control\MCAT\control_page\agauge 5. Run command regsvr32 agauge.ocx. Message box will inform you about gauge successful registration.   After gauge has been successfully installed you can open the FreeMASTER project and MCAT “App Control" tab will display correctly.  
View full article
Version 3.2.1 of the NXP FreeMASTER tool has just been published online.  This version is backward compatible and fully replaces older 3.2.x releases (see previous announcements). It brings new features and bugfixes described below. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.     Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.2.1 is a minor update of the 3.2.x mainline release line. It overwrites previous 3.2 version installed on the host computer. Older 2.x, 3.0 and 3.1 versions are not removed.  This version backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs and connectivity to 3rd party applications. There are CEF and Microsoft Edge WebView2 as two Chromium-based HTML rendering engines with full support of JSON-RPC, HTML5 and JavaScript to create custom dashboards and other user interfaces that run inside FreeMASTER. Older Internet Explorer rendering engine with ActiveX interface and protocol defined for versions 2.x is also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. Version 3.2.1 brings an updated FreeMASTER Lite and Node.JS modules internally referred as version 1.2. Installing FreeMASTER Lite will require you to enter an activation code newly generated for this version. Get your free code on the License Keys tab at the license information page. New Features Version 3.2.1 introduces the following new features extending data visualization and communication options: Multiple "Variable Watch" views Multiple Variable Watch views may now be displayed statically in the main view as floating or  dockable panes. Simply click any block item in the project tree hierarchy and select "New Watch Window" menu. New Watch window will open and will statically display values of variables assigned to the selected block. Note that a behavior of the standard Watch view has not changed, it still updates its content depending on a currently selected item in the project tree. TCP-to-Serial communication plug-in New TCP-to-Serial communication plug-in has been added. This plug-in implements the native RS232 protocol (version 4) over a raw TCP connection. It might be useful when bridging the serial communication over a network. Note that this is a different type of communication than used by the native TCP/UDP/RTT plug-in which uses a network protocol to connect to the target board directly. ActiveX/JSON-RPC interface extended New API methods were added to enable creation of the following objects in the FreeMASTER project: Text Enumeration types (enum types) - DefineEnum/GetEnumDefinition methods. Variable Stimulators - DefineStimulator/GetStimulatorDefinition methods. Recorder control methods like GetCurrentRecorderData were extended to be able to work also with Array Viewer data. Bugfixes and other extensions: FreeMASTER Fixed ELF file change detection and automatic reload. Fixed ELF array element address calculation logic for arrays nested in C++ namespaces. Fixed ArrayViewer data download for sizes over 64kB. Fixed error message for TCP/UDP/RTT connection in case of connection timeout. Fixed JScript JSON-RPC notification (events) exception handling and error reporting in reemaster-client.js. Fixed UTF-8 handling of JSON-RPC communication, e.g. when reading UTF-8 files using LocalFileReadString. Fixed expression evaluator crash when ELF symbol name length exceeds 256 characters. Fixed loss of communication over CMSIS-DAP virtual serial line (automatic port reconfiguration in case a CMSIS-DAP device is reset). Fixed serialization and restoration of window/view layout from a .pmpx file. Fixed performance issues Large number of ELF symbols was causing slowdown of Generate Variables dialog. Removal of temporary files of MS Edge component is now deferred to application exit to speed up project New/Open operation. ELF C++ data type parsing logic optimized by using internal lookup caches. FreeMASTER Lite Serial port identification using a keyword from a device description (Windows only). Serial connection via “COM_ALL” keyword to try all serial ports available (Windows & Linux) Internal NodeJS version upgraded to 16.16.0 Internal Node-RED version upgraded to 3.0.2 Node-RED updates (node-red-contrib-freemaster) Input data now appended to the output payload on all FreeMASTER nodes Fixed: Read array node address does not update after GUI change Fixed: Read array node does not push payload to all outputs   Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicates with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.  
View full article
Version 3.1.4 of the NXP FreeMASTER tool has just been published online.  This version is backward compatible and fully replaces older 3.1.x releases (see previous announcements). The latest version brings new features and bugfixes described below. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.   Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.1.4 is a minor update of the 3.1.x mainline release line. If there is any previous 3.1.x version already installed on the host computer, the FreeMASTER 3.1.4 overwrites the installation and it remains referred as a general mainline version 3.1. Older 2.x and 3.0 versions are not removed.  Version 3.1.4 is backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs and connectivity to 3rd party applications. An HTML rendering engine based on Chromium with full support of JSON-RPC, HTML5 and JavaScript is available to create custom dashboards and other user interfaces that can run inside FreeMASTER or standalone in local or remote web browser. Older Internet Explorer rendering, ActiveX interface and protocols defined for versions 2.x are also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  Note: Installing FreeMASTER Lite will require you to enter an activation code. Get your free code on the License Keys tab at the license information page. FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. New Features Version 3.1.4 introduces brand new features extending data visualization and communication options: Extended clipboard support Clipboard cut, copy and paste operations are now supported in the Variable Watch view and Project Tree view. Thanks to JSON text format, the clipboard can also be used to copy and paste variables and project items between different projects. ELF/DWARF V1 support This format used to be supported until FreeMASTER 2.0. It is now back as there are customer still using older CodeWarrior tools which generate debugging information in this format (e.g. CodeWarrior for DSC 8.3).   ActiveX and JSON-RPC API extended New API added to enable runtime manipulation, activation, creation and deletion of project items like Watch-blocks, Oscilloscopes, Recorders, Array Viewers and Pipes. The project can now be also saved or saved-as programaticaly using a script calls. A new FireCustomEvent and OnCustomEvent API may be used to communicate between all ActiveX and JSON-RPC scripting clients attached to FreeMASTER application.  New methods enable to Read or Write multiple variables within a single RPC call. This may be used to optimize performance by reducing RPC communication and processing time. These methods are also supported in FreeMASTER Lite. HTML Console Log view Log view can be displayed as a floating/dockable pane in FreeMASTER. The view shows console messages generated by JScript applications running in IE and Chromium views. RS232 control of RTS and DTR signals Extended control over RS232 port enables to configure RTS, DTR, CTS and DSR handshake signals. New address calculation operators New offsetof operator is now supported in variable address expression. This operator can be used as offsetof(TYPE, MEMBER) and it returns an offset of a structure member within a structure type. This might prove useful to access members of structures at dynamically defined addresses. For example: having a "ptr" variable holding a pointer to a structure instance, a member's address may be defined as valueof(ptr)+offsetof(type,member). New hint message displayed in a variable definition dialog lists all supported operators usable in a variable address field. Graph font scaling Font size of graph objects (legend and axis labels) can now be controlled and scaled up or down to achieve better visibility on 4k and other large monitors. The settings are saved in computer's local registry. Bugfixes and other extensions: FreeMASTER Fixed premature OnCommPortState and OnBoardDetected events fired before ELF fully loaded. Fixed ELF enumeration loading so the variables which use the enumerations are loaded properly. Fixed copy/paste issue of the root item in the project tree. Fixed clipboard behavior in 'textarea' elements inside CEF-rendered pages. Fixed symbol type resolution in Variable definition dialog when working with ELF symbols. FreeMASTER Lite Added debug logging functionality allowing to trace configuration file parsing Fixed variables' information loading from configuration file Fixed ReadELF function failures on missing elf property in connection definition inside configuration file Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicate with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Using FreeMASTER communication library in a custom Python script using ctypes ...
View full article
Using FreeMASTER communication library in a custom C/C++ project ...
View full article
Version 3.1.3 of the NXP FreeMASTER tool has just been published online.  This version is backward compatible and fully replaces older 3.1.x releases (see previous announcements). The latest version brings new features and bugfixes described below. The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.   Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive business lines as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Note that the license terms and conditions does not allow using FreeMASTER with non-authorized systems from other vendors. Version 3.1.3 is a minor update of the 3.1.x mainline release line. If there is any previous 3.1.x version already installed on the host computer, the FreeMASTER 3.1.3 overwrites the installation and it remains referred as a general mainline version 3.1. Older 2.x and 3.0 versions are not removed.  Version 3.1.3 is backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs and connectivity to 3rd party applications. An HTML rendering engine based on Chromium with full support of JSON-RPC, HTML5 and JavaScript is available to create custom dashboards and other user interfaces that can run inside FreeMASTER or standalone in local or remote web browser. Older Internet Explorer rendering, ActiveX interface and protocols defined for versions 2.x are also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. FreeMASTER Lite also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  Note: Installing FreeMASTER Lite will require you to enter an activation code. Get your free code on the License Keys tab at the license information page. FreeMASTER Node.js Installable Modules enable convenient use of the FreeMASTER JSON-RPC components in a Node.js applications managed by the ‘npm’ package manager. New Features Version 3.1.3 introduces brand new features extending data visualization and communication options: Communication over Segger RTT JLink interface New option was added in the network plug-in to enable communication over Segger RTT interface. Segger J-Link RTT is a high-speed bi-directional stream communication between host PC and target ARM CortexM CPU. A telnet protocol is used on the host PC to reach out to the J-Link interface so this communication may also be established to a remote computer's J-Link probe. Key benefit of the RTT is that the communication may be used simultaneously with an active debugger session established over the same J-Link interface. The network plug-in has been released in previous 3.1.2 version and enables a direct network communication with a target MCU using UDP or TCP protocols. The new version extends this plug-in by an RTT communication option. The ‘fmstr_rtt’ example application for i.MX-RT and other supported MCU platforms is going to be available soon in the FreeMASTER driver v3.0.5 available in MCUXpresso SDK version 2.11. ActiveX and JSON-RPC Server optimization Performance of the ActiveX and JSON-RPC servers accessed from external 3rd party clients is improved by running the internal COM+ server in a background thread, independent on the main UI processing. Comparing it to older implementation, the 3 rd party clients like Excel, Matlab, or Chrome web browser application interact faster with FreeMASTER back end as the communication is no more handled in the main UI process. FreeMASTER Lite middleware optimization Previously used FFI (Foreign Function Invocation) module was replaced with Node Native Addons. This change reduces the delay of invoking mcbcom library functions. Additionally, embedded NodeJS was upgraded from v12 (EOL) to v16. Note: since version 14, NodeJS supports Windows 8 and newer. This applies to FreeMASTER Lite as well, considering it is now using NodeJS v16. Using multiple FreeMASTERs Both ActiveX and JSON-RPC clients are now better able to access multiple instances of the running FreeMASTER tool and access multiple MCU applications in parallel. Please refer to detailed information and examples provided in the User Guide. Other changes List of other minor changes in version 3.1.3 Support for drag&drop re-positioning of variables has been enabled in the Variable Watch grid view. HTML applications running inside the FreeMASTER window may now access a special URL to retrieve a “info.js” file which defines a JSON object with various information about the currently running process, active project, communication settings etc. Refer to User Guide for more information. Bugfixes and other extensions: Fixed false recorder error when a variable is added as hidden & non-triggering. Fixed recorder setup dialog to prevent adding trigger variable without polarity defined. Fixed recorder state machine bug causing recorder to get stuck when manually aborted. Fixed ELF parser to load all C++ base-class members in case of indirect inheritance DWARF entry is used. Fixed inconsistent behavior of ELF parser when loading C++ class types, behaving differently after FreeMASTER startup and after ELF file was reloaded. Fixed SelectItem RPC call, could crash when bad item name was specified. Fixed maximum number of threads that can connect to communication DLL when communicating over a plug-in. Number increased from 4 to 16. Small number was causing issues when accessing communication from a Chromium engine. Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicate with the target microcontroller application using Serial, CAN, Ethernet/WiFi network, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
USL:https://community.nxp.com/docs/DOC-345079 由iulianstan和Adrian创建的文档     本文将引导您完成FreeMASTER 3.0的安装过程。您可以从FreeMASTER download page(https://www.nxp.com/webapp/Download?colCode=FMASTERSW30&location=null)获得安装软件包。   安装包内容 根据您的目标操作系统平台,您可以选择以下选项之一:        – Windows软件包包含FreeMASTER桌面应用程序,FreeMASTER Lite服务(均为32       位    版本)和文档。它是自包含的,不需要任何先决条件即可安装在干净的计算机       上。          – Linux软件包仅包含64位版本的FreeMASTER Lite服务。下载安装文件后,请确保    您向其添加了执行权限。然后以任何可执行文件的形式在终端中运行:               – Sudo chmod +x FreeMASTER3.0.bin               – ./FreeMASTER3.0.bin   安装   在安装过程中,系统将提示您一个“组件选择”窗口(在Linux上只有一个选项-FreeMASTER Lite       FreeMASTER Lite需要激活码,您可以通过单击窗口底部提供的链接(https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=FreeMASTER_Lite_1.0.R)免费获得激活码(请参见上文)。   一旦访问该链接后,您将收到一封包含激活码的电子邮件。可能需要一些时间,因此您可以继续使用浏览器选项,该选项将带您进入产品页面。       激活码可在“许可证密钥”选项卡中。您将需要在组件安装期间提供密钥。       输入激活后,安装过程将恢复。       现在,FreeMASTER 3.0已成功安装在您机器上的所选安装目录中(也显示在上面的最终窗口中)。       您可以使用创建的快捷方式或直接通过从安装文件夹运行可执行文件来启动FreeMASTER & FreeMASTER Lite        FreeMASTER - FreeMASTER 3.0\FreeMASTER\pcmaster.eve       有关更多信息,请通过以下快捷方式或直接从FreeMASTER 3.0\FreeMASTER\\doc\pcm_um.pdf访问用户指南。        FreeMASTER Lite - FreeMASTER 3.0\FreeMASTER Lite\node.exe       运行可执行文件后,它将在系统默认的Web浏览器中自动打开用户指南(如果未打开,请导航至http://localhost:8090/)。通过打开FreeMASTER 3.0\FreeMASTER Lite\html\index.html文件,也可以在不运行该工具的情况下对其进行访问。       Enjoy!
View full article
FreeMASTER 3.1.2 Update - Release Announcement
View full article
Version 3.1.1 of the NXP FreeMASTER tool has just been published online.  This version brings bugfixes and minor updates described below. You may also want to read the recent announcement and see training videos of the mainline version 3.1.0.  The updated installer is available along with documentation and other resources at http://www.nxp.com/freemaster.   Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive BLs as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. Version 3.1.1 is a minor update of the 3.1 mainline release. If version 3.1.0 is already installed, the FreeMASTER Update 3.1.1 overwrites the installation and it remains referred as a general mainline version 3.1. Older 2.x and 3.0 versions are not removed.  Version 3.1.1 is backward compatible with all previous versions. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs and connectivity to 3rd party applications. An HTML rendering engine based on Chromium with full support of JSON-RPC, HTML5 and JavaScript is available to create custom dashboards and other user interfaces that can run inside FreeMASTER or standalone in local or remote web browser. Older Internet Explorer rendering, ActiveX interface and protocols defined for versions 2.x are also still supported. FreeMASTER Lite service which is part of the FreeMASTER installation package provides the communication core for Windows and Linux systems. It is accessible similarly as the FreeMASTER desktop application over the JSON-RPC interface. The FreeMASTER Lite 3.1 also embeds the popular Node-RED framework for graphical programming and provides many examples of use with the FreeMASTER tool. Find more information related to Node-RED in the dedicated training video.  Changes   List of changes in version 3.1.1 New version of the P&E Micro Communication plug-in brings support of the latest CortexM7-based devices. The plug-in has been renamed from "BDM Communication"  to "P&E Micro Communication" to better identify the set of supported interfaces. New version of the Segger JLink Communication plug-in updates the JLink communication library to version 6.88c and fixes issues when opening a target device selection window in plug-in configuration dialog. New option added to ELF/DWARF parsing which enables to load unused symbols and symbols that are allocated at zero (NULL) address by a linker. This option is OFF by default, must be enabled by user in Options / Map Files / Edit settings dialog. Partial clipboard support in Project Tree simplifies duplicating and moving Recorder, Oscilloscope and other items. Currently the clipboard commands only work within a single running instance of FreeMASTER. Variable description and comment text can now be assigned. The description may be used as an internal variable documentation - displayed in Variable Properties dialog. Comment text may be displayed as a new column in Variable Watch view. This column is visible by default in new projects. Bugfixes and other extensions: Fixed excessive communication with target board during initial board probing. This was happening when ActiveX/JSON-RPC client was trying to Read/Write variables during initial port-open action. Fixed direct memory access mode in PD-BDM plug-in. This faster access mode was not always used on CortexM platforms. Fixed invalid/zero variable size logged in Communication Debug Log in ReadVariable, WriteVariable and other similar log messages. Fixed crash in initial project open after application startup when the main window looses focus before the app. is fully initialized. Fixed JSON-RPC parsing of floating point numbers - this has depended on user regional settings causing issues in Dutch and other environments. JSON parsing now forced to English locale. Fixed ELF/DWARF parser to properly identify static variables defined inside functions. The variables are now identified as 'function::variable'. Old 'variable'-only naming is still supported for backward compatibility, but it is usable only if there are no duplicate variable names. Fixed ELF reload issue. In some scenarios, the FreeMASTER was not able to detect that ELF file has been changed or it has even failed to reload the file after it has been changed. Fixed all plug-in configuration dialogs will now show the plug-in version in title bar for easier tracking of issues related to wrong DLL registration. Fixed recorder issue causing conflicts when switching from one instance to another. Fixed similar pipe issue with un-registering pipe port when switching to another.    Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicate with the target microcontroller application using Serial, CAN, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. License terms and conditions permit use of FreeMASTER solely with systems based on NXP microprocessor or microcontroller systems. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Version 3.1 of the NXP FreeMASTER tool has just been published online.  The installer is available along with documentation and other resources at http://www.nxp.com/freemaster. There is also a video presentation of new features available in the desktop version. Another video shows the new FreeMASTER Lite and Node-RED integration. Release description FreeMASTER is a powerful data visualization tool developed and provided by NXP to help users monitor and control embedded applications running on NXP’s targets. It works with almost all NXP Arm ® Cortex®-M microcontrollers from both Edge Processing and Automotive BLs as well as with DSC and legacy Power Architecture, ColdFire and HCS12/Z platforms. FreeMASTER 3.1 release extends the version 3.0 by adding the new features. Older 2.x and 3.0 installations may co-exist on the host system with the 3.1 version which should enable smooth transition of projects, dashboards and other work items from the older versions to the new one.  Version 3.1 is backward compatible. It supports variable monitoring, oscilloscope real time graphs, fast transient recorder graphs and connectivity to 3rd party applications. An HTML rendering engine based on Chromium with full support of JSON-RPC, HTML5 and JavaScript is available to create custom dashboards and other user interfaces that can run inside FreeMASTER or standalone in local or remote web browser. Older Internet Explorer rendering, ActiveX interface and protocols defined for versions 2.x are also still supported. Block diagrams The following pictures shows high-level view of the FreeMASTER desktop application and FreeMASTER Lite interfaces, their connections to the target microcontroller applications as well as to 3rd party applications.     What's new in version 3.1 Version 3.1 extends the last update of version 3.0 with all its minor updates and bug fixes. Refer to earlier announcements for versions 3.0.3, 3.0.1 and the 3.0.0.  Features introduced in version 3.1: Node-RED framework support Node-RED is a popular framework that enables visual programming of event driven applications. FreeMASTER 3.1 brings a palette of Node-RED "nodes" that act as a visual wrappers around JSON-RPC calls. Now you can leverage the full potential of both FreeMASTER & Node-RED to design your application or even visual dashboards with minimal or no coding at all. The FreeMASTER Lite server now embeds the full Node-RED runtime, so no other installation is required. At the same time, the installer comes with stand-alone packages that can be added and used with a local Node-RED instance. This video training provides more details on FreeMASTER and Node-RED integration  FreeMASTER NodeJS modules The installation now contains two new NodeJS "npm" installable modules. FreeMASTER JSON-RPC Client as a general package for JSON-RPC interfacing which works both on the backend (NodeJS) and frontend (web browser). FreeMASTER Node-RED module as set of installable Node-RED nodes and example flows. Keep both packages together in the same folder when installing it for dependency resolving. Updated communication plug-ins to support protocol V4 The communication protocol version 4 has been first introduced in 2019 with FreeMASTER 2.5. Today, it is the primary protocol used by microcontroller applications based on NXP MCUXpresso SDK, automotive SDKs and other general applications targeting NXP i.MX-RT, LPC, Kinetis, S32K, S12Z and Power Architecture platforms. FreeMASTER 3.1 adds support of this protocol to the FreeMASTER Remote Communication Server, so it is again possible to access your microcontroller applications remotely over a network and even to share the same board connection with more FreeMASTER desktop applications. Protocol V4 is also now supported by the JTAG/EOnCE Real Time Data transmission interface available on DSC 56F800E/EX platforms. Virtual Variables New support of "Virtual" variables, which do not have an address assigned and can be created without any real counterpart in the MCU application. Virtual variables may still be accessed by scripts and may be added to Variable Watch and Oscilloscope views. This may be useful for script-defined global parameters and other purposes. Global Enumeration types Enumeration types are now managed globally. Multiple variables now share the string enumerations defined in a global repository (see menu Project/Enumerations...). The enumerations are loaded automatically from the MCU application's TSA tables. The 'enum' type parsing from ELF file to be supported in future. Recorder and Oscilloscope Properties dialogs extended New icons indicating variables' "trigger mode" displayed in Recorder variable list. Fixed drag&drop behavior in the variable list. Possibility to add multiple variables at once by pressing the "..." button. The Drop-down list with variable selection is now able to filter the content by a typed text. Working with context menu Project tree context menu has been extended by options to expand or collapse child nodes. Tree state is serialized to project (PMPX format only). Context menu commands were also added to easily duplicate existing Recorder and Oscilloscope items or to clone them from Oscilloscope to Recorder type and vice versa. New CAN interfaces supported The wide family of supported USB-to-CAN and other CAN interfaces (IXXAT, Vector, Kvaser, National Instruments, Peak Systems, Intrepid, ZLG, Glinker) has been extended by Viewtool Ginkgo devices.    Release target audience Both FreeMASTER and FreeMASTER Lite are primarily targeted to our customers, engineers and developers of NXP embedded applications from Industrial, IoT and Automotive areas who want to monitor and control their applications at runtime. FreeMASTER is also a strong framework which can be used to create interactive demos and user interfaces helping to use the embedded applications by yet wider target audience. Prerequisites FreeMASTER tools run on the host computer and communicate with the target microcontroller application using Serial, CAN, JTAG, BDM or other physical interface. The microcontroller communication drivers are available as part of MCUXpresso SDK, S32 Design Studio or as a standalone installation package. Get familiar with the communication protocol and the microcontroller driver API before using the FreeMASTER tool. Packages A single self-extracting installation package which contains both FreeMASTER desktop application and the new FreeMASTER Lite service is available for Windows platforms. A package with the FreeMASTER Lite service is also available for Linux. Access the installation and documentation at the FreeMASTER home page at https://www.nxp.com/freemaster.
View full article
Introduction FreeMaster allows us to create HTML pages with Javascript to interact with our embedded application, and access the FreeMaster features, allowing us to create complex and personalized user interfaces. FreeMaster gives us two options for rendering and communicating our HTML page: Internet Explorer or a Chromium rendering engine. The Chromium rendering engine (which is the base for modern browsers like Google Chrome, Microsoft Edge, and Opera)  is the more modern option, supporting asynchronous JavaScript programming and other modern scripting technologies. The Chromium rendering uses the JSON-RPC protocol to call the procedures on FreeMaster. JSON-RPC is a remote procedure call protocol that use JSON to encode its data, in this case, is used to call procedures from the FreeMaster application,  FreeMaster gives us a JSON-RPC API for Javascript that facilitates the communication between the HTML page and FreeMaster. Browser (Chromium engine)  Example Description In this example, we are going to use the JSON-RPC API to connect an HTML page to FreeMaster. The HTML page will be capable of reading a variable and modifying a variable, the HTML page will also plot the read variable. This example is based on a FreeMaster project that calculates the value of a sine line based on an angle that is constantly incrementing, you can find the description of the project in How To implement an interface using FreeMaster. Hardware / Software used Hardware setup: Board Used: FRDM-K64F SDK: SDK_2.x_FRDM-K64F  Version 2.8.0 or later   Software setup: Board Application developed in: MCUXpresso IDE v11.2.0 FreeMaster Version: FreeMaster  3.0.2.6 Control Page (HTML, CSS, Javascript) developed with: Visual Studio Code 1.48.0 (this was the IDE used for developing the control page but you can use any IDE of your preference) Graphs library: Chartist.js Official page: https://gionkunz.github.io/chartist-js/   HTML page Example (without FreeMaster) For this example, the HTML page we want to connect with FreeMaster looks like this: This document is not meant to teach you how to design or create an HTML page, but to connect the HTML page with our FreeMaster project. The elements of our HTML page that will communicate with the FreeMaster Project through the JSON-RPC API are the next: Connect Button: The connect button will star communication with the board and the FreeMaster project. Start Measure Button: The measure button will start the reading operation for the sin_value variable. Angle Step Modifier: This input will write the angle_step variable in our project. Graph: The graph will plot the sin_value that has been read.   General Structure of the Project The two files that we are going to be working with will be our HTML file and our Javascript file, in this example we are going to name them index.html and index.js, we will add more required files as we keep going through the document. If you are using Visual Studio open the folder that will contain the files, you can add or create files in the Explorer tab:      In index.html, make sure that index.js is being imported (you can check at the end of the body element): <script type="text/javascript" src="./index.js"></script> Connect our HTML page with FreeMaster (Use of freemaster-client.js) FreeMaster provides us with a “freemaster-client.js”  file available in the FreeMaster installation folder. This file is based in a popular JSON-RPC javascript library for generating and parsing messages called “simple-jsonrpc-js”, this implementation is also found in the installation folder and you can find the full documentation here: https://github.com/jershell/simple-jsonrpc-js. To connect our HTML page with the FreeMaster application using the JSON-RPC interface we need to use a Javascript wrapper object that contains all the methods of the JSON-RPC API. The object is named as PCM and it is declared in the “freemaster-client.js” file, we access the API methods through the PCM object. In resume:      The complete address of the “freemaster-client.js” and the “simple-jsonrpc-js” in the installation folder is: C:\nxp\FreeMASTER 3.0\FreeMASTER\examples\scripting\JavaScript-JSON-RPC   We will need these files to connect to our HTML page with FreeMaster, copy the files to your HTML page project:     Now we need to import the files “freemaster-client.js” and “simple-jsonrpc-js.js” in index.html,  on the header of the document we write: <script type="text/javascript" src="/js/simple-jsonrpc-js.js"></script> <script type="text/javascript" src="/js/freemaster-client.js"></script>   Next, we need to instantiate the Javascript wrapper object that we import in the “freemaster-client.js”. To do that, you need to create an external Javascript file and import it in our HTML document or implement it inside a script element in the HTML document. The wrapper object is named PCM, the implementation of the PCM object in the freemaster-client.js file looks requires the following arguments: var PCM = function(url, onSocketOpen, onSocketClose, onSocketError)   The url refers to the direction of the web server we are going to connect, when we open the FreeMaster application it initializes the JSON-RPC server listening on port number 41000. So our url should be “localhost:41000”.  The next three arguments ask for handlers to execute when connecting to the server when the server is close and a handler in case an error occurs during communication. To use these handlers we first need to create them, in the form of Javascript functions and then we can pass them like callbacks (a function pass it as an argument to another function). So our instantiation should look something like this (in index.js😞 let pcm = new PCM("localhost:41000", on_connected, on_close, on_error); function on_connected() { console.log("Connected to WebSocket"); }; function on_error() { console.log("Error with the WebSocket"); }; function on_close() { console.log("WebSocket Close"); } Here we use our on_connected, on_close, and on_error functions as handlers. The on_close and on_error functions only print a message on the console when they are executed. The on_connected method is also printing a message indicating that the connection to the JSON-RPC server was successful. The next thing we have to do is use some of the JSON-RPC methods to give functionality to the HTML page, showing and modifying the variables from our embedded application. In the next section, we are going to explain how the JSON-RPC API methods are used. Useful JSON-RPC API methods The full list of JSON-RPC API methods (as well as the ActiveX methods) can be found in the FreeMaster User Guide:FreeMaster User Guide.  We access to the JSON-RPC API methods through the PCM wrapper object. The API methods return a javascript Promise object, a Promise object represents an asynchronous operation, (like remote calls to FreeMaster) and we can indicate what to do in case of success or failure of the operation. The resolution of our asynchronous operation will be contained in a response object, and in the case of the JSON-RPC API, the output values of our operation will be in the data member of the response object, there is also another member named xtra that contains different values (like confirmation values) or alternative formatting to the response, check the user guide for more information of the returned value of xtra, but mostly we are going to use the data member. An example of the use of Promise with the JSON-RPC methods can be seen here: pcm.GetAppVersion() //In case of success we print the output value (data member of response object) .then((response) => console.log("App version: " + response.data)) //In case of failure we print the response object .catch((err) => console.log(err))   The then method is used in case of success and the catch method in case of failure. Both methods receive a callback function that receives the response object to indicate what to do with the response in each case. Some useful methods of the JSON-RPC API are listed below:   A full list can be found here:  FreeMaster User Guide. A more deep look at Promises in Javascript can be found in the official MDN Web Documents: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise. Implementing the JSON-RPC API in our HTML page In this section, we are going to exemplify some of the methods (StartComm, StopComm, ReadVariable, WriteVariable) that our PCM wrapper object offers. To give our HTML elements functionality we need to select them and add an event listener to them using DOM manipulation, in our script. Next is a simple example on how to do this, but for a more in-depth explanation check out the MDN Web Documentation: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction. DOM Manipulation example In our HTML script (index.html), the connect button element is described like this: <button id = "connectBtn" type="button" class="btn btn-success"> <i class="fas fa-wifi "></i> Connect</button>   To select the button element in our Javascript script we use the id attribute of our element: let conButton = document.getElementById("connectBtn");   Finally, we add an event listener to give our HTML element functionality: Using the API Methods In this next section, we are going to use some of the methods that the JSON-RPC API offers us and apply DOM manipulation to use them in conjunction with our HTML elements. The following examples will be written in our javascript script, in this case, index.js (you can also add this in a script element at the end of the body section of your HTML file if you prefer it). The methods that we are going to connect with our HTML elements through DOM manipulation are the next: HTML element HTML name (DOM manipulation) API methods Function   conButton  StartComm and StopComm Start or stop the communication with the board.   measureButton ReadVariable Read a variable from our embedded application, in this case the value of our sine line.   inputAngle WriteVariable Write the value of a variable from our embedded application, in this case the increment between calculations of our sine line.   API Methods: StartComm and StopComm Example The StartComm and StopComm methods open and close the communication port. They receive the name of the port as an argument, the special name “preset” identifies the default connection built in the FreeMASTER desktop application. In our example, we are going to use these methods in index.js when we click the connect button, as you can see we obtain the button with DOM manipulation and use the methods in the event listener.   At index.js let conButton = document.getElementById("connectBtn"); let connection = false; conButton.addEventListener("click", (ev) => { if(!connection) { pcm.StartComm("preset"); } else { pcm.StopComm("preset"); } connection = !connection; })   API Methods: ReadVariable Example The ReadVariable method allows us to read one of the variables in our embedded application. The method receives the name of the variable that we want to read as an argument.  The response object contains the value of the variable. In our example, we are going to start reading the “sin_value” variable when clicking in the “Start Measure” button, we are also going to set an interval for reading that variable every 100 milliseconds.   At index.js let measureButton = document.getElementById("measureBtn"); measureButton.addEventListener("click", (ev) => { //The setInterval function receives a callback function and the time of repetition intervalId = setInterval(() => { pcm.ReadVariable("sin_value") .then((response) => { console.log(response.data); }) .catch((err) => {}); }, 100); })   API Methods: WriteVariable Example The WriteVariable method allows us to write to one of the variables in our embedded application. The methods receive the name of the variable to change and the new value. The response object returns a boolean value if the operation was successful. In our example, we are going to use this method when modifying the “Angle Step” for the input box, to write in the “angle_step” variable. At index.js let inputAngle = document.getElementById("angleStep"); inputAngle.addEventListener("change", (ev) => { pcm.WriteVariable("angle_step", inputAngle.value); })   At the end of the index.js file should look something like this: let pcm = new PCM("localhost:41000", on_connected, on_close, on_error); function on_connected() { console.log("Connected to WebSocket"); }; function on_error() { console.log("Error with the WebSocket"); }; function on_close() { console.log("WebSocket Close"); } let conButton = document.getElementById("connectBtn"); let connection = false; conButton.addEventListener("click", (ev) => { if(!connection) { pcm.StartComm("preset"); } else { pcm.StopComm("preset"); } connection = !connection; }) let measureButton = document.getElementById("measureBtn"); measureButton.addEventListener("click", (ev) => { //The setInterval function receives a callback function and the time of repetition intervalId = setInterval(() => { pcm.ReadVariable("sin_value") .then((response) => { console.log(response.data); }) .catch((err) => {}); }, 100); }) let inputAngle = document.getElementById("angleStep"); inputAngle.addEventListener("change", (ev) => { pcm.WriteVariable("angle_step", inputAngle.value); })   Graphs One thing that we probably want to have in our HTML page, are graphs to show the data from our embedded application. There exist multiple graphs and plotting libraries/modules made for javascript, the one to use truly depends on the requirements of the application, and the preference of who is developing the HTML page. For this example, we are going to use Chartist.js just to show the capabilities that you have using an HTML page with FreeMaster, but feel free to use the library of your preference. The next example will show the use of the JSON-RPC API with a graph library, take into consideration that we are using the Chartist.js for any other libraries/module check the corresponding documentation. Implementing Chartist In the HTML script (index.html), we need to import the Javascript and CSS files from chartists, you can download it from the Chartist official github repositoryhttps://github.com/gionkunz/chartist-js/tree/master/dist.  Or you can look at different alternatives for downloading it in the official page: https://gionkunz.github.io/chartist-js/getting-started.html In the head section of the HTML page we import the files: <link rel="stylesheet" href="./chartist.css"> <script type="text/javascript" src="./chartist.min.js"></script> In the body section, we can insert the chart element like this: <div class="ct-chart ct-major-twelfth"></div> The charts in chartist take an object that contains the data, which must consist of two series describing the data and the labels on the X-axis. Another object can be given indicating the values of the Y-axis. In the Javascript script (index.js) we write this at the beginning of the document: let data = { labels: Array(50).fill(''), series: [ Array(50).fill(0) ] }; let options = { high: 1, low: -1 }; let chart = new Chartist.Line('   Now, to update our chart with the values that we are reading from our board we are going to modify the event listener that we create for our Measure Button, instead of printing the response of our ReadVariable method, we are going to use the response to update the data object of our chart: let measureButton = document.getElementById("measureBtn"); measureButton.addEventListener("click", (ev) => { //The setInterval function receives a callback function and the time of repetition intervalId = setInterval(() => { pcm.ReadVariable("sin_value") .then((response) => { data.series[0].shift(); data.series[0].push(response.data); chart.update(data); }) .catch((err) => {}); }, 100); }) With this, we have set up the chart to update the values of our embedded application. Again, this is specific for the Chartist.js library, although it can serve as a reference for other libraries. Running the HTML Page in FreeMaster Desktop Application We can run our HTML Page either in our browser or in the FreeMaster Desktop Application. Opening in the Browser To run in the browser open the FreeMaster project in the FreeMaster Desktop Application and then open the HTML page in the browser:   Opening in the FreeMaster Browser Application For the FreeMaster Desktop Application, we need to go to the options of our FreeMaster Project:   Go to the HTML page section, there select the HTML file in the “Control page URL” input, and then select the “Chromium Embedded Framework” in the HTML Rendering Engine option:   Conclusion We can use HTML pages empowered with Javascript to create a powerful and customizable user interface taking advantage of the extensive tools that exist for Javascript. The API that FreeMaster offers for connecting our page with our embedded application allows us to create these pages easily without sacrificing the functionalities that we have with FreeMaster. Feel encouraged to check all the methods that the API offers and explore all the things that you can do with it. 
View full article
Tutorial video explaining FreeMASTER TSA (Target Side Address translation) functionality.   Music by Bensbound
View full article
Tutorial video show a simple use case featuring monitor and control capabilities of the FreeMASTER tool.   Music by Bensbound
View full article
Tutorial video explaining how to integrate FreeMASTER Communication Driver into an embedded application. Music by Bensbound
View full article