cs8900移植问题及解决



移植主要是参考该网页:
[url]http://www.cublog.cn/u2/63560/showart_514147.html[/url]


我的内核是2.6.24.4

以下是我移植过程存在的一些问题:
内核启动信息:
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)                  
Unable to handle kernel paging request at virtual address e000030a             
pgd = c0004000                                                                 
[e000030a] *pgd=00000000                                                       
Internal error: Oops: 805 [#1]                                                 
Modules linked in:                                                             
CPU: 0    Not tainted  (2.6.24.4 #5)                                           
PC is at cs8900_probe+0xdc/0x2c0                                               
LR is at 0xe0000300                                                            
pc : [<c001bfc0>]    lr : [<e0000300>]    psr: a0000013                        
sp : c3c19f10  ip : e000030a  fp : c3c19f30                                    
r10: 00000000  r9 : c0023854  r8 : c3c18000                                    
r7 : c0022320  r6 : 00000002  r5 : c3c63000  r4 : 00000000                     
r3 : e000030a  r2 : 00000000  r1 : c3ddf2a0  r0 : c3ddf2a0                     
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel            
Control: c000717f  Table: 30004000  DAC: 00000017                              
Process swapper (pid: 1, stack limit = 0xc3c18258)                             
Stack: (0xc3c19f10 to 0xc3c1a000)                                              
9f00:                                     c0022320 c3c19f30 c3c63000 00000000  
9f20: c03602c0 c3c19f50 c3c19f34 c01f16b0 c001bef4 c3c19f50 c3c63000 00000000  
9f40: 00000000 c3c19f68 c3c19f54 c01f198c c01f1620 c3c63000 c035d09c c3c19f80  
9f60: c3c19f6c c001c22c c01f1958 00000000 00000000 c3c19ff4 c3c19f84 c0008c38  
9f80: c001c1b4 c3c19f90 00000000 00000000 00000001 c3c19fa0 c003fea0 c003fe10  
9fa0: 00000000 c3c19fb0 c002aee4 c003fe98 00000000 00000000 c0008b58 c00466a8  
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000  
9fe0: 00000000 00000000 00000000 c3c19ff8 c00466a8 c0008b68 00000000 00000000  
Backtrace:                                                                     
[<c001bee4>] (cs8900_probe+0x0/0x2c0) from [<c01f16b0>] (register_netdevice+0xa)
 r6:c03602c0 r5:00000000 r4:c3c63000                                           
[<c01f1610>] (register_netdevice+0x0/0x338) from [<c01f198c>] (register_netdev+)
 r6:00000000 r5:00000000 r4:c3c63000                                           
[<c01f1948>] (register_netdev+0x0/0x54) from [<c001c22c>] (cs8900_init+0x88/0xb)
 r5:c035d09c r4:c3c63000                                                       
[<c001c1a4>] (cs8900_init+0x0/0xb4) from [<c0008c38>] (kernel_init+0xe0/0x29c) 
 r5:00000000 r4:00000000                                                       
[<c0008b58>] (kernel_init+0x0/0x29c) from [<c00466a8>] (do_exit+0x0/0x6d4)     
Code: e28ec00a e35c0201 e1a0300c 328334f6 (e1c340b0)                           
---[ end trace bba2f1a4ae8afd07 ]---                                           
Kernel panic - not syncing: Attempted to kill init!

解决办法:

我在arch\arm\mach-s3c2410\mach-smdk2410.c的smdk2410_iodesc[]中
增加{vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE}

在include\asm\plat-s3c24xx\Common-smdk.h中,增加了:
#define pSMDK2410_ETH_IO                 __phys_to_pfn(0x19000000)
#define vSMDK2410_ETH_IO                0xE0000000
#define SMDK2410_ETH_IRQ                 IRQ_EINT9
然后编译,下载,就好了。

再在文件系统的/etc/init.d/rcS文件里
添加

/sbin/ifconfig eth0 192.168.1.119
/sbin/ifconfig lo 127.0.0.1

这样网络就没有问题了 ping主机也可以ping通了。

你可能感兴趣的:(问题,移植,休闲,cs8900)