no image
XCP on Ethernet : 패킷(Packet) 구조 / CTO, DTO
네트워크 및 통신을 통해, 데이터를 주고 받기 위해서는 패킷의 구조가 정해져 있어야 합니다. XCP 역시, 다른 프로토콜들과 마찬가지로 패킷이 아래와 같이 분류되어 있습니다. 상위 분류 내용 하위 분류 CTO(Command Transfer Object) 명령어 교환 CMD(Command Packet) RES(Command Response Packet) ERR(Error) EV(Event Packet) SERV(Service Request Packet) DTO(Data Transfer Object) 데이터 교환 DAQ(Data AcQuisition) STIM(Stimulation) 하위 분류 내용 상위 분류 CMD(Command Packet) 명령어 전송 CTO(Command Transfer Object)..
2022.07.06
no image
XCP on Ethernet : 기능(PGM, CAL, DAQ, STIM)
이번에는 XCP로 수행하고자 하는 기능들이 무엇인지 알아보겠습니다. XCP 자료들을 살펴보면, 자세한 설명들이 있지만, 결국 아래와 같이 4가지 역할을 위해 XCP를 활용합니다. - PGM : 리프로그래밍 - CAL : Calibration - DAQ : 측정 - STIM : DAQ과 유사한 절차로 동작하는 Calibration PGM(Flash Programming) #블록도상에서의 PGM은 ASAM 문서에서는 Flash Programming이라 명명되어 있습니다. XCP가 아니더라도, 프로그램을 다운 받기 위해서는 메모리 주소, 프로그램 크기 등의 정보가 필요합니다. XCP에서는 이를 SECTOR로 구분하고, SECTOR는 SECTOR_NUMBER에서 참조됩니다. Flash 프로그래밍에 활용되는 주요..
2022.07.06
no image
XCP on Ethernet : Network Architecture
XCP on Ethernet을 설명하고 있는 문서들을 보면, 위와 같은 구조를 볼 수 있습니다. 처음부터 전체를 이해하려 하면, 어려울 수 있으니 XCP on Ethernet의 네트워크 아키텍처부터 정리하겠습니다. 네트워크 관점에서 보면, XCP는 크게 아래와 같이 두 가지로 분류됩니다. - XCP Master : Connection을 요청하는 역할을 수행하고 XCP 통신을 시작하는 기기로서, 일반적으로 컴퓨터 및 랩탑에서 동작합니다. - XCP Slave : Connection 요청에 따라, 응답을 하고 일반적으로 PCB에서 동작합니다. # XCP Master와 Slave는 Connection 외에도 다른 작업들도 수행합니다. 서버와 클라이언트는 네트워크 관점에서 볼 때, XCP와 반대로 동작하는 느낌..
2022.06.29
no image
포트(Port) 상세 내용과 MAC / IP / Port 주소가 포함된 헤더 위치
지난 번에, 물리와 논리 포트 개념을 구분해서 설명했습니다. # 물리/논리 포트 설명 링크 물리/논리 포트(Port) 개념 이번에는 MAC, IP, Port 주소가 포함된 헤더 위치와 Port에 대해 조금 더 상세한 내용을 설명하겠습니다. MAC / IP / Port 주소 헤더 위치 MAC, IP, Port 주소가 포함된 헤더 위치는 위의 그림과 같습니다. 각 헤더에 다른 내용들도 포함되어 있지만, 주소 위주로만 정리했으니 참고하시기 바랍니다. MAC 주소는 Ethernet 헤더에 위치해 있고 IP 주소는 IP 헤더에 위치해 있으며, Port 주소는 TCP 또는 UDP 헤더에 위치하고 있습니다. 이 내용을 통해, 주소들을 계층별로 구분한 것을 유추할 수 있네요. Socket Address(소켓 주소) 어..
2022.04.04
TCP Keepalive 개념과 주요 설정값
TCP는 연결지향형 프로토콜입니다. 그리고 연결의 개념을 위해 TCP 서버와 클라이언트로 구분합니다. TCP에는 Keepalive라는 개념을 도입하여, 연결이라는 개념을 보완시켜줍니다. 그리고 Keepalive 개념에는 타이머, 인터벌, 프로브의 개념도 도입되는데 지금부터 정리해보겠습니다. Keepalive 타이머 TCP 연결이 설정된 이후에 정상적인 상황이라면, FIN 메시지를 송수신 했을 때, 연결이 해제됩니다. 하지만, 전원이 차단되거나 오류에 의해 오동작을 하면 하나의 단말만 연결이 유지되는 상태가 되며 이를 Half Open Connection 이라고 합니다. 이런 현상을 막기 위해 Keepalive라는 타이머가 있습니다. Keepalive의 매커니즘은 다음과 같습니다. 패킷을 수실할 때마다 재..
2022.04.04
TCP Out-of-order(OOO)와 Out-of-band(OOB)
TCP에서 Out-of-order와 Out-of-band라는 용어를 접할 수 있습니다. 간혹 같은 기능인데 용어가 다른 경우가 있어서 이 용어들도 같은 의미로 생각했지만, 실제로 조사해보니 다른 내용이었습니다. 각 용어에 대한 정리를 해보겠습니다. Out-of-order(OOO) TCP 세그먼트가 송신된 순서와 다르게 비순차적으로 수신되는 현상입니다. 어떠한 기능은 아니고, 위에서 설명한 것처럼 하나의 현상으로 생각하시면 됩니다. 복잡한 네트워크망에서는 End-to-End 간의 데이터 교환 시, 경로가 여러 개가 생기거나 각 프로토콜의 알고리즘 및 기능에 의해 비순차적으로 데이터가 전송될 수 있습니다. Out-of-band(OOB) TCP에서 긴급한 데이터는 다른 데이터들과 달리 전용 버퍼를 가지고 있는..
2022.04.04
lwIP 개요(링크)
lwIP의 전반적인 내용을 정리할까 하다가 매우 정리가 잘 된 블로그가 있어서 링크로 남겨둡니다. 중요하게 생각하는 내용들을 핵심부분만 매우 잘 정리되어 있네요. https://rudalskim.tistory.com/335?category=954796 [STM32F746G-DISCO] lwIP 살펴보기 STM32CubeIDE에서 Ethernet을 사용할 경우 LwIP(Lightweight IP) 라이브러리가 사용됩니다. LwIP(Lightweight IP)는 임베디드 시스템에서 널리 사용되는 오픈 소스 TCP/IP 스택으로 스웨덴 컴퓨터 과학 연구소 (Sw.. rudalskim.tistory.com
2022.03.24
lwIP 최대 버퍼 사용량 계산과 관련 있는 요소들
lwIP 라이브러리가 이론상 최대로 사용하는 메모리를 계산하는 방식이 있습니다. 이론적으로 그리고 간접적으로 계산하는 것이기 때문에 실제로 들어맞는 것은 아닐겁니다. CPU 처리속도, 발열, lwIP 외의 로직 등 MCU에 영향 주는 것이 많기 때문입니다. 실제로 활용할 뻔 했으나, 개인적인 사정으로 활용하지 않았지만 정리하기 위해 내용을 남겨둡니다. 피크 버퍼 사용량 계산 lwIP가 소비하는 최대 힙 메모리 는 lwIP가 소비하는 이론상 최대 메모리 입니다. 일반적으로 lwIP가 사용하는 최대 힙 메모리는 다음에 따라 다릅니다. UDP 연결을 생성하는 데 필요한 메모리: lwip_udp_conn TCP 연결을 생성하는 데 필요한 메모리: lwip_tcp_conn 애플리케이션에 있는 UDP 연결 수: l..
2022.03.24
no image
Wireshark FCS/CRC 4Byte 안보이는 이유
환경마다 다르겠지만, 특정 환경에서는 Wireshark에서 송신하는 패킷의 길이보다 4Byte 더 받는 것처럼 나타날 수도 있습니다. 이 차이는 FCS(Frame Check Sequence) 또는 CRC(Cyclic Redundancy Check) 때문입니다. 아래 그림에서 보이는 것처럼 프레임의 가장 끝 부분에 위치해 있습니다. 이 현상은, 지난 번 IP Checksum 구간이 0으로 보이는 것과 유사한 이유입니다. PHY 즉, 물리계층에서 수행하기 때문에 Wireshark에서는 보이지 않습니다. 따라서, PHY에서 계산하여 추가적으로 송신했다고 볼 수 있겠네요. 아마, 설정에서 이런 것을 변경할 수 있지 않을까 싶지만 당장 저에게 필요한 부분은 아니기 때문에 기회가 되면 알아보도록 하겠습니다. 잘 이..
2022.03.07