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.

AM335x RTOS NDK build errors

Other Parts Discussed in Thread: AM3359, SYSBIOS

Hello All,

I am working the hello world application from the TI-RTOS template.  I am trying to add ethernet capability to this application to get a better understanding of the TI development.  I have the TI ICE board version 2.1 eventually to a custom board.  Within CCS I add the NDK through the RTSC tab in the general properties.  I go ahead and the features that I want from the NDG cfg menu system.  When I compile the project I get this error:

makefile:144: recipe for target 'hello_ICE_AM3359_CortexA.out' failed

C:\ti\ndk_2_24_02_31\packages\ti\ndk\stack\lib\stk6.aa8fg(nimu.oa8fg): In function `NIMUInit':
/db/vtree/library/trees/ndk/ndk-i33/src/ti/ndk/stack/nimu/nimu.c:1207: undefined reference to `NIMUDeviceTable'

I know it has to do with linking.  what lib do I need link?

I am using: ccs version 6

CCS version 6

SYS/BIOS 6.45.1.29

NDK 2.24.2.31

am335x PDK 1.02

I would like the get basic berkley sockets working UDP and TCP. 

  • Hi,

    I have notified the RTOS team. They will respond here.
  • Hello Biser Gatchev-XID,

    Thank you for your reply, I wanna add a couple things to this.

    I know that NDK has to be connected to low level drivers NIMU but the documentation and all the training that are online are extremely vague in how to do this. Where and how do I link the low drivers to the NDK? Where are the ICSS or CPSW drivers? How do tell NDK to use NIMU ICSS versus NIMU CPSW? How do I use CCS do this?

    Also, how do I configure the NDK to use Berkely sockets? Where are include files like <sys/sockets.h>?
  • Hi

    There are two examples that come with the processor sdk which show the NIMU and NDK usage.
    One is configured for the ICSS the other is configured for the CPSW.
    NIMU_BasicExample_icev2AM335x_armExampleproject
    NIMU_ICSS_BasicExample_icev2AM335x_wSoCLib_armExampleproject
    A short description for these are available at: processors.wiki.ti.com/.../Processor_SDK_RTOS_NDK

    David
  • Hello David,

    Thank you for pointing out these examples. From these examples how would I glue a socket application on top on these examples?

    Again, your help has been great thanks again.
  • David,

    I loaded the project and compiled with no errors. Now, I can see the console output which shows both MACs and IP addresses. I set up my computer with a static IP address and subnet mask accordingly and I can't seem to ping either IP addresses.

    I tested both MACs by individually putting my computer and a network switch in between. Also adjusting IP and subnets.

    Any ideas?

    In Case the above was read before.  I have managed to figure out the above issue out.  Still trying to build a socket application, though.

  • David,

    I have attached some sample programs that I am trying to port into ethernetMac dual mac example within the industrial SDK.  I am basically trying to follow the .cfg file in that attached files to add the socket interface to that example. 

    In adding some of the configuration parameters specifically Global.autoOpenCloseFD = true;

    I get this error:

    00000.100 llEnter: Illegal priority call to llEnter()
    00000.100 llExit: Illegal call to llExit()
    Network Added: If-1:192.168.2.3
    Network Added: If-2:192.168.1.2
    Network Removed: If-1:192.168.2.3
    Network Removed: If-2:192.168.1.2

    Also,  how would I set a socket to a particular MAC/IP address?

    udpEcho.zip 

  • Hi
    I apologize for the delay.

    Depending upon what you are looking for - the EtherNet/IP example is a higher level example that may be closer to containing the stack and feature support you need. The Ethernet/IP application can be modified to work as a Switch application by removing the Ethernet/IP dependencies. The steps to create Switch application are described in the ISDK User Guide.

    The emac is somewhat of a building bock example for high performance custom or industrial Ethernets.
    There is a good description of the emac LLD and it's use in:
    ICSS EMAC LLD Developers Guide at processors.wiki.ti.com/.../ICSS_EMAC_LLD_developers_guide
    ICSS EMAC LLD Debug Guide at processors.wiki.ti.com/.../ICSS_EMAC_LLD_debug_guide

    The developer guide does contain a simple NDK socket API's to perform Receive and Transmit operations.

    David

  • Hello David,

    Thanks again, Any ideas on the Global.autoOpenCloseFD = true; errors? Whenever I add this to the .cfg file
    I receive these errors:


    00000.100 llEnter: Illegal priority call to llEnter()
    00000.100 llExit: Illegal call to llExit()
    Network Added: If-1:192.168.2.3
    Network Added: If-2:192.168.1.2
    Network Removed: If-1:192.168.2.3
    Network Removed: If-2:192.168.1.2



    Going through several posts it seems as though it's a memory problem.
  • Hi Iqnacio

    Let me ask a couple of our experts.

    David

  • Hi Iqnacio

     

    It looks like some of this code comes from another platform. There are a number of M3 related references

    such as var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi'). There are also some GPIO functions

    are incompatible with current driver. 

    After adding the packages/ti/ndk/inc/bsd path and compiler options _POSIX_SOURCE for BSD socket APIs,

    We were able to compile and build the project, but we don't  see “llEnter: Illegal priority call to llEnter()” 

    Instead,  we see:

    [CortxA8] Starting the UDP Echo example

    System provider is set to SysMin. Halt the target to view any SysMin contents in ROV.

    00000.000 DHCPOpen: NIMUIOCTL (NIMU_GET_DEVICE_MAC) Failed with error code: -22

     

    Service Status: DHCPC    : Failed   :          : 000

     

    We can see the type of errors you have reported when a project is built with a different SYSBIOS, XDCTOOLS

    and NDK versions than are recommended  in the SDK user Guide.

     

    Since this is the emac which is common on both the processor and industrial SDKs - we would like to recommend

    that you look at a solution that was done on the Processor SDK. Once you have a working solution you can bring

    the implementation back to the Industrial SDK.   The example is where a customer brought up the NDK on an AM335x

    with PSDK and BSD socket API: https://e2e.ti.com/support/arm/sitara_arm/f/791/p/504866/1832768 .

     

     David