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

안녕하세요?
오랜만에 글을 올리네요 ^^;
현재 개발하고 있는 개발 환경이 s3c2440이 아닌지라...
하지만 비슷한 코어(s5c73xx)라고 생각되기 때문에 이렇게 질문을 올립니다 ㅎ
현재 사용하는 커널은 linux-2.6.17이구요.
하드웨어 환경은 FPGA 환경입니다.

리눅스에서 USB GadgetFS를 이용하여 개발을 하고 있구요.
GadgetFS를 이용하여 UMS 어플리케이션을 개발하고 있고 PC와 연결 시에
대용량 저장장치로 인식은 잘 되지만, 파일 전송을 하는 경우에 아래와 같은
커널 패닉이 발생하네요. 참 지금 USB에서 패킷 전송은 DMA를 사용하고 있구요.

일단은 커널이나 하드웨어의 메모리쪽 동작이 불안하다고 생각되는데요. 아직은
정확한 원인을 파악하지 못하고 있습니다. 이상한 점은 리눅스가 구동이 되면
기본적으로 실행되는 linuxrc(init 프로세스)와 events 프로세스가 죽는 다는
점입니다. 혹시 아래와 같은 현상을 경험해보신 분들 혹은 아시는 분들 도움 좀
부탁드립니다^^ 아니면 아래와 같은 로그를 분석하는 법만이라도 ^^

p.s. 아래 로그에서 linuxrc가 먼저 죽은 것이 맞나요?

Unable to handle kernel NULL pointer dereference at virtual address 00000012
pgd = c0004000
[00000012] *pgd=00000000
Internal error: Oops: 1 [#1]
Modules linked in:
CPU: 0
PC is at drain_array+0x18/0xd0
LR is at cache_reap+0x68/0x1f0
pc : [<c0066b28>]    lr : [<c0068420>]    Not tainted
sp : c5eafefc  ip : c5eaff18  fp : c5eaff14
r10: 00000000  r9 : 00000000  r8 : c027e8b0
r7 : c0195108  r6 : c01950c0  r5 : 00000001  r4 : 00000012
r3 : 00000000  r2 : 00000012  r1 : 00000000  r0 : c01950c0
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
Control: 5317F  Table: 26004000  DAC: 00000017
Process events/0 (pid: 3, stack limit = 0xc5eae198)
Stack: (0xc5eafefc to 0xc5eb0000)
fee0:                                                                000000be
ff00: 00000001 c01950c0 c5eaff48 c5eaff18 c0068420 c0066b20 00000000 c012fbc4
ff20: c02826a0 80000013 c00683b8 c02826a8 c02826a0 00000000 c5eaff88 c5eaff68
ff40: c5eaff4c c0040db4 c00683c8 c02826b0 c02826a8 c5eaff98 c5eae000 c5eaffc0
ff60: c5eaff6c c0040f44 c0040d30 ffffffff ffffffff 00000001 00000000 c002cd64
ff80: 00010000 00000000 00000000 c02917c0 c002cd64 00100100 00200200 c0040e30
ffa0: c5eae000 fffffffc c0297efc c02826a0 00000001 c5eafff4 c5eaffc4 c004494c
ffc0: c0040e40 00000001 ffffffff ffffffff 00000000 00000000 00000000 00000000
ffe0: 00000000 00000000 00000000 c5eafff8 c0032c08 c0044854 ffffffff ffffffff
Backtrace:
[<c0066b10>] (drain_array+0x0/0xd0) from [<c0068420>] (cache_reap+0x68/0x1f0)
r6 = C01950C0  r5 = 00000001  r4 = 000000BE
[<c00683b8>] (cache_reap+0x0/0x1f0) from [<c0040db4>] (run_workqueue+0x94/0x110)
[<c0040d20>] (run_workqueue+0x0/0x110) from [<c0040f44>] (worker_thread+0x114/0)
r7 = C5EAE000  r6 = C5EAFF98  r5 = C02826A8  r4 = C02826B0
[<c0040e30>] (worker_thread+0x0/0x158) from [<c004494c>] (kthread+0x108/0x134)
[<c0044844>] (kthread+0x0/0x134) from [<c0032c08>] (do_exit+0x0/0x894)
Code: e24cb004 e2524000 e1a01003 089da870 (e5943000)

<1>Unable to handle kernel NULL pointer dereference at virtual address 00000012
pgd = c5e98000
[00000012] *pgd=20011031, *pte=00000000, *ppte=00000000
Internal error: Oops: 1 [#2]
Modules linked in:
CPU: 0
PC is at kmem_cache_alloc+0x24/0x5c
LR is at cache_alloc_refill+0x50c/0x590
pc : [<c0066ff0>]    lr : [<c0067534>]    Not tainted
sp : c0297e88  ip : 00000012  fp : c0297e98
r10: c0281f20  r9 : 00000001  r8 : c63ed000
r7 : 000000d0  r6 : 00000000  r5 : c63ed000  r4 : a0000013
r3 : 80042000  r2 : c01950c0  r1 : 000000d0  r0 : c01950c0
Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  Segment user
Control: 5317F  Table: 25E98000  DAC: 00000015
Process linuxrc (pid: 1, stack limit = 0xc0296198)
Stack: (0xc0297e88 to 0xc0298000)
7e80:                   00000000 c0297ed0 c0297e9c c0067534 c0066fdc 0000000d
7ea0: c027eca0 000000d0 60000013 c0297f28 00000006 c0191198 00000000 fffffeff
7ec0: 00000000 c0297ee4 c0297ed4 c0067024 c0067038 001687ec c0297f04 c0297ee8
7ee0: c0079088 c0066fdc 00000401 c0297f28 00000006 ffffff9c c0297f24 c0297f08
7f00: c007b288 c0079074 c0296000 00168818 00000006 c0297f28 c0297f94 c0297f28
7f20: c0069820 c007b278 c0291d70 c0296000 00000001 00000000 ffffffff 00000000
7f40: c0291cc0 c002cd64 00000000 00000000 00000000 c0291cc0 c002cd64 00100100
7f60: 00200200 ffffffea ffffffff 001686e8 00168818 00000004 00000021 c001af84
7f80: c0296000 00000001 c0297fa4 c0297f98 c00698dc c00697b8 00000000 c0297fa8
7fa0: c001ade0 c00698cc 001686e8 00168818 001687ec 00000006 00000001 00000004
7fc0: 001686e8 00168818 00000004 beac9f34 00000001 00000000 00000001 00037720
7fe0: 00000000 beac9c88 00010a94 0006edd4 60000010 001687ec 00000000 00000000
Backtrace:
[<c0066fcc>] (kmem_cache_alloc+0x0/0x5c) from [<c0067534>] (cache_alloc_refill+)
r4 = 00000000
[<c0067028>] (cache_alloc_refill+0x0/0x590) from [<c0067024>] (kmem_cache_alloc)
[<c0066fcc>] (kmem_cache_alloc+0x0/0x5c) from [<c0079088>] (getname+0x24/0x10c)
r4 = 001687EC
[<c0079064>] (getname+0x0/0x10c) from [<c007b288>] (__user_walk_fd+0x20/0x6c)
r7 = FFFFFF9C  r6 = 00000006  r5 = C0297F28  r4 = 00000401
[<c007b268>] (__user_walk_fd+0x0/0x6c) from [<c0069820>] (sys_faccessat+0x78/0x)
r7 = C0297F28  r6 = 00000006  r5 = 00168818  r4 = C0296000
[<c00697a8>] (sys_faccessat+0x0/0x114) from [<c00698dc>] (sys_access+0x20/0x24)
[<c00698bc>] (sys_access+0x0/0x24) from [<c001ade0>] (ret_fast_syscall+0x0/0x2c)
Code: e3840080 e121f000 e592c000 e1a00002 (e59c2000)
<0>Kernel panic - not syncing: Attempted to kill init!

고도리

2007.08.06 20:36:03
*.70.26.87

에러가 두가지인 듯 한데, 첫번째는 저도 처음보는거네요.
scheduling관련인 듯 싶은데, thread에서 난거보니....

두번째는 주로 확실히 메모리 문제네요. 하지만 원인은 sw일지 hw일지
추적을 해봐야하는 문제입니다.

보통 이럴때는 커널에서 대용량 메모리를 잡은 후에 테스트를 하고
넘어갑니다만, 시스템따라 워낙 틀린 얘기니....정답이 없네요.

박상수

2007.08.06 22:16:02
*.94.41.89

아...
위 두가지에서 위의 에러가 먼저 발생해서 아래 에러가 발생한건가요?
아니면 두 가지 에러가 독립적으로 발생한건가요?
전 전자가 맞을 것이라고 짐작하고 있는데...
가르침을 좀 ^^;

박상수

2007.08.18 17:58:18
*.94.41.89

아...
완전 삽질 끝에 원인을 알아냈습니다 ㅜㅜ
드라이버에 디버깅을 위하여 선언해놓은 전역 배열과 전역 인덱스가 있었는데...
인터럽트 핸들러가 불릴 때마다 전역 인덱스를 계속 증가시키고 있었네요 -_-;
그리고 그 증가된 전역 인덱스에 해당하는 전역 배열에 특정한 값을 계속 넣었구요...
그래서 드라이버가 사용하는 메모리영역을 넘어서서 다른 메모리 부분을 침범했다는 ...
그런데 무슨 원인으로 위와 같은 에러가 발생하였는지는 알아내지 못했네요.
혹시 알아내는 방법이 있을까요? ㅎ
List of Articles
번호 제목 글쓴이 날짜 조회 수
1388 [완료]이숍 3차 메인보드의 핀헤더(2x40 1.27mm)를 구입할 있는 곳.... [2] 김성철 2007-08-06 1353
1387 [완료]집에서 유동 IP를 이용하여 개발환경 설정하는 방법문의입니다 [4] 김진희 2007-08-06 1357
» [완료]USB 패킷 전송 시 커널 패닉 오류입니다. [3] 박상수 2007-08-06 1373
1385 [완료]-일단.. smsc 9115 (LAN9115) 질문입니다. [3] 임은향 2007-08-03 1724
1384 [미해결] 인터럽트 등록과 관련한 문의 [2] 문철민 2007-08-02 691
1383 [완료] LCD 로고이미지 관련 질문입니다. [4] 문철민 2007-07-31 2118
1382 [해결] 이재명님의 JTAG으로 펌웨어 프로그래밍하기에서 질문입니다. [4] 서두원 2007-07-28 1263
1381 [완료] NAND의 bad sector 질문입니다. [13] 문철민 2007-07-26 1051
1380 bootp 설치 관련 질문 드립니다. [1] 김유석 2007-07-24 1475
1379 [완료]Hjtag인식문제<-질문수정 [3] 최재혁 2007-07-21 1439
1378 혹 1차보드라면.. [2] 윤광윤 2007-07-24 2016
1377 [질문]S3C2440 + Encoder 질문입니다. [2] 박창준 2007-07-17 1040
1376 [질문]u-boot 디버깅 하는 방법 좀... [8] 김정렬 2007-07-16 1307
1375 [완료] ADC레지스터 Write하기... [4] 홍순민 2007-07-13 1422
1374 [완료]s3c2440 - 인터럽트 관련 질문 입니다. <-- 완료 [4] 박준영 2007-07-12 2200
1373 [완료]루트파일시스템중 ghello.c 컴파일관련. [4] 박기호 2007-07-12 777
1372 [완료]sd card mount 질문입니다~~^^; [5] 김승규 2007-07-09 3684
1371 [완료] 클럭 제어에 관해서.. <= 완료 [4] 이재철 2007-07-08 1257
1370 [완료]램디스크 버전과 커널버전이 항상 일치해야 하는건가요? [4] 김승규 2007-07-05 915
1369 [완료]이솝 2410 보드에서 SD card는 지원이 안되는 건가요? [3] 김승규 2007-07-04 1302

사용자 로그인