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