2014-05-20 7 views
0

나는 리눅스 디바이스 드라이버의 예에서 short.c을 시도하고 LDD3 예 짧은 모듈에서 작동하지 않습니다 3OUTB는()

내 PC는 병렬 포트와 우분투 부팅 후, 나는이 볼 수 있습니다

cat /proc/ioports 
0378-037a : parport0 
037b-037f : parport0 

outp 0x378 1 
(outp is another example in LDD3 which write data to ports) 
the LED on the port is ON. 

그럼 내가 다시 실행 모듈

rmmod lp 
rmmod parport_pc 
cat /proc/ioports 
(There is no module on 0378-037f any more.) 

을 제거하려면 다음 명령을 실행하지만 LED는이 시간에 없습니다.

outp 0x378 1 

은 그 때 나는 short.ko과 request_region()가 성공적으로 설치합니다.

cat /proc/ioports 
0378-037f : short 

cat /proc/devices 
249 short 

outp 0x378 1 
the LED is not ON this time either. 

나는 (LED가 ON되지 않습니다)

mknod /dev/short0 c 249 0 
echo -n "a" > /dev/short0 

"A"이 0x61 인 마지막 비트가 1

수 있도록하는 이유는 쓸 수 없습니다 너무 이러한 시도했지만 같은 결과 I/O 영역이 있어도 데이터를 내보낼 수 있습니까?

답장을 보내 주셔서 감사합니다.

+0

:

그리고 컵이 설치되어있는 경우, 당신은 /etc/modules-load.d/cups-filters.conf을 수정해야

? – sawdust

+0

예, LED가 올바르게 배선되어 있습니다. 모듈 parport_pc가 이동하기 전에 ON으로 설정할 수 있습니다. – user1443721

+0

새로운 발견. request_region() 함수 호출을 제거하고 parport 모듈을 언로드하지 않으면 코드를 읽고 쓸 수 있습니다 (LED도 켜짐). parport 모듈이 있기 때문에 irq 7이이를 사용합니다. 나는 "짧은"모듈에 irq 5를 할당해야한다. irq 5를 성공적으로 사용할 수는 있지만, 인터럽트는 [유선 핀 9와 핀 10 및 outb (0xff, 0x378)]에 의해 절대로 발생하지 않습니다./proc/interrupts를 점검하면 outb (0xff, 0x378)가 호출 될 때 irq 7 카운터가 증가하지만 irq 5는 항상 0입니다. – user1443721

답변

0

마지막으로 해결책을 찾았습니다.

"parport"모듈이 커널에로드되거나 컴파일되지 않았는지 확인하십시오. Parport 모듈을 언로드하는 것만으로는 포트를 일관성없는 상태로 유지하기에 충분하지 않습니다. 시스템을 재부팅하고 parport 및 모든 관련 모듈/코드를 처음부터로드하지 않도록해야합니다. 이 작업을 수행하는

한 가지 방법은 다음과 같은 줄을 /etc/modprobe.d/blacklist.conf 파일을 편집하고 추가하는 것입니다

blacklist ppdev 
blacklist lp 
blacklist parport_pc 
blacklist parport 

그 partport 병렬 포트의 모드를 수정 것 같다. 당신은 당신이 유선 올바르게 LED했는지 확인하기 위해 수행 한 어떤

#lp 
#ppdev 
#parport_pc