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.

TMS320F28388D: F28388D - net_lwip example issue

Part Number: TMS320F28388D

Tool/software:

Hallo,

I am new to Ethernet. I took the example net_lwip and modified it to work with my custom board. The example works. The browser shows the website, clicking on the button toggles the LED and ping works also fine.

In the next step, I want to include the code into my own project, but this doesn't work. No matter what I do, it runs into the FaultISR (startup_ccs.c). In the end, I even deleted every file in my project and copied every file from the (modified and working) example into my project. The include paths should be the same. But that does not change the behavior.

If I am right, the FaultISR is called if the custom ISR is not set (isr adress saved in the interrupt register), but the interrupt is activated and triggered. But since the code is exactly the same, I don't understand the difference. And I don't know, chip ISR is not set.

This raises two questions:

- What can be the decisive difference between these projects, expect the code.

- How can I found out which interrupt is calling the FaultISR?

  • Hi Peter,

    Please refer to these two E2Es, they have good explanation

    TM4C1290NCPDT: How to debug a FaultISR(). - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums
    CC2340R5: how to debug the faultISR() - Bluetooth forum - Bluetooth®︎ - TI E2E support forums


    What can be the decisive difference between these projects, expect the code.

    For this, as per my knowledge the memory allocation is the difference. Your code will occupy some piece of memory so you need to allocate accordingly.

    I will also dig into this. please ping here if you have any doubts.

    Regards,
    Narayanarao Puli

  • I found out, the reason why the MCU calls the FaultISR() is the function SysCtl_delay() which I used in my PHY initialization function. It seems like there is no definition of this function. So the issue has nothing to do with the net_lwip example code. When pausing the program, in the Debug tab below the CM core it shows in the first line "FaultISR() at startup_ccs.c:255 0x00213326". The next two lines refer to SysCtl_delay(). A click on it opens a tab with this message:

    "No source available for SysCtl_delay() at C:\Users\...\main.out:{3] 0xfffffff8[4}"

    I can not explain why it works with the example project but not with my self-created project (with the same programm code), especially I used this project with SysCtl_delay() before adding the lwip code. Teh compiler does not throw an error, but with mouseover I got this:

    I get this window in both projects. In sysctl.h there is the function prototype and an asm call. sytl.h is inluded in the file that calls the SysCtl_delay(). In both projects, the file 2838x_flash_lnk_cm_lwip.cmd is used, which defines ".TI.ramfunc".

    In the CFSR register, BFARVALID, STKERR and PRECISERR are set.

    Why can't it call the SysCtl_delay() function?