기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세여 ~. 지난번에 이와 같은 디바이스 드라이버에 대해서 커널 패닉이 있었는데... 아직도 못잡고 있네여 에휴 ㅠ.ㅠ

이와 관련 해서 몇가지 여쭈어보고자 합니다.

1. SMC91111과 SMC91c113의 데이터 시트를 분석해 봤는데, 버스 엑세스가 16bit 방식에서 32bit 방식이 추가된거 말고는 없더군여. 해서 고현철님께서 제공하신 SMC91C113의 소스를 바탕으로 32bit data bus 방식으로 사용하게끔 소스를 수정했습니다. 물론 BWSON의 설정 또한 UB/LB를 사용하고, no wait, 32bit 방식으로 수정을 하였고, BANKCON 부분 또한 HCLK이 100Mhz일 때 각각을 맞추었습다. 아래가 제가 펌웨어로 테스트 했을 때, 설정 방식이였습니다.
HCLK 기준 (at 100MHz)
   Tacs : Address set-up time before nGCSn
           0x0 : 0 clock
   Tcos : Chip selection set-up time before nOE
           0x1 : 1 clock
   Tacc : Access cycle
           0x2 : 3 clock
   Tcoh : Chip selection hold time after nOE
           0x0 : 0 clock
   Tcah : Address hold time after nGCSn
           0x0 : 0 clock
   Tacp : Page mode access cycle @ Page mode
           0x0 : 2 clock
    PMC : Page Mode Configuration
           0x0 : normal (1 data)
위와 같은 설정을 다 맞추고 smc91x.h의 s3c2440의 세팅에서 ioctl 함수 부분을 8/16/32bit에 맞게 다 수정하고 올렸더니...커널패닉..ㅡㅡ;;; 정말 이걸로 한달 정도 고생하는거 같네여...제가 가지고 있는 리눅스 책 다 디집어 봤지만, 내공이 부족한듯합니다. 부디 따가운 조언 부탁드립니다.

2. 혹시 아래와 같이 nfs 부팅을 할 때, 정말 몰라서 묻는건데...저 방법이 가장 좋은 방법인가여? 램디스크 부터 해야할지...네트워크 디바이스 드라이버를 초기화하지 않고 다른 방법은 없는건가여? 개발 순서를 어떻게 잡아야할지 모르겠습니다....저도 팽귄을 띄우고 싶습니다..ㅡㅡ;; 고수님들의 개발 순서를 알려주셨으면 좋겠습다.

3. 이 글을 읽어주셔서 고맙습니다...잘되면 밥이라도 쏠께여, 술도 좋고..;;; 부디 읽어주셨으면, 아무거라도 좋으니 질책 부탁드리겠습니다. 아래는 제 커널 패닉 메시지 입니다.

******************************************************
U-Boot 1.1.2 (May  1 2007 - 12:31:39)
                                                                                                
U-Boot code: 33C00000 -> 33CA3874  BSS: -> 33CD8260
RAM Configuration:
Bank #0: 30000000 64 MB
Flash: 32 MB
NAND:*** Warning - bad CRC, using default environment
                                                                                                
In:    serial
Out:   serial
Err:   serial
clk = 98784000
pixclk 25200000, divisor is 3
CLKVAL = 0
Hit any key to stop autoboot:  0
Using MAC Address 08:00:3E:26:0A:5B
TFTP from server 128.134.63.188; our IP address is 128.134.63.100
Filename 'vapk'.
Load address: 0x32000000
Loading: #################################################################
         #################################################################
         #########################################
done
Bytes transferred = 872742 (d5126 hex)
## Booting image at 32000000 ...
   Image Name:   Visual Agent Platform Linux(ARM)
   Created:      2007-05-18   7:32:38 UTC
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    872678 Bytes = 852.2 kB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
                                                                                                
Starting kernel ...
                                                                                                
Linux version 2.4.20_elfin (root@arm408) (gcc version 3.3.4) #191 2007. 05. 18. (湲? 16:21:45 KTCPU: ARM/CIRRUS Arm920Tid(wb) revision 0
Machine: Visual Agent Platform(S3C2440A)-2007/5/01
<4>Ignoring unrecognised tag 0x00000000
On node 0 totalpages: 16128
zone(0): 16128 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/nfs rw nfsroot=128.134.63.188:/nfsmount/rootfs-vap ip=128.134.63b<7>Relocating machine vectors to 0xffff0000
Console: colour dummy device 80x30
Linux version 2.4.20_elfin (root@arm408) (gcc version 3.3.4) #191 2007. 05. 18. (湲? 16:21:45 KTCPU: ARM/CIRRUS Arm920Tid(wb) revision 0
Machine: Visual Agent Platform(S3C2440A)-2007/5/01
Ignoring unrecognised tag 0x00000000
On node 0 totalpages: 16128
zone(0): 16128 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/nfs rw nfsroot=128.134.63.188:/nfsmount/rootfs-vap ip=128.134.63bConsole: colour dummy device 80x30
Calibrating delay loop... Calibrating delay loop... 147.86 BogoMIPS
147.86 BogoMIPS
Use CONFIG_INSTANT_ON_LPJ=739328 for Instant On.
Use CONFIG_INSTANT_ON_LPJ=739328 for Instant On.
<6>Memory:Memory: 63MB 63MB = 63MB total
= 63MB total
<5>Memory: 61684KB available (1326K code, 386K data, 376K init)
Memory: 61684KB available (1326K code, 386K data, 376K init)
<6>Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
<6>Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
POSIX conformance testing by UNIFIX
POSIX conformance testing by UNIFIX
smp_processor_id() = 0
smp_processor_id() = 0
<6>Linux NET4.0 for Linux 2.4
Linux NET4.0 for Linux 2.4
<6>Based upon Swansea University Computer Society NET3.039
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Initializing RT netlink socket
<6>CPU clock = 296.352000 Mhz,CPU clock = 296.352000 Mhz, HCLK = 98.784000 Mhz, PCLK = 49.39200z HCLK = 98.784000 Mhz, PCLK = 49.392000 Mhz
PWM-Timers Management Module Loaded.
PWM-Timers Management Module Loaded.
Disabling the Out Of Memory Killer
Disabling the Out Of Memory Killer
Starting kswapd
Starting kswapd
<5>VFS: Diskquotas version dquot_6.5.0 initialized
VFS: Diskquotas version dquot_6.5.0 initialized
<6>devfs: v1.12c (20020818) Richard Gooch ([email protected])
devfs: v1.12c (20020818) Richard Gooch ([email protected])
<6>devfs: boot_options: 0x1
devfs: boot_options: 0x1
<6>i2c-core.o: i2c core module version 2.6.2 (20011118)
i2c-core.o: i2c core module version 2.6.2 (20011118)
<6>i2c-dev.o: i2c /dev entries driver module version 2.6.2 (20011118)
i2c-dev.o: i2c /dev entries driver module version 2.6.2 (20011118)
<6>i2c-proc.o version 2.6.2 (20011118)
i2c-proc.o version 2.6.2 (20011118)
Console: switching Console: switching to colour frame buffer device 80x60
to colour frame buffer device 80x60
Installed S3C2440 frame buffer #0
Installed S3C2440 frame buffer #0
pty: 2048 Unix98 ptys configured
pty: 2048 Unix98 ptys configured
s3c2440-ts initialized
s3c2440-ts initialized
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
<6>loop: loaded (max 8 devices)
loop: loaded (max 8 devices)
LAN91x: smc_init
LAN91x: smc_init
smc_init 1
smc_init 1
smc_init 2
smc_init 2
smc_init 3
smc_init 3
LAN91x: smc_probe
LAN91x: smc_probe
LAN91x: bank signature probe returned 0x1880
LAN91x: bank signature probe returned 0x1880
smc_init 4
smc_init 4
LAN91x: not found. ret=-19
LAN91x: not found. ret=-19
<1>Unable to handle kernel NULL pointer dereference at virtual address 00000000
Unable to handle kernel NULL pointer dereference at virtual address 00000000
<1>pgd = c0004000
pgd = c0004000
<1>*pgd = 00000000*pgd = 00000000, *pmd = 00000000, *pmd = 00000000
                                                                                                
Internal error: Oops: ffffffff
Internal error: Oops: ffffffff
CPU: 0
CPU: 0
pc : [<c008eb04>]    lr : [<c008eae0>]    Not tainted
sp : c02f5f48  ip : c02f5f64  fp : c02f5f60
pc : [<c008eb04>]    lr : [<c008eae0>]    Not tainted
sp : c02f5f48  ip : c02f5f64  fp : c02f5f60
r10: 300170d0  r9 : 41129200  r8 : c3ec5360
r10: 300170d0  r9 : 41129200  r8 : c3ec5360
r7 : c3ec5360  r6 : c3ec5360  r5 : c02fd38c  r4 : c02134c0
r7 : c3ec5360  r6 : c3ec5360  r5 : c02fd38c  r4 : c02134c0
r3 : 00000000  r2 : c3ec5000  r1 : 00000200  r0 : 00000001
r3 : 00000000  r2 : c3ec5000  r1 : 00000200  r0 : 00000001
Flags: nzCvFlags: nzCv  IRQs off  FIQs on  Mode SVC_32  Segment kernel
  IRQs off  FIQs on  Mode SVC_32  Segment kernel
Control: C000317F  Table: 30004000  DAC: 0000001D
Control: C000317F  Table: 30004000  DAC: 0000001D
Process swapper (pid: 1, stack limit = 0xc02f4380)
Process swapper (pid: 1, stack limit = 0xc02f4380)
Stack: (0xc02f5f48 to 0xc02f6000)
Stack: (0xc02f5f48 to 0xc02f6000)
5f40: 5f40:                                     00000200 00000200 c02fd38c c02fd38c c02134c0 c0
                                                                                                
5f60: 5f60: c008eac8 c008eac8 00000001 00000001 c3ec5360 c3ec5360 008ec9dc 008ec9dc c01d9474 c0
                                                                                                
5f80: 5f80: c008ed84 c008ed84 c008f5cc c008f5cc c020a7f8 c020a7f8 c01d9468 c01d9468 ffffffed ff
                                                                                                
5fa0: 5fa0: c02f5fac c02f5fac c0011ad0 c0011ad0 c008eccc c008eccc c00654bc c00654bc c01d9468 c0
                                                                                                
5fc0: 5fc0: c02f5fcc c02f5fcc c00087c8 c00087c8 c001199c c001199c 00000000 00000000 c02f5ff4 c0
                                                                                                
5fe0: 5fe0: c00660e0 c00660e0 00000000 00000000 00000000 00000000 c02f5ff8 c02f5ff8 c00699e0 c0
                                                                                                
Backtrace:
Backtrace:
Function entered at [<c008eab8>] from [<c008f718>]
Function entered at [<c008eab8>] from [<c008f718>]
r6 = C02134C0  r6 = C02134C0  r5 = C02FD38C  r5 = C02FD38C  r4 = 00000200  r4 = 00000200
                                                                                                
Function entered at [<c008f5bc>] from [<c008ed84>]
Function entered at [<c008f5bc>] from [<c008ed84>]
r8 = A0000013  r8 = A0000013  r7 = C01D9474  r7 = C01D9474  r6 = 008EC9DC  r6 = 008EC9DC  r5 =0 r5 = C3EC5360
r4 = 00000001  r4 = 00000001
                                                                                                
Function entered at [<c008ecbc>] from [<c0011ad0>]
Function entered at [<c008ecbc>] from [<c0011ad0>]
r8 = C01BF61C  r8 = C01BF61C  r7 = C020A7F8  r7 = C020A7F8  r6 = FFFFFFED  r6 = FFFFFFED  r5 =8 r5 = C01D9468
r4 = C020A7F8  r4 = C020A7F8
                                                                                                
Function entered at [<c001198c>] from [<c00087c8>]
Function entered at [<c001198c>] from [<c00087c8>]
r7 = C01D0084  r7 = C01D0084  r6 = C020A688  r6 = C020A688  r5 = C01D9468  r5 = C01D9468  r4 =C r4 = C00654BC
Function entered at [<c00087b0>] from [<c00660f4>]
Function entered at [<c00087b0>] from [<c00660f4>]
r4 = 00000000  r4 = 00000000
                                                                                                
Function entered at [<c00660e0>] from [<c00699e0>]
Function entered at [<c00660e0>] from [<c00699e0>]
r4 = 00000000  r4 = 00000000
                                                                                                
Code: Code: e595200c e595200c e0232390 e0232390 e1560003 e1560003 13a03000 13a03000 (15833000)
                                                                                                
<0>Kernel panic: Attempted to kill init!
Kernel panic: Attempted to kill init!

*********** 행복이 가득하시길... ****************************

고현철

2007.05.20 07:06:37
*.187.46.99

91c111 소스를 가지고, 32비트로만 세팅해서 사용하면 될겁니다.

network를 테스트할 경우는

1. ramdisk 사용해서 드라이버를 나중에 올린다.
2. NFS로 직접 테스트해본다...

2번의 경우는 한번에 잡는 케이스인데, 보통은 1번부터 하는겁니다.

hw를 32비트로 하신 모양이네요. 91c111의 문제는 비트수보다는
내부 버퍼의 양의 문제인듯 싶습니다.

system.map 파일에서 LR 레지스터에 해당하는 번지를 찾으신 후
어느 함수에서 crash가 났는지 파악하시기 바랍니다.

김현기

2007.05.22 23:26:44
*.134.63.187

감사합니다 ~ 고현철님...매번...제가 밥한번 사드리겠습니다..^^

김현기

2007.05.22 23:31:15
*.134.63.187

살펴보니 kmem_extra_free_check 이 심볼 근처에서 에러가 난듯 하네여...다시한번 살펴보도록 하겠습니다...그리고 한가지 더 만약 ramdisk를 사용해서 드라이버를 나중에 올린다고 말씀하셨는데 이 때 사용하는 ramdisk는 aesop에 있는것을 그대로 사용해도 될런지여? 하드웨어에 독립적인건가여? 아님....

김현기

2007.05.23 03:43:13
*.134.63.187

현재까지 진행내용입니다...

SMC 91111(smc91x.c)의 부분에서 데이터시트에 나와있는 revision register(BANK 3)의 값(0x3391)을 제대로 읽어오는 것을 확인하였습니다...하지만 여전히...패닉...음매..죽갔네여..

위 내용을 확인했을때, 제대로 타이밍은 들어가는것을 볼 수 있지만... 대체...머란 말이지? 이러다 정말 간단한 문제이면...정말 제 자신이 싫어질것 같다는.;;; 기본 부터 다쉬..;;
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
5668 NAND flash 에서의 XIP ? [5] 유형목 2007-05-17 816
5667 [질문] CD롬을 제거하면 부팅이 안된다...?!!! 이런 경우 보신분 ... [6] 임장욱 2007-05-17 3145
5666 [완료]] SDL 폰트에 관한질문 [3] 문철민 2007-05-17 757
5665 [질문]SDL display부분에 대해서 질문요... [5] 이태간 2007-05-17 802
5664 (요청)터치칩 구할 수 있을까요? [1] 문진호 2007-05-18 2447
5663 [완료] 이솝 3차보드와 JTAGProbe 로 디버깅 하시는분~ [2] 이재명 2007-05-18 1016
5662 [완료] 이솝 3차보드의 메모리맵은 어떻게 되나요? [2] 이재명 2007-05-18 771
5661 [완료] 완전 초짜의 질문 GPIO는 어디서 뽑을지.. [3] 오주열 2007-05-18 2840
5660 염치없지만 PCB DATA 파일을 공개하실수 있나요 [2] 정인수 2007-05-18 3791
5659 [완료] 2440 시리얼통신.. [2] 김민철 2007-05-19 858
» [질문]LAN91x 커널 패닉(S3C2440/2.4.20 커널) [4] 김현기 2007-05-19 1185
5657 [완료] 윤덕배님~ H-JTAG 질문 하나 있는데요~ [2] 이재명 2007-05-19 1048
5656 [완료]아래 케이스공구건 어떻게 된건지요? [1] 최재혁 2007-05-19 714
5655 [완료] USB slave [2] 김증일 2007-05-19 2447
5654 [질문]lx vga driver 관련. [2] 류영렬 2007-05-19 2530
5653 [완료]makefile 질문입니다. [3] 서두원 2007-05-21 878
5652 [질문] 동영상 재생시 너무 느립니다. [4] 강덕하 2007-05-21 3080
5651 [질문]memset, mmap, memcpy에 대해서 질문 있습니다. [5] 이태간 2007-05-22 45358
5650 [완료] Slackware 11.0 어디서 구하나요... [2] 김영곤 2007-05-22 2510
5649 [완료] 제온 서버 사용 가능 여부 [2] 김유석 2007-05-22 869

사용자 로그인