bayern 发表于 2009-4-17 01:19:17

添加rtl8019驱动后的问题

按照http://skyeye.wiki.sourceforge.net/uClinux#tocuClinux4中所述添加网卡驱动,在uClinux-dist/linux-2.4.x/driver/net中加入了Rtl8019.c和Rtl8019.h两个文件之后,修改uClinux-dist/linux-2.4.x/driver/net下的Makefile,修改为
ifeq ($(CONFIG_ARCH_ACORN),y)
mod-subdirs   += ../acorn/net
subdir-y      += ../acorn/net
obj-y         += ../acorn/net/acorn-net.o
obj-y         += rtl8019.o(加入的内容)
endif

然后直接make menuconfig,make dep,make
输出信息为:
Your elf file is little endian.
arch: arm
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name at91, mach_init addr 0x8071acc
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
uart_mod:0, desc_in:, desc_out:, converter:
SKYEYE: use arm7100 mmu ops
Loaded ROM   images/romfs.img
exec file "linux-2.4.x/linux"'s format is elf32-little.
load section .init: addr = 0x01000000size = 0x0000a000.
load section .text: addr = 0x0100a000size = 0x000d5d90.
load section .data: addr = 0x010e0000size = 0x00009ce4.
not load section .bss: addr = 0x010e9d00size = 0x000220e0 .
not load section .debug_abbrev: addr = 0x00000000size = 0x0003d570 .
not load section .debug_info: addr = 0x00000000size = 0x0184e129 .
not load section .debug_line: addr = 0x00000000size = 0x002b42c4 .
not load section .debug_pubnames: addr = 0x00000000size = 0x0000bde7 .
not load section .debug_aranges: addr = 0x00000000size = 0x00002450 .
call ARMul_InitSymTable,kernel filename is linux-2.4.x/linux.
start addr is set to 0x01000000 by exec file.
Linux version 2.4.24-uc0 (root@localhost) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #10 Mon Apr 13 10:52:08 CST 2009
Processor: Atmel AT91M40xxx revision 0
Architecture: EB01
On node 0 totalpages: 1024
zone(0): 0 pages.
zone(1): 1024 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 15.82 BogoMIPS
Memory: 4MB = 4MB total
Memory: 2968KB available (855K code, 176K data, 40K init)
Dentry cache hash table entries: 512 (order: 0, 4096 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 1024 (order: 0, 4096 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Atmel USART driver version 0.99
ttyS0 at 0xfffd0000 (irq = 2) is a builtin Atmel APB USART
ttyS1 at 0xfffcc000 (irq = 3) is a builtin Atmel APB USART
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 1400000-146B7FF (RO)
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (romfs filesystem) readonly.
Shell invoked to run file: /etc/rc
Command: hostname GDB-ARMulator
Command: /bin/expand /etc/ramfs.img /dev/ram0
Command: mount -t proc proc /proc
Command: mount -t ext2 /dev/ram0 /var
Command: mkdir /var/tmp
Command: mkdir /var/log
Command: mkdir /var/run
Command: mkdir /var/lock
Command: mkdir /var/empty
Command: cat /etc/motd
Welcome to
          ____ __
         /__| ||_|
    _   _| || | _ _____   ___
   | | | | || || |_ \| | | |\ \/ /
   | |_| | |__| || | | | | |_| |/    \
   |___\____|_||_|_| |_|\____|\_/\_/
   | |
   |_|

GDB/ARMulator support by <[email protected]>
For further information check:
http://www.uclinux.org/

Execution Finished, Exiting

Sash command shell (version 1.1.1)
/> ifconfig eth0 10.0.0.2
SIOCSIFADDR: Unknown error 19
pid 12: failed 256
/> ifconfig eth0 up 10.0.0.2
SIOCGIFFLAGS: Unknown error 19
SIOCSIFADDR: Unknown error 19
pid 13: failed 512
/>

Makefile修改后,是不是要在编译时选一些选项?
在uClinux下 ifconfig eth0 10.0.0.2和ifconfig eth0 up 10.0.0.2的输出结果不一样(结果如上) 提示的两个错误是什么呢?

我用的是uClinux-dist-20040408.tar和arm-elf-tools-20011219.tar
skyeye版本为1.2.6

ksh 发表于 2009-4-17 11:16:11

从你的输出来看,没有 rt8019驱动加载的相关输出信息.所有有可能你的驱动没有被编译到内核中,你可以自己看一下内核的符号表中有没有rtl8019的相关函数,来确定是否编译rtl8019驱动到内核中。

czy0818 发表于 2009-4-17 14:13:16

顺便请教下ksh,
skyeye版本0.9.2
s3c44b0+rtl8019+ucos+lwip的情况下,配置文件如下:
cpu: arm7tdmi
mach: s3c44b0
mem_bank: map=M, type=RW,addr=0x00000000, size=0x00001000
mem_bank: map=M, type=RW, addr=0x0c000000, size=0x00800000

mem_bank: map=I, type=RW, addr=0x02000000, size=0x00800000
mem_bank: map=I, type=RW, addr=0x04000000, size=0x00800000
mem_bank: map=I, type=RW, addr=0x06000000, size=0x00800000
mem_bank: map=I, type=RW, addr=0x08000000, size=0x00800000
mem_bank: map=I, type=RW, addr=0x0e000000, size=0x00800000
mem_bank: map=I, type=RW, addr=0x01c00000, size=0x00400000
net: state=on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1

网卡的基址和中断号是多少?

uclinux驱动文件里有三种情况:
#ifdef CONFIG_ARCH_S3C44B0X
        #ifdef RTL8019_OP_16
                #define BaseAddr        0x6000000
        #elif defined(RTL8019_OP_8_EXTRA)
                #define BaseAddr        0x3000000
        #else /* RTL8019_OP_8 */
                #define BaseAddr        0x8000000
        #endif
        #define IRQ_NUM        22
#else /* for AT91 or others */
        #define BaseAddr        0xfffa0000
        #define IRQ_NUM        16
#endif

我尝试在初始化网卡的函数ne2k_init里打印mac地址,结果不是预期的0:4:3:2:1:f。另外也尝试在初始化网卡后do_irq函数里打印中断号,结果没有来自网卡的中断。。。

我是用ucosii4skyeye里适合at91的ucos+lwip的代码,再加上s3c44b0的启动代码,ucos能够运行。添加lwip的代码之后,只是修改了网卡的基址。

bayern 发表于 2009-4-18 18:44:30

回复 2# ksh 的帖子

和obj-y         += rtl8019.o(加入的内容)这一句添加的位置有没有关系呢??
页: [1]
查看完整版本: 添加rtl8019驱动后的问题