기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요~
제가 터치패널을 하나 구해서 드라이버 만드는 공부할겸 터치패널을 바꿔보고 있습니다.
데이터시트랑 기존 터치패널 소스랑 비교 해 보니 터치패널 스펙이 똑같더라고요.
엇 그냥 껴도 되겠네~ 하고선 드라이버는 그냥 나두고 터치패널만 바꿔봤는데... 동작을 안합니다.
그래서 디버깅 모드로 재 컴파일을 했는데요.
우선 hkc100_touch.c 파일의 #define DEBUG_HKC100_TOUCH_MSG 부분을 활성 화 시켜서
뜨는 로그를 봤더니... hkc100_touch_config() 함수쪽에서 i2c 통신으로 읽어오는 부분에서 값이 오질 않고 있습니다.
touch id 값도 안오고요...
그래서 더 자세하게 디버깅을 하려고, hkc100_touch_gpio_i2c.c 파일의 #define DEBUG_GPIO_I2C 를 활성화 한 후에
로그를 보려 했더니... 커널 패닉상태가 됩니다.
왜 커널 패닉상태가 되는지 알 수 있을까요?
DEBUG_GPIO_I2C를 활성화 시키기 전에는 터치패널이 동작을 안해도 안드로이드까지 뜹니다.
DEBUG_GPIO_I2C를 활성화 시키면서 오류가 발생되는것을 감지하여 커널을 종료시킨건가요?
마지막 부분에 보면 kernel_init에서 do_exit를 했다는것 같은데...
(로그가 아직 익숙하지 않습니다. ㅠㅠ 소스상 DEBUG_MSG로 출력 시킨건 왜 하나도 안나오는지... ㅠㅠ)
답변 부탁드립니다~ (__) 꾸벅~
로그는 아래와 같습니다.
.
.
.
생략
.
.
1fa0: 00000037 00000000 000000a0 c0025620 00000000 00000000 c00258bc c00259c0
1fc0: 00000000 00000000 00000000 00000000 d7821ff4 d7821fe0 c0008750 c002d29c
1fe0: 00000000 00000000 00000000 d7821ff8 c0051c74 c00086ec 00000000 00000000
Backtrace:
[<c012e7ac>] (vsnprintf+0x0/0x574) from [<c012edf8>] (vscnprintf+0x18/0x24)
[<c012ede0>] (vscnprintf+0x0/0x24) from [<c004fd70>] (vprintk+0x10c/0x2f8)
r4:c03ee244
[<c004fc64>] (vprintk+0x0/0x2f8) from [<c004ff84>] (printk+0x28/0x30)
[<c004ff5c>] (printk+0x0/0x30) from [<c01ddf30>] (gpio_i2c_chk_ack+0x8c/0x9c)
r3:01111110 r2:000007f0 r1:00000001 r0:00000001
[<c01ddea4>] (gpio_i2c_chk_ack+0x0/0x9c) from [<c01de184>] (hkc100_touch_write+0x20/0x5c)
r5:00000001 r4:c045cf78
[<c01de164>] (hkc100_touch_write+0x0/0x5c) from [<c02b1f50>] (hkc100_touch_probe+0x1ac/0x2fc)
r5:00000000 r4:c045cf78
[<c02b1da4>] (hkc100_touch_probe+0x0/0x2fc) from [<c0173b74>] (driver_probe_device+0xd0/0x17c)
r6:c03d1a58 r5:c0173c94 r4:c03d1930
[<c0173aa4>] (driver_probe_device+0x0/0x17c) from [<c0173ca4>] (__device_attach+0x10/0x14)
r7:d7821e5c r6:c03d1930 r5:c0173c94 r4:00000000
[<c0173c94>] (__device_attach+0x0/0x14) from [<c0172ed0>] (bus_for_each_drv+0x58/0x98)
[<c0172e78>] (bus_for_each_drv+0x0/0x98) from [<c0173d30>] (device_attach+0x5c/0x74)
r7:c03d19bc r6:c03d19dc r5:c03d1930 r4:c03d1930
[<c0173cd4>] (device_attach+0x0/0x74) from [<c0172cfc>] (bus_attach_device+0x30/0x64)
r6:00000000 r5:c03d1930 r4:c03a6d00
[<c0172ccc>] (bus_attach_device+0x0/0x64) from [<c0171b2c>] (device_add+0x3cc/0x54c)
r5:c03d1930 r4:00000000
[<c0171760>] (device_add+0x0/0x54c) from [<c0174e98>] (platform_device_add+0x108/0x15c)
[<c0174d90>] (platform_device_add+0x0/0x15c) from [<c0174f10>] (platform_device_register+0x24/0x28)
[<c0174eec>] (platform_device_register+0x0/0x28) from [<c001dca8>] (hkc100_touch_init+0x38/0x74)
r4:00000000
[<c001dc70>] (hkc100_touch_init+0x0/0x74) from [<c002d2e0>] (__exception_text_end+0x50/0x168)
r4:c00258bc
[<c002d290>] (__exception_text_end+0x0/0x168) from [<c0008750>] (kernel_init+0x70/0xd8)
[<c00086e0>] (kernel_init+0x0/0xd8) from [<c0051c74>] (do_exit+0x0/0x6b0)
r5:00000000 r4:00000000
Code: e51b3110 e2833001 e50b3110 e51b3110 (e5d33000)
---[ end trace 6a2a1c915f5ee39d ]---
Kernel panic - not syncing: Attempted to kill init!
우선 소스를 변경하지 않고, 오실로스코프나 로직 아날라이저로 i2c로 주고 받는 패킷을 먼저 분석해 보시는게 좋을것 같네요. 오드로이드 터치와 사용하려는 터치를 패킷단위로 비교해 보세요.