일반 No such device or address가 뭔가요?
2011.07.27 20:45
안녕하세요?
ubuntu 10.04로 device driver를 짜보려고 하는데요
시작부터 난관이네용...
driver를 작성하고 테스트를 하려고 간단한 프로그램을 만들었습니다.
int main(int argc, char *argv[])
{
int dev;
struct buzzer_info buzzer;
if( ( dev = open("/dev/buzzer_driver", O_RDWR)) < 0 )
{
printf("buzzer Device Open Failed..\n");
printf("dev value = %d\n", dev );
perror("open");
return -1;
}
printf("============================\n");
buzzer.frq = 4175; // Hz
buzzer.duty = 50; // %
buzzer.time = 100; // x.x sec
ioctl(dev, IOCTL_GPIO_BUZZER, &buzzer);
close(dev);
usleep(10); // Hardware Stable Delay
return 0;
}
그런데 open하지 못하고 계속 error가 나네요
No such device or address...라고 error message가 뜹니다.
target에서 linux가 boot되고
# mknod /dev/buzzer_driver c 256 1
로 해서 device file을 하나 생성했습니다.
그런데... device file을 지웠다가 다시 만들어도 같은 message가 출력됩니다.
/dev/에 있는 다른 device로 열면 열리는데 buzzer_driver는 안열리네요.
혹시 kernel source 쪽에서나 아니면 config file쪽을 수정해야 하는건 아닌지요?
아... 그리고 driver source에 포함되어 있는 debuging message들이 나오지 않네요.
insmod랑 rmmod할때도 안나오고...
dmesg명령을 쳐도 아무런 말도 안나옵니다...
이건 어찌해야 하나요?ㅠㅠ
댓글 5
-
유형석
2011.07.27 22:39
-
초간장남
2011.07.28 00:01
insmod로 올려 놓고 해봤지만 안되고 있습니다.
강좌나 책은 이미 보고 있구요...
에러 대책에 관한 내용은 찾을 수가 없네요...
-
유형석
2011.07.28 01:07
모듈 초기화 루틴에 printk로 디버깅 메시지를 출력 하여 보셔서 정상적으로 모듈이 적제 되는지 보시고,
mknod 로 드라이버 파일 제작시에 뭔가 잘못 되었을 수도 있습니다.
드라이버 파일의 권한도 한번 확인해 보세요.
그리고 MAJOR 주소를 256 말고 240-254 사이로 해보시는것도 좋을것 같습니다. -
초간장남
2011.07.28 07:21
아... 이상한 일이네요... 커널에 포함시키면 되는데...
모듈로 하면 안되네요...
-
유형석
2011.08.04 21:36
혹시 어플리케이션 말고 드라이버 소스와 메이크파일도 볼수 있을까요?
압축하셔서 첨부파일로 올려 주시면 테스트 해 보겠습니다.




디바이스 파일과 어플리케이션만 필요 한게 아니라
모듈을 작성해서 insmod 로 올려야 드라이버가 적제 됩니다.
저희 포럼에 디바이스 드라이버 관련 강좌가 있으니 한번 보시는것도 좋을것 같습니다.
그리고 리눅스 디바이스 드라이버 관련된 책을 구입하여 보시는것도 추천 합니다.
강좌 페이지 http://forum.falinux.com/zbxe/?mid=device_driver