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.

C6424芯片的基于ndk的网口通信调试



使用的是ccs3.3,bios和ndk的版本也应该没有问题。使用现成的6455的网口程序进行了移植,只实现简单的udp传输功能,希望能和电脑通信。应该加载的库文件都加载了,bios中关于ndk的配置也都配置好了,包括hook和prd函数,任务线程对stacktest的调用。程序编译通了之后load到板子的sram上运行,能够成功对板子进行初始化,包括pll等,但是板子上没有i2c,ddr等外设,中断也还没有配置好。初始化没有使用bios的初始化函数,而是在main函数中进行。main函数运行完后,能够成功进入stacktest线程对ndk进行初始化,并且成功调用netstart函数进入udpsend函数,然后在udpsend中配置相关参数,最后使用recvfrom和sendto进行收发。但是recvfrom和sendto均无法正常工作,即无法和电脑正常通信。如果运行recvfrom函数,则会跑飞到sram的地址0x4507e000左右去,sendto在尝试多次发送后也会跑到这个地址去。这个地址里面是i2c read函数,但我并没有用到i2c,即使注释掉这个函数程序依然会跑到这儿去。请问一下这个错误出在哪里?我检查了ndk最底层的对c6424的emac寄存器的配置,都没有问题,只是发送队列寄存器rx0有赋值,而接受的tx0一直没有。而描述符队列明明被赋给了接受寄存器rx0,但最后的标志32位却是0xe4000040。这个问题是否和缺少片上支持库csl有关?是否和硬件中断中对edma四个寄存器的写值有关?或者是因为内存的分配出现了问题?急求。 刚刚开始学习dsp,很多东西都不懂。希望能和大家多多交流,谢谢。qq931400503