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.

HelloWorld on EVM6472

Other Parts Discussed in Thread: TMS320TCI6488

Hi,

 

Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4

We are trying to run one of the sample applications using the NDK v2.1.0 on the EVM6472.  The sample application is “helloWorld”, and we are trying to send a UDP packet to the core 0 and have it echoed back. The application is at evmc6472\ndk_2_1_0\packages\ti\ndk\example\network\helloWorld\evm6472.

 Without break points, the console log stops here, and IP address cannot be pinged / Winapps application request times out:

TCP/IP Stack 'Hello World!' Application

MAC address read from EFUSE

MAC Address read: 3C-2D-B7-7C-F7-9E

Core Number on which NDK is running = 0

 EMAC should be up and running

EMAC has been started successfully

Registeration of the EMAC Successful

 

JTAG debug shows an unending while loop at:

static void NetScheduler( uint const SerialCnt, uint const EtherCnt )

{

    // Enter scheduling loop

    while( !NetHaltFlag )

}

The SchedulerPriority is 0 at this point.

 Can you please point to the reason why the binding is never done?

 

Thanks,

Arun

  • Hi Arun,

    Please update the software baseline to BIOS MCSDK 1.00 (http://software-dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/latest/index_FDS.html). The NDK examples for EVM6472 can be found in <Install Dir>\mcsdk_1_00_00_08\packages\ti\platform\nimu\test\evm6472.

    Regards

    Sajesh

  • Hello Sajesh,

    I can see that this requires CCSv4.2.0. I am already using CCSv4.1.2 that came with the EVM module. 

    The OOBDemo_BIOS6 project builds and works with the current version of CCSv4.1.2. Please let me know if it is okay to update software baseline on v4.1.2 with the one you suggested.

     

    Thanks,

    Arun

     

  • Arun,

    The BIOS MCSDK 1.0 release is a broad market production release intended for C6472, C6474, and C6457. Yes, please upgrade the software that came with the EVM module with BIOS MCSDK 1.0 and the corresponding CCS 4.2.0 releases.

    To bring up the out-of-box demo that is a part of BIOS MCSDK 1.0, please follow the guide at:
    http://processors.wiki.ti.com/index.php/BIOS_MCSDK_1.0_Getting_Started_Guide

    To begin development with this release, please consult the users guide at:
    http://processors.wiki.ti.com/index.php/BIOS_MCSDK_1.0_User_Guide

    Raj

  • Hi Raj,

    Can you tell me specifically what you mean by "please upgrade the software that came with the EVM module with BIOS MCSDK 1.0 and the corresponding CCS 4.2.0 releases."

    What are the corresponding CCS4.2.0 releases?

    Thank you very much,

    Arun


  • Arun,

    The software upgrade involves running two installers:

    1) MCSDK BIOS 1.0
    2) CCS 4.2.0

    See the BIOS MCSDK 1.0 download page referenced by Sajesh above for a link to both install packages. Also, the Release Notes for BIOS MCSDK 1.0 indicates where the underlying software components will be installed from:

    Component Version
    BIOS MCSDK 1.00.00.08 Package
    PDK C64x 1.00.00.06
    NDK 2.20.02.22
    MCSDK 1.00.00.08
    EMAC LLD 02.10.03.04
    CCS v4.2.0 Package
    Code Gen Tools 7.0.3
    SYS/BIOS 6.30.02.42
    IPC 1.21.02.23
    XDC Tools 3.20.03.63

    Hope this clears up the confusion.

    Raj

  • Hi Raj,

    Is there a CCSv4.2.0 limited version for EVM6472? Or should I purchase one(full-blown version)? I was kind of expecting to work with the CCS that came with the EVM for now.

    Thanks,

    Arun

     

  •  

    Arun, upgrading to CCSv4.2 is free for you. You can do this two ways.

    1) via update manager. This will not update you BIOS components so you will need to update that as well. If you want to keep you current installation of CCSv4.1 intack (this might be the prudent thing to do), you may want to use the next method.

    2)  a complete separate installation of CCSv4.2 beside your current CCSv4.1 install. You will need to manuall download the complete image from the link below. Do a complete install. Then you will need to re-use the license file from CCSv4.1 into the CCSv4.2 install. See FAQ below.

     

    http://processors.wiki.ti.com/index.php?title=Category:Code_Composer_Studio_v4

    http://processors.wiki.ti.com/index.php/Licensing_-_CCSv4#Q:_Can_I_use_my_CCSv4.0.2F4.1_license_with_CCSv4.2.3F

    If you run into any problems. Please post issue on the CCS forum. Good Luck.

    Raj

  • Thank you very much for your prompt replies. It works now.

    Arun

  • Hi Sajesh,

    I am trying to run the UDP helloworld example on 6472 core B.  I am using CCSv4.2.1 & mcsdk_1_00_00_08.

    Is this example only meant to run on core 0.? I modified the application code check to "if (platform_get_coreid() != 1)" to no avail.

    Thanks,

    Arun

  • Arun,

    This example should be run on core 0 only.

    Please see the link http://e2e.ti.com/support/embedded/f/355/p/86502/303985.aspx#303985 for more details.

    Regards

    Sajesh

  • Hi Sajesh,

     

    Thanks for the link. I changed the nimu_eth.c to have it compare to core-B in a couple of places.

    Now, in the application console log, I see:

    Running on core 1

    TCP/IP Stack 'Hello World!' Application

    Registration of the EMAC Successful, waiting for link up ..
    Network Added: If-1:10.21.41.128
    Port 0 Link Status: 100Mb/s Full Duplex on PHY 24

     

    PLATFORM_MAC_TYPE_EFUSE - I am unable to ping the core 1. I tried following another suggestion on adding an entry into the ARP table. I step through to see that the MAC address does not change in case of core 0/1. I tried adding this entry to ARP. Still ping fails.

    PLATFORM_MAC_TYPE_EEPROM - ping fails on core 1.

     

    I want to verify the UDP application works on all cores.

     

    Thanks,

    Arun

  • Arun,

    Are you running your UDP on both core 0 and core 1 or on core 1 only? If you are running on core 1 only, you need to set the master core flag to TRUE for core 1 when calling emac_open() API in the nimu driver, and you also need to set the packet channle number allocated by the EMAC driver (in this case TX/RX channel number is 0)  when constructing the TX packet descriptor for Core 1 in the nimu driver.

    Please refer to http://e2e.ti.com/support/embedded/f/355/p/86502/303985.aspx#303985 for more details.

    Regards,

    Hao.

  • Ho Hao,

    Currently I am only on Core 1. It helped when I made the below change like you suggested.

        pkt_desc.PktChannel  = 0;

    What do you suggest when running on all cores?

    pkt_desc.PktChannel  = coreNum;  // leave this at coreNum???

     

    Thanks,

    Arun

     

  • Arun,

    Please refer to EMAC driver API header, pdk_c64x_1_00_00_0x\packages\ti\drv\emac\emac_drv.h:

    typedef struct EMAC_OPEN_CONFIG_INFO_tag
    {
        Bool                            master_core_flag;
        /**< True: master core configuration                                    */
        Bool                            mdio_flag;
        /**< True: configure MDIO                                               */
        Uint32                          phy_addr;
        /**< Physical layer transceiver address mapped to the EMAC port
             valid address range is 0 - (EMAC_MAX_NUM_PHY_ADDR-1).
             if a valid address is specified, EMAC driver will check the link
             status only on the application specifid phy address; if an invalid
             phy_addr is specified, EMAC driver will search the phy address that
             can be used by itself                                              */
        Bool                            loop_back;
        /**< True: packets loop back                                            */
        Uint32                          num_of_tx_pkt_desc;
        /**< Total # of pkt desc initialized for all the TX chans in TX queues  */
        Uint32                          num_of_rx_pkt_desc;
        /**< Total # of pkt desc initialized for all the RX chans in RX queues  */
        Uint32                          max_pkt_size;
        /**< Maximum size of the packet in bytes                                */
        Uint32                          num_of_chans;
       /**< Total number of TX/RX channels configured for this core             */
        EMAC_CHAN_MAC_ADDR_T*           p_chan_mac_addr;
       /**< Application needs to provide the MAC address configurations;
            EMAC driver will allocate the channels if available and
            return the channel info to the application                          */

        EMAC_RX_PKT_CALLBACK_FN_T*      rx_pkt_cb;
        /**< EMAC RX call back function                                         */
        EMAC_ALLOC_PKT_CALLBACK_FN_T*   alloc_pkt_cb;
        /**< EMAC allocate packet call back function                            */
        EMAC_FREE_PKT_CALLBACK_FN_T*    free_pkt_cb;
        /**< EMAC free packet call back function                                */

    } EMAC_OPEN_CONFIG_INFO_T;

    NIMU driver needs to save the channel number allocated and use it for the TX packet descriptor.

    Regards,

    Hao.

  • Hi Hao, ive posted my queries relating to helloWorld in NDK 2.2 before too.

    Im facing a issue here:

    I too am currently using the Spectrum Digital TMS320TCI6488 EVM board, and facing issues like the helloWorld application hanging around the isFpgaReady() code.

    How do i change the platform_utils library for this EVM board shipped to me. I believe the Platform_utils library built in MCSDK 1.0 is for evm light.

    How do i now get to run the helloWorld NDK application on this board ? Pls help.

    Also when i comment some part of the code under EVM_init() which is used to initialize the FPGA, the program gets through, but i cannot PING the EVM board.

    The console prints:

    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:

    00-24-BA-3A-0E-F2

    SGMII reset successful........

    SGMII config successful........

    emac_open core 0 port 0 successfully

    Registration of the EMAC Successful, waiting for link up ..

    Network Added: If-1:192.168.128.201

    Port 0 Link Status: 100Mb/s Full Duplex on PHY 1

     

    Please do help.

  • Hi Arun,

    Were you able to ping your evm board from an external host machine by placing the NDK under Core 0.

    Which example are you running...Please let me know.

    Im using MCSDK 1.0 having NDK 2.2 and using the helloWorld applicaiton, but i fail to PING the ethernet interface from external host machine.

    Hao...Do put in your queries and let me know if there is something like EVM lite since the platform libraries built have the name: platform_utils_evmc6474l.lib.

    What does that "l" stand for since the platform_init() fails on my EVM board by Spectrum Digital TCI6488.

    Pls help.

  • Santosh,

    Please see my post in another thread regarding this problem:

    http://e2e.ti.com/support/embedded/f/355/p/86502/315157.aspx#315157

    "l" means the low cost lite version of the EVM which only has one DSP device on the board.

     

    Regards,

    Hao.