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.

Unresolved Symbol (Interrupt_Add) in the NDK's ethernet driver

Other Parts Discussed in Thread: SYSBIOS, OMAPL138

When I built my project, I received an unresolved symbol for Interrupt_add in file ..../hal/c6455/lib/ti.ndk.hal.c6455.a64Pe<ethdriver.o64Pe>

How do I resolve this?

The following is what I have done so far.

I am using:

sysbios 6.31.04.27

xdctools 3.25.00.48

cgt 7.4.2

ndk 2.24.00.11

and my target is C64P_big_endian

I am not using CCS. I am executing all build script using command line in linux.

So far I copied OMAPL138 xdc package script from NSP and replaced the ethernet driver using C6455 driver from NDK 2.0. I also replaced ethdriver.c with the one that is compatible with Sys/Bios 6.

I placed all the emac driver files in <NDK_INSTALLATION_BASE>/packages/ti/ndk/hal/c6455

Then I rebuilt ndk for C64P_big_endian target.

I verified that in c6455/lib folder, it has ti.ndk.hal.c6455.a64Pe file.

In my project.cfg file, I added:

var Global = xdc.useModule('ti.ndk.config.Global');

var Emac = xdc.useModule('ti.ndk.hal.c6455.Emac');

ethdriver.c includes stkmain.h, stkmain.h includes stacksys.h. stacksys.h includes os/osif.h. And Interrupt_add is defined in the osif.h

  • Jimmy,

    Can you explain “I am executing all build script using command line in linux.”?  

    Specifically, are you somehow linking in the ti/ndk/os/lib/os.a64Pe library (where the Interrupt_add object should be found by the linker)?

    Thanks,
    Scott

  • Scott,

    It means I am not using CCS tool. We created makefile which executes xs xdc.tools.configure ...

    I believe I linked os.a64Pe. In my project_name/pacakge/cfg/project_name_p64Pe.xdl, I saw:

    -l /opt/ti/ndk_2_24_00_11/packages/ti/ndk/os/lib/os.a64Pe

    I checked project_name.p64Pe.map, and I saw "Interrupt_add":

    00020e00   000001a0     os.a64Pe : intmgmt.o64Pe (.text:_Interrupt_add)

    But "Interrupt_add" is UNDEFINED in the project_name.map. The other functions within os.a64Pe such as mmAlloc and DbgPrintf are linked properly.

  • Jimmy,

    OK, great, thanks.

    There were no other linker errors, right, just the unresolved symbol?

    If no other errors, a guess is that the linker is not finding the Interrupt_add symbol because of ordering of the references and the objects/libraries that it is linking.  Have you tried using the “-x” linker option to reread libraries?

    Scott

  • Scott,

    Thanks! "-x" linker option does the trick.