[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [microblaze-uclinux] Problems using Intel Phy LXT971A



Hi Alfred,
 
Saw your posting in the microblaze mailing list about your problems with the LXT971 phy.
 
I have a board with the same phy. I don't get all the errors you saw - the only problem is that during the booting phase the LINK LED turns off and a kernel message appears saying "link lost".
 
Seems that in some way the PHY is programmed in such a way that link is lost - not sure how. Have you seen this phenomenon ?
 
Regards,
 
Finn S. Nielsen
Denmark
----- Original Message -----
Sent: Sunday, July 04, 2004 10:45 AM
Subject: [microblaze-uclinux] Problems using Intel Phy LXT971A

Hi to all,
 
since some weeks I try to port microblace uClinux on my little board (38X75mm)
and I like to report here my problems a had and have.
 
My board has nearly the same components as the memec V2mb1000.(FPGA XC2V1000,
2 Memories TH50VSF3681 with total 16 MB Flash and 2 MB SDRAM, a DDR RAM 32MB,
 2 serial port) Main difference: A 66 M HZ Oscillator and
the Ethernet Interface, I use the Intel LXT971A Phy instead of the Broadcom BCM5221A.
 
This change led to a lot of problems. The first boots of uClinux reported
"no Phy found, assuming address 0" and later after ifconfig "no such device".
 
But if I used the phy_test program distributed with the mbvanilla sources all registers
of the phy showed the correct values.
 
With a logic analyser I found that subroutine phyread
in the boot sequence was exactly sending the same request command to the phy as the phy_test program
but during boot the phy did`nt answer. I then saw that the time after reset and the phyread
is ony 54 micro sec. But according to data sheet the LXT971A requires at least 300 micro sec.
to be ready. I then inserted in adapter.c subroutine probe() between reset and phyread the
kern_info "Scan to find Phy". This delay helped and the phyread works.
 
But ifconfig still reported "no such device"! To find out which programs are called I
inserted in the adapter.c subroutines at the beginning a message.
And now ifconfig reported no error! I found that the message at the beginning
of the poll_mii subroutine was causing this. But because the system was very unstable
I played with different delays at the beginning of poll_mii, but there was no real success.
I don't realy understand the whole thing, but it seems to be an interrupt problem
(poll_mii is called by the timer interrupt and is reading the phy status and is not reentrant).
I finally removed poll_mii subroutine completely (I did't enable it in xenet_open)
because it only monitors changes of the ethernet link and now I have a working system.
But this is of course no final solution.
 
Only sometimes ping from microblaze to my host computer crashes with sending continously
the following message: "neigh: timer & !nud_in_timer"
 
/> ping 192.168.1.25
PING 192.168.1.25 (192.168.1.25): 56 data bytes
64 bytes from 192.168.1.25: icmp_seq=0 ttl=128 time=0.0 ms
neigh: timer & !nud_in_timer
neigh: timer & !nud_in_timer
Destroying alive neighbour 81ee80a4
This architecture does not implement dump_stack()
neigh: timer & !nud_in_timer
neigh: timer & !nud_in_timer
..
I have no idea where to look for that.
 
Another problem I have, is that during boot I get the following error message:
..
ttyS1 at 0xffff4000 (irq = 2) is a Microblaze UARTlite
Starting kswapd
kmod: failed to exec /sbin/modprobe -s -k pipefs, errno = 2
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
..
I first thought I made an error in the make menuconfig, but modprobe is enabled and
if I run the same image on the Memec board no error is reported!
Uptil now I found no difference so I don't know
what else could be done.
 
Another problem:
I aplied the patch for module loading and defined gpio as loadable module, but when I try to
load it I get the following:
 
/> insmod xilinx_gpio
Using /lib/moduleattempt to access beyond end of device
1f:08: rw=0, want=414, limit=448
s/2.4.24-uc0/kernel/drivers/char/xilinx_gpio.o
insmod: error reading ELF header: Input/output error
insmod: Could not load the module: Input/output error
pid 32: failed 256
 
On the Memec board its working neither, I get this message:
 
/> insmod xilinx_gpio
Using /lib/modules/2.4.24-uc0/kernel/drivers/char/xilinx_gpio.o
insmod: unresolved symbol misc_deregister
insmod: unresolved symbol kmalloc
insmod: unresolved symbol XAssert
insmod: unresolved symbol XAssertStatus
insmod: unresolved symbol misc_register
insmod: unresolved symbol printk
pid 28: failed 256
 
Thanks in advance for any help!
 
Regards
 
Alfred Gruenewald