用Ax88796实现SA1110的以太网接口
时,有其自身的一套机制:
在对奇地址进行8位数据宽度的写操作时(如写19H),地址线A0送出1,而数据总线D[31:24]、D[23:16]、D[15:8]、D[7:0]上同时送出该8位数据(即送出19191919H);在对奇地址进行8位数据宽度的读操作时,地址线A0送出1,数据总线D[15:8]上的数据作为有效数据被读入SA1110的内部寄存器,而其余数据线上的数据被丢弃。
由此可见,当SA1110对Ax88796的奇地址寄存器进行8位数据宽度的读操作时,Ax88796在数据总线D[7:0]上送出的有效数据,被SA1110丢弃了;而数据总线D[15:8]上的值00H被误认作有效数据读入了SA1110。这就解释了为什么对Ax88796奇地址寄存器可以正确写入却无法正确读取的问题了。
综合上面的分析,在实际中采用的接口电路如图2所示。
Ax88796的CPU[0]上拉,CPU[1]下拉,设置它工作在186总线模式下。SA1110的地址线A0经反向器后接至Ax88796的引脚,用来确保SA1110对Ax88796的控制寄存器的访问都为8位数据宽度。实验证明,这并不影响Ax88796作RemoteDMA时与SA1110之间的16位数据宽度传输。
SA1110的GPIOx引脚可以复用作中断输入,因此用来连接Ax88796的中断输出IREQ。
3软件方面
由于Ax88796是NE2000兼容芯片,所以Linuxkernel中的驱动ne.c、8390.c只需作较少的改动就可以用来驱动SA1110平台上的Ax88796:
将ne.c中的侦测端口地址列表netcard_portlist[]的初始赋值改为kernel中为nCSx所映射的虚拟地址。
将ne.c里的中断侦测程序段去掉,分配dev->irq=IRQ_GPIOx;而在8390.c中的每次enable_irq函数前,将GPIOx设置为上升沿触发。
由于Ax88796具有独立的端口被用来支持对EEPROM的访问,因此ne.c中访问EEPROM所采取的RemoteDMA方式应改写为对端口的访问方式。
另外值得一提的是,SA1110的片选输出nCSx与读写信号输出nOE、nWE之间的时序关系可以由对应的SA1110寄存器MSCx中的控制位来调节。一个合适的取值可以大大提高SA1110与Ax88796之间的数据传输速度。
《用Ax88796实现SA1110的以太网接口(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/165746.html
在对奇地址进行8位数据宽度的写操作时(如写19H),地址线A0送出1,而数据总线D[31:24]、D[23:16]、D[15:8]、D[7:0]上同时送出该8位数据(即送出19191919H);在对奇地址进行8位数据宽度的读操作时,地址线A0送出1,数据总线D[15:8]上的数据作为有效数据被读入SA1110的内部寄存器,而其余数据线上的数据被丢弃。
由此可见,当SA1110对Ax88796的奇地址寄存器进行8位数据宽度的读操作时,Ax88796在数据总线D[7:0]上送出的有效数据,被SA1110丢弃了;而数据总线D[15:8]上的值00H被误认作有效数据读入了SA1110。这就解释了为什么对Ax88796奇地址寄存器可以正确写入却无法正确读取的问题了。
综合上面的分析,在实际中采用的接口电路如图2所示。
Ax88796的CPU[0]上拉,CPU[1]下拉,设置它工作在186总线模式下。SA1110的地址线A0经反向器后接至Ax88796的引脚,用来确保SA1110对Ax88796的控制寄存器的访问都为8位数据宽度。实验证明,这并不影响Ax88796作RemoteDMA时与SA1110之间的16位数据宽度传输。
SA1110的GPIOx引脚可以复用作中断输入,因此用来连接Ax88796的中断输出IREQ。
3软件方面
由于Ax88796是NE2000兼容芯片,所以Linuxkernel中的驱动ne.c、8390.c只需作较少的改动就可以用来驱动SA1110平台上的Ax88796:
将ne.c中的侦测端口地址列表netcard_portlist[]的初始赋值改为kernel中为nCSx所映射的虚拟地址。
将ne.c里的中断侦测程序段去掉,分配dev->irq=IRQ_GPIOx;而在8390.c中的每次enable_irq函数前,将GPIOx设置为上升沿触发。
由于Ax88796具有独立的端口被用来支持对EEPROM的访问,因此ne.c中访问EEPROM所采取的RemoteDMA方式应改写为对端口的访问方式。
另外值得一提的是,SA1110的片选输出nCSx与读写信号输出nOE、nWE之间的时序关系可以由对应的SA1110寄存器MSCx中的控制位来调节。一个合适的取值可以大大提高SA1110与Ax88796之间的数据传输速度。
《用Ax88796实现SA1110的以太网接口(第2页)》