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.

Compiler/EVMK2H: Adding CSL Paths To Workspace / Project

Part Number: EVMK2H

Tool/software: TI C/C++ Compiler

Hey all,

I know this might be a bit of a dumb issue but i cant figure out how to properly add CSL / references into my baremetal project. My CCSv8 installation does not have the hello world example in bare metal that the example projects i read online easily compile, nor does the workstation I use have an internet connect. I'm not sure if the hello world project comes with the correct CSL paths to the project. How would you add the CSL into your project starting from scratch, starting with nothing but a main function.

It doesn't make sense why CCS wouldn't see the .h files if they are included in the search paths. Is there a setting somewhere that I missed? Also how would I reference the .C files that go along with the appropriate modules for the CSL. Mainly interested in using the Arm Processors

Here are some screenshots of my set up along with output from the compiler

Build Output:


**** Build of configuration Debug for project BARE_METAL_V3 ****

"C:\\ti\\ccsv8\\utils\\bin\\gmake" -k -j 8 all -O
 
Building file: "../main.c"
Invoking: GNU Compiler
"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=softfp -mfpu=vfpv4-d16 -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl" -I"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/arch" -I"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/arch/a15" -I"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/arch/a15/V0" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"main.d" -MT"main.o"  -o"main.o" "../main.c"
subdir_rules.mk:9: recipe for target 'main.o' failed
../main.c:1:10: fatal error: ti/csl/csl.h: No such file or directory
 #include <ti/csl/csl.h>
          ^~~~~~~~~~~~~~
compilation terminated.
gmake: *** [main.o] Error 1
gmake: Target 'all' not remade because of errors.

**** Build Finished ****

Here are the includes that are present in my compiler flags.

 This is what i added on the general to add the paths to the flags

  • Hi,

    When building with CCS you first need to make sure that the pdk's packages folder is included in your projects paths. Select the project -> choose properties and check the include paths:

     

    Once you make sure you have the paths set. You can include the CSL headers as follows:
      #include <ti/csl/csl_chipAux.h>

      #include <ti/csl/csl_psc.h>
      #include <ti/csl/csl_pscAux.h>

    and so on. 

    You can edit the include paths by clicking the Edit Flags button.

    Best Regards,
    Yordan

  • Thanks for the reply, I added only the packages root to my path, but now I'm getting new errors. Its the erros that say undefined reference to (function name), any ideas on why this is happening?

    GNU Compiler Flags:
    -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=softfp -mfpu=vfpv4-d16 -I"${PROJECT_ROOT}" -I"${CG_TOOL_INCLUDE_PATH}" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs"


    Build_Log:
    **** Build of configuration Debug for project BARE_METAL_V3 ****

    "C:\\ti\\ccsv8\\utils\\bin\\gmake" -k -j 8 all -O

    Building file: "../startup_ARMCA15.S"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=softfp -mfpu=vfpv4-d16 -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"startup_ARMCA15.d" -MT"startup_ARMCA15.o" -x assembler-with-cpp -o"startup_ARMCA15.o" "../startup_ARMCA15.S"
    Finished building: "../startup_ARMCA15.S"

    Building file: "../main.c"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=softfp -mfpu=vfpv4-d16 -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"main.d" -MT"main.o" -o"main.o" "../main.c"
    ../main.c: In function 'main':
    ../main.c:22:15: warning: variable 'status' set but not used [-Wunused-but-set-variable]
    uint16_t status;
    ^~~~~~
    Finished building: "../main.c"

    Building target: "BARE_METAL_V3.out"
    Invoking: GNU Linker
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -mtune=cortex-a15 -marm -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -mcpu=cortex-a15 -Wl,-Map,"BARE_METAL_V3.map" -o"BARE_METAL_V3.out" "./main.o" "./startup_ARMCA15.o" -Wl,-T"../66AK2Gxx.lds"
    makefile:141: recipe for target 'BARE_METAL_V3.out' failed
    ./main.o: In function `main':
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:34: undefined reference to `Intc_Init'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:36: undefined reference to `IntMasterIRQEnable'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:37: undefined reference to `IntMasterStatusGet'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:38: undefined reference to `Intc_SystemEnable'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:39: undefined reference to `Intc_IntRegister'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:40: undefined reference to `IntMasterStatusGet'
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:46: undefined reference to `CSL_GPIO_open'
    collect2.exe: error: ld returned 1 exit status
    gmake[1]: *** [BARE_METAL_V3.out] Error 1
    gmake: *** [all] Error 2
    makefile:137: recipe for target 'all' failed

    **** Build Finished ****
  • The Issue is that it cant find a library associated with the function and the call located in the .h files. Is there a library file located somewhere in the PDK for CSL that i can add to the library references. I tried adding the ti.csl.aa15fg. and the other one located in the same path. but neither worked. the compiler is looking or either .lib or .a files and the PDK does not seem to include one.
  • Any Update on this?, I'd really like to use the API instead of reinventing the wheel
  • Alfredo,

    There are several issues with your setup that I would like to address:

    1. It appears that you uses hello world from CCS Template and then started adding files to the code. can you confirm?  I noticed that you have startup_ARMCA15.S and 66AK2Gxx.lds which is only included if you start using the CCS template.  Can you confirm ?

    2. There are some rules that we require users to follow when including CSL libraries.

    a. Define the symbol SOC_K2H in the project. in make file this translates to -DSOC_K2H

    b. Include folder pdk_<device>_<version>\packages.

    b. Link the libraries pdk_<dveice>_<version>\packages\ti\csl\lib\<device>\<core>\release. In this case the libraries are located at :

    For exmaple : pdk_k2hk_4_0_9\packages\ti\csl\lib\k2h\a15\release

    • ti.csl.aa15fg:  this contains all CSLr and functional CSL functions and startup code.
    • ti.csl.init.aa15fg : This contains all the initialization functionality like cache, MMU and supervisor functionality

    3. Include headers files in the source with path relative to pdk_<device>_version\packages using \t\csl\<path to header>

    A good example to see how bare-metal code is built using CSL would be to look at the SBL (secondary bootloader) check out the makefile here:

    You can also look at CSL examples or test code but they may not all apply to your soc/device.

    Regards,

    Rahul

  • I am not working off a template, I am using Bare metal and these files are needed, unless I am wrong.
    This worked! I can see the function calls now
  • I didn't catch the Link to the SBL
  • Update:
    I cant see the Intc_Init() in the library, is this intentional or does this function not apply to the EVMK2H, perhaps my library is out of date? I looked for the Intc_init sumbol in the .aa15fg library file, I couldnt find it

    Other Questions:
    Can we only use CSL functionality that is referenced in the library file?

    What is the Interrupt module that is used for the EVMK2H?

    if so that means the Int_C is not supported by my board, or perhaps I am missing another define variable?

    What is the purpose of the arch/a15 modules? I whish to use interrupts with the CSL is there a generic module that is used for this? I read that the GIC is what controls the interrupts on the ARM, is there a module in the CSL that interacts / interfaces with it?
  • Intc_Init API doesn`t apply to A15 cores but to C66x core as per my understanding. The ARM interrupt controller is called GIC.

    For K2H devices, there are two ways to setup interrupts.

    1. BAre-metal CSL INtc module for C66x and ARM_GIC :

    The code and API for Intc can be referred from the path pdk_k2hk_x_x_x\packages\ti\csl\src\intc
    The code and API for ARM GIC can be referred from the path pdk_k2hk_x_x_xx\packages\ti\csl\src\ip\arm_gic\V0

    This approach will work only if you are not going to use an OS eventually with your application. Setting up interrupts in bare-metal can cause conflicts with OS interrupt mechanism

    2. OSAL Interrupt handling mechanism:
    OSAL is OS abstraction layer that provides common Interrupt handling APIs that can be used for no -OS as well as TI RTOS applications. The interrupt configuration for A15 core in OSAL under the following path. You can link the OSAL no-OS library and call into these api:
    pdk_k2hk_x_x_x\packages\ti\osal\arch\core\a15

    All of out low level drivers use this approach so we can enable both bare-metal as well as TI RTOS developers with these drivers. For example for K2H UART driver refer to the source at pdk_k2hk_4_0_9\packages\ti\drv\uart\src\v0\uart_v0.c to check interrupt usage or check the tests that we use to validate the OSAL layer at pdk_k2hk_4_0_9\packages\ti\osal\test to check the sequence of APIs used to enable/register and ISR handling.

    Hope this gives you some insight into the two approaches.

    Regards,
    Rahul
  • Where have you been my whole life!!, this makes sense.
    Thank you so much.
  • I'm attempting the drv approach and that uses the osal, it looks easier than the other approach, but now i get the same issue with CCS not finding the symbols, i have added the osal library, and the gpio drv library and CCS still can't link to the symbols

    There's bits and pieced of each library, i wasn't going to use both
    i just wanted to test to see what I was able to reference.

    Here is my Code:
    //#include <stdint.h>
    //#include <string.h>
    // Board Properties are defined in the SYMBOLS in the Compiler Tab in the roperties
    // The General Gist...Jist??...Point... of this is to demonstrate how there are
    // many modules within the CSL that can work together.
    // Here are 4 Modules the timer, the WD time, GPIO, and the interrupt controller
    // That will be used together. each modules sets their appropriate interrupts and
    // the Interrupt controller will be mapped to each one and trigger a basic ISR

    // GPIO Module in CSL to SET up Interrupts
    #include <ti/csl/src/ip/gpio/V0/cslr_gpio.h>
    #include <ti/csl/src/ip/gpio/V0/gpio.h>

    // GPIO Module Driver Layer
    #include <ti/drv/gpio/GPIO.h>
    #include <ti/drv/gpio/src/v0/GPIO_v0.h>


    // Genteral Timer
    #include<ti/csl/csl_timer.h>
    #include<ti/csl/csl_tmr.h>
    #include<ti/csl/csl_tmrAux.h>

    // WatchDogTimer Module
    #include<ti/csl/csl_timer.h>

    // Gic Support Interface (ARM SPECIFIC) Interrupt module
    // Sill need to import
    /**
    * main.c
    */
    volatile int a = 0;

    void gpioIsr(void *arg);
    int main(void)
    {
    GPIO_Config myConfig;
    int status;
    int pinNum = 0;
    int bankNum = 0;
    uint16_t intcNum = 120;

    // Attempting to use the DRV for GPIO
    // Function not recognized
    GPIO_init_v0();
    // Set up GPIO
    // SET Pin 2 as an input
    // GPIO BASE Address is
    // GPIO PinNUmber for 2 is 2
    // PinDirection is input GPIO_DIRECTION_INPUT

    // CSL Calls now Work
    GPIOSetDirMode_v0(0x2, 2, GPIO_DIRECTION_INPUT);

    // Set falling or rising edge interrupt
    GPIOSetIntrType_v0(2, 2, 0);
    // Initialize the Interrupt control module
    //Intc_Init();

    a=0;
    pinNum = 0;
    bankNum = 0;

    //myGpioHandle = CSL_GPIO_open(0);
    //CSL_GPIO_setPinDirOutput(myGpioHandle, pinNum);
    //CSL_GPIO_setRisingEdgeDetect(myGpioHandle, pinNum);
    //CSL_GPIO_bankInterruptEnable(myGpioHandle, bankNum);
    //CSL_GPIO_clearOutputData(myGpioHandle, pinNum);
    //CSL_GPIO_setOutputData(myGpioHandle, pinNum);

    //Register which function to use for the handler
    //Intc_IntRegister(uint16_t intrNum, IntrFuncPtr fptr, void *fun_arg)

    while(a!=1){;}


    return 0;
    }

    // Isn't meant to do anything right now
    // hopefully i can eventually get here
    void gpioIsr(void *arg)
    {
    volatile uint32_t gpio_pin_value = 0;

    /*Disable interrupt*/
    //GPIOPinIntDisable(gpio_base_address, GPIO_INT_LINE_1, gpio_pin);

    //Do Stuff

    //Re-enable

    //Bust out;
    }

    ****************************************************
    Build Output:

    **** Build of configuration Debug for project BARE_METAL_V3 ****

    "C:\\ti\\ccsv8\\utils\\bin\\gmake" -k -j 8 all -O

    Building file: "../6138_K2H_Interface.c"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -DSOC_K2H -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"6138_K2H_Interface.d" -MT"6138_K2H_Interface.o" -o"6138_K2H_Interface.o" "../6138_K2H_Interface.c"
    ../6138_K2H_Interface.c: In function 'SPIopcode':
    ../6138_K2H_Interface.c:31:20: warning: unused variable 'dummy' [-Wunused-variable]
    unsigned short dummy;
    ^~~~~
    Finished building: "../6138_K2H_Interface.c"

    Building file: "../startup_ARMCA15.S"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -DSOC_K2H -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"startup_ARMCA15.d" -MT"startup_ARMCA15.o" -x assembler-with-cpp -o"startup_ARMCA15.o" "../startup_ARMCA15.S"
    Finished building: "../startup_ARMCA15.S"

    Building file: "../main.c"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -DSOC_K2H -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"main.d" -MT"main.o" -o"main.o" "../main.c"
    ../main.c: In function 'main':
    ../main.c:41:5: warning: implicit declaration of function 'GPIO_init_v0'; did you mean 'GPIO_init'? [-Wimplicit-function-declaration]
    GPIO_init_v0();
    ^~~~~~~~~~~~
    GPIO_init
    Finished building: "../main.c"

    Building target: "BARE_METAL_V3.out"
    Invoking: GNU Linker
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -mtune=cortex-a15 -marm -DSOC_K2H -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -mfloat-abi=hard -Wl,-Map,"BARE_METAL_V3.map" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/lib/k2h/a15/release" -L"C:/ti/drv/gpio/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/osal/lib/nonos/k2h/a15/release" -o"BARE_METAL_V3.out" "./6138_K2H_Interface.o" "./main.o" "./startup_ARMCA15.o" -Wl,-T"../66AK2Gxx.lds" -Wl,--start-group -l:ti.osal.aa15fg -l:ti.drv.gpio.aa15fg -l:ti.drv.gpio.profiling.aa15fg -l:ti.csl.aa15fg -l:ti.csl.init.aa15fg -lc -Wl,--end-group
    makefile:150: recipe for target 'BARE_METAL_V3.out' failed
    ./main.o: In function `main':
    C:\Users\Freddy\workspace_v8\BARE_METAL_V3\Debug/../main.c:41: undefined reference to `GPIO_init_v0'
    collect2.exe: error: ld returned 1 exit status
    gmake[1]: *** [BARE_METAL_V3.out] Error 1
    makefile:146: recipe for target 'all' failed
    gmake: *** [all] Error 2

    **** Build Finished ****
    ***************************************************
    Libraries Added (from linker settings):
    -Wl,-Map,"${ProjName}.map" -L"${TI_PDK_LIBRARY_PATH}"
    -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release"
    -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/lib/k2h/a15/release"
    -L"C:/ti/drv/gpio/lib/k2h/a15/release"
    -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/osal/lib/nonos/k2h/a15/release" \

    Added These Libraries
    ti.osal.aa15fg
    ti.drv.gpio.aa15fg
    ti.drv.gpio.profiling.aa15fg
    ti.csl.aa15fg
    ti.csl.init.aa15fg
  • Alfredo,

    Can you please use GPIO_init() instead of GPIO_v0_init(). the other function is defined as a static function in the driver so you need you use the driver top level API.

    Regards,
    Rahul
  • Update:

    I changed GPIO_init_v0() to just GPIO_init() and the same error came up, didn't change the anything, i added some missing libraries because the GPIO references then i think, anyway here's what I added

    osal,
    uart
    board
    i2c

    Still getting that error, and i know that the GPIO library is included, Perhaps i am missing another Define somewhere?

    Error:

    **** Build of configuration Debug for project BARE_METAL_V3 ****

    "C:\\ti\\ccsv8\\utils\\bin\\gmake" -k -j 8 all -O

    Building file: "../main.c"
    Invoking: GNU Compiler
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -c -mcpu=cortex-a15 -mtune=cortex-a15 -marm -mfloat-abi=hard -DevmK2H -DDEVICE_K2H -DSOC_K2H -I"C:/Users/Freddy/workspace_v8/BARE_METAL_V3" -I"C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/arm-none-eabi/include" -I"C:/ti/pdk_k2hk_4_0_9/packages" -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -MMD -MP -MF"main.d" -MT"main.o" -o"main.o" "../main.c"
    ../main.c: In function 'gpioIsr':
    ../main.c:82:23: warning: unused variable 'gpio_pin_value' [-Wunused-variable]
    volatile uint32_t gpio_pin_value = 0;
    ^~~~~~~~~~~~~~
    Finished building: "../main.c"

    Building target: "BARE_METAL_V3.out"
    Invoking: GNU Linker
    "C:/ti/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major-win32/bin/arm-none-eabi-gcc.exe" -mtune=cortex-a15 -marm -DevmK2H -DDEVICE_K2H -DSOC_K2H -g -gdwarf-3 -gstrict-dwarf -Wall -specs="nosys.specs" -mfloat-abi=hard -Wl,-Map,"BARE_METAL_V3.map" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/uart/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/csl/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/i2c/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/board/lib/evmK2H/a15/release" -L"C:/ti/pdk_k2hk_4_0_9/packages/ti/osal/lib/nonos/k2h/a15/release" -o"BARE_METAL_V3.out" "./6138_K2H_Interface.o" "./main.o" "./startup_ARMCA15.o" -Wl,-T"../66AK2Gxx.lds" -Wl,--start-group -l:ti.osal.aa15fg -l:ti.drv.i2c.aa15fg -l:ti.drv.i2c.profiling.aa15fg -l:ti.board.aa15fg -l:ti.drv.gpio.aa15fg -l:ti.drv.gpio.profiling.aa15fg -l:ti.csl.aa15fg -l:ti.csl.init.aa15fg -l:ti.drv.uart.aa15fg -l:ti.drv.uart.dma.aa15fg -l:ti.drv.uart.profiling.aa15fg -l:ti.drv.uart.profiling.dma.aa15fg -lc -Wl,--end-group
    makefile:157: recipe for target 'BARE_METAL_V3.out' failed
    C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release/ti.drv.gpio.aa15fg(GPIO_v0.oa15fg): In function `GPIO_toggle_v0':
    /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:552: undefined reference to `GPIO_v0_config'
    /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:560: undefined reference to `GPIO_v0_config'
    /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:560: undefined reference to `GPIO_v0_config'
    C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release/ti.drv.gpio.aa15fg(GPIO_v0.oa15fg): In function `GPIO_setCallback_v0':
    /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:373: undefined reference to `GPIO_v0_config'
    /oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:373: undefined reference to `GPIO_v0_config'
    C:/ti/pdk_k2hk_4_0_9/packages/ti/drv/gpio/lib/k2h/a15/release/ti.drv.gpio.aa15fg(GPIO_v0.oa15fg):/oe/bld/build-CORTEX_1/arago-tmp-external-linaro-toolchain/work/k2hk_evm-linux-gnueabi/gpio-lld-rtos/01.00.00.10-r0/build/ti/drv/gpio/src/v0/GPIO_v0.c:588: more undefined references to `GPIO_v0_config' follow
    collect2.exe: error: ld returned 1 exit status
    gmake[1]: *** [BARE_METAL_V3.out] Error 1
    gmake: *** [all] Error 2
    makefile:153: recipe for target 'all' failed

    **** Build Finished ****
  • Also, there are two available Libraries, the k2h, and the a15, is it generally better to go with the device specific library or the other one, so in my case the "other one" is the a15 library