임베디드 Linux를 사용하여 AM1808의 UART0에 액세스

임베디드 Linux를 사용하여 AM1808의 UART0에 액세스

AM1808 프로세서에 GSM 모듈을 연결하려고 합니다. 저는 gccUBUNTU 10.04 Lucid와 함께 컴파일러를 사용하고 있습니다.

UART0의 TXD 및 RXD 핀을 구성했지만 RTS 및 CTS 핀에 제대로 액세스할 수 없습니다.

실제로 RTS와 CTS 라인이 올바르게 통신하고 있는지 확인해야 합니다.
따라서 사용자 애플리케이션에서 이 핀에 액세스해야 합니다.

어떻게 해야 하나요?

답변1

대략적인 순서로 확인하고 싶은 사항은 다음과 같습니다.

  1. 애플리케이션에서 RTS/CTS 기능을 활성화했는지 확인하세요. 바라보다tty_ioctl(4)이를 수행하는 방법에 대한 정보. 링크된 매뉴얼 페이지 끝에 DTR 핀을 확인하는 예가 있습니다. 코드를 크로스 컴파일하고 CTS/RTS가 작동하는 PC(예: USB-직렬 변환기)에서 실행해 보세요.
  2. 핸드쉐이킹을 활성화하기 위해 제어 설정 "crtscts"가 활성화되어 있는지 여부를 표시할 수 있으므로 stty의 출력을 확인하십시오.

    stty -F /dev/ttyO1
    
  3. 사용하려는 핀의 멀티플렉서가 다른 주변 장치(예: GPIO, 비디오 등)가 아닌 UART 주변 장치에서 사용하도록 구성되었는지 확인하려면 커널과 부트로더를 자세히 살펴보세요. 칩에 대한 멀티플렉서 정보가 있는 위치에 따라 TI 기술 참조 매뉴얼(TRM) 또는 데이터시트를 참조하십시오. 이를 확인하는 가장 쉬운 방법은 TRM/DS에서 주소를 찾은 후 "devmem2"와 같은 프로그램을 사용하여 멀티플렉서 레지스터를 읽는 것입니다. 이 문제를 해결하려면 커널 또는 부트로더가 멀티플렉서 구성을 담당하는지 확인해야 합니다. 때로는 둘 다일 때도 있습니다(한숨).

  4. 하드웨어에 대해 생각하고 회로도를 살펴보십시오. 핀이 실제로 연결되어 있습니까?
  5. 플랫폼 데이터가 올바르게 설정되었는지 확인하기 위해 커널 코드를 계속해서 살펴보세요. 이것은 커널 트리 아래 어딘가에 있을 것입니다("arch/arm/mach-davinci/devices-da8xx.c"로 추측됩니다). 각 UART를 설명하는 많은 구조가 있습니다. 사용 중인 UART에 유효한지 확인하세요. 또한 보너스 포인트의 경우 때때로 사람들이 잘못된 위치를 수정하므로 해당 수정 사항이 커널 트리의 다른 곳에 묻혀 있을 수 있으므로 최후의 수단으로 찾으십시오. 이것이 흥미로워지는 곳입니다.

저는 이 칩에 익숙하지 않아서 일부 커널 지원 파일을 추측하고 있습니다. 또한 사용 중인 커널 버전이 무엇인지, 어디에서 왔는지(TI 대 업스트림) 확실하지 않습니다.

관련 정보