programing

내장형 장치에 적합한 직렬 통신 프로토콜/스택?

subpage 2023. 9. 21. 20:24
반응형

내장형 장치에 적합한 직렬 통신 프로토콜/스택?

다양한 프로젝트를 위해 여러 가지 맞춤형 직렬 프로토콜을 작성한 후, 매번 휠을 다시 발명하는 것에 좌절하기 시작했습니다.모든 프로젝트에 대한 맞춤형 솔루션을 지속적으로 개발하는 대신 보다 일반적인 솔루션을 찾고 있었습니다.다음 요구 사항을 충족하는 직렬 프로토콜(또는 더 나은 구현)을 알고 있는 사람이 있는지 궁금합니다.

  • 여러 장치를 지원합니다.RS485 버스를 지원하고 싶습니다.
  • 배달이 보장됩니다.일종의 확인 메커니즘과 간단한 오류 감지(CRC16은 아마도 괜찮을 것입니다).
  • 마스터/슬레이브가 아닙니다.이상적으로 슬레이브는 데이터를 비동기식으로 전송할 수 있습니다.이것은 대부분 심미적인 이유 때문입니다, 각 노예를 투표한다는 개념은 제게 맞지 않습니다.
  • OS 독립성.이상적으로는 선제적인 멀티태스킹 환경에 전혀 의존하지 않습니다.다른 것들을 얻을 수 있다면 기꺼이 양보하겠습니다.
  • ANSIC. 여러 아키텍처에 대해 컴파일할 수 있어야 합니다.

속도는 크게 문제가 되지 않습니다. 다른 요구 사항을 충족시키기 위해 속도를 조금이라도 포기할 용의가 있습니다.하지만 우리는 필요한 자원의 양을 최소화하고 싶습니다.

저는 이제부터 선택적으로 반복하지 않고, 업힌 ACK로 슬라이딩 윈도우 프로토콜을 구현하기 시작하려고 합니다. 하지만 누군가가 저의 수고를 덜어줄 수 있을 것이라고 생각했습니다.제가 활용할 수 있는 기존 프로젝트를 아는 사람이 있습니까?아니면 더 나은 전략?


TCP/IP 구현을 진지하게 고려해 보았지만, 정말로 더 가벼운 것을 기대하고 있었습니다.TCP/IP의 많은 기능들은 제가 하려는 일에 비해 지나치게 능숙합니다.제가 원하는 기능이 가벼운 프로토콜에 포함되지 않는다는 것을 (부끄러운 마음으로) 받아들일 용의가 있습니다.

2 2
CAN에 대한 팁 감사합니다.저는 예전에 본 적이 있고 아마 앞으로도 사용할 것입니다.도서관에서 승인, 버퍼링, 재시도 등을 처리해 주셨으면 합니다.데이터 링크/물리적 계층 대신 네트워크/전송 계층을 더 찾고 있는 것 같습니다.

3 3
이 다인 들립니다.

  • 잘라낸 TCP/IP 스택입니다.아마 lwIPuIP같은 걸로 시작할 겁니다.
  • CAN 기반 구현은 CAN 버스에 크게 의존하므로 다른 물리적 계층에서는 유용하지 않을 것입니다.CAN Festival 같은 것이 진행에 도움이 될 수 있습니다.
  • HDLC 또는 SDLC 구현(와 같은).이것이 아마 우리가 택할 길일 겁니다.

만약 이 질문을 받게 된다면 자유롭게 답변을 올려주시기 바랍니다.

HDLCSDLC를 고려해보셨습니까?

LAP/D(Link Access Protocol, D-Channel)도 있습니다.

Uyless Black의 "Data Link Protocols"는 항상 제 책장 근처에 있습니다. 그 안에서 유용한 자료를 찾을 수도 있습니다. (TOC를 자세히 살펴보고 여러 프로토콜을 조사하기도 합니다.)

CAN은 여러 기준을 충족합니다.

  • 여러 장치 지원:버스 한 대에 많은 수의 기기를 지원합니다.그러나 RS485와 호환되지 않습니다.
  • 배달 보장:물리 계층은 비트 스터핑(bit-stuffing)과 CRC(CRC)를 사용하며, 이 모든 것들은 점점 더 많은 최신 임베디드 프로세서에 하드웨어로 구현됩니다.승인이 필요하다면 직접 그 위에 추가해야 합니다.
  • 마스터/슬레이브 아님:마스터나 슬레이브는 없습니다. 모든 장치는 원할 때 언제든지 전송할 수 있습니다.프로세서 하드웨어는 중재와 경합을 다룹니다.
  • OS 독립성:해당되지 않습니다. 저상버스입니다.그 위에 무엇을 얹느냐는 당신에게 달려있습니다.
  • ANSIC: 다시 말하지만, 해당되지 않습니다.
  • 속도: 일반적으로 최대 1Mbps에서 최대 40m에 이르며, 응용 프로그램에 맞게 자신만의 속도를 선택할 수 있습니다.

언급한 바와 같이, 이 정의는 상당히 낮은 수준이기 때문에, 고객의 요구를 충족시키기 위해 전체 프로토콜로 전환하기 위해서는 아직도 해야 할 일이 남아 있습니다.그러나 많은 작업을 하드웨어로 수행한다는 사실은 다양한 애플리케이션에 매우 유용합니다.

합리적인 출발점은 uIP가 될 수 있을 것 같습니다.

( 링크가 종료되어 µIP에 대한 위키백과추가)

MODBUS 프로토콜을 고려해 보시겠습니까?마스터/슬레이브 지향형이므로 슬레이브는 전송을 시작할 수 없지만, 그렇지 않으면 구현을 위한 경량이고, 자유로우며, 고급 도구로 잘 지원됩니다.보유 레지스터, 입력 레지스터, 출력 코일 등의 용어만 파악하면 됩니다.

물리 수준은 RS232, RS485, 이더넷...

MIN(Microcontroller Internet Network)에 대해 살펴보겠습니다.

https://github.com/min-protocol/min

CAN에서 영감을 얻었지만 표준 UART 하드웨어를 사용하고 있으며, Fletcher의 체크섬 및 프레임 형식을 사용하여 오류 감지 및 프레임 헤더 표시를 위한 바이트 스터핑을 확인합니다.

Profibus를 보세요.

마스터/슬레이브를 원하지 않으신다면 하드웨어(캔버스, FlexRay)로 중재하는 것이 좋을 것 같습니다.

언급URL : https://stackoverflow.com/questions/1159379/a-good-serial-communications-protocol-stack-for-embedded-devices

반응형