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.

omapl138的starterware的lwip例程移植到自己的工程出错



用omapl138的C6748实现starterware中的lwip例程enet_lwip,现在开发板上已调通,电脑可以ping通板子,但把例程中的函数添加进我自己的工程中,仍然在开发板上跑,就不能ping通,本来以为是两个工程内存分配不同(例程都分配在DDR中,我自己的工程分配在DSP内部RAM中)造成的,但我把例程从DDR中放到内部RAM中也可以ping通,后来设断点发现自己的工程进不了EMAC中断,而例程可以,是否是我在添加库文件或include文件时操作有误造成的?顺便附上cmd文件和中断处理函数

  • 查看一下各种中断标志寄存器,看看中断有无发生。

    再检查一下是不是你的程序也对EMAC或者中断什么的做了配置?

  • 单步调试了一下,发现程序根本就没有运行完TCP初始化,一直卡在netif.c的netif_set_ipaddr函数的一个循环中,如下图,一直卡在while (pcb != NULL) 处,查看pcb的值发现不是全0,而在运行例程的时候pcb值是全0,可以运行完初始化。我已经把自己工程中的main函数写的和例程一样了,还是有问题,说明应该是工程配置上的问题。

    还有一个问题是在编译自己工程的时候报警告

    warning #10373-D: library
    "C:/ti/OMAPL138_StarterWare_1_10_04_01/binary/c674x/cgt_ccs/omapl138/evmOMAP
    L138/platform/Debug/platform.lib" contains ELF object files which are
    incompatible with the TI-COFF output file. Ensure you are using the proper
    library.

    我的工程要输出COFF,而例程中是ELF,我查到starterware中的库函数默认是ELF,ELF和COFF有什么区别?我要在哪找到默认是COFF的库函数,或者怎么让我的工程输出ELF(我在工程配置GENERAL中把COFF改为ELF后直接报错,再修改回去也没用,只能新建工程)?

    最后附上我使用的例程和自己的工程(enet_lwip_demo是例程,Pj_TCP_2是我自己的工程),希望能得到帮助!

    problem.rar
  • 我现在也遇到这个问题,请问楼主这个问题解决了吗??