你好,我跑的sysbios操作系统,在上面也有NDK,但是6657 emif norflash启动的时候,不初始化协议栈,网口,程序就可以启动;初始化协议栈,网口,程序不能启动,这是什么原因呢?
非常感谢
Shine:
这些初始化栈,网口代码在仿真器模式下能正常运行吗?
user5086941:
回复 Shine:
你好,仿真器模式下都没问题,但是emif norflash boot 就不行了,我在初始化协议栈,网口之前点了个灯,上电后,灯亮了,一运行初始化网口,协议栈就死了
user5086941:
回复 Shine:
你好,仿真器模式下都没问题,但是emif norflash boot 就不行了。
用emif norflash boot ,在初始化协议栈,网口之前点个灯,上电后,灯亮了,一运行初始化网口,协议栈就死了,最够定位到NC_Netstart(),一运行这句就死掉了,仿真器下是没有任何问题的。
谢谢解答
Shine:
回复 user5086941:
请看一下是否有把GEL文件中的初始化设置如DDR3, PLL搬到代码中。
如果使用PG1.0版本,需要注意重新配置PLL。Usage Note 9 Minimizing Main PLL Jitter Usage Notehttp://www.ti.com/lit/er/sprz381c/sprz381c.pdf
user5086941:
回复 Shine:
有的,上电后我会在代码中重新配置下的,最够跟踪到NC_NetScheduler()函数中。
当NC_NetSystem函数中的参数的优先级是低时,程序死在了NC_NetScheduler()函数开始处的TaskSetPri()中。
当NC_NetSystem函数中的参数的优先级是高时,程序死在了NC_NetScheduler()函数中信号量获取中semPend()。
这是什么原因呢?
user5086941:
回复 Shine:
你好,我用仿真器在线调试都好着。
用emif norflash启动就不行了。具体见下:
do{rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr );} while( rc > 0 );
NC_NetStart一执行,程序就不知道跑哪去了,继续打印跟踪,
将NC_SystemOpen的参数优先级变高,当执行到NetScheduler(SerialDeviceCount,EtherDeviceCount)时,该函数有一个操作是SemPend( stkEvent.hSemEvent, SEM_FOREVER ),程序执行到这执行不下去了。
将NC_SystemOpen的参数优先级变低,当执行到NetScheduler(SerialDeviceCount,EtherDeviceCount)时,该函数开始出有一个操作是TaskSetPri(TaskSelf(),SchedulerPriority),程序执行到这执行不下去了。