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