|||
成功通过控制RTL8019AS发送100字节的数据
毕业设计今天终于有了突破性的进展,成功通过ARM7控制RTL8019AS发送100字节的数据(加上目的MAC打、源MAC、type,共114字节),并且在PC上使用软件"Wireshark"捕获了这个数据包,完全正确,激动哉!
开始时搞了两三天,一直没有成功,读出的内容根本不对,看来看去就是检查不出哪里出错了!于是又去查看了下RTL8019AS的RAM分配图,如图(8),突发发现了这个错误,原来设置远程DMA写和读的时候把"远程起始地址寄存器(RSAR0,1)"设置成了"0x40(即RSAR0=0x40,RSAR1=0x00)",而实际应该设置为0x4000(即RSAR0=0x00,RSAR1=0x40)",把页数和字节数搞混了。当初远程DMA写命令写114个数据完成后,也检查了"当前远程DMA地址寄存器"(CRDA0和CRDA1),发现CRDA0=0xb2和CRDA1=0x00,也以为是正确的(应为0xb2-0x40=114),而实际应为CRDA0=0x72和CRDA1=0x40,114个数据自占用一页空间,高位CRDA1是不变的,仍旧为初始的0x40。改过来以后就正确啦!远程DMA写,再远程DMA读,两者的数据一致。用软件"Wireshark"检测收到的数据,如图(1),图(2),图(3)。
图(1) 高亮为以太网包中的'目的MAC'
图(2) 高亮为以太网包中的'源MAC'
图(3) 高亮为以太网包中的'100字节数据'
图片如无法显示,可以"鼠标右键"->"显示图片"