09 2009 档案

困扰我一周的问题应该是有解了
摘要:先讲讲问题所在调用eth_send函数,具体send是下面这段代码 for (i = 0; i < tmplen; i++) DM9000_outw(((u16 *) data_ptr)[i], DM9000_DATA);每次我send 08 06 00 01的时候,抓包工具就会抓到08 08 06 06 00 00 01 01这样的数据也就是每个字节重复了一次从没想过这条简单地给u16* 赋值的语句会有问题,倒是在其他方面找了几天,没有结果好在今天想到要不看看汇编代码有啥区别,google一下通过给gcc加-S 选项可以得到汇编结果说干就干 终于发现 OK的语句 和不行的语句差别是,一 阅读全文

posted @ 2009-09-08 23:58 GaryGaryGary 阅读(170) 评论(0) 推荐(0)

在bootloader里驱动DM9000
摘要:原以为很简单的事,自从调通简单的bootloader后,已经实现跳转到c程序,我想控制起来应该就简单多了哪知道,费了4 5天了就是认不到DM9000,从怀疑地址不是0x20000300, 怀疑时钟频率不对,怀疑memory control设置的有问题。哪想到最后却是因为c语言里 u16* 和 u8* 对寄存器赋值的区别,造成没有读到值,其实参数都设对了,不过折腾也好,倒是把时钟频率的设置好好学了一遍。接下来就来说说我们知道每个CPU都需要一个时钟输入,而主板上一般就只有一个固定频率的晶振提供时钟,比如12MHz,而对于CPU需要的200M,400Mhz,就需要针对原始频率不断分频来得到,而相对 阅读全文

posted @ 2009-09-05 23:15 GaryGaryGary 阅读(143) 评论(0) 推荐(0)

导航