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.

Rebuilding ethernetip_stack.lib

Other Parts Discussed in Thread: AM3352, SYSBIOS

Hi,

     Using the Industrial SDK 1.1.0.4 we have been able to build a running SYS/BIOS with NDK on a AM3352 using the CPSW interface. In preparation for moving to a test build to verify the NDK we wanted to use the latest stable versions of components. Our current running build uses the following components:

Code Composer Studio    - Version: 5.5.0.00077
Compiler        - TI v5.1.6
XDC Tools        - 3.25.3.72
SYS/BIOS        - 6.35.4.50
NDK            - 2.23.2.03
System Analyzer        - 1.3.1.08
Sys/Bios Industrial SDK    - 1.1.0.4

According to all component release notes we moved to a compatible set of components:

Code Composer Studio    - Version: 5.5.0.00077
Compiler        - TI v5.1.6
XDC Tools        - 3.25.6.96
SYS/BIOS        - 6.37.2.27
NDK            - 2.24.0.11
System Analyzer        - 1.3.1.08
Sys/Bios Industrial SDK    - 1.1.0.4

   We ended up with the following linker errors:

---------------------------------------------------------------------------------------

"../airtrac_sysbios.cmd"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\os_drivers\lib\sys_bios_driver.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\platform\am335x\lib\am335x_platform.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\am335x\evmAM335x\platform\platform.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\am335x\drivers\drivers.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\am335x\system_config\system.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\nandlib\Release\libnand.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\am335x\usblib\usblib.lib"
-l"C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\starterware\binary\armv7a\cgt_ccs\utils\utils.lib"
-l"C:\ti\AM335X_StarterWare_02_00_00_07\binary\armv7a\cgt_ccs\grlib\libgr.lib"
-l"rtsv7A8_A_le_n_v3_eabi.lib" -l"libc.a"
<Linking>

 undefined   first referenced                                                                                                 
  symbol         in file                                                                                                      
 ---------   ----------------                                                                                                 
 accept      C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 bind        C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 connect     C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 getpeername C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 getsockname C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 getsockopt  C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 listen      C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 recv        C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 recvfrom    C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 send        C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 sendto      C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 setsockopt  C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 shutdown    C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>
 socket      C:\ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_so.obj>

error #10234-D: unresolved symbols remain

---------------------------------------------------------------------------------------

     This error is specifically related to NDK version 2.24.0.11 as moving back to version 2.23.2.03 cause's the linker errors to disappear. Is there a way to rebuild the ethernetip_stack.lib so that it is compatible with the newest NDK?

Thanks,

     John C.

  • John,

    SDK 1.1.0.5 is available and it supports CCSv6(Along with new versions of NDK/Sysbios). This has the libs build using latest versions of NDK/Sysbios.

    Regards,
    Vinesh

  • Hey Vinesh,

         The issue with going to CCSv6 is that we would have to purchase a new license which could be an issue right now. Any other way to rebuild the library?

    Thanks,

         John C.

  • John,

    You can use CCS 5.5 itself, with the updatecomponents/tools.

    Regards,

    Vinesh

  • John,

    Were you able to download and try the newer SDK (that's built against NDK 2.24), as Vinesh suggested?

    If so, did this resolve those undefined symbols?

    Steve

  • Hey Steve,

         I've gotten the new CCS 6.0.1 installed but it did not pick up the 2.24 NDK as I had installed it in CCS 5.5 directory. I'm reinstalling it now and will let you know it builds.

    Thanks,

         John C.

  • Hey Steve,

              Just finished the compile, but I have a lot of linker errors. The tool set seems compatible:

    Compiler 5.1.6
    XDC Tools 3.25.1.65
    SYS/BIOS 6.37.2.27
    NDK 2.24.0.11

    I'm checking the linked libraries to see what their tool sets are.

    John C.

    CfgAddEntry                                      ./eip_ndk.obj                                                                                                         
     CfgEntryDeRef                                    ./eip_ndk.obj                                                                                                         
     CfgEntryGetData                                  ./eip_ndk.obj                                                                                                         
     CfgFree                                          ./eip_ndk.obj                                                                                                         
     CfgGetEntry                                      ./eip_ndk.obj                                                                                                         
     CfgGetImmediate                                  ./eip_ndk.obj                                                                                                         
     CfgNew                                           ./eip_ndk.obj                                                                                                         
     CfgRemoveEntry                                   ./eip_ndk.obj                                                                                                         
     ConfigureDhcpClient                              ./AIRtrac/Ethernet.obj                                                                                                
     DbgPrintf                                        C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\os_drivers\lib\sys_bios_driver.lib<icss_ethdriver.obj>                       
     DisableDhcpClient                                ./AIRtrac/Ethernet.obj                                                                                                
     DomainName                                       ./eip_ndk.obj                                                                                                         
     Interrupt_add                                    C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\os_drivers\lib\sys_bios_driver.lib<icss_ethdriver.obj>                       
     Interrupt_delete                                 C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\os_drivers\lib\sys_bios_driver.lib<icss_ethdriver.obj>                       
     Interrupt_disable                                C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\os_drivers\lib\sys_bios_driver.lib<icss_ethdriver.obj>                       
     Interrupt_enable                                 C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\os_drivers\lib\sys_bios_driver.lib<icss_ethdriver.obj>                       
     LLI_setARPHook                                   ./user_acd_ndk.obj                                                                                                    
     NC_NetStart                                      ./eip_ndk.obj                                                                                                         
     NC_NetStop                                       ./app_restart.obj                                                                                                     
     NC_SystemClose                                   ./eip_ndk.obj                                                                                                         
     NC_SystemOpen                                    ./eip_ndk.obj     

  • Hi John,


    Could you please find (and attach to this thread) the generated "*.xdl" file that's created as part of your project's build?

    You should be able to find this file under the "Debug" or "Release" sub-folder of your project (e.g. for one of my projects: "Debug\configPkg\package\cfg\udpEchoCC3100_pem4f.xdl")

    Steve

  • Hey Steve,

         Verified that my sys_bios_driver library was being built with the same components. Here is the .xdl file you wanted.

    John C.

    6327.airtrac_pea8fnv.zip

  • Hi John,


    Thanks for attaching that file.  I took a look and I don't see any of the NDK libraries being linked in.

    Do you have a line similar to the following in your BIOS config (*.cfg) file?

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

    This line should cause the NDK libraries to get linked into your app.

    Steve

  • Steve,

         That was most of it. Seemed in the porting I did not check the box on the NDK config (thanks.) Any idea about these?

    Thanks again,

         John C.5127.airtrac_pea8fnv.zip

    undefined                                        first referenced                                                                                                      
      symbol                                              in file                                                                                                           
     ---------                                        ----------------                                                                                                      
    cpsw_ethdriver_register_link_change_notification ./AIRtrac/Ethernet.obj                                                                                                
     dlrObj                                           C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<obj_DLR.obj>     
     ti_sysbios_gates_GateMutex_create                C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_sem.obj>
     ti_sysbios_gates_GateMutex_delete                C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_sem.obj>
     ti_sysbios_knl_Clock_create                      C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_sys.obj>    
     ti_sysbios_knl_Clock_delete                      C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_sys.obj>    
     ti_sysbios_knl_Mailbox_create                    C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_msgq.obj>
     ti_sysbios_knl_Mailbox_delete                    C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_msgq.obj>
     ti_sysbios_knl_Semaphore_create                  C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
     ti_sysbios_knl_Semaphore_delete                  C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
     ti_sysbios_knl_Task_create                       C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
     uartInstance                                     ./device.obj                

                                                                             

  • Ok, great that you got past those NDK related ones.  The rest look to be due to missing similar config code for the BIOS modules.

    Try adding these to your *cfg file:

    var GateMutex = xdc.useModule('ti.sysbios.gates.GateMutex');

    var Clock = xdc.useModule('ti.sysbios.knl.Clock');

    var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');

    var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');

    var Task = xdc.useModule('ti.sysbios.knl.Task');

    This should bring in the libraries, similar to how it did for the NDK case mentioned previously.

    Steve

  • Hey Steve,

         Unfortunately those were already configured. Is it possible that this is related to moving to a newer

    version of SYS/BIOS?

    John C.

  • Steve,

              The other thing that I noticed was other linker errors had to do with the files included at the top level of the am335x_sysbios_ind_sdk_1.1.0.4\sdk\examples\ethernetip_adapter example. My original port used the example from the 1.1.0.4 SDK. The current version in 1.1.0.5 is a bit different with eip_ndk.h file missing and numerous internal function differences as well.

              Seems just a bit odd that a lot of the linker issues reside in these files that are part of an example.

    John C.

    app_restart.c/h
    appl_cfg.h
    device.c
    eip_main.c/h
    eip_ndk.c/h
    hal.c

    DomainName                        ./eip_ndk.obj           --> Extern'ed in eip_ndk.c                                                                                              
    addDLRModuleIPAddress     ./eip_main.obj         --> Called from the EIPIPAddressChange function                                                                                              
     board_Type                        ./eip_utils.obj           --> Extern'ed in eip_utils.c                                                                            
     checkGratArp                     ./user_acd_ndk.obj  --> Extern'ed in user_acd_ndk.c                                                                                         
     countACD                          ./user_acd_ndk.obj   --> Extern'ed in user_acd_ndk.c                                                                                                 

    >> Compilation failure
     ti_sysbios_gates_GateMutex_create C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_sem.obj>
     ti_sysbios_gates_GateMutex_delete C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_sem.obj>
     ti_sysbios_knl_Clock_create       C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_sys.obj>    
     ti_sysbios_knl_Clock_delete       C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_sys.obj>    
     ti_sysbios_knl_Mailbox_create     C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_msgq.obj>
     ti_sysbios_knl_Mailbox_delete     C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_msgq.obj>
     ti_sysbios_knl_Semaphore_create   C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
     ti_sysbios_knl_Semaphore_delete   C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
     ti_sysbios_knl_Task_create        C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<user_os_task.obj>
                                                                    

  • John,

    If you are using ISDK 1.1.0.5, can you try building with the recommended setup? (http://processors.wiki.ti.com/index.php/AM335x_SYSBIOS_Industrial_SDK_01.01.00.05_User_Guide#Software.C2.A0)

    Regards,
    Vinesh

  • Hey Vinesh,

              Not really sure what you are referencing. Could you be more specific?

    John C.

  • Hi John,

             Please make sure you are using the software componetns for building the ethernetip application  as mentioned in the link from the above post.

    • CCS 6.0.0.00190
    • SYSBIOS 6.40.3.39 
    • NDK 2.24.0.11

            

           The changes from ISDK1.4 to ISDK1.5  were made to include ACD(Address Conflict Detection Support). Please go through this link to get more info on ethernetip application

    http://processors.wiki.ti.com/index.php/AM335x_SYSBIOS_Industrial_SDK_01.01.00.05_User_Guide#EtherNet.2FIP.

    Please let me know if you have morequeries

    Regards,

    Prajith

  • Hey Prajith,
              I modified our build to use a newer XDC Tools and SYS/BIOS:
    Code Composer    6.0.1.00040
    Compiler 5.1.6
    XDC Tools 3.30.3.47_core
    SYS/BIOS 6.40.3.39
    NDK 2.24.0.11

    With this tool set, I end up with one linker error:
     dlrObj                C:\ti\am335x_sysbios_ind_sdk_1.1.0.5\sdk\protocols\ethernetip_adapter\stack_lib\ethernetip_stack.lib<obj_DLR.obj>

    error #10234-D: unresolved symbols remain

    Suggestions?

    Thanks,
    John C.


  • John,

    Can you please zip up and attach your entire project that has this error?  (if you don't wish to share it on the public forum, you can send to me privately (once we're friends on the forum) ... just let me know if that's the case).

    Steve

  • John,

         Are you using the example without modification? I guess issue is coming as the dlrObj is not declared in the application. This is declared in icss_dlr.c file and please include this in the application. 

    Regards,

    Prajith

  • Hey Steve,

         I would not be able to give you the entire project. I could give pieces, but I don't think that would help you.

    John C.

  • Ok ... can you please attach your *.cfg file, then?

    Steve

  • Prajith,

         I looked into the icss_dir.c file and noticed I had not added the "USE_CPSW_DRIVER" in the predefined symbols. After adding that I'm down some unresolved symbols from the files that are included in the ethernetip_adapter example:

     DomainName            ./eip_ndk.obj   
     addDLRModuleIPAddress ./eip_main.obj  
     board_Type            ./device.obj    
    error #10234-D: unresolved symbols remain

    Hopefully these are easier to find.

    John C.

  • Hey Steve,

         Here is the .cfg file.

    John C.

    2072.airtrac.zip

  • Prajith,

         It seems the addDLRModuleIPAddress() function is located in the icss_dlr.c file. Is that call still applicable when I am doing a CPSW build, not the ICSS?

    Thanks,

         John C.

  • John,

    The CPSW example does not support DLR at all, so I do not think there is a point in having that in a CPSW build.

    Regards,
    Vinesh

  • Hey Vinesh,

         The function calling sequence for addDLRModuleIPAddress is:

    ti_ndk_config_Global_NetworkIPAddr() (in eip_ndk.c)
                |---->EIPIPAddressChange()
                                 |---->addDLRModuleIPAddress()
         Are you saying that functions like ti_ndk_config_Global_NetworkIPAddr are not necessary? The ethernetip_adapter example has changed a lot from sdk 1.1.0.4 to 1.1.0.5 and a lot of the functions like the ones eip_ndk.c left me thinking they were hooked into the NDK permanently. Even the header comments lead me to believe the function is necessary:
    /*
     *  ti_ndk_config_Global_NetworkIPAddr
     *
     *  This function is called whenever an IP address binding is
     *  added or removed from the system.
     */
         So do I need the three "ti_ndk_config_Global..." functions in eip_ndk.c?
    Thanks,
         John C.
  • John,

                You can keep the ti_ndk_config_Global_NetworkIPAddr function in the example as this function will get called by NDK.  But you can remove the EIPIPAddressChange() call from it. This function is application specific and you can remove it if you are not using DLR (which i think is your case)

    Regards,

    Prajith

  • Prajith,
         If the EIPIPAddressChange() is specific to DLR, should there be a "#ifndef USE_CPSW_DRIVER" around 
    those areas? Isn't DLR specific to the ICSS builds ?
    Thanks,
         John C.
  • Prajith,

         Still getting a linker error on "DomainName". If I look back to when I built the sdk 1.1.0.4 ethernetip_example, I find the definition of DomainName in the ti\am335x_sysbios_ind_sdk_1.1.0.4\sdk\examples\ethernetip_adapter\Debug\configPkg\package\cfg\app_pea8fnv.c file:

    /* Static IP Address settings */
    char *LocalIPAddr = "192.168.1.10";
    char *LocalIPMask = "255.255.255.0";
    char *GatewayIP   = "192.168.1.1";
    char *DomainName  = "demo.net";

         What settings in the configuration cause these to be created in this file?

    Thanks,

         John C.

  • John,

    i agree the EIPIPAddressChange() should be under a macro so that it is not included as a part of CPSW implementation. This will be corrected in next release.

    Regarding the second question, including NDK in the cfg file will created those entries.

    Can you post the error messages you are getting when building the 1.1.0.5 based application.


    Regards,
    Prajith
  • Prajith,

        It is just an unresolved symbol:

     undefined  first referenced
      symbol        in file     
     ---------  ----------------
     DomainName ./eip_ndk.obj  

        The other thing that seems to have been lost going from 1.1.0.4 to 1.1.0.5 is how to configure and get a DHCP address. The function ConfigureDhcpClient() is missing and the code changes for using DHCP vs. static IP address are not clear at all.

    Thanks,

         John C.

  • John,

                  Please refer to the function  registerIPCfg(HANDLE hCfg) in eip_ndk.c. it is in this function which we decide whether to start the application with static IP or in DHCP mode.  

                There were some  changes  in the application to add ACD support. The major being using the legacy method to configure NDK parameters as explained in the user guide. The variable DomainName is used to assign domain name to the device(in legacy method).You may not need it if you are using .cfg to configure NDK.

    http://processors.wiki.ti.com/index.php/AM335x_SYSBIOS_Industrial_SDK_01.01.00.05_User_Guide#EtherNet.2FIP

    Regards,

    Prajith

  • Prajith,

         The registerIPCfg function uses eipDevInitConfig structure to know what the configuration is. Unfortunately that structure seems to filled in from flash in EIPACDInit(). Because there is no default settings available for eipDevInitConfig I can only guess what is important in there. The user guide is of little value as there no examples or API's in there to help me attempt something which is not done on the development boards.

         Are there any examples of how to configure the eipDevInitConfig structure ? If not then I might as well go back to the 1.1.0.4 example code as I am running out of time to complete this NDK test.

    Thanks,

         John C.

  • John,

             The  Ethernet/IP  spec requires some data to be stored in non volatile memory(like IP address, Static or DHCP mode etc) . Its for that purpose we are taking those values from SPI flash. Its purely application based.

               if you are not using Ethernet/IP application you can choose not to use this approach. In that case, you can directly give IP address in registerIPCfg() instead of taking it from eipDevInitConfig.  

    Regards,

    Prajith

     

  • Prajith,

         My main point is that without being able to see what you are setting those values to I have no way to know how it is supposed to work. Without either examples or documentation I don't know what flags to set. If I tried calling registerIPCfg() directly any values I use would be just guesses. 

    Thanks,

         John C. 

  • Hi John,

             There is one major difference between ISDK 1.4 and 1.5 and that is the difference in method to configure NDK params. In the 1.4 release,the application uses .cfg file to configure NDK whereas in the 1.5 release we used  legacy method to configure NDK. This was done to get a better control on IP assigning. This was necessary for adding ACD support. 

    This is mentioned in NOTE3 in the Ethernet/IP section. http://processors.wiki.ti.com/index.php/AM335x_SYSBIOS_Industrial_SDK_01.01.00.05_User_Guide#EtherNet.2FIP

    More info on these two approaches can be found here http://www.ti.com/lit/ug/spru523i/spru523i.pdf .  Please refer to the section 3.1 and 3.2 

    Are you using Ethernet/IP application or Switch application

    Regards,

    Prajith

  • Prajith,

                 We are using CPSW (very first post). I have read through TI's documents and simply do not find the detail I need to be able to get standard TCP/UDP sockets to work on our AM3352 board which has been using sys/bios and lwip for a year and a half. I understand TI's main thrust with NDK is not with standard IPv4/v6 sockets, but it could fit the very well if TI decides to support it with things like CPSW on Port2 (not just Port 1) and more/better examples.

    John C.

  • John,

    Just to add a little bit more about this, it is an important difference:

    Prajith Jayarajan said:
             There is one major difference between ISDK 1.4 and 1.5 and that is the difference in method to configure NDK params. In the 1.4 release,the application uses .cfg file to configure NDK whereas in the 1.5 release we used  legacy method to configure NDK. This was done to get a better control on IP assigning. This was necessary for adding ACD support. 

    For Prajith and team to get ACD support working, they needed a new NDK (*.cfg) config option to give them more control over the code generation.  I don't have access to the 1.5 SDK on hand at this time, but I'm guessing their example has the following config setting:

    Global.stackThreadUser = <function name of NDK stack thread that they define>

    This setting allows them to override the NDK's configuration settings that are defined in the *.cfg file (e.g. settings for things such as DHCP, TCP, etc).  This is done by calling the stack thread function passed in the above setting, instead of the stack thread function that's normally auto-generated for you in the large *.c file that's found deep down under your app's "Debug" or "Release" folder, i.e. the same file that you attached for me in the other thread.  The "typical generated function" is called "ti_ndk_config_Global_stackThread", and you can see that in your file pst_pea8fnv.c from the other thread, if you're curious).

    Looking at your config file (*.cfg) that you attached to this thread, I didn't see the above config setting for stackThreadUser being set.  So, you may not be running with the same settings as the default example in this application/thread.

    Steve

  • Hey Steve,

                Thanks for the input here. Missing the "Global.stackThreadUser = "&NDKACD_stackThread";" would be the reason that I never hit any break points in the newer function versions. It would take a couple days to port over our code for each ethernetip_example, so I only did it for the 1.1.0.4 example. For 1.1.0.5 I simply looked/searched through the source code but did not check the .cfg file. I never got that in reading the docs.

    Thanks again,

         John C.