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.

NDK, C6474 (EVM), EMAC Demos

Expert 2430 points


Platform/Environment:  C6474 EVM, CCS v4.2, SYS/BIOS 6

Though I have years of experience working with TI processors and their various peripherals, the EMAC module is a complete unknown to me I am afraid to say.  My primary confusion right now, though, is what I actually need to download and install.  In a nutshell, what do I need to download and install to give me some sample code to start playing around with for my above cited environment?

I downloaded and installed BIOS MCSDK v1.0.0, but I can't seem to find any easily accessible sample/demo code to start working with.  All the web pages state that to get the sample code, I now need to download a device-specific NSP for my chip, but there doesn't seem to be any published anywhere for the C6474.  Also, your NDK User's Guide (SPRU523G) refers to a typical "Hello World" application to start with, but that does not seem to be installed anywhere.  (SPRU523G cites, "The client example is located in the EXAMPLE\NETWORK\HELLOWORLD directory off the NDK root," but that location does not exist in my NDK tree.)

For my end application, all I want to be able to do is transfer data between the PC and the DSP over Ethernet (something simple like that of Memory Load/Save via JTAG, only I want to be able to do it over Ethernet, no emulator required).  Are there any Windows app and DSP app samples to get me started, and, again what do I need to download and install to get them?

Secondly, though not really a project requirement, I would like to be able to boot from the EMAC as well (at least during my product development stage).  Again, are there any sample projects and Windows applications to get me started on this, and what do I need to install to get access to them?

Thanks!

  • And on a related (but slightly off-topic) note, for the C6474 EVM, what's the trick to get my router to recognize it and assign it an IP?  I even tried assigning a static IP to it, but still nothing.  I used the MAC address that the EVMC6474L's HelloWorld app spits out:

    TCP/IP Stack 'Hello World!' Application

    emac_init: core 0, port 0, total number of channels/MAC addresses: 1/1
    MAC addresses configured for channel 0:
    3C-2D-B7-23-FD-86
    SGMII reset successful........
    SGMII config successful........
    emac_open core 0 port 0 successfully
    Registration of the EMAC Successful, waiting for link up ..
    Service Status: DHCPC    : Enabled  :          : 000
    Service Status: DHCPC    : Enabled  : Running  : 000

     

    Keep in mind, again, that I am using the original C6474 EVM (the one from Spectrum Digital), not the EVMC6474L, and I know little about network programming, so maybe the above MAC address is being dynamically generated by the demo code, I don't know.  The documentation (for my EVM) says nothing about configuring the Ethernet port or how it's configured by default (at power-on), so I am sort of at a loss here.

  • Hi Alex,

    You cannot use the Helloworld project in the MCSDK1.0.0 with Spectrum digital board. To start with please refer to the example in the NDK2.1.0 to get it working. Right now we are trying to port the MCSDK example to spectrum digital board. But I am not sure about the time line.

     

    For Emac boot, please take a look at boottest package in the link below.

     

    http://processors.wiki.ti.com/index.php/C6474

    Thanks,

    Arun.

  • Thanks for the reply, especially on a Sunday. :-)

     

    That's easier said than done.  Do you guys still have the CCSv4 Eclipse-aware installer for NDK 2.1.0 available anywhere?  The only thing on the official download page is a raw tarball.  If I try to manually force the linker to reference this (extracted) tarball (by redefining the NDK,_INSTALL_DIR environment variable), it complains about the 'packages' directory being missing and refuses (understandably) to build the application:

     

     


     

    D:\dev\TI\ccsv4\utils\gmake\gmake -k all
    'Building file: ../helloWorld.cfg'
    'Invoking: XDCtools'
    "D:/dev/TI/xdctools_3_20_08_88/xs" --xdcpath="D:/_System_/updates/sw/TI/NDK/ndk_2_1_0/packages;D:/dev/TI/bios_6_30_03_46/packages;D:/dev/TI/mcsdk_1_00_00_08/packages;D:/dev/TI/pdk_c64x_1_00_00_06/packages;" xdc.tools.configuro -o configPkg -t ti.targets.C64P -p ti.platforms.evm6474 -r whole_program -c "D:/dev/TI/ccsv4/tools/compiler/C6000 Code Generation Tools 7.0.4" "../helloWorld.cfg"
    making package.mak (because of package.bld) ...
    generating interfaces for package configPkg (because package/package.xdc.inc is older than package.xdc) ...
    configuring helloWorld.p64P from package/cfg/helloWorld_p64P.cfg ...
    js: "J:/projects/Authentix/CCS4/TestBed/helloWorld_MyEvm/helloWorld.cfg", line 116: xdc.services.global.XDCException: xdc.PACKAGE_NOT_FOUND: can't locate the package 'ti.ndk.config' along the path: 'D:/_System_/updates/sw/TI/NDK/ndk_2_1_0/packages;D:/dev/TI/bios_6_30_03_46/packages;D:/dev/TI/mcsdk_1_00_00_08/packages;D:/dev/TI/pdk_c64x_1_00_00_06/packages;D:/dev/TI/xdctools_3_20_08_88/packages;..;'. Ensure that the package path is set correctly.
        "./package/cfg/helloWorld_p64P.cfg", line 744
        "./package/cfg/helloWorld_p64P.cfg", line 799
        "./package/cfg/helloWorld_p64P.cfg", line 731
    gmake.exe: *** [package/cfg/helloWorld_p64P.xdl] Error 1
    Warning: directory "D:/_System_/updates/sw/TI/NDK/ndk_2_1_0/packages" on package path does not exist
    js: "D:/dev/TI/xdctools_3_20_08_88/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
    gmake: *** [configPkg/compiler.opt] Error 1
    gmake: Target `all' not remade because of errors.
    Build complete for project helloWorld_MyEvm

     


     

    UPDATE:  Okay, the above was just because I neglected to comment out a couple of lines in the SYS/BIOS configuration file.  New question, though.  The 2.1.0 tarball contains no projects--just the code modules.  To build the 2.1.0 helloworld example, specifically which libraries do I need to link in?  Currently, the following is all undefined:

     undefined       first referenced
      symbol             in file    
     ---------       ----------------
     _CfgAddEntry    ./helloWorld.obj
     _CfgFree        ./helloWorld.obj
     _CfgNew         ./helloWorld.obj
     _DaemonFree     ./helloWorld.obj
     _DaemonNew      ./helloWorld.obj
     _NC_NetStart    ./helloWorld.obj
     _NC_SystemClose ./helloWorld.obj
     _NC_SystemOpen  ./helloWorld.obj
     __oscfg         ./helloWorld.obj
     _inet_addr      ./helloWorld.obj
     _mmZeroInit     ./helloWorld.obj
     _recvncfree     ./udpHello.obj 
     _recvncfrom     ./udpHello.obj 
     _sendto         ./udpHello.obj 
     _setsockopt     ./udpHello.obj

    Obviously, that is the emac-related libraries and maybe the os library, but there are dozens and dozens of libraries, and I don't just want to randomly include them all.

     

  • (I fear a second UPDATE would be unseen hence the new reply instead of an edit.  Sorry for the spam.)

     

    Okay, so after spending all morning tinkering around with the original 2.0.0 NDK install and multiple tarballs (2.1.0 and the 2.1.0 C6474 support package), readjusting all my build include paths, and copying in various modules to apply the fixes to the bugs (cache coherency, etc.), I finally got HelloWorld to compile and run successfully on my C6474 EVM.  Rah.  I'm just running on Core 0, but that's all I really care about anyway.  (Note:  Both a static IP and DHCP work fine, EFUSE enabled or not, so all is good.)

     

    My software configuration is now a bloody mess, though.  I do not relish adding this "bandaid'ed" configuration to my official project code store since future maintenance will be a nightmare, especially if someone else takes over the project.  I have no qualms, though, using an older NDK, i.e., 2.1.0.  Installing 2.0.0 and then just manually removing the ./ti directory and replacing it with the one in the 2.1.1 tarball is okay, too, but what is the clean and proper way to install the C6474 EVM support tarball (ti.ndk.platforms.evm6474_2_1_0_full.tar )?

    Or let me ask it another way.  Assume I only have CCSv4 and SYS/BIOS installed, and everything is up-to-date, including Spectrum Digital's drivers and their SDK.  I want to do some EMAC related work on this EVM using NDK 2.1.0 since TI dropped support for this EVM after that point.  What procedure should I follow, i.e., what do I need to download, and how do I install it properly?

  • Could someone at least instruct me how to rebuild the components under this newer (relatively speaking) RTSC/Eclipse scheme?

    The problem is that the components for the NDK 2.1.0 libraries, and more specifically, the os.lib, were built against a way older version of SYS/BIOS than I am using, so I get a lot of warnings about depreciated components.

    I know it just mainly a matter of running make, but any tips or advice on any environment variables I should set first or what makefile I should feed into make would be greatly appreciated.  Thanks!

     

    Update:  Since there is no support here, I figured I would pass to along to any future bewildered lurker:  Rebuilding the NDK Core.  Never mind.  That wiki page only supports NDK 2.20 or later.  TI provided no support to rebuild NDK 2.1.