문자 장치 드라이버 (커널 모듈)를 만들려고합니다. 가져가로드 된 modue은 아래에 볼 수있는 것처럼 문자 장치를 만듭니다해당 장치 또는 주소가 없기 때문에 장치 파일을 열지 못합니다.
[email protected]:~# ls -l /dev/socledchrdevregion
crw-rw-rw- 1 root root 246, 0 Jan 1 08:56 /dev/socledchrdevregion
을하지만 난 테스트 응용 프로그램 (따로 특별한 일을하지 않는 드라이버 내부의 open 함수를 사용하여 장치를 열 때
[email protected]:~# ./led_ioctltest
led_ioctltest: open /dev/socledchrdevregion failed due to No such device or addres
다음/프록/장치의 함량이다 : 디버그 메시지) 인쇄, 내가 오류
[email protected]:~# cat /proc/devices
Character devices:
1 mem
5 /dev/tty
5 /dev/console
5 /dev/ptmx
10 misc
13 input
29 fb
81 video4linux
89 i2c
90 mtd
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
199 galcore
207 ttymxc
244 vuc_sim
245 vuc
246 socledchrdevregion
247 ubi0
248 mxc_src
249 mxc_vpu
250 conti_kmod_tracing
251 mxc_ipu
252 ptp
253 pps
254 rtc
Block devices:
259 blkext
31 mtdblock
179 mmc
장치는 m으로 존재
if ((ret = alloc_chrdev_region(&first, 0, 1, DEVICE_NAME)) < 0)
{
printk(KERN_ERR PRINTK_CONTEXT": FAILED TO ALLOCATE CHRDEVREGION \n");
return -1;
}
printk(KERN_INFO PRINTK_CONTEXT": ALLOCATE CHRDEVREGION SUCCESS \n");
classptr = class_create(THIS_MODULE, "socledclass");
device_create(classptr, NULL, first, NULL, DEVICE_NAME);
printk(KERN_INFO "PRINTK_CONTEXT: DEVICE CREATED \n");
led_cdevptr = cdev_alloc();
led_cdevptr->ops = &led_fops;
사람이를 찾는 데 좀 도와 주 시겠어요 : 이것은 LKM의 조각입니다
#define DEVICE "/dev/socledchrdevregion"
fd = open(DEVICE, O_RDONLY);
: ajor 번호는이 내가 장치를 열려고 시도하는 방법은 246
입니다 오류? 필요한 경우 전체 코드를 게시합니다.
잘 모르겠지만 장치 파일 (문자 특수 장치)이 있지만 컴퓨터에서 사용할 수없는 하드웨어가 필요합니다. 따라서 장치 파일 이름이 있지만 해당 장치 파일 이름과 연결할 장치를 사용할 수 없으므로 오류가 발생합니다. 의견을 주셔서 감사합니다 –
, 당신은 드라이버 모듈이 오류를 던지고 있다는 것을 의미합니까 아니면 리눅스 드라이버 프레임 워크가 그 오류를 던지고 있습니까? 드라이버 모듈을 구현했습니다. 그래서 일부 디버그 메시지를 드라이버 모듈에 넣고 볼 수 있습니다. 또한 도움이된다면 여기에 드라이버 모듈의 전체 코드를 표시 할 수 있습니다. 장치 파일 뒤에 실제 하드웨어가없는 더미 문자 장치 드라이버를 개발 한 사람이 있습니까? – srik
나는 운전 기사를 썼다는 것에 감사하지 않았습니다. 오류를 던지는 프레임 워크 일 수 있습니다. 나는 확실하지 않다. 나는 많은 도움을 줄 관련 경험이 없습니다. 예, 하드웨어가 없어도 작동하는 드라이버를 작성할 수 있습니다. 하나의 예제는'/ dev/null'입니다. –