Migrating from MPLAB® IDE v8 to MPLAB® X IDE

Last modified by Microchip on 2024/06/24 06:33

Because MPLAB® X IDE is based on the NetBeans platform, many features will be different from the proprietary MPLAB IDE v8. Therefore, migrating to MPLAB X IDE from MPLAB IDE v8 or lower can be simplified by understanding the differences between the platforms.

Once these differences are understood, an MPLAB IDE v8 project can be imported into MPLAB X IDE as discussed in Import MPLAB 8 Project.

Image comparing the  MPLAB IDE v8 window to the MPLAB X IDE

Source Base

MPLAB® X IDE is based on the open-source, cross-platform NetBeans platform. Third parties can easily add functionality as plug-ins. MPLAB X IDE components that are specific to Microchip products are still proprietary.

MPLAB IDE v8 is proprietary and Windows operating system based. Third parties can add to v8 with design information from the MPLAB development group.

Back to top

Development Orientation

MPLAB® X IDE is project-based (no workspaces). In MPLAB X IDE, you must create a project to develop your application. Creating a project involves selecting a device, as well as selecting and setting up language tools, debug tools, programming tools, and other project specifics. This ensures all items needed for successfully developing an application are present. Multiple project grouping is handled by multiple configurations.

MPLAB IDE v8 is device-based. Although it is always highly recommended that you use a project in v8 to create your application, it is not required. Workspaces are used to contain some set-up information, including multi-project grouping.

Back to top

Development Tool Selection

MPLAB® X IDE allows multiple tool selection

Example 1: Connect several MPLAB ICD 3 debuggers to several computer USB ports. Then access the Project properties to easily switch between the debuggers, which are identified by their serial numbers (SN).

Example 2: Connect one MPLAB ICD 3 debugger to a computer USB port and one MPLAB PM3 programmer to another USB port. Then access the Project properties to easily switch between the tools.

MPLAB IDE v8 does not allow multiple tool selections

Back to top

Language Tool Selection

MPLAB® X IDE allows multiple language tool version selection

Example: Install two versions of the MPLAB C Compiler for PIC18 MCUs. Then access the Project properties to easily switch between versions of compiler toolchains.

MPLAB IDE v8 does not allow multiple language tool version selection

Back to top

Debug Sessions

MPLAB® X IDE allows multiple debug and programming sessions. MPLAB X IDE allows you may have multiple debug sessions active in one IDE.

MPLAB IDE v8 allowed one debug or programming session. MPLAB IDE v8 allowed you to have multiple projects open in the IDE. However, you could only debug or program with one project at a time.

Back to top

Build Configurations

MPLAB® X IDE allows multiple build configurations. MPLAB X IDE allows more than one build configuration.

MPLAB IDE v8 allowed only two configurations. MPLAB IDE v8 allowed you to select only between “Release” or “Debug” from the Build Configuration drop-down box and have use of __DEBUG in your own code.

To recreate the MPLAB IDE v8 functionality in MPLAB X IDE, you can create your own Debug configuration and __DEBUG macro.

Back to top

Build/Programming Steps

MPLAB® X IDE provides multi-step options to debug and program. MPLAB X IDE has a “Debug Project” icon that builds, programs a target device with your program and a debug executive (for hardware tools), and runs your code in Debug mode in one click. Also available is a “Make and Program” icon that builds, programs a target device (for hardware tools), and runs your code in one click. If you do not want your program to run after make and program, use the “Hold in Reset” icon instead.

MPLAB IDE v8 required several manual steps to debug or program. MPLAB IDE v8 had a procedure that required completion before debugging or running code:

  1. select the correct build configuration (Release or Debug)
  2. build/make your code
  3. program the target with the code (for hardware tools)
  4. run your code.

For some tools, e.g., MPLAB Starter Kits, you still need to perform some steps independently. MPLAB X IDE provides this functionality under Debug>Discrete Debugger Operation.

Back to top

Configuration Bits

MPLAB® X IDE uses configuration bits set in code. MPLAB X IDE requires that Configuration bits be set in code. However, you may temporarily change Configuration bits in the Configuration bits window when in a debug session and then write these settings to the Output window to paste into your code.

MPLAB IDE v8 used configuration bits set in code or a window. MPLAB IDE v8 allowed you to set Configuration bits in either code or the Configuration bits window. However, settings made in the window had to be manually entered into the code.

Back to top

Hardware Tool Connection

MPLAB® X IDE debug tools are only connected during a session. MPLAB X IDE only connects debug or programmer tools to the target during a debug or programming session. Otherwise, they are not connected.

MPLAB IDE v8 debug tools were always connected. MPLAB IDE v8 connected to the debug and programmer tools as soon as the tool was selected. This configuration did not allow for multiple sessions.

To maintain this connection at all times in MPLAB X IDE, like MPLAB IDE v8, go to Tools > Options (mplab_ide > Preferences for Mac OS X), Embedded, Generic Settings tab, and check “Maintain active connection to hardware tool”.

Back to top

Information Displays

MPLAB X IDE information is consolidated in one display. MPLAB X IDE has a Dashboard window that contains breakpoint resources, checksum, and memory gauge information. This window organizes this and future information in one place.

MPLAB IDE v8 information is spread over several displays. MPLAB IDE v8 had a breakpoint resources toolbar, checksum toolbar, and memory gauge window. Each feature was accessed differently.

Back to top

Feature Updates

MPLAB® X IDE has many NetBeans features. MPLAB X IDE has many NetBeans editing and debug features. (See NetBeans Help for more details.) Periodically, MPLAB X IDE will update the NetBeans platform it is based upon. Then the IDE will be updated to the new NetBeans features. The MPLAB X IDE release notes will specify the NetBeans platform version that each version of MPLAB X IDE is built upon.

MPLAB IDE v8 had its own, proprietary features. MPLAB IDE v8 was a proprietary product. As such, third-party and community development was more difficult.

Back to top

Menu Differences

The following table highlights the File menu changes from MPLAB® IDE v8 to MPLAB X IDE. Due to the changes in MPLAB X IDE, not all MPLAB IDE v8 menu items will map identically. Major differences are discussed under Comments.

Back to top

File Menu Differences

NewFile > New FileSelect associated project in file wizard
Add New File to ProjectRight click Header/Source Files > NewFor an open project in the Projects tab
OpenFile > Open File 
CloseFile > Close 
SaveFile > Save 
Save AsFile > Save As 
Save AllFile > Save All 
Open Workspace
Close Workspace
Save Workspace
Save Workspace As
N/AAll data kept in projects, not workspaces
ImportFile > ImportUseful for HEX files
ExportN/AProject HEX file is located
in the project folder
PrintFile > Print
File > Print to HTML
File > Page Setup
Recent FilesFile > Open Recent Files 
Recent WorkspacesN/AAll data kept in project directory
ExitFile > Exit

Back to top

Edit Menu Differences

UndoEdit > Undo 
RedoEdit > Redo 
CutEdit > Cut 
CopyEdit > Copy 
PasteEdit > Paste
Edit > Paste Formatted
DeleteEdit > Delete 
Select AllEdit > Select All
Edit > Select Identifier
FindEdit > Find
Edit > Find Selection
Find NextEdit > Find Next
Edit > Find Previous
Find In FilesEdit > Find in Projects
Edit > Replace in Projects
ReplaceEdit > Replace 
Go ToNavigate > Go to Line
Navigate > Go to Declaration/Definition
Go To LocatorNavigate > Go to Symbol 
Go BackwardNavigate > Back 
Go ForwardNavigate > Forward 
External DIFFTools > DiffSee also Tools > Options
(mplab_ide > Preferences for Mac® OS X®),
Miscellaneous, Diff tab



Source > Format
Source > Shift Left/Right
Source > Move Up/Down
Source > Toggle Comment
BookmarksNavigate > Toggle Bookmark
Navigate > Next Bookmark
Navigate > Previous Bookmark
PropertiesTools > Options > Editor tab
Tools > Options > Fonts & Colors
Use mplab_ide > Preferences instead of
Tools > Options for Mac® OS X®.

Back to top

View Menu Differences

ProjectWindow > Projects 
OutputWindow > Output 
ToolbarsView > Toolbars 
SaveFile > Save 
CPU Registers2Window > PIC Memory Views > CPU Registers 
Call StackWindow > Debugging > Call Stack 
Disassembly ListingWindow > Debugging > Output > Disassembly Listing File 
EEPROMWindow > PIC Memory Views > EE Data Memory 
File Registers1Window > PIC Memory Views > File Registers 
Flash DataWindow > PIC Memory Views > Data Memory 
Hardware StackWindow > PIC Memory Views > Hardware Stack
Debug > Stack
LCD PixelNot available 
LocalsWindow > Debugging > Variables 
Memory2Window > PIC Memory Views > Execution Memory 
Program Memory1Window > PIC Memory Views > Program Memory 
SFR/Peripherals2Window > PIC Memory Views > Peripherals 
Special Function Registers1Window > PIC Memory Views > SFRs 
WatchWindow > Debugging > WatchesSee also: Debug > New Watch
Memory Usage GaugeWindow > Dashboard 
TraceWindow > Debugging > TraceSee also: File > Project Properties to enable trace
Note 1: 8- and 16-bit devices
Note 2: 32-bit devices

Back to top

Project Menu Differences

Project WizardFile > New ProjectAlways invoked for new project.
NewFile > New ProjectAlways invoked for new project.
OpenFile > Open Project
File > Open Recent Project
CloseFile > Close Project 
Set Active ProjectRun > Set Main Project 
QuickbuildNot supportedA project is required for all development.
Package in .zipRight click on project
in Projects window,
select Package
CleanRight click on project
in Projects window, select
Clean or Clean and Build
Locate HeadersRight click on project
in Projects window,
select Locate Headers
Export MakefileN/ASee the topic Working Outside the IDE
in the MPLAB X IDE Help.
Build AllRun > Run Project
Debug > Debug Project
Programmer build/run
Debug build/run
Build ConfigurationFile > Project Properties,
click Manage Configurations
There used to be only two configurations:
Release and Debug. Now you determine
how many you need.
Build OptionsFile > Project Properties,
click Toolchain Tool
Language tool set up
Save ProjectFile > Save
File > Save All
Save Project AsFile > Save As 
Add Files to ProjectRight click on project folder
in Projects window,
select Add Existing Item
Add New File to ProjectRight click on project folder
in Projects window,
select New
Remove File from ProjectRight click on project file
in Projects window,
select Remove From Project
Select Language ToolsuiteFile > New Project
File > Project Properties
To select
To change
Set Language Tool LocationsTools > OptionsEmbedded,
Build Tools
Use mplab_ide > Preferences instead of
Tools > Options for Mac® OS X®.
Version ControlTeam menu itemsOther version control may be available
as a plugin.

Back to top

Debugger Menu Differences

Select ToolFile > New Project
File > Project Properties
To select
To change
Clear MemoryNot available. Use Fill Memory.Window > PIC Memory Views >Memory Window,
right click in window, then select 'Fill Memory'
RunRun > Run Main Project
Debug > Debug Main Project
Debug > Continue
Programmer Run
Debug Run
Run from Halt
AnimateNot supported 
HaltDebug > Pause 
Step IntoDebug > Step Into 
Step OverDebug > Step Over 
Step OutDebug > Step Out 
ResetDebug > Reset 
BreakpointsDebug > New Breakpoint
Debug > Toggle Breakpoint
Set a breakpoint in code by clicking in the
gutter next to a line of code.
SettingsFile > Project Properties 
StopwatchWindow > Debugging > Stopwatch 

Back to top

Programmer Menu Differences

Note: For programmers, see also the MPLAB® IPE.

Select ProgrammerFile > New Project
File > Project Properties
To select
To change
Enable ProgrammerNot available. Automatically
enabled on programming
Unless Tools > Options, Embedded,
Generic Settings, “Maintain active
connection to hardware tool”
Disable ProgrammerNot available. Automatically
disabled after programming
ProgramMake and Program DeviceOn Run toolbar
VerifyNot availableSee MPLAB® IPE
ReadRead Device MemoryOn Run toolbar
Blank Check AllNot availableSee MPLAB IPE
Blank Check OTPNot availableSee MPLAB IPE
Erase Flash DeviceAvailable on custom toolbarView > Toolbars > Custom
See also MPLAB IPE
Reset Program StatisticsNot availableSee MPLAB IPE
Download OSFile > Project Properties,
debug tool category,
Firmware option
The IDE will automatically choose
the most up-to-date firmware
to download

Back to top

Tools Menu Differences

Data Monitor and Control Interface
(DMCI) and other plugins
Tools > Plugins
Tools > Embedded
To install
To use
MPLAB® MacrosEdit > Start Macro Recording
Edit > Stop Macro Recording
After recording, you can
enter a macro name
and shortcut.
RTOS ViewerTools > Plugins
Tools > Embedded
To install
To use

Back to top

Configure Menu Differences

Select DeviceFile > New Project
File > Project Properties
To select
To change
Configuration BitsWindow > PIC Memory Views > Configuration Bits 
External MemoryWindow > PIC Memory Views > Program/Execution MemoryExternal memory is displayed as part of
program or execution memory
ID MemoryWindow > PIC Memory Views > User ID Memory 
SettingsTools > OptionsUse mplab_ide > Preferences for Mac® OS X®

Back to top

Window Menu Differences

Close AllWindow > Close All Documents 
CascadeNot supported 
Tile HorizontallyDrag and drop window 
Tile VerticallyDrag and drop window 
Arrange IconsView > Toolbars > Customize 
Window SetsWindow > Document Groups 
Create Window SetWindow > Document Groups > New Document Group 
Destroy Window SetWindow > Document Groups > Manage 
Recent WindowsNot supported

Back to top

Help Menu Differences

TopicsHelp > Contents
Help > Tool Contents
Help > Online Docs and Support
Add PDFs under Important Files
in the Projects Window.
Release NotesStart Page, Learn & Discover,
Users Guide & Release Notes
Driver InstallationN/ADrivers installed with MPLAB X IDE
See Hardware Tool webpage for uninstall
Check for UpdatesN/AUpdates automatically enabled
Web LinksHow do I?Developer Help
About MPLAB® IDEHelp > About

Back to top

Tool Support Differences

Development ToolIn MPLAB® X IDE?
MPLAB® PICkit™ 4
PICkit 3
PICkit 2
PICkit 1
MPLAB® REAL ICE™ In-Circuit Emulator

Back to top

Plug-in Support Differences

Plug-Ins1In MPLAB® X IDE?
dsPIC® Filter Design2
dsPICworks Data Analysis2
Graphical Display Designer
KeeLoq® Plugin
Memory Starter Kit
RTOS Viewer
AN851 Bootloader
AN901 BLDC Tuning Interface
AN908 ACIM Tuning Interface
dsPIC30F SMPS Buck Converter
dsPIC33F SMPS Buck/Boost Converter
Segmented Display Designer
Note 1: To see available plug-ins, select Tools > Plugins, “Available Plugins” tab.
Note 2: For Windows® operating systems only.

Back to top

Other Migration Considerations

The following are issues with MPLAB® X IDE and MPLAB IDE v8 projects. If you do not see your issue here, consult the documentation for MPLAB X IDE.

Back to top

Importing an MPLAB® IDE v8 Project - Settings

Settings that were saved in a workspace in MPLAB® IDE v8 (such as tool settings) will not be transferred to the new MPLAB X IDE project. Refer to the MPLAB IDE v8 help for what is stored in a workspace (MPLAB IDE Reference > Operational Reference > Saved Information.)

Back to top

Importing an MPLAB® IDE v8 Project - Modified Linker Scripts

If you have modified your MPLAB® IDE v8 project linker script so that it includes an object file, the linker will be unable to find the file when imported into MPLAB X IDE because the build paths for MPLAB IDE v8 and MPLAB X IDE are different.

So you may see an error like:

<install path>ld.exe: cannot find the file.o

since in MPLAB IDE v8, all build-related files are in one directory, whereas in MPLAB® X IDE build files are in different subdirectories.

You can edit your linker script to work with MPLAB X IDE by using wild cards. For example, change:

/* Global-namespace object initialization - MPLAB^^®^^ v8*/
  .init   :
    KEEP (crti.o(.init))
  } >kseg0_program_mem


/* Global-namespace object initialization - MPLAB X*/
  .init   :
    KEEP (*crti.o(.init))
  } >kseg0_program_mem

Alternatively, you can use an address attribute that allows you to place functions in C code.

int __attribute__((address(0x9D001000))) myfunction (void) {}
This allows you to place a function at an address without modifying the default linker script.

Back to top