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.

Ethernet Issue on DSP/BIOS for TMS328TCI6488

Other Parts Discussed in Thread: CCSTUDIO, TMS320TCI6488

Hi All,

I am working on TI board (TMS328TCI6488). I am on a LTE Project.On 6 Cores RLC,MAC,PHY are running. When ever i load image on Core 1 my Ethernet goes down.This situation seems to me very strange.
I ran a helloworld program by loading default Example provided by CCStudio ethernet works fine.
Any idea why ethernet goes down when i load image on core 1.

regards,
venkat

  • Have you checked your memory map are they conflicting?  Also maybe there some conflicting resources like Timer?

    There's not enough information here to determine what could be going on?  Is the Ethernet running on Core 0?

    Judah

  • Hi judahvang,

    Thanks for the reply.

    Yes Ethernet is running on core 0.

    I want to load you with few questions.

    1.what exactly you mean by "Is your memory map conflicting"

    2.Which registers are responsible for Ethernet status UP/DOWN or which part of the code tells about this.we can see PHYREG_read(PHYREG_1000CONTROL,pd->phyaddr).we are not able map these registers in datasheet. Also how we can find the linkstatus of the phy registers.

    3.In helloworld sample code in file Cls_mdio.c i found it goes to MDIO_timerTick function to check the link or execute  the different states of state machine for getting the link status. After executing several steps it finally reaches to "PHYSTATE_LINKWAIT"  and when we run it on debug mode it goto ChekTimeout evertime rather it should go to the next step i.e. RetVal=MDIO_EVENT_LINKUP.
    So my question is why timeout is being occurred and why it is not going to the next state.
    Can you give the detail about the timeout related to this scenario.

    4.In Evminit.c file we have phy_setReg(0xe,26,0x47) what are these parameters stand for.we couldnt map it.

    5.How we can confirm that phy registers are set,read,write succussfully.

    Judahwang Your support will be highly appreciated as our project is in a very criticle stage.

  • Hi venkat rao,

    Which version of the NDK are you using?

    Are you working with a Software Development Kit (SDK) of some sort?  If so, do you know which SDK and its version?

    Steve


  • The H/w and S/w Component details are given below.

    EVM (board) : TMS320TCI6488
    NDK : 2.0.0
    CCS : 3.3.38.2
    BIOS : 5.41.03.17

    Problem statement : The Ethernet link comes up and the Tx Interrupt has been initialized and can be observed in operation the Receive interrupt is not occurring.



    Observation / Queries:

     (a) The below mentioned files and libraries have bee provided by TI and the location from where these are being included in our project has been
    also mentioned for your benifit.
       Files :csl_emac.c , csl_mido.c , evminit.c ,
       Src Location : c:\ccstudio_v3.3\ndk_2_0_0\packages\ti\ndk\src\hal\tci6488\eth_c6488

    (b) The following libraries are being included in the project.
    Library names :csl_c6488,csle.lib,hal_eth_c6488,hal_ser_stup,hal_timer_bios, hal_userled_stub.lib,miniPrintf.lib,netctrl.lib,nettool.lib,os.lib,statck.lib

     
       We require the source code of the libraries so we can individually build in the project and it provides us with more scope of debugging. Also any pointer
    to the methodology for compiling these source files into libraries.

    (c)There are registers we are writing to and reading using the user access registers. The user access register takes a phy address and a reg number

          as an argument, The information for  How does the reg number map to which register in the data sheet is not there thus we do not know which are the registers
          we are accessing via mdio user access register.

    (d)The Tx Interrupt is being generated in our code as EMAC_TxServiceCheck is being called from the ISR. We are currently unable to place a breakpoint in the receive ISR

          as it is in a library and EMAC_RxServiceCheck fuction is never called thus the receive ISR is not being hit even when the Ethernet Link has already come up and a ping has been    initialized from a connected station..
        From the function header of  EMAC_RxServiceCheck we could make out that the intialization of the Interrupt and hooking of the ISR to the interrupt is being done separately.
        Can you please point us to it is being done in which library and we want to ensure that the Rx interrupts are initialized correctly.

       Please let me know if  additional inputs are required from our side.

  • Hi venkat rao,

    First, I'd like to mention that you're using a version of the NDK that is very old and there have been many releases plus bug fixes since NDK 2.0.0.  You may want to consider moving to the latest release of NDK 2.20x (specifically 2.20.06.35) which supports DSP/BIOS 5.x.

    Coming back to your issue with NDK 2.0.0, the reason you are not able to set a break point is probably because the NDK 2.0.0 libraries were built for release mode.  You need to build debug versions of the libraries.

    You should have all of the sources available to your NDK 2.0.0 installation.  They are under "ndk_2_0_0\packages\ti\ndk\src".

    However, there is a problem with NDK 2.0.0 in that the build files were not shipped with that release, so this version of the NDK is not easy to rebuild.

    You can update to the latest NDK 2.20x release (NDK 2.20.06.35) to get the latest NDK release that still supports DSP/BIOS and rebuild that.  Or, if you are not comfortable with such a large upgrade jump, you could move to the next release up from what you have which is NDK 2.01.00 (NDK 2.01.00), and this release has the library build support files shipped with it.

    In any case, you can find the downloads for these NDK products here:

    Network Developers Kit (NDK)

    Steve