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.

TMDS243GPEVM: #10063-D entry-point symbol other than "_c_int00" specified: "_vectors"

Part Number: TMDS243GPEVM

Hi Team,

Our customer is programming the TMDS243GPEVM using the SDK for the AM243x Sitara and have encountered the error #10063-D entry-point symbol other than "_c_int00" specified: "_vectors" as shown in the screenshot below. I have searched the forum but didn't find the same error. What could be the cause of this error?

Regards,

Danilo

  • H Danilo,

    This is a compiler generated warning, not an error.

    This warning can safely be ignored by adding its ID 10063 to the list of suppressed diagnostics.

    The SDK doesn't support FPU save/restore in FIQ interrupts, please see:

    It looks like the build includes customized code for the FIQ interrupt handler (HwiP_armv7r_handlers_cesium.c). Somehow the compiler understands this is intended to be FIQ ISR code, and is generating the warning that FPU registers from the interrupted context can be clobbered in the ISR unless the "interrupt" keyword is used.

    Please see this e2e thread for more information on FIQ interrupts and FPU save/restore here: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1058989/am6442-r5f-external-interrupt/3921992

    Regards,
    Frank

  • Hi Frank,

    Thank you for your response. According to our customer,

    The feedback you provided has helped resolve most of the warnings, except for one. Applying the "interrupt" attribute to function definitions called in the FIQ handler does resolve the warnings, but not in the case of a function pointer -- it only resolves the warning in the case of a function being called.

    Does the "interrupt" attribute apply to function pointers? If not, how can this warning be resolved?

    Regards,

    Danilo

  • Hi Danilo,

    Hi, I'm not clear on what you're trying to achieve. The SDK already has an FIQ interrupt handler. Are you trying to customize the FIQ interrupt handler?

    Please see these assembly files:

    • <SDK>/source/kernel/freertos/dpl/r5/HwiP_armv7r_vectors_freertos_asm.S:55:fiq_addr: .long HwiP_fiq_handler
    • <SDK>/source/kernel/nortos/dpl/r5/HwiP_armv7r_vectors_nortos_asm.S:55:fiq_addr: .long HwiP_fiq_handler

    Please see these C files:

    • <SDK>/source/kernel/freertos/dpl/r5/HwiP_armv7r_handlers_freertos.c:96:void __attribute__((interrupt("FIQ"), section(".text.hwi"))) HwiP_fiq_handler(void)
    • <SDK>/source/kernel/nortos/dpl/r5/HwiP_armv7r_handlers_nortos.c:98:void __attribute__((interrupt("FIQ"), section(".text.hwi"))) HwiP_fiq_handler(void)
    • <SDK>/source/kernel/nortos/dpl/r5/HwiP_armv7r_vim.c:150:        HwiP_setVecAddr(params->intNum, (uintptr_t)HwiP_fiq_handler);

    When an FIQ interrupt occurs, the CPU branches to the vector table, then to the address contained in the vector table for FIQ interrupts. The address in the vector table is HwiP_fiq_handler().

    The screen capture you shared before looks like a copy of the HwiP_fiq_handler() code in one of these files:

    • <SDK>/source/kernel/freertos/dpl/r5/HwiP_armv7r_handlers_freertos.c
    • <SDK>/source/kernel/nortos/dpl/r5/HwiP_armv7r_handlers_nortos.c

    Below is a code snippet from the FreeRTOS case. Please note the "interrupt" keyword being used for the HwiP_fiq_handler() function.

    void __attribute__((interrupt("FIQ"), section(".text.hwi"))) HwiP_fiq_handler(void)
    {
        int32_t status;
        uint32_t intNum;
        volatile uint32_t dummy;
    
        /* Read to force prioritization logic to take effect */
        dummy = HwiP_getFIQVecAddr();
    
        status = HwiP_getFIQ(&intNum);
        if(status==SystemP_SUCCESS)
    

    If you want to modify the SDK FIQ handler, it might be easier to update the code in the SDK install, and then rebuild the kernel.

    If you want another source file with a new interrupt handler, you'll need to modify the SDK vector table FIQ entry to call your new handler, and then rebuild the kernel. In this case, I suggest you copy the SDK C handler code, and use the SDK build settings to build the new file to avoid compiler warnings.

    Let me know if this helps.

    Regards,
    Frank

  • Hi Frank,

    We have received this feedback from our customer,

    We were indeed copying the FIQ Handler from the sdk into a new file. As was pointed out, it seems the compiler is warning that the function calls within the FIQ Handler may overwrite VFP registers since they are not labelled with the "interrupt" attribute. However, applying the interrupt attribute to those functions causes unexpected behaviour. As we are not yet working with float data, this warning does not apply to us and we are content to ignore them for now.

    Regards,

    Danilo

  • Hi Danilo,

    Sorry, I think there was a miscommunication. I didn't intend that you should apply the interrupt keyword to all the the functions with warnings, only to the ISR itself.

    I'm glad you were able to resolve the problem. I'll close this thread for now.

    Regards,
    Frank