Device Pack Frequently Asked Questions

MPLAB® X IDE requires specific information about supported devices in order to create the IDE infrastructure for project support, simulation, or to emulate these devices. This information is found in the device (.PIC) files; it includes data on device power requirements, programming methods, architecture, memory sizes, debug features, etc.

As of MPLAB X IDE v5.00, the device files are grouped into versioned Device Family Packs (DFPs). Currently, each MPLAB X IDE version comes with DFPs. In future releases, you will be able to upgrade the DFP version to include new devices, new device feature support, or device bug fix support.

DFP files will be decoupled from the MPLABX IDE releases. This enables device support to be added to previously released IDE versions if the architecture is supported, thus reducing the number of required MPLAB X IDE releases each year.

In addition, other device-specific collateral such as peripheral header files and libraries which had been previously been bundled with the XC compilers, are being moved into the DFPs. These changes will impact the workflow of project development and need to be understood by the developer.

This page outlines some frequently asked questions and will be useful to those discovering the DFPs for the first time.


Why are we implementing DFPs? What problem(s) do they solve for developers?

  • DFPs decouple device support from the IDE, compiler, and other tool releases.
  • With a single DFP source for all device-specific content, all tools can draw from the same DFP.

What is contained in DFPs?

  • Device description files (.PIC files for PIC® devices, .ATDF files for AVR® and SAM devices), which contain SFR names, memory regions, programming information.
  • Device-dependent source code files (i.e. peripheral header files) are being moved to DFPs. XC8 (AVR target) and XC32 (SAM target) are implemented today.
  • Libraries will be part of the DFP on XC8 (AVR, CSTARTUP) and XC32 – XC16 will store the libraries in the compiler directory.

When a developer #includes <xc.h>, which file is being referenced?

  • When the DFPs are complete and you select a DFP for your project, all tools will use that DFP, including xc.h from the DFP along with other headers in the DFP.
  • In some compilers, libraries may be included.
  • Summarizing:
    • Within the IDE, DFP headers will be used.
    • Outside of the IDE from a command window, you can instruct the compiler to look for and use DFP headers by the compiler option -mdfp <PATH>. If you use the makefile generated by the IDE, you will use DFP headers. To use the compiler headers, you will need to create and run a custom ‘make’ or build script.

Why do imported projects show DFP errors in MPLAB X 5.20?

  • The project used an older DFP version which is not loaded with the new version of MPLAB X.
  • The user can download the older DFP via the pack manager and that will be installed in the user directory.

When are DFPs used instead of the actual compiler header files?

  • DFPs will be used by the IDE whenever available.
  • Compiler-supplied header files will be used on the command-line with custom build scripts or within other IDEs that don’t take advantage of the DFPs.

How do DFP revisions match to compiler revisions?

  • DFPs can have compiler version restrictions (minimum compiler version which is supported).

How does a developer load and manage DFP revisions?

  • The developer needs to note the compiler, IDE, and DFP versions used in a project.
  • User-installed DFPs are in the user directory, IDE-installed (default) DFPs are part of the IDE directory.
  • Select Tools->Packs to install a specific DFP version as needed.
  • https://packs.download.microchip.com and http://packs.download.atmel.com contain all historical packs for downloading outside of the IDE.

Are administrative privileges needed to manage DFPs?

  • On Studio, yes (DFPs are installed in the program files directory).
  • On MPLAB X, no (user installed packs are in the user DFP directory).

Do we publish compiler revisions with new DFPs?

  • DFPs are separate and decoupled from the compiler.

How should developers manage DFPs in their environment?

  • The IDE will store the DFP which was used to create the project. When opened in the future, the IDE will request downloading the original pack if it is not part of the current IDE.
  • For archival purposes, developers should archive both the compiler and DFP versions for all projects.
© 2019 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.