The Framework |
MPLAB Harmony is a framework of system services, device drivers, and other libraries that is built upon a base of portable peripheral libraries to provide flexible, portable, and consistent software "building blocks" that you can use to develop your embedded PIC32 applications.
|
TCP/IP Stack and Wi-Fi® Support |
The MPLAB Harmony TCP/IP Stack provides a foundation for embedded network applications by handling most of the interaction required between the physical network port and your application. It includes modules for several commonly used application layers, including HTTP for serving web pages, SMTP for sending e-mails, SNMP for providing status and control, Telnet, TFTP, Serial-to-Ethernet, and much more. In addition, the stack includes lightweight and high-performance implementations of the TCP and UDP transport layers, as well as other supporting modules such as IP, ICMP, DHCP, ARP, and DNS.
- Multiple interfaces: Ethernet and/or Wi-Fi interfaces are supported
- Dual stack with IPv4 and/or IPv6 support
- Fully dynamic
- Improved modularity and stack layout
- Run-time configuration through the TCP/IP console
- Interrupt driven operation
- RTOS-friendly, with easy RTOS integration
- The BSD layer compatibility has been greatly improved, and new dynamic socket options have been added as well as IPv6 support
- Run time benchmarking support using standard industry tools - Iperf
- The MPLAB Harmony file system (SYS FS) is used by the HTTP, FTP, SNMP, modules, among others., to make the stack independent of the specific file structure of a particular media and allows web page storage on a multitude of storage media
- The stack uses the high-performance MPLAB Harmony Cryptographic Library, which is an efficient and modern implementation supporting the latest encryption and key exchange algorithms
- The stack security has been greatly improved by adding support of the modern wolfSSL TLS libraries
- TCP/IP Stack and Wi-Fi support
- IGMPv3 support
|
Wi-Fi |
The Wi-Fi software library, in conjunction with the MRF24WG0MA and MRF24WN0MA module, allows an application to:
- Join an existing 802.11 Wi-Fi network
- Create a 802.11 Wi-Fi network
|
USB Device Stack |
The MPLAB Harmony USB Device Library (referred to as the USB Device Library) provides embedded application developers with a framework to design and develop a wide variety of USB Devices. A choice of Full Speed only or Full Speed and Hi-Speed USB operations are available, depending on the selected PIC32 microcontroller. The USB Device Library facilitates development of standard USB devices through function drivers that implement standard USB Device class specification. Custom USB devices can also be implemented via a USB Generic Device Driver. The USB Device Library is modular, thus allowing application developers to readily design composite USB devices. The USB Device Library is a part of the MPLAB Harmony installation and is accompanied by demonstration applications that highlight library usage. These demonstrations can also be modified or updated to build custom applications. The USB Device Library also features the following:
- Supports different USB device classes (CDC, Audio, HID, MSD, and Generic)
- Supports multiple instance of the same class in a composite device
- Supports multiple configurations at different speeds
- Supports full speed and high speed operation
- Supports multiple USB peripherals (allows multiple device stacks)
- Modular and Layered architecture
- Supports deferred control transfer responses
- Completely non-blocking
- Supports both polled and interrupt operation
- Works readily in an RTOS environment
|
USB Host Stack |
The USB Host Layer in the MPLAB Harmony USB Host Stack performs the tasks of enumerating an attached device and interfacing the HCD. The following are the key features of the MPLAB Harmony USB Host Layer:
- Supports multi-configuration and composite USB Devices
- Supports VID PID and class, subclass, and protocol devices
- Can manage multiple USB devices through the Root Hub
- Concise API simplifies application development
- Modular architecture allows support for multiple (and different) USB controller in one application. Can operate multiple USB segments.
- Supports Low-Speed, Full-Speed, and High-Speed USB devices
|
Fixed-Point DSPk Math Libraries |
The DSP Fixed-Point Library contains building block functions for developing digital signal processing algorithms. The library supports the Q15 and Q31 fractional data formats. The functions are implemented in efficient assembly specifically targeted at the DSP extensions in this core family. The library makes these functions available in a simple C-callable structure.
- complex math
- vector math
- matrix math
- digital filters
- transforms
|
Graphics Library |
- Completely overhauled library improves drawing performance to enable faster updates and reduced need for screen painting
- Updates to MPLAB Harmony Graphics Suite (MHGS) includes the ability to undock all windows within the tool, the ability to zoom and copy/paste in composer window, and the addition of new resource utilities
- New MPLAB Harmony Event Manager to provide simplified coordination of graphics activity to external events
- Support for GPU-enabled MCUs (PIC32MZ DA family)
- New Image and Font Asset Manager gives fine-grained understanding of memory footprint and enables resizing to meet specific application needs and target MCU memory sizes
- New MPLAB Harmony Display Manager to quickly enable the use of displays with non-standard formats
|
Cryptographic Library |
This library provides a software Cryptographic Library that is available on the Microchip family of microcontrollers with a convenient C language interface. The Cryptographic Library includes functions to perform encryption, decryption, hashing, authentication, and compression within the embedded application. Random number generation (RNG) functions are also provided.
Block Ciphers: The library provides DES, 3DES, and AES for block cipher needs. Depending on the algorithm in use, CBC and CTR modes are supported.
Public Key Cryptography: The library provides RSA and Elliptic Curve Cryptography (ECC) for Public Key Cryptography, and Diffie-Hellman (DH) for key agreement arrangements.
Hash Functions: The library provides MD5, SHA, SHA-256, SHA-384, and SHA-512 for hashing. These functions do not require keys or initialization vectors (IV).
Random Number Generation Functions: The library provides functions to generate either a single pseudo-random number or a block of such numbers.
|
File System |
The File System service is a framework designed to support multiple file systems (native file system) and multiple media in the same application. Supported file systems are FAT12, FAT32, MPFS, and JFS. Each of these native file systems have a common set of APIs that can be used to access the files of that particular native file system.
- Supports multiple file systems (FAT, MPFS)
- Supports multiple physical media (NVM, SD card)
- More physical media can be interfaced with the FS once the driver is available for the media
- Modular and Layered architecture
|
Peripheral Library |
- Compliance with all MISRA-C: 2012 Mandatory Standards
- Re-implemented to more directly access physical registers
- More efficient and easier to read and understand
- No changes to interface APIs
- Support for all PIC32 Devices and peripherals, including:
- PIC32MX320_340_360_420_440_460
- PIC32MX575/675/695/775
- PIC32MX534/564/664/764
- PIC32MX1XX/2XX
- PIC32MX1XX/2XX (256 KB/64 KB)
- PIC32MX330_350_370_430_450_470
- PIC32MX320_340_360_420_440_460
- PIC32MX1XX/2XX/5XX
- PIC32MX1XX/2XX (256 KB/16 KB)
- PIC32MZEC
- PIC32MZEF
- PIC32MK
- PIC32MZ DA
|
Device Drivers |
Static and/or Dynamic drivers for the following peripherals: ADC, CMP, I2C, I2S, IC, NVM, OC, PMP, RTCC, SD, SPI, External Flash (SST25VF016B, SST25VF020B), Timer, UART.
|
System Services |
MPLAB Harmony system services are responsible for managing shared resources so that other modules, such as drivers, middleware, and applications, do not conflict on shared resources.
Clock: This library provides an interface to manage the Oscillator module on the Microchip family of microcontrollers during different modes of operation.
Console: This service routes data or message traffic between a console device and a middleware layer or application. The most common use of the Console Service is to route debug or error messages from a PIC32-based device to a terminal program on a host development system.
Debug: This service provides a set of functions that allow the developer to output debug and/or error messages based on a global error level. The messages are sent to the System Console Service, where they are routed to a console device.
Device Control: This service provides the developer with simple APIs to configure and control device-specific functions.
DMA: This library provides an interface to interact with the DMA subsystem to control and manage the data transfer between different peripherals and/or memory without intervention from the CPU.
Interrupt: This service provides support for initializing the processor's interrupt controller, registering Interrupt Service Routines (ISRs) and managing interrupts. These features enable making efficient and dynamic applications, drivers, and middleware that respond to external events as they occur in real time.
Messaging: This library provides intra-process and inter-process communication by the sending and receiving of simple messages.
Ports: This library provides an interface to manage and control general purpose input or output ports controlled by the Ports modules.
Random Number Generator: This system service provides a simple C-language interface for generating random numbers at both pseudo-random and cryptographic strengths.
Reset: This service can be used to identify the reason for the most recent processor reset, manage the system's reset reason status flags, and even cause a reset under software control if the processor in use supports that functionality.
Timer: This library provides interfaces to manage alarms and/or delays.
WDT: This library provides a low-level abstraction of the Watchdog Timer peripheral.
|
Operating System Abstraction Layer (OSAL) |
The OSAL provides the interface to commonly available Real-Time Operating Systems (RTOS) such that drivers and middleware (and optionally, applications) may be written using a single interface to a minimal set of OS-specific features needed to provide thread safety. The OSAL interface can be implemented appropriately to support almost any desired RTOS. For applications where no RTOS is available, or desired, a bare version of the OSAL supports either polled or interrupt-driven environments running directly on the hardware. This allows applications designed with the MPLAB Harmony stack to be executed in all three common embedded environments: polled (shared multi-tasking), interrupt-driven, or RTOS-based.
Support for the following RTOS:
- FreeRTOS™
- OpenRTOS
- µC/OS-III, µC/OS-II
- ThreadX
- embOS
|
MPLAB Harmony Configurator (MHC) Tool |
MPLAB Harmony provides a MPLAB Harmony Configurator (MHC) MPLAB-X IDE plug-in that can be installed in MPLAB X IDE to help you create your own MPLAB Harmony applications. It supports configuration and code generation for all MPLAB Harmony components and 3rd-party software (coming soon). Additional features:
- Graphical clock configuration
- Graphical Pin management
- MPLAB Harmony® Graphics Composer and GRC integration
The Display Manager plug-in for MHC was added which includes the following features:
- Automatically configures display drivers
- 8-bit pallet support
- WVGA double-buffer support
|
Third-Party Software |
wolfSSL
A lightweight C-language-based SSL/TLS library targeted for embedded, RTOS, or resource-constrained environments primarily because of its small size, speed, and portability. wolfSSL supports industry standards up to the current TLS 1.2 and DTLS 1.2 levels, is up to 20 times smaller than OpenSSL, offers a simple API, an OpenSSL compatibility layer, OCSP and CRL, and offers several progressive ciphers. wolfSSL is under active development, and should be chosen over yaSSL when possible.
Segger emWin Pro Library
emWin from SEGGER Microcontroller GmbH & Co. KG is a software graphics library that provides an efficient, processor and LCD controller-independent Graphical User Interface (GUI) for applications that operate with a graphical LCD. emWin provides a graphical user interface for a graphics application that is independent of the LCD controller and CPU.
|