今天dm9000的问题终于搞定了,修改太容易了,然而分析定位的这个过程却用了我两周的时间。
问题:
    加载那个现成的dm9000.dll可以通过dhcp正确获得ip地址,但是上网速度非常慢,只能上baidu和google,通过pc去ping也ping不通,只有在刚去打开网页的时候能ping通几次。
分析:
    首先想到是现成的那个dm9000.dll是不对的,于是找到dm9000的源代码去修改,但是经过修改中断号以及io地址后却不能正确获得ip地址。同时也确定了现成的那个dm9000.dll是正确的,于是继续调试kernel下的文件,看看是不是什么地方配置有问题。但是发现所有有关dm9000网络的配置都是正确的,并且串口有enbale了dm9000的中断,但是并没有中断的disable和done,在arminit.c文件中irq的中断处理也没有dm9000的中断产生。在另外一个bsp上加载这个dll可以正常上网,于是决定就用这个bsp,但是当加载完touch之后,dm的前述问题又出现了。经过分析调试,发现当加载有touch时,dm9000的中断不会被触发。到目前为止可以确定dm9000驱动的配置是完全没有问题的。于是去研究touch的驱动代码,发现dm9000所用中断io口[eint20]被touch用为了xmon,问题终于浮出水面了,一个字改。将touch的两个x两个y的io改成[gpgcon的0-3]。编译ok。