일부 직렬 Linux 장치인 /dev/ttyS에 저장된 UART 장치는 바이트를 어떻게 수신합니까? 어떻게 읽을 수 있나요?
절차는 무엇입니까? 새 데이터가 도착하면 장치 파일을 닫아야 합니까?
답변1
수신된 바이트는 어떻게 저장되나요?
사용자 공간 관점에서 보면 전혀 저장되지 않습니다.
어떻게 읽을 수 있나요?
그냥 읽고 싶다면 괜찮습니다 cat /dev/ttyS...
. 직렬 인터페이스를 처리하는 방법에 대한 자세한 내용은 일반적으로 검색 후 몇 초 내에 이 페이지와 인터넷의 수많은 답변과 의견에서 확인할 수 있습니다. 몇 가지 아이디어: serial
, screen
, minicom
및 cutecom
유사한 도구. 이 문제여기더 흥미롭습니다.
절차는 무엇입니까?
아주 간단합니다:
- 장치를 켜십시오
- 데이터를 기다리는 중
- 완료되면 닫습니다.
/dev/ttyS*
문자 장치이므로 파일 시스템의 일반 파일과 다르게 동작하므로 새 정보를 "기록"하기 위해 새로 고치거나 닫았다가 다시 열 필요가 없습니다. 개발 파일을 갖는 목적은 사용자 공간과 커널 공간 간의 통신 방법을 제공하는 것입니다.
더 자세히 설명하면 프로세스는 다음과 같습니다. 데이터는 전기 펄스의 형태로 하드웨어, 직렬 인터페이스에 도착합니다. 하드웨어는 전기 충격을 디지털 신호로 변환하고 이를 하드웨어 관리를 담당하는 HAL(하드웨어 추상화 계층)/커널 드라이버 또는 컨트롤러로 전송합니다. 이는 바이트로 변환되어 사용된 전송 속도와 프로토콜에 따라 추가 처리를 위해 버퍼링됩니다. 그런 다음 커널은 버퍼를 /dev
폴더의 노드로 사용자 공간에서 볼 수 있는 문자 장치로 플러시합니다.