This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432E401Y: prebuilt driver lib

Part Number: MSP432E401Y

I see under the TI SDK directory ..sources/ti/drivers/lib/   the files:

drivers_msp432e4.aem4f

drivers_msp432e4.am4fg

drivers_msp432e4.arm4f

I can make a guess but could someone tell me what exactly each one of these libraries are for (which targets).

I need to link to the drivers library but don't which one.

  

  • I know these are the built driver libraries. I have a project that needs to link with the driver library ... but which one?

    I need to know the significance of the suffix's  (extensions)

  • my guess is that its the DPL and there is one each for FreeRTOS, TIRTOS and NORTOS but which one is which?

  • I need to know the significance of the suffix's  (extensions)

    Looking at a /simplelink_msp432e4_sdk_4_20_00_12 installation the source/ti/drivers/package.xs has the following, which shows how the suffixes are built for the driver libraries:

        else if (Program.cpu.deviceName.match(/MSP432E4.*/)) {
            driverString = "_msp432e4";
        }
        else {
            throw ("Driver not found for this device " + Program.cpu.deviceName +
                   " and target " + Program.build.target.suffix);
        }
    
        targetSuffix = ".a" + Program.build.target.suffix + ";";
    
        retString += driversBase + "/lib/drivers" + driverString + targetSuffix;

    So, the suffix has a variations built using the value of Program.build.target.suffix.

    source/ti/drivers/package/build.cfg has the following:

    pkg.build.libDesc = [
        [
            'lib/drivers_msp432e4.aem4f',
            {
                target: 'ti.targets.arm.elf.M4F',
                suffix: 'em4f'
            }
        ],
        [
            'lib/drivers_msp432e4.am4fg',
            {
                target: 'gnu.targets.arm.M4F',
                suffix: 'm4fg'
            }
        ],
        [
            'lib/drivers_msp432e4.arm4f',
            {
                target: 'iar.targets.arm.M4F',
                suffix: 'rm4f'
            }
        ],
    ];

    So, the above appears to show the suffixes are for different compilers - TI, GNU and IAR.

    I couldn't seem to find a documentation link which explained what the library suffixes were, so looked at the build configuration for the drivers.

  • So, the above appears to show the suffixes are for different compilers - TI, GNU and IAR.

    As a way of cross-checking that used objdump to find the DW_AT_producer tag for each library:

    $ objdump --dwarf ~/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/drivers/lib/drivers_msp432e4.aem4f 2>/dev/null|grep DW_AT_producer | head -1
        <91>   DW_AT_producer    : TI TI ARM G3 C/C++ Codegen Unix v20.2.1.LTS Copyright (c) 1996-2018 Texas Instruments Incorporated
    

    $ objdump --dwarf ~/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/drivers/lib/drivers_msp432e4.am4fg 2>/dev/null|grep DW_AT_producer | head -1
        <c>   DW_AT_producer    : (indirect string, offset: 0xe6): GNU C17 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mabi=aapcs -march=armv7e-m+fp -g -g -O2 -ffunction-sections -fdata-sections -fno-isolate-erroneous-paths-dereference
    

    $ objdump --dwarf ~/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/drivers/lib/drivers_msp432e4.arm4f 2>/dev/null|grep DW_AT_producer | head -1
        <8c>   DW_AT_producer    : IAR ANSI C/C++ Compiler V8.50.1.245/LNX for ARM
    

    Which confirms a different compiler was used to create each library.