----- 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