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 EthernetIP example ping fails

Other Parts Discussed in Thread: SYSBIOS, AM3359

Hi,

I hope this is the right forum for my issue..
I’m working with AM3359 on an own developed board using CCSv6 and XDS100v2 debug probe. My Phys are connected to PRU-ICSS and I try to run the ethernetip_example, modified as a standalone switch from am335x_sysbios_ind_sdk_01.01.01.01. I have also adapted the mux configuration in appl_cnfg.h file to my specific hardware.
When I try to ping my board with windows command line, it fails. Now I want to check whether everything gets initialized correctly. Where should I start first to set breakpoints in code and how can I test for example that the packets were being received?

Best regards,
Luca

  • I will ask the ISDK team to comment here.
  • Luca,
    I think you need to get started at low level c:\TI\am335x_sysbios_ind_sdk_01.01.01.01\os_drivers\source\ICSS\icss_iSwitchDrv.c
    RX ISR: RxInterruptHandler()
    RX task: RxTask()
    TX: TxPacket()

    Set breakpoints inside this functions and step from there.

    Generally I would also recommend to step through full init sequence at least once to understand the flow.

    Regards,
  • Frank,
    Thank you for your fast reply!
    I have just set breakpoints as you recommended and started the ping from command line. The program did not stop. Is it correct that I have initialization problems?
    Now I will step through the init sequence and check for problems.

    Regards,
    Luca
  • Yes, you have a problem... :-)
    But based on current info I can't say where.
    - PRU firmware loaded and running?
    - all required ISRs enabled?
    - does your phy detect a link and provides data on RX MII interface?
    - TI NDK usually sends an ARP packet as first thing. So you should enter a TX function in the NIMU driver level if NDK is initialized correctly.
    - ....

    regards,
  • LoadPruFirmware() succeeded and the phy also provides data.
    I have set a breakpoint in the EmacSend() function. EmacSend() returns 0, but the function is called only once.
    How/where can I check whether PRU firmware is running and the ISRs are enabled?

    Regards,
    Luca
  • Luca,
    can you single step EmacSend() to see if it goes all the way to low level driver?

    For PRU running just use CCS target connect for the two PRUs. Once they are started by ARM they should be in running state.

    For BIOS states (tasks, HWI, etc) I can only recommend ROV tool. A great way to determine BIOS config and states.

    regards,
  • Frank,
    the PRUs are running.
    In the EmacSend() function, HwPktTxNext() does not get called.
    An other error occurs by using the variables view and the ROV tool. In variables view "memory map prevented reading.." and in ROV tool I get the following message:
    "Received exception from ROV server: Target memory read failed at address: 0x9ffa1904, length: 36. This read is at a VALID address according to the application's section map, but the DebugServer memory read failed." It seems like the problem is related to XDS100v2 debug probe. Do you have any idea how to solve this?
    Thank you very much for your support!

    Regards,
    Luca
  • Luca,

    so TxFree is not set to 1? This is usually done first inside HwPktOpen(). So your NDK is not started appropriately.

    Can't comment on ROV right now. I am using XDS560 but thought ROV is also supported on XDS100v2. More a question for CCS forum...

    Maybe your project setup has issues. I assume we need a webex to look at this. Send me an e-mail please with meeting time proposal.
    If you run the webex from your dev PC we can have a look at this.

    Regards,