나는 약간의 애호가 운영체제 개발을 골머리를 앓고 있는데, 나는 메모리 매핑 된 I/O 주소에 약간 혼란 스럽다. 전체 메모리 매핑 된 I/O 개념을 이해하지만 개발자가 주소를 가져 와서 하드웨어를 조작하는 방법을 파악하려고합니다.메모리 매핑 I/O addres는 어디서 오는가?
하드웨어 공급 업체가 지정한 주소입니까? 아니면 모든 컴퓨터의 표준 주소입니까? 예를 들어, 텍스트 인쇄를위한 VGA 메모리는 주소 0xB8000에서 시작합니다. 모든 x86 시스템의 표준입니까? 그렇다면 누구가 표준을 설정 했습니까? 예를 들어 이더넷 카드와 이야기하고 싶다면 커뮤니케이션에 사용하는 주소 나 포트를 어떻게 알 수 있습니까?
미리 감사드립니다.
온라인 또는 서점에 나열된 항구의 확실한 목록을 알고 계신가요? – QAH
최신 리눅스 커널을 다운로드했다면, 일부 아키텍쳐는'arch/XXX/mach-XXX' 디렉토리에 선언 된 장치를 가지고 있습니다. 또한, QEMU는 repo의'hw /'디렉토리에 수동으로 선언 된 풍부한 매핑을 가지고 있습니다. 그러나 나는 이것이 어떤 방식 으로든 권위 있고 현실적이라는 것을 확신하지 못합니다. 자세한 정보는 PCI 또는 SCSI와 같은 다양한 버스 프로토콜에서 매핑 검색 기능이 있는지 확인하십시오. – Alex
도 실수로 당신을 버리지는 않습니다. ioports가 아니라 iomem입니다. 내 잘못이야. – Alex