xxx_probe() 호출은 어떻게 되는거죠?
글쓴이: revival / 작성시간: 수, 2009/12/30 - 2:43오후
S3C6410 CPU 를 사용하는 보드에서 리모콘 기능을 추가하려고 삽질 중입니다.ㅡ.ㅡ;
2.6.21 에 포함되어있던 s3c-sir.c 소스를 2.6.29(6410 보드에 포함된 커널)에 포팅했습니다.
net_device 구조체가 조금 바뀌어서 포팅하면서 삽질을 조금 했죠.
아무튼 포팅을 하긴 했지만, 아직 동작이 안되서 잘되었는지는 미지수...
빌드에 성공해서 커널에 포함시키고, 모듈 init 메시지까지 확인했습니다.
헌데, xxx_probe() 함수가 호출 되지 않네요.
혹시 물리 장치가 연결 되지 않아서 그런건가 하고
UART3(H1: 67,68)쪽에 IrDA 를 만들어 붙여 보았습니다.
그래도 여전히 probe 가 호출 되지 않네요.
혹시 어떤 조권을 맞춰 줘야 xxx_probe() 가 호출 되나요?
UART 3 을 IrDA 용도로 사용한다고, 어디다 설정하는것인 있나요?
아는게 많지 않아서 무한 삽질 루프에 빠졌습니다.
도와주세요.
Forums:
파일을
파일을 첨부합니다.
FILE: drivers/net/irda/s3c-sir.c
----
오늘도 행복한 하루~
@from caesar
test1
test1
----
오늘도 행복한 하루~
@from caesar
똑같은 "s3c-irda" 라는
똑같은 "s3c-irda" 라는 이름을 가진 platform_device 가 platform_device_register() 되면,
platform_bus subsystem 에서 platform_driver.probe() 를 호출합니다.
s3c port 가 말과 글로 표현할 수 없을 정도로 지저분해서 일반론은 들이대기 어렵고...
arch/arm/ 에서 grep 을 이용해서 "s3c-irda"를 찾아보시면 이것저것 줄줄이 사탕처럼 걸려나올 겁니다.
s3c uart 드라이버가 엄한 짓을 하지 않는 지 소스코드를 검토해보셔야하고,
s3c uart 에 대한 platform_device_register() 하는 부분을 찬찬히 살펴서 포트를 제외시켜야하고...
이래저래 적었지만...
lirc 를 사용해서 리모컨을 구현하시는 거라면 옮겨오신 s3c-sir.c 와는 아무 관계 없습니다.
리모컨은 IrDA 가 아니고 CIR 이며, 반송파등의 물리적인 특성뿐만 아니라 프로토콜도 틀립니다.
lirc 를 이용한 리모콘 송신(Tx)기 역할은 간단한 GPIO 조작으로 쉽게 가능합니다.
수신(Rx)이 좀 괴로운데... lirc 에 포함된 드라이버들을 이것저것 들여다 보시는 게 이해가 빠르실 겁니다.
h/w CIR 이 없다면...
인터럽트 타이밍을 분석한다던가해서 억지로 CIR 프로토콜에 끼워 맞춰서 신호를 재해석하는 수 밖에 없습니다.
코드화가 불가능하다면 재현가능한 형태로 타이밍정보만 저장해서 써먹습니다.
(어떻게 하든 간에... 결국은 '학습'을 시키는 거죠.)
OTL
담변감사합니다.
친절한 답변 감사합니다.
헌데 설명이 조금 이상한 부분이 있네요.
__init() 함수에서 platform_driver_register(&s3c_irda_driver) 를 등록하고 있는데요.
그럼 이 즉시 호출이 되어야 하지 않나요?
제가 말을 잘못 이해하고 있는듯 하네요.
----
오늘도 행복한 하루~
@from caesar
----
오늘도 행복한 하루~
@from caesar
device 와 driver 에 대해
device 와 driver 에 대해 이해하실 필요까진 없을 것 같은데...
뭘 이해 못하셨는지 저도 모르겠습니다.
OTL
LIRC 지원
님의 말은 s3c-sir.c 를 포팅해서 동작해봐야.
IrDA 즉 데이터 통신만 되지 CIR 로 사용하는데는 무의미 하다는 의미인거죠?
lirc 언급을 하셨는데
GPIO 를 통해서 리모콘 송수신(rx/tx)을 할 수 있나요?
만약 그렇게 구현 하려면 s3c-sir.c 를 lirc 용으로 고쳐야 하나요? 아니면 아에 새로 구현 해야 되나요?
여러가지로 질문이 많네요.ㅎㅎ
언제 밥이라도 한끼 사드려야겠네요.ㅋㅋ
----
오늘도 행복한 하루~
@from caesar
----
오늘도 행복한 하루~
@from caesar
질문을 하기 전에
질문을 하기 전에 잠시라도 좋으니 lirc 를 먼저 보셨으면 좋겠습니다.
OTL
lirc 는 3주전부터 보고있어요.
arm 용으로 cross-compile 하여 올려도 봤어요.
serial driver 를 올려서 동작테스트를 해봤는데, 문제가 있어서 중도에 포기했죠.
iMon mini device 를 구입해서
그걸 올려서도 테스트해보고
lirc_imon.c 소스도 대략 훓어봤구요.
여차하면 이놈이라도 붙여서 써볼요량으로.
근데, 전용 리모콘만 지원을 하더라구요.
decoder 가 H/W 적으로 내장되어 다른 리모콘 신호는 무시하더군요..OMG
----
오늘도 행복한 하루~
@from caesar
----
오늘도 행복한 하루~
@from caesar
probe가 호출될 것 같은데요..
커널로그로 확인시 출력이 안된거라면 현재 소스상 S3C_IRDA_DEBUG가 define이 안되서
probe()함수에서 DBG()출력이 안된것 같습니다.
이미 드라이버가 커널에 register되지 않았다면 platform_driver_register()호출 즉시 probe()함수가 호출됩니다.
댓글 달기