Linux 커널 2.6.33을 사용하는 Virtex4 FPGA에 내장 된 PowerPC 405로 개발 중입니다.기존 Linux 장치 구조를 장치 파일과 연결
지금까지 필자는 FPGA에 구현 된 플랫폼 장치 용 드라이버를 커널로드 가능 모듈 형태로 작성했습니다. 장치는 플랫 Open Firmware Device Tree 파일을 사용하여 등록됩니다. 장치 파일을 만들려면 OF 함수를 사용하여 장치 노드를 얻은 다음 새로운 miscdevice
을 등록한 다음 부 장치 번호를 자동으로 등록하고 나를위한 장치 파일을 만듭니다. 이렇게하면 miscdevice
에 포함 된 device
이 생성됩니다 (즉, miscdevice.this_device
).
이제 DMA 작동을 수행해야합니다. miscdevice.this_device
을 사용하여 dma_alloc_coherent()
함수를 호출하려고했지만이 장치는 버스와 연결되어 있지 않으며 항상 오류를 반환합니다. 나는 주위를 파고 들었고, struct of_device
도 그것에 struct device
(즉, of_device.dev
)이 묻혔다. 내가 이것을 dma_alloc_coherent()
과 함께 사용하려고했을 때, 정상적으로 작동했습니다.
이제 캐릭터 장치 파일을 관리하는 두 개의 다른 struct device
구조와 기본 Open Firmware 시스템 호출, 버스 및 DMA 트랜잭션을 관리하는 구조가 있습니다. 물론이 장치들은 sysfs에서 서로 연관되어 있지 않습니다.
제 질문은 OF 레이어에서 가져온 device
구조체의 장치 파일을 만들고 여타 장치 API로 새 장치를 만들지 말라고 어떻게 든 요청할 수 있습니까? 그러면 모든 것이 단일 device
구조와 연결됩니다.
리눅스 커널 2.6.33이 아니겠습니까? –
@PeterL. 네 감사합니다. 결정된! –
'register_chrdev()'를 사용하여'/ dev /'에 문자 장치를 등록하고 다른 모든 것에'of_device.dev'를 사용하는 것은 어떨까요? ... – TheCodeArtist