저는 아날로그/디지털 I/O 카드를 사용합니다(디지털 멀티미터-16-ATDiamond Systems의 PC/104(ISA 동급) 카드입니다.
문제는 시작 시 0V에 있지만 시작 중 약 10초 후에 5V(논리 1)가 되는 주소 BASE + 3에 8개의 디지털 출력이 있다는 것입니다. 다른 커널 드라이버나 프로그램 등이 해당 주소에 쓰고 있는 것 같습니다. 문제를 추적하기 위해 특정 주소에 대한 쓰기를 "모니터링"하는 방법이 있습니까?
참고: 기본 주소는 0x300이고 Linux의 총 부팅 시간은 약 45초이므로 내 프로그램에는 관련이 없습니다.
데이터시트에서:
기본 + 3 쓰기 디지털 출력 포트
+-------+-------+-------+-------+-------+-------+-------+-------+
Bit No. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+-------+-------+-------+-------+-------+-------+-------+-------+
Name | DOUT7 | DOUT6 | DOUT5 | DOUT4 | DOUT3 | DOUT2 | DOUT1 | DOUT0 |
+-------+-------+-------+-------+-------+-------+-------+-------+
이러한 핀은 I/O 커넥터 J3에 있는 동일한 이름의 핀에 직접적으로 해당합니다.
전원을 켜거나 재설정하면 출력 레지스터가 지워집니다.
답변1
특정 주소를 조사하지 않도록 커널에 지시할 수 있습니다. 남자들에게서시작 매개변수:
reserve=iobase,extent[,iobase,extent]...
예약 시작 시간 매개변수는 프로브해서는 안 되는 I/O 포트 영역을 지정합니다. 장치 드라이버는 다른 부팅 매개변수가 명시적으로 지정하지 않는 한 예약된 영역을 탐색하지 않습니다.
reserve=0x300,32 blah=0x300
"blah" 드라이버를 제외한 모든 장치 드라이버가 0x300-0x31f를 검색하지 못하도록 차단합니다.
물론, 부트로더(예: grub)가 탐색 중일 가능성은 여전히 있습니다.