커널은 드라이버 및 장치 트리와 어떻게 상호 작용합니까?

커널은 드라이버 및 장치 트리와 어떻게 상호 작용합니까?

보드에서 실행되는 임베디드 Linux 시스템이 있습니다. 장치 트리에 uart 장치와 해당 장치의 드라이버가 있습니다. 이 경우 부팅 후 /dev/ 폴더에서 /dev/ttymxc0 "파일"을 볼 수 있습니다. 다른 목적으로 UART를 사용해야 하기 때문에 장치 트리에서 해당 섹션을 주석 처리했으며 이제 파일이 더 이상 /dev/ 폴더에 없음을 알 수 있습니다(이제 보드와 상호 작용하기 위해 ssh를 사용합니다).

이제 (다른 이유로) 커널에 내장된 UART용 새롭고 간단한 드라이버를 만들어야 하며, UART와 상호 작용하기 위해 레지스터에 쓸 계획입니다. 내 계획은 사용자 공간에서 ioctl() 및 read() 함수를 통해 UART와 상호 작용할 수 있도록 드라이버를 개발하는 것입니다.

하지만 무엇을 해야 할지, 어떻게 시작해야 할지 잘 모르겠습니다. 장치 파일을 생성하기 위해 mknode를 참조하거나 호출하는 드라이버 어디에서도 찾을 수 없으므로 커널이 장치 트리를 살펴본 후에 어떻게든 파일을 생성하는 것으로 의심됩니다. 문제는 원본 소스 코드의 장치 트리나 드라이버 코드에서 "ttymxc0"에 대한 언급을 찾을 수 없다는 것입니다.

드라이버가 뭔지는 모르겠지만실제로 해야 한다. 나는 많은 것을 읽었으며 이것이 커널과 하드웨어의 상호 작용을 안내할 것이라는 것을 알고 있습니다. 이 사이트에서 많은 질문을 읽었지만 여전히 모든 것이 어떻게 연결되고, 상호 작용하고, 합산되는지 잘 모르겠습니다.실제로.

너무 길어요.: ioctl 및 읽기와 같은 함수를 사용하여 사용자 공간에서 상호 작용할 수 있도록 UART용 간단한 드라이버를 작성하고 싶지만 드라이버 코드에 정확히 무엇이 포함되어야 하는지, 커널 및 장치 트리와 어떻게 상호 작용하는지 모르겠습니다. /dev/에 장치 파일을 생성하기 위해 mknode를 호출하는 방법은 무엇입니까?

관련 정보