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.

How to debug Ethernet driver in SYS/BIOS-NDK

Hi,

I cannot figure out how to debug a low-level driver problem somewhere in the bowels of the NDK/Ethernet code.

I am using:

CCS v5.3

TIRTOS 1.01.00.25

XDCTOOLS 3_24_06_63

NDK 2_22_01_14

BIOS 6_34_04_22

StellarisWare 9453e

DK-LM3M9B96 dev kit (DK)

LM3S9B96 custom board (CB)

I use the dev kit to experiment and test new software from TI or 3rd parties.  When it works on the DK, then I transfer it to a custom board which is designed to use the GPIO for a 16-bit EPI interface (to a dual port RAM). 

I have used this configuration with CodeSourcery G++ to test the old StellarisWare libraries using safeRTOS and lwIP and Quantum Leaps QK package with lwIP.  Although I have had reliability issues with both of these configurations, they do work.

Now, I want to explore TIRTOS and NDK to see if they are more reliable for my applications.  I have successfully implemented the gpio interrupt example and a few other simple gpio examples to prove that the compiler/linker paths work properly. 

When I tried the tcpEcho example, I ran into problems.  The example works as promised on the dev kit.  However, when I ported the example to the custom board (CB), the TCP connection was not accepted.  No problem, I would just add a few breakpoints and trace through the initialization.  Wrong! I cannot add breakpoints to the NDK stack.  Even if I could, I cannot trace how the Ethernet driver gets initialized.  With a little hacking at the code I was able to guess that the Rx packet interrupt was not getting processed properly.  I confirmed this with WireShark because I could see the connection request and no response.  OBTW - ping work fine on both boards!

I compared the Ethernet.c file in Stellarisare 9453e with the one I used before and they are identical. 

I tried to trace the initialization, but since the XDC stuff and StellarisWare are in library files, I cannot insert breakpoints.    I need some suggestions about how to debug this mess.  Any ideas?

Thank you.

Bill

 

 

 

  • Bill,

    in TI-RTOS, you're using the EMAC driver, which plugs itself into the NDK. If you're trying to debug the emac driver (ti/drivers/EMAC.c), then breakpoints should work. To put in breakpoints in the NDK itself, you will need to rebuild the NDK with debug symbols enabled.

    You should be able to insert a breakpoint at EMAC_isr and see the interrupts kicking in for the EMAC.

    Additionally, if you are using the instrumented EMAC library, you should be able to see Logs being printed (e.g. "EMAC: <log statements>"). That might also help you to find out what's going on.