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.

NIMUDeviceTable Linker Error

Other Parts Discussed in Thread: TMS320C6747, OMAPL138

Hi,

I am trying to use NDK with SYS/BIOS. When I enable "Add NDK/Global to my configuration" from graphical user interface of .cfg file, linker complains about NIMUDeviceTable.

I searched E2E Community. According to previous discussions, NDK needs a driver. Most of posts are about TI-RTOS. It is mentioned that there is an ethernet driver in source files of TI-RTOS. However, I couldn't figure out how to use that driver with my project. Which files should I use from TI-RTOS?

Here is the my configuration:

Platform: Custom board with TMS320C6747

XDCTools: 3.24.7.73

NDK: 2.22.0.06

SYS/BIOS: 6.35.3.47

CCS: 5.2.1.00018

C6000 Compiler: 7.3

Thanks.

Alper

  • Hi Alper,

    You'll need the NSP for the C6747. The NSP contains the driver. You can download it here: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ndk/index.html

    TI-RTOS is a bundling of SYS/BIOS along with other components like IPC, NDK, low level device specific code and OS-aware drivers (e.g. Ethernet driver that plugs into the NDK). We currently have TI-RTOS versions for Tiva C devices and Concerto devices. We are working on supporting MSP430 and some other devices. TI-RTOS' goal is to deliver a complete RTOS solution so you don't have to grab the kernel from one spot, drivers from another, stacks from another, etc. The goal is to have TI-RTOS support all the TI devices that SYS/BIOS currently support (note: SYS/BIOS is still the kernel in TI-RTOS and the NDK is still the networking stack in TI-RTOS, so all existing SYS/BIOS and NDK applications are compatible with TI-RTOS). 

    Todd

  • Alper,

    Sorry, the website does not have the NSP for the 6747. We'll update this thread once we do a little research on how the NDK is supported on the 6747.

    Todd

  • Alper,

    There is currently no NSP publicly available for the 6747 (OMAPL137) hardware.  We will be releasing an updated NSP for that soon.

    However, another customer also recently inquired about this and I gave him a preliminary version of the driver.

    Please note that it has only had minimal testing, but feel free to give it a try as it will probably get you going:

    http://e2e.ti.com/support/embedded/bios/f/355/p/280951/986575.aspx#986575

    Steve

  • Thank you Todd and Steve for support.

    I downloaded preliminary version of the driver. However, I didn't find any decleration about NIMUDevicceTable in the source code. As expected linker failed again. Am I supposed to combine that driver with another code?

    Meanwhile I did some modifications on source code of OMAP138 driver found in TI-RTOS package. Finally I complied the code with no error for 6747. Now, it seems to be that NDK doesn't work properly. In NDK documents, it is advised to use .cfg GUI to configure the NDK. However, examples NDK codes are written using "legacy" code which use C code to configure NDK services. I am not sure about which modules of NDK should be enabled using .cfg GUI to work with legacy NDK codes, only "Add NDK/Global to my configuration" option? For example at runtime, my code gives error about more than one EMAC registration. Somehow, NDK routines are called more than once.

    Thanks

    Alper

  • Alper,

    Alper Yazar said:
    I downloaded preliminary version of the driver. However, I didn't find any decleration about NIMUDevicceTable in the source code. As expected linker failed again. Am I supposed to combine that driver with another code?

    I apologize, as I may have mislead you.  The attachment in the thread I pointed you to was not a driver update, but rather an update to the client example to get it working on the OMAPL137 with the existing/unmodified OMAPL138 EMAC driver.

    As mentioned in that thread, you can link in the existing EMAC driver from the OMAPL138 NSP, but you need to update your application with a couple of changes:

    1. You will need to download the Spectrum Digital Board Support Library (BSL) from the Spectrum Digital website.  Once you have the library, you will need to link it into your application.
    2. The OMAPL137 EMAC requires a different initialization than the OMAPL138 in order for it to work properly.  This involves calling some routines provided by the Spectrum Digital BSL.

    That attachment simply makes the above 2 changes for you.  So, you still need to link the existing OMAPL138 EMAC driver in addition to the BSL and init calls that are shown/done in that attachment.

    Alper Yazar said:
    Meanwhile I did some modifications on source code of OMAP138 driver found in TI-RTOS package.

    There shouldn't be any need to modify the driver.  Please try linking in the original, unmodified driver in combination with the above 2 changes.

    Alper Yazar said:
    However, examples NDK codes are written using "legacy" code which use C code to configure NDK services.

    Which version of the NDK did you get your example from?

    Alper Yazar said:
    I am not sure about which modules of NDK should be enabled using .cfg GUI to work with legacy NDK codes, only "Add NDK/Global to my configuration" option?

    You may be getting your example from a version of the NDK that was from before the GUI configuration existed.  If the example you have is configuring via C code, then you should try to disable the GUI configuration (and resulting generated C code).

    Please open your project's *.cfg file in a text editor and add the following to it (adding these lines to the end of the script is probably best):

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

    /* Don't generate any configuration code */
    Global.enableCodeGeneration = false;

    Steve