This article explains how to use the FreeMASTER desktop application to connect to a running embedded target, browse and add application variables, monitor their values in real time, and visualize signals using the Oscilloscope and Recorder features.
Why Is This Important?
FreeMASTER provides a non-intrusive way to interact with a running embedded application. Variables can be read and modified while the application continues to run, making the tool useful for parameter tuning, system validation, debugging, and building interactive dashboards.
Who Is This Article For?
This article is intended for:
- Embedded developers who need to monitor and tune application variables while their application is running.
- Users who have an embedded application running on a target board and want to interact with it using FreeMASTER.
After reading this article, you will be able to:
- Connect the FreeMASTER desktop application to a target board.
- Add and manage application variables.
- Monitor variable values in real time.
- Use the Oscilloscope and Recorder features to visualize and analyze signal data.
FreeMASTER is a Windows-based desktop application that communicates with an embedded target through a serial interface. It uses a proprietary master-slave communication protocol, where the PC application issues requests and the target returns responses without disrupting the execution of the embedded firmware.
FreeMASTER identifies application variables using the ELF file generated during the build process. When DWARF debug information is included, the ELF file contains symbolic information, including variable names, data types, and memory addresses. FreeMASTER uses this information to automatically locate and access application variables on the target system.
When FreeMASTER is launched, a new project is created automatically.

To configure the communication interface, navigate to Tools → Connection Wizard.
3.1 Selecting the Communication Port Type
The first page of the wizard asks you to select the communication port type. Choose the option that matches the interface configured in your embedded application.

For applications built with NXP's Model-Based Design Toolbox, such as the one described in the previous article, the FreeMASTER Driver is typically configured to use LPUART over USB-CDC. In this case, select "Use direct connection to on-board USB port", which is the most common connection method for NXP evaluation boards.
3.2 Selecting the COM Port and Baud Rate
On the next page, select the COM port assigned to the board and the baud rate configured in the embedded application. Click Next to complete the wizard. Communication starts automatically once the wizard is finished.

Note: The baud rate must match the value configured on the target. If the values do not match, communication cannot be established.
3.3 Loading the ELF File
After the connection is established, FreeMASTER prompts you to load an ELF or MAP file to resolve application symbols. Click Yes and browse to the .elf file generated during the build process.

If you dismiss the prompt or need to update the file later, navigate to Project → Options → MAP Files, click New, and select the appropriate ELF file.

Note: The ELF file must be built with DWARF debug information enabled. Without DWARF information, FreeMASTER cannot resolve variable names, addresses, nor data sizes.
Handling Project Variables
4.1 Adding Variables
Variables are added through Project → Variables. In the Variables List dialog, click New to open the Variable Definition dialog. Enter the variable name in the Address field. FreeMASTER searches the symbols loaded from the ELF file and displays matching variable names in a dropdown list. Select the desired variable, configure the sampling period, and click OK.

Variables are read-only by default. To enable write access, open the Variable Definition dialog, switch to the Modifying tab, and enable the write option.
Once write access is enabled, the variable value can be edited directly from the Variable Watch panel while the application is running.
4.2 Variable Watch
The Variable Watch panel displays the current values of selected variables in real time.
To choose which variables are displayed, right-click the Variable Watch panel and select Watch Properties. In the Project Block Properties dialog, open the Variable Watch tab. All variables defined in the project are listed under Available variables. Select the variables you want to monitor and click Add to move them to the Watched variables list.

Once configured, the Variable Watch panel continuously reads the selected variables from the target and updates their values in real time.
For variables with write access enabled, you can modify their values directly from the panel by clicking the value field and entering a new value.
Setting Up the Oscilloscope
The Oscilloscope displays application variables as live waveforms. As new data is received from the target, the display updates continuously, making it useful for monitoring signal changes and system behavior over time.
To create an Oscilloscope view, right-click the project node in the Project Tree and select Create Oscilloscope.

In the Variables tab, click Add Variable and select the variables you want to display. Each variable is assigned a color and can be configured with its own Y-axis range and trigger settings.

Once configured, the Oscilloscope displays a live waveform for each selected variable, allowing you to monitor signal behavior in real time.

The Recorder captures variable data directly on the MCU using a dedicated RAM buffer. Unlike the Oscilloscope, which receives data through periodic polling from the PC, the Recorder samples variables at the application's execution rate.
Because sampling is controlled by the MCU, all samples are evenly spaced and deterministic. This makes the Recorder particularly useful for capturing fast-changing signals and time-critical events where sample accuracy is important.
To create a Recorder, right-click the project node in the Project Tree and select Create Recorder.

In the Variables tab, click Add Variable to select the variables you want to record and configure their Y-axis ranges. The Variable Trigger Properties section allows you to configure a trigger condition to start a capture when a specific event occurs. You can select the trigger threshold value, and edge type (rising or falling). More advanced triggering settings can be set in the Recorder Trigger tab.

After configuration, the Recorder monitors the selected trigger condition. Until the trigger event occurs, no data is displayed. Once triggered, the complete dataset is retrieved from the board and plotted as a line chart.

Note: Auto run is enabled by default and re-arms the recorder automatically after each download for continuous captures.
In this article, you learned how to connect FreeMASTER to an embedded target, load application symbols from an ELF file, monitor variables using the Variable Watch panel, and visualize signal data with the Oscilloscope and Recorder.
These features provide a powerful and non-intrusive way to observe and tune a running application without stopping firmware execution.
In the next article, we will explore FreeMASTER Lite and the JSON-RPC API, showing how to build custom web-based dashboards that communicate directly with an embedded application from a browser.