调试程序为ti的helloWorld网络例程,使用了TI提供的网络协议库。整个程序通过加载调试没有任何问题,但是烧写到flash后启动,网络就不通了。
下面粘贴部分关键代码,然后详述现象。
(1)
do
{
rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr );
} while( rc > 0 );
(2)
static void NetworkOpen()
{
// Create our local server
hHello = DaemonNew( SOCK_DGRAM, 0, 7, dtask_udp_hello,
OS_TASKPRINORM, OS_TASKSTKNORM, 0, 1 );
}
一、在线调试毫无问题,ping成功并且收发无异常。
二、烧写到FLASH后自启动,程序执行逻辑无异常(在每行代码后插装代码,往指定存储区写约定值,在上电自启动后,链接主核,查看指定内存中是否是约定数,根据该方法确定了整个程序在执行到DaemonNew函数之前是正常执行的),当执行到DaemonNew函数后,没有跳出DaemonNew函数(与在线调试一致),但是网络却是不通。
三、平台:TMS320C6678 NORflash 1000M网络芯片。
四、在线调试和烧写自启动都是核0执行。
五、对网络接口及芯片的初始化都有判断对应状态寄存器,如果对应配置寄存器写入失败或者写入错误,将跳出程序,执行不到DaemonNew函数这一步。
麻烦大神提供思路,谢谢,卡这儿一周了,资料也看了不少,实在想不明白了。 |