2.2 Modular Downloads and Repository Structure
Microchip maintains a repository on GitHub that provides a catalog of MPLAB Harmony v3 repositories. The MCC Content Manager will read this catalog and download the library packages (and other content) selected by the user. The MCC clones them locally to make them available for including in the projects.
The distribution of the MPLAB Harmony v3 software framework over GitHub has advantages over the typical installer-based content delivery. Installer or zip file-based content delivery will install a full set of framework source files every time the installer is run. GitHub will update only when changes made to each file, which simplifies content delivery and reduces the bandwidth required to install numerous files every time.
The following are MPLAB Harmony v3 repositories:
- bootloader
- wolfssl
- wolfssh
- touch
- USB
- crypto
- core
- bsp (board support package)
- csp (chip support package)
- wolfMQTT
- MCC
- smartenergy
- motor_control
- gfx_apps
- gfx
- audio
- bt
- net
- micrium_ucos3
- CMSIS-FreeRTOS (From Arm GitHub)
The following repositories are required to start the MPLAB Harmony v3 framework.
- Chip Support Package (csp)
repository: Contains peripheral libraries (PLIBs), and application
demonstrations that use the PLIBs for all peripherals supported. The PLIBs are
written such a way that it communicates with the hardware without any abstraction.
The csp repository has the following structure:
- apps/: This folder contains reference links for all peripherals across the devices supported by MPLAB Harmony v3. Each peripheral can have multiple PLIB demonstrations.
- peripheral/: This folder has PLIB for almost all the peripherals in all the devices supported in MPLAB Harmony v3.
- arch/: This folder has software logic for device support based on the MCU architecture. MPLAB Harmony v3 supports Arm Cortex M0+, M4F, M7, M23, M33, Cortex A5, and MIPS architecture-based devices.
- doc/ or docs/: These folders have the help documents for PLIBs and PLIB demonstrations.
csp_apps_pic32/sam
repository and the apps folder, the folder names
are the same as the peripheral names in the data sheet. For example, general purpose I/O
ports are named differently in different device families. Some devices have an I/O
peripheral named GPIO, and in other devices it is PIO or PORT. Check the device data
sheet and navigate to the folder according to the peripheral naming in the data sheet.
This will help identifying the right demonstration for a peripheral.- Core repository: This
repository contains drivers and services with user-friendly abstractions of
peripherals and shared resources based on which middleware and applications are
developed. Drivers and services provide advanced capabilities, such as buffer
queuing and peripheral sharing. The core repository also provides an Operating
System Abstraction Layer (OSAL). MPLAB Harmony v3 supports multiple third party
real-time operating systems (RTOS). MPLAB Harmony drivers, services, and middleware
use RTOS-specific methods to ensure a thread safe operation and RTOS
compatibility. To use RTOS-specific methods, MPLAB Harmony libraries have to call
different functions for each supported RTOS. To do this, MPLAB Harmony v3 defines an
Operating System Abstraction Layer (OSAL). The OSAL is a lightweight OS
compatibility layer that abstracts away the RTOS-specific details and provides a
consistent set of functions that the MPLAB Harmony libraries may call to obtain the
RTOS-specific capabilities they need to protect shared resources.
The core repository has the following structure:
- apps/: This folder contains reference links for core components, such as drivers (I2C, SPI, USART, etc.,), file systems, FreeRTOS, and the system timer service.
- driver/: This folder has MPLAB Harmony v3 drivers for I2C, USART, SPI, SDMMC, SDSPI, Memory. These drivers are built on top of PLIBs.
- osal/: This folder has a wrapper layer on top of the RTOS that are supported.
- system/: This folder has system services, such as DMA, Virtual File system, Interrupts, I/O Ports, Debug console, command console, Timers, and Random number.
- doc/ or docs/: These folders have the help documents for core components and demonstrations.
-
Board Support Package (bsp) repository: The bsp repository contains board specific information. This includes I/O pin details, such as LEDs and switches on the board connected to the I/Os.