TI NDK双网卡驱动?

[复制链接]
2075|6
手机看帖
扫描二维码
随时随地手机跟帖
Toddhan|  楼主 | 2012-12-27 15:15 | 显示全部楼层 |阅读模式
请教研究过TI NDK的高手:
自己做的板子,DSP型号为DM642,外部接两路LAN91C111.
现在这两路单独运行都正常,ping通,收发数都没问题,但是不知道两路同时工作怎么做?

1、NDK可以支持两路外部MAC同时工作吗?能否支持两个IP同时跑呢?如何修改NDK源码?

2、我的卡需要插到PCI插槽中,经过测试发现,PCI中断都正常,但是PC机向DSP内存读取和写入数据都不正确。可以排除硬件问题,因为我自己编个收发PCI中断的CSL程序,PC机读取和写入都正常。一旦换上NDK,PC机读取和写入就不正常了。也不是一堆乱数,而是PC机上总是显示DSP内存中修改之前的值。比如上电后,0x81000018地址内容为0x5ec2,我的NDK在接收到PC发来的PCI中断后,要将这个内存内容改为0x4f4b。通过CCS的view memory查看,NDK运行后,内存中确实改为4F4B了,但是PC上读取出来的是写入之前的5ec2,再循环这个过程写4f4b,不管多少次,PC总是读出来5ec2.
想来想去,怀疑跟NDK中打开L2 CAHCHE模式有关。但是我从view memory中看到这个地址确实被改为4f4b了,而且用CSL版本的程序,一切的都是正常的。。。是不是跟NDK的内存管理有关呢?我的DSPBIOS的MEM设置中,没有分配0x81000000以后的空间,就是留出来给PC机写数据的。

谁来帮我解答一下这些疑惑呀。感激不尽。


相关帖子

Toddhan|  楼主 | 2012-12-27 18:02 | 显示全部楼层
没人回答吗?

使用特权

评论回复
jlass| | 2012-12-28 08:45 | 显示全部楼层
NDK没用过,帮顶。

使用特权

评论回复
Toddhan|  楼主 | 2012-12-28 11:06 | 显示全部楼层
jlass 发表于 2012-12-28 08:45
NDK没用过,帮顶。

thx! 没招了。各路大神赶紧支招啊。。

使用特权

评论回复
Toddhan|  楼主 | 2012-12-28 15:55 | 显示全部楼层
PCI数据读取和写入错误问题,确实是L2 CACHE的问题。把DSPBIOS中的L2CACHE设置去掉。把dm642init.c文件中的L2CACHE设置去掉。这样读取PCI数据就没问题了。但是程序变得很慢。慢了不止一倍两倍呀。。。里面的delay函数挨个减小。。尤其是init函数中的FPGA配置函数,原来是秒配的,瞬间配完,现在要等上15秒左右。。。
接下来尝试在init中打开L2CAHCE,配置FPGA完成后再关闭L2CACHE。后面程序中需要大量传输的再打开L2CACHE。或者反过来,默认情况L2都打开,只有在读PCI数据时,将L2关闭。
这只是个想法,不知道能不能实现,关闭L2时,缓存里面的数据怎么处理?直接丢掉还是先有效保存?这些还需要尝试。。。

继续中。。。

使用特权

评论回复
Toddhan|  楼主 | 2012-12-30 16:58 | 显示全部楼层
DMA642 L2 CACHE 设置

    CACHE_clean(CACHE_L2ALL, 0, 0);
    CACHE_setL2Mode(CACHE_128KCACHE);
    CACHE_enableCaching(CACHE_EMIFA_CE00);
    //CACHE_enableCaching(CACHE_EMIFA_CE01);

PC机通过PCI读取DSP内存的0x81000000及以后的地址,将CE01的使能去掉,PC机访问DSP内存数据正常了。但对这个空间所有的访问都去掉了L2模式,会比较慢。索性在DSPBIOS内存分配选项中不再分配CE01这个空间,保证程序部分.text不会分配到这个区域,只有读写数据时才会用到这个内存块,也就不影响其他代码的运行了。实验证明,程序运行速度基本没有影响,NDK运行正常,PC读取内存内容页正常了。

下面再试试将L2都打开,每次写完L2之后就刷新一下,保证数据都写到了该内存地址。
CACHE_clean
CACHE_flush

NDK两路的问题还没有解决。有知道的帮助一下呀。。

使用特权

评论回复
token| | 2013-1-2 12:31 | 显示全部楼层
年前刚好了测试双网口
内容跟你不一样
用的是UIP精简,代码只有几百行
MAC\ARP\IP\UDP都是公用的
分时并发
两个口能同时工作

使用特权

评论回复
Toddhan|  楼主 | 2013-1-17 10:44 | 显示全部楼层
token 发表于 2013-1-2 12:31
年前刚好了测试双网口
内容跟你不一样
用的是UIP精简,代码只有几百行

token,你好!
请问你用的CPU和MAC芯片分别是什么?是DSP+UIP方案吗?如果是那就太好了!
可以请教一下大牛了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

50

帖子

1

粉丝