TTY와 serial_core의 관계는 무엇입니까?

TTY와 serial_core의 관계는 무엇입니까?

일반적으로 허용되는 것보다 더 많은 파일 작업(열기, 쓰기 등이 아닌)을 허용하는 UART용 새 문자 장치 파일을 작성해야 합니다.

저는 임베디드 메인라인 Linux 커널(v 5.4)을 사용하고 있습니다.

UART 드라이버를 살펴보기 시작했고 많은 것을 발견했습니다.

  1. 첫째, tty 파일이 많이 있습니다. 나는 tty가 텔레타이프라이터(Teletypewriter)의 약자라는 것을 안다. 하드웨어 부품이 아닌가 싶습니다.
  2. 그런 다음 UART의 인터럽트를 처리하는 프로세서용 특정 드라이버가 있습니다.
  3. 그런 다음 serial_core.c에 작성된 uart용 문자 장치 드라이버가 있습니다.

serial_core.c에는 파일 작업 구조가 없지만 tty_options를 사용하는 것으로 나타났습니다.

여기서 무슨 일이 일어나고 있는 걸까요? 이 모든 파일이 서로 어떻게 연관되어 있는지, 그리고 정확히 어떤 역할을 하는지 이해할 수 없습니다. 보다 정확하게는 각각의 역할을 이해하고 싶습니다. 나는 uart용 문자 장치 드라이버를 작성하는 임무를 맡고 있지만 이러한 파일 중 어느 파일(어쩌면 모두?)을 내 드라이버가 교체해야 하는지 모르겠습니다.

감사해요,

답변1

이제 오랜 시간 동안 코드를 읽고 분석하고 다시 읽어보니 주석이 부족해서 이해하기 어려웠던 코드가 조금씩 이해가 되기 시작했습니다.

이 모든 것의 목표는 사용자 공간과 하드웨어 간의 통신 인터페이스를 만드는 것입니다. 이를 위해 모델을 사용자 공간과 커널 공간을 연결하는 레이어, 커널 공간과 하드웨어를 연결하는 레이어의 두 레이어로 생각할 수 있습니다.

사용자 공간과 커널 공간을 연결하는 계층은문자 장치 드라이버. 이것은TTY 레이어, 이는 /dev/에 있는 파일을 처리하고 사용자로부터 데이터를 가져와 커널 공간으로 전달하며 그 반대의 경우도 마찬가지입니다. TTY 계층은 내가 잘 이해하지 못하는 다른 많은 기능을 구현하지만 주요 목표는 이것이라고 말해도 무방합니다.

이제 두 번째 레이어가 커널 공간에서 분리되어 하드웨어에 기록됩니다. 이는 다음을 통해 수행됩니다.플랫폼 드라이버파일에imx.c. 드라이버는 하드웨어에 대해 자세히 알고 있으며 TTY에서 받은 정보를 기반으로 하드웨어를 제어할 수 있습니다. 따라서 TTY는 사용자가 말하는 내용을 기반으로 이 계층의 기능을 호출합니다.

UART는 범용 하드웨어이기 때문에 그다지 구체적이지 않은 기능과 루틴이 많이 있으며 플랫폼 드라이버(예: imx.c)를 개발하기 위한 기반으로 사용되는 파일로 그룹화할 수 있습니다. 이것은시리얼코어.c하드웨어별 드라이버를 개발하기 위한 API와 다소 유사하게 작동하는 파일입니다.

관련 정보