GNU ARM Eclipse

A family of Eclipse CDT extensions and tools for GNU ARM development

The ilg.gnumcueclipse.debug.core.svdPath extension point

Purpose

This extension point provides decoupled access to a SVD file from the debug plug-ins.

It must be implemented by distributions that include SVD files managed outside CMSIS-PACK.

Definition

The Eclipse definition of this extension point is in ilg.gnumcueclipse.debug.core/schema/svd_path.exsd.

API

The extension point refers to a factory that creates a class that must implement ISVDPathManager.

The only function required is:

public IPath getSVDAbsolutePath(String deviceVendorId, String deviceName);

Where is this extension point used?

The svdPath extension point is used in ilg.gnumcueclipse.debug.gdbjtag.data/SVDPathManagerProxy.java, called from SVDUtils.getTree(String deviceVendorId, String deviceName):

// Try to get the SVD from a custom provider, like in DAVE.
SVDPathManagerProxy pathManager = SVDPathManagerProxy.getInstance();
path = pathManager.getSVDAbsolutePath(deviceVendorId, deviceName);

if (path == null) {

    // Try to get the SVD from the CMSIS Packs.
    IPacksDataManager dataManager = PacksDataManagerFactoryProxy
                .getInstance().createDataManager();

    if (dataManager == null) {
        throw new CoreException(
                new Status(Status.ERROR, Activator.PLUGIN_ID,
                        "Peripherals descriptions are available only via the Packs plug-in."));
    }

    path = dataManager.getSVDAbsolutePath(deviceVendorId, deviceName);

    if (path == null) {
        throw new CoreException(
                new Status(Status.ERROR, Activator.PLUGIN_ID,
                        "There are no peripherals descriptions available, install the required packs."));
    }
}

As seen above, the extension point has precedence over any CMSIS-PACK definitions, so, if it is defined, and it returns a SVD path, the returned path is used to read the SVD file.

The content of the SVD file is further used to populate the Peripherals view in the debug plug-ins.