XCP on Ethernet(TCP/IP) 연결 과정 요약
XCP on Ethernet(TCP/IP)에서의 연결 과정은 크게 두 과정을 진행해야 합니다. 두 과정은 다음과 같습니다. - TCP 연결 - XCP 연결 짧게 구분하면 간단해 보이지만, 내부 동작은 나름대로의 규칙을 가지고 있습니다. 조금 더 상세한 연결 과정은 아래와 같습니다. - TCP 연결 (TCP - Client / XCP - Master) ---------------> (TCP - Server / XCP - Slave) : (TCP - SYN) (TCP - Client / XCP - Master) (TCP - Server / XCP - Slave) : (TCP - ACK) - XCP 연결 (TCP - Client / XCP - Master) ---------------> (TCP - Serve..
2021.12.28
XCP on Ethernet(TCP/IP) 데이터 통신 시스템 구조 이해
요새, XCP on Ethernet에 대해 분석해야 할 일이 생겨 관련 내용들을 정리하고 있습니다. 분석하다보니 기존에 설계되어 있는 XCP on Ethernet 데이터 통신 시스템 구조에 의문점이 생겼습니다. TCP는 Client로 설정하고 XCP는 Master로 설정되어 있었습니다. 반대편의 경우에 TCP는 Server로 설정하고 XCP는 Slave로 설정되어 있었죠. 즉, 한 쌍을 요약하자면 아래와 같은 구조입니다. (TCP - Client / XCP - Master) (TCP - Server / XCP - Slave) 저만 그렇게 생각할지 모르겠지만, Client는 Slave와 매칭되어야 하고 Server는 Master라 매칭되어야 하는게 맞지 않나 생각했습니다. 별 것 아닌 내용으로 한참을 고민..
2021.12.28
TCP(Transmission Control Protocol) 연결 과정 요약
TCP(Transmission Control Protocol) 프로토콜에서 연결 과정은 3 Way-Handshake 과정을 이용합니다. 사람들이 만날 때, 악수를 통해 인사를 하는 것과 같이 연결을 위해 서로 확인하는 절차여서 Handshake 라고 이름이 붙혀진 것 같네요. TCP 연결 과정을 간단하게 표현하자면 아래와 같습니다. Client ---------------> Server : SYN Client Server : ACK 클라이언트에서 서버로 연결 요청을 하기 위해 SYN 메시지를 송신 합니다. 서버는 클라이언트의 연결 요청을 수락한다는 의미로 SYN, ACK라는 응답 메시지를 송신합니다. 마지막으로 클라이언트는 응답에 대한 응답 메시지인 ACK를 송신합니다. 굳이 이런 복잡한 연결절차를 왜 ..
2021.12.28
TCP/IP, UDP/IP 의미 정리
컴퓨터 네트워크 분야에서의 TCP/IP란 용어는 인터넷을 위한 프로토콜을 모두 내포하고 있습니다. 예를 들어, Ethernet PHY, Ethernet MAC, IPv4, IPv6, TCP, UDP, DHCP, HTTP 등 입니다. 하지만, 다른 분야에서는 TCP/IP와 UDP/IP를 분류하는 경향이 있습니다. 업계가 바뀌면서 기술적 용어의 개념이 모호해진 것 같은데 말 그대로 TCP/IP는 TCP를 기반으로 통신 및 어플리케이션을 사용한다는 의미로 보여집니다. 반면에, UDP/IP는 UDP를 기반으로 통신 및 어플리케이션을 사용한다는 의미로 보고 있습니다. 크게 중요하지 않을 수 있는데, 표준 문서를 보다보면 많이 혼용해서 사용하는 것 같네요. 복잡하게 생각하지말고 해당 문서에서 TCP/IP와 UDP/..
2021.12.28
XCP 및 XCP on Ethernet 관련 사이트 정리
XCP 및 XCP on Ethernet을 공부하면서 유용했던 사이트들입니다. PiEmbSysTech 임베디드 관련 블로그이며, XCP를 처음 접하는 분들이 보기에 좋게 작성되어 있습니다. Master/Slave 연결 구조, 통신 시스템 구조, 데이터 포맷 등 중요한 부분들이 잘 정리되어 있어요. 하지만, 이 내용만 가지고 XCP를 구현하기는 조금 어렵다고 생각합니다. XCP에 대한 개요를 알아가는 용도로 활용하고, 구현을 위해서라면 표준 문서 및 다른 사이트를 이용하시는 것을 추천드립니다. ※ 링크 https://piembsystech.com/xcp-protocol/ XCP over Ethernet 논문 University of Gothenburg에서 발행된 논문이며, 저자는 Ada Ustundag Ho..
2021.12.28
ETH_PAD_SIZE 목적
ETH_PAD_SIZE의 목적 헤더 뒤의 페이로드 정렬을 보장하기 위해 이더넷 헤더 앞에 추가된 바이트 수를 의미합니다. 이더넷 헤더의 길이가 14바이트이므로 이 패딩이 없으면 IP 헤더의 주소가 32비트 경계에서 정렬되지 않으므로 2로 설정하면 32비트 플랫폼의 속도를 높일 수 있습니다. Ethernet Header Des. MAC Addr : 6Byte Src. MAC Addr : 6Byte Ethernet Type : 2Byte Total : 14Byte ※ 참조 https://www.nongnu.org/lwip/2_0_x/group__lwip__opts__arp.html#gad7fa3b356ca7e603e848b069c4cc6276
2021.12.28
memp_init()의 무한 루프 오류
memp_init() 함수 무한 루프 오류 LwIP 라이브러리를 활용하던 중, Init 과정을 벗어나지 못한 경우가 있었습니다. 디버깅을 하다보니 Init 부분이라는 것을 알게 된 거고, 그 중 memp_init에서 무한 루프가 걸리더군요. 나름 유명한 오픈소스다보니 Init 부분을 건든다는게 선뜻 내키지 않았는데요. 검색하다보니 비슷한 현상인 분들이 많았습니다. 수정하고 나니 큰 문제 없이 동작하네요. memp_init 함수 수정전 #if MEMP_SEPARATE_POOLS memp = (struct memp*)memp_bases[i]; #endif /* MEMP_SEPARATE_POOLS */ memp_init 함수 수정후 #if MEMP_SEPARATE_POOLS memp = (struct memp..
2021.12.19
no image
lwIP 및 관련 사이트 소개
lwIP(lightweight)에 대한 간략한 내용과 관련 사이트를 소개드리겠습니다. lwIP는 이더넷의 TCP/IP 프로토콜을 위한 라이브러리입니다. 먼저, lwIP에 대한 간략한 소개부터 하겠습니다. lwIP 소개 lwIP는 스웨덴 컴퓨터 과학 연구소(SICS, Swedish Institute of Computer Science)의 컴퓨터 및 네트워크 아키텍처(CNA, Computer and Networks Architectures) 연구소에서 아담 던켈스가 개발한 것입니다. TCP/IP에 필요한 프로토콜들의 집합체라고 생각하시면 조금 편하겠군요. C언어 기반으로 구성되어 있고, 40Kbyte라는 적은 메모리를 이용하여 개발되었습니다. (제가 개발했던 환경은 항상 C언어였는데, 다른 언어로 구성이 되..
2021.12.19
no image
CAN Bit Timing 개념, 계산법, 계산 사이트
Bit Timing은 CAN 버스 라인을 모니터링, 샘플 포인트의 샘플링 및 조정을 위한 개념입니다. CAN에서 Bit Timing의 동작은 3개의 Segment로 구분하고 있습니다. - Synchronization segment - Bit segment 1 - Bit segment 2 MCU를 활용해서 CAN 컨트롤러를 설정할 때, 일반적으로 Prescaler, SJW, BS1, BS2에 대한 값들을 정해주어야 합니다. 각 특성에 대한 내용은 이렇습니다. - Prescaler = CAN 컨트롤러에 공급되는 주 클럭의 분주기 설정 - SJW = 1 = CAN 노드 보드 속도 사이의 "허용 오차"의 작은 창 (비슷한 CAN 계층, 일반적으로 고속, 동일한 OSC 속도) - SJW = 4 = CAN 노드 보..
2021.12.19