<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Automotive Software</title>
    <link>https://autosw.tistory.com/</link>
    <description>차량용 소프트웨어 개발 관련 경험 및 자료 공유</description>
    <language>ko</language>
    <pubDate>Thu, 16 Apr 2026 15:26:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>AutoSW</managingEditor>
    <image>
      <title>Automotive Software</title>
      <url>https://tistory1.daumcdn.net/tistory/4210609/attach/df87cefae0f84f879382b71aa446e80f</url>
      <link>https://autosw.tistory.com</link>
    </image>
    <item>
      <title>ELF 파일 포맷 - gABI</title>
      <link>https://autosw.tistory.com/160</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Generic ABI에서는 ELF의 기본 구조를 정의하고 있는데 그중 주요 구성 요소를 정리하면,&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 101.396%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt; 구성 요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;&lt;b&gt;구조 위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;&lt;b&gt;주요 목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;&lt;b&gt;핵심 구성 / 필드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;&lt;b&gt;실행 역활&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Section&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Section Header Table 기반&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;링크/재배치 단위&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;.text, .data, .bss, .rodata, .symtab, .rel.*&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;직접 사용 안 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Segment&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Program Header Table 기반&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;실행 로딩 단위&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;PT_LOAD, PT_DYNAMIC, PT_INTERP&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;메모리에 로드됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Symbol Table&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Section (.symtab, .dynsym)&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;심볼 관리&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;name, value(addr), size, type, binding&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;함수/변수 주소 해석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Relocation&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Section (.rel.*, .rela.*)&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;주소 수정&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;offset, type, symbol index, addend&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;로딩 시 주소 재계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Dynamic Linking&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Segment (PT_DYNAMIC)&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;런타임 링크&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;.dynamic, .got, .plt&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;shared lib 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;Hash Table&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;Section (.hash, .gnu.hash)&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;심볼 검색 최적화&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;bucket, chain&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;심볼 lookup 속도 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 17.7555%;&quot;&gt;&lt;b&gt;실행 파일 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 23.2414%;&quot;&gt;ELF 전체&lt;/td&gt;
&lt;td style=&quot;width: 10.0497%;&quot;&gt;실행 진입점&lt;/td&gt;
&lt;td style=&quot;width: 31.3953%;&quot;&gt;ELF Header + Segment&lt;/td&gt;
&lt;td style=&quot;width: 18.8323%;&quot;&gt;프로세스 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Section (링커 관점에서의 구조로 컴파일/링크 단계에서만 중요)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Section Header : name, type, flags(R/W/X), addr, offset, size&lt;/li&gt;
&lt;li&gt;대표 Section&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 39.8551%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;&lt;b&gt;Section&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;&lt;b&gt;역활&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.text&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;코드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.data&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;초기화된 데이터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.bss&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;미초기화 데이터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.rodata&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;읽기 전용 데이터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.symtab&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;전체 심볼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.dynsym&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;동적 심볼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.701%;&quot;&gt;.rel/.rela&lt;/td&gt;
&lt;td style=&quot;width: 19.0335%;&quot;&gt;relocation 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Segment (실행 관점에서의 구조로 물리적인 로딩 단위 / OS 로더가 사용)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Segment Header : type, offset, vaddr, memsz, flags (R/W/Z)&lt;/li&gt;
&lt;li&gt;대표 Segment&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 47.8643%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;&lt;b&gt;타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;PT_LOAD&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;메모리에 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;PT_DYNAMIC&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;동적 링크 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;PT_INTERP&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;인터프리터 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;PT_PHDR&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;Program Header 자체&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Symbol Table
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;심볼 명을 주소로 매핑
&lt;table style=&quot;border-collapse: collapse; width: 47.8643%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;&lt;b&gt;타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;st_name&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;문자열 테이블 인덱스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;st_value&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;st_size&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;st_info&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;type + binding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;st_shndx&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;소속 section&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;.symtab&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;전체 심볼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.9799%;&quot;&gt;.dynsym&lt;/td&gt;
&lt;td style=&quot;width: 26.7588%;&quot;&gt;동적 링크용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Relocation
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주소 수정(재배치) 명령 리스트&lt;/li&gt;
&lt;li&gt;REL : Offset, info&lt;/li&gt;
&lt;li&gt;RELA : Offset, info, addend (추가값)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dynamic Linking
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구성요소&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 78.0151%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.7286%;&quot;&gt;요소&lt;/td&gt;
&lt;td style=&quot;width: 82.3565%;&quot;&gt;역활&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.7286%;&quot;&gt;.dynamic&lt;/td&gt;
&lt;td style=&quot;width: 82.3565%;&quot;&gt;dynamic table (DT_NEEDED, DT_SYMTAB, DT_STRTAB, DT_RELA)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.7286%;&quot;&gt;.got&lt;/td&gt;
&lt;td style=&quot;width: 82.3565%;&quot;&gt;Global Offset Table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.7286%;&quot;&gt;.plt&lt;/td&gt;
&lt;td style=&quot;width: 82.3565%;&quot;&gt;Procedure Linkage Table&lt;br /&gt;함수 호출 trampoline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hash Table : 심볼 검색 최적화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ref.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://thelinuxcode.com/understanding_elf_file_format/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://thelinuxcode.com/understanding_elf_file_format/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jeffjerseycow.github.io/2017/12/what-are-the-got-and-plt-pt1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jeffjerseycow.github.io/2017/12/what-are-the-got-and-plt-pt1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>포직스 (POSIX)</category>
      <category>ELF</category>
      <category>gabi</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/160</guid>
      <comments>https://autosw.tistory.com/160#entry160comment</comments>
      <pubDate>Sun, 29 Mar 2026 02:59:33 +0900</pubDate>
    </item>
    <item>
      <title>ELF 파일 포맷 기초</title>
      <link>https://autosw.tistory.com/159</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ELF (Executable and Linkable Format)은 유닉스 기반 시스템에서 구동되는 한 애플리케이션의 실행, 객체 코드 그리고 공유 라이브러리등의 데이터를 묶어 놓은 표준화된 바이너리 파일 포맷으로, 하나의 포맷같이 보이지만, 실제로는 gABI + psABI + osABI의 조합으로 구성되어 확장 가능한 컨테이너 포맷으로 해당 애플리케이션의 구동관련 정보를 포함&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ELF&lt;/b&gt; = Generic ABI (gABI, 공통 표준) + Processor-specific ABI (psABI, CPU 별 확장) + osABI (OS 별 확장)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;gABI&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공통적인 구조 정의, System V Application Binary Interface (1971년 4.1 버전 이휴 변경 없음)&lt;/li&gt;
&lt;li&gt;ELF 포맷의 기본 구조 정의&lt;/li&gt;
&lt;li&gt;Section / Segment / Symbol Table / Relocation / Dynamic Linking / Hash Table / 실행 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;psABI&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU별 ELF 동작 규칙, 지속적인 업데이트 중
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;x86-64 ps ABI, ARM ELF ABI, RISC-V ELF ps ABI&lt;/li&gt;
&lt;li&gt;CPU 아키텍쳐별 규칙 정의&lt;/li&gt;
&lt;li&gt;calling convention, 레지스터 사용, 재배치 타입 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;osABI&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OS 동작 방식 정의, 지속적인 업데이트 중
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;같은 코드 Linux용 컴파일시, Syscall/Loader가 상이하여 구동불가 이유&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OS가 ELF에 추가하는 규칙
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Linux ABI, QNX ABI, FreeBSD ABI 등&lt;/li&gt;
&lt;li&gt;System call 인터페이스, Dynamic Link 동작, Shared library 규칙 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ELF 포맷의 기본 구조
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ELF Header&lt;/li&gt;
&lt;li&gt;Program Header Table (Segment 기반, &lt;b&gt;실행&lt;/b&gt; 관점)&lt;/li&gt;
&lt;li&gt;Section Header Table (Section 기반, &lt;b&gt;링크&lt;/b&gt; 관점)&lt;/li&gt;
&lt;li&gt;실제 데이터 (코드/데이터)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ELF Header 주요 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;573&quot; data-start=&quot;553&quot; data-section-id=&quot;1yr8y66&quot;&gt;Magic (0x7F 'ELF')&lt;/li&gt;
&lt;li data-end=&quot;593&quot; data-start=&quot;574&quot; data-section-id=&quot;2ett7d&quot;&gt;Class (32/64-bit)&lt;/li&gt;
&lt;li data-end=&quot;606&quot; data-start=&quot;594&quot; data-section-id=&quot;9476i2&quot;&gt;Endianness&lt;/li&gt;
&lt;li data-end=&quot;620&quot; data-start=&quot;607&quot; data-section-id=&quot;16urv8a&quot;&gt;OS ABI&lt;/li&gt;
&lt;li data-end=&quot;647&quot; data-start=&quot;621&quot; data-section-id=&quot;1fuqnl0&quot;&gt;Type (ET_EXEC, ET_DYN 등)&lt;/li&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;648&quot; data-section-id=&quot;1oyv47k&quot;&gt;Entry poin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;648&quot; data-section-id=&quot;1oyv47k&quot;&gt;Segment 와 Section 구분&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 77.4155%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.0242%;&quot;&gt;&lt;b&gt; 구분 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.6025%;&quot;&gt;&lt;b&gt; Segment &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14.9766%;&quot;&gt;&lt;b&gt; Section (컴파일의 결과)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.0242%;&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.6025%;&quot;&gt;실행&lt;/td&gt;
&lt;td style=&quot;width: 14.9766%;&quot;&gt;링크/재배치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.0242%;&quot;&gt;&lt;b&gt;단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.6025%;&quot;&gt;LOAD segment&lt;/td&gt;
&lt;td style=&quot;width: 14.9766%;&quot;&gt;.text, .data 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.0242%;&quot;&gt;&lt;b&gt;사용 시점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.6025%;&quot;&gt;로딩/실행&lt;/td&gt;
&lt;td style=&quot;width: 14.9766%;&quot;&gt;컴파일/링크&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;648&quot; data-section-id=&quot;1oyv47k&quot;&gt;주요 ELF 타입&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 76.8116%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.0483%;&quot;&gt;&lt;b&gt;타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.6425%;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.0483%;&quot;&gt;&lt;b&gt;ET_REL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.6425%;&quot;&gt;Relocatable (.o)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.0483%;&quot;&gt;&lt;b&gt;ET_EXEC&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.6425%;&quot;&gt;Executable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.0483%;&quot;&gt;&lt;b&gt;ET_DYN&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.6425%;&quot;&gt;Shared Object (.so, PIE), 최근 ASLR 대응을 위해 많이 사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.0483%;&quot;&gt;&lt;b&gt;ET_CORE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 56.6425%;&quot;&gt;Core dump&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>포직스 (POSIX)</category>
      <category>ELF</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/159</guid>
      <comments>https://autosw.tistory.com/159#entry159comment</comments>
      <pubDate>Sun, 29 Mar 2026 01:06:49 +0900</pubDate>
    </item>
    <item>
      <title>XCP Granularity</title>
      <link>https://autosw.tistory.com/158</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ODT 엔트리(DAQ로 전송할 신호)의 &amp;ldquo;크기 단위(step)&amp;rdquo;를 바이트로 선언하는 파라미터&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Granularity는 &amp;ldquo;버스에 실리는 ODT 엔트리 데이터의 최소 단위(패킹 단위)&amp;rdquo;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;슬레이브 내부의 구조체 정렬/크기와는 별&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;마스터는 각 엔트리의 길이를 이 단위의 배수로 패킹&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;구현 관점(슬레이브 스택)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;슬레이브가 보장해야 할 것
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GET_DAQ_PROCESSOR_INFO/GET_DAQ_RESOLUTION_INFO 등에서 Granularity의 일관성&lt;/li&gt;
&lt;li&gt;측정 데이터 읽기 시, 마스터가 패딩해온 레이아웃에 맞춰 정확한 오프셋에서 복사.&lt;/li&gt;
&lt;li&gt;언알라인드 접근이 위험한 플랫폼은 내부 복사 시 안전한 로딩 경로 사용(memcpy 또는 정렬된 임시 버퍼).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;안전한 로드/스토어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C에서 직접 캐스팅 로드를 피하고, 크기별 안전 복사 함수를 사용.&lt;/li&gt;
&lt;li&gt;주변장치 레지스터는 문서화된 정렬로만 접근(8/16bit windows 등).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DTO 빌더의 패킹 로직
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터가 &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Granularity&lt;/span&gt; 단위로 패킹한다고 가정하지만, 슬레이브 자체가 데이터 소스를 읽어 DTO 버퍼에 채울 때도 동일 규칙 준수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;성능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;memcpy를&amp;nbsp;많이&amp;nbsp;쓰면&amp;nbsp;CPU&amp;nbsp;부하&amp;uarr;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;가능하면 같은 정렬의 신호를 같은 ODT로 묶어 패딩 손실과 복사 비용 모두를 최소화.&lt;/li&gt;
&lt;li&gt;DMA 사용 시 버퍼 정렬과 캐시 일관성 확보.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;에러 처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MAX_ODT_ENTRY_SIZE_DAQ 초과 시 명확한 에러 리턴.&lt;/li&gt;
&lt;li&gt;지원하지&amp;nbsp;않는&amp;nbsp;크기/정렬&amp;nbsp;요청에&amp;nbsp;대한&amp;nbsp;에러&amp;nbsp;코드&amp;nbsp;및&amp;nbsp;이벤트&amp;nbsp;로깅.
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>측정 및 보정 (Measurement and Calibration)/XCP</category>
      <category>XCP</category>
      <category>XCP Granularity</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/158</guid>
      <comments>https://autosw.tistory.com/158#entry158comment</comments>
      <pubDate>Thu, 12 Mar 2026 18:58:55 +0900</pubDate>
    </item>
    <item>
      <title>동적 DAQ(Dynamic DAQ) 전송</title>
      <link>https://autosw.tistory.com/157</link>
      <description>&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;1. 전송 활성화 및 시작 절차&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;설정된 지도를 바탕으로 데이터를 송출하기 위한 마지막 3단계&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;① SET_DAQ_LIST_MODE (모드 설정)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이 명령은 특정 DAQ 리스트 동작 방식 정의&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;주요 설정 값:&lt;/b&gt; 전송 방향(DAQ), 타임스탬프 포함 여부, 전송 주기(Event Channel)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;패킷 예시:&lt;/b&gt; [0xE0] [0x01] [0x00 0x00] [0x01 0x00] [0x01] [0x00]
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0xE0: CMD (SET_DAQ_LIST_MODE)&lt;/li&gt;
&lt;li&gt;0x01: Mode (타임스탬프 활성화 등)&lt;/li&gt;
&lt;li&gt;0x00 0x00: DAQ List 번호 (#0)&lt;/li&gt;
&lt;li&gt;0x01 0x00: Event Channel 번호 (데이터를 추출할 시점/주기)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7&quot;&gt;② START_STOP_DAQ_LIST (개별 준비)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;설정된 DAQ 리스트를 &quot;전송 대기(Selecting)&quot; 상태로 전환&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;패킷 예시:&lt;/b&gt; [0xDE] [0x01] [0x00 0x00]
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0xDE: CMD (START_STOP_DAQ_LIST)&lt;/li&gt;
&lt;li&gt;0x01: Mode (0x01 = Start / Select)&lt;/li&gt;
&lt;li&gt;0x00 0x00: DAQ List 번호 (#0)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10&quot;&gt;③ START_STOP_SYNCH (일괄 시작)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;대기 중인 모든 DAQ 리스트를 동시에 시작(Synchronous Start)시킵니다. 이 명령이 떨어지는 순간부터 ECU는 데이터 전송 시작&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;패킷 예시:&lt;/b&gt; [0xDD] [0x01]
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0xDD: CMD (START_STOP_SYNCH)&lt;/li&gt;
&lt;li&gt;0x01: Mode (0x01 = Start all selected)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;2. 실제 전송되는 데이터 프레임 (DTO)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;모든 명령 완료시, ECU는 설정된 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;15&quot;&gt;Event Channel&lt;/b&gt; 주기마다 DTO 포맷의 패킷을 전송&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16&quot;&gt;[최종 전송 패킷 분석 (앞서 설정한 RPM/Temp 기준)]&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;| 구분 | ID Field (PID) | Timestamp Field | Data Field (RPM + Temp) |&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;| &lt;b data-index-in-node=&quot;135&quot; data-path-to-node=&quot;16&quot;&gt;Hex 값&lt;/b&gt; | &lt;b data-index-in-node=&quot;143&quot; data-path-to-node=&quot;16&quot;&gt;00&lt;/b&gt; | &lt;b data-index-in-node=&quot;148&quot; data-path-to-node=&quot;16&quot;&gt;55 66&lt;/b&gt; | &lt;b data-index-in-node=&quot;156&quot; data-path-to-node=&quot;16&quot;&gt;B8 0B 5A&lt;/b&gt; |&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;| &lt;b data-index-in-node=&quot;169&quot; data-path-to-node=&quot;16&quot;&gt;의미&lt;/b&gt; | ODT #0 | 시간 정보 (예: 26201 ticks) | RPM(3000) + 온도(90) |&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;ID Field:&lt;/b&gt; ALLOC_ODT 단계에서 할당된 절대적 또는 상대적 번호&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;Timestamp Field:&lt;/b&gt; SET_DAQ_LIST_MODE시 타임스탬프 활성화 여부에 따라 결정&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;Data Field:&lt;/b&gt; ALLOC_ODT_ENTRY에서 정의한 2개의 데이터(3바이트)가 순서대로 배치&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;3. 전체 흐름 요약 (Sequence)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;Configuration:&lt;/b&gt; FREE_DAQ &amp;rarr; ALLOC_... &amp;rarr; WRITE_DAQ (데이터 지도 작성)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;Activation:&lt;/b&gt; SET_DAQ_LIST_MODE (타임스탬프/주기 설정)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0&quot;&gt;Preparation:&lt;/b&gt; START_STOP_DAQ_LIST (전송할 리스트 선택)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,3,0&quot;&gt;Execution:&lt;/b&gt; START_STOP_SYNCH (&lt;b data-index-in-node=&quot;29&quot; data-path-to-node=&quot;20,3,0&quot;&gt;실제 데이터 전송 시작&lt;/b&gt;)&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>측정 및 보정 (Measurement and Calibration)/XCP</category>
      <category>XCP</category>
      <category>동적 DAQ 전송</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/157</guid>
      <comments>https://autosw.tistory.com/157#entry157comment</comments>
      <pubDate>Fri, 6 Mar 2026 04:11:39 +0900</pubDate>
    </item>
    <item>
      <title>동적 DAQ(Dynamic DAQ) 설정</title>
      <link>https://autosw.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;마스터(PC)가 슬레이브(ECU)의 메모리 리소스를 효율적으로 할당하고, 읽어올 데이터의 지도를 그리는 과정&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. 동적 DAQ 설정 6단계 절차&lt;/h3&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;설정은 보통 FREE_DAQ -&amp;gt; ALLOC_DAQ -&amp;gt; ALLOC_ODT -&amp;gt; ALLOC_ODT_ENTRY -&amp;gt; SET_DAQ_PTR -&amp;gt; WRITE_DAQ 순으로 진행&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;동적 DAQ 설정은 '큰 바구니(DAQ) -&amp;gt; 작은 바구니(ODT) -&amp;gt; 그 안의 칸막이(ODT Entry)'를 만드는 과정&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-ved=&quot;0CAAQ3ecQahgKEwjUj9bxsYmTAxUAAAAAHQAAAAAQ2gI&quot; data-hveid=&quot;0&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,0,0&quot;&gt;순서&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;명령어 (CMD)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,2,0&quot;&gt;값 (Hex)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,3,0&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;FREE_DAQ&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;D6&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;기존 모든 DAQ 구성을 초기화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;ALLOC_DAQ&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;D5 00 01 00&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;DAQ 리스트를 1개(0x0001) 할당&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;3&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;ALLOC_ODT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;D4 00 00 00 01&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;DAQ #0에 ODT를 1개(0x01) 할당&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,0,0&quot;&gt;4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,1,0&quot;&gt;ALLOC_ODT_ENTRY&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;D3 00 00 00 02&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,3,0&quot;&gt;DAQ #0의 ODT #0에 &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;6,4,3,0&quot;&gt;2개&lt;/b&gt;의 Entry(데이터 칸) 생성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,5,0,0&quot;&gt;5&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,5,1,0&quot;&gt;SET_DAQ_PTR&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,2,0&quot;&gt;E2 00 00 00 00&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,3,0&quot;&gt;편집할 지점을 'DAQ #0, ODT #0, Entry #0'으로 지정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,6,0,0&quot;&gt;6&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,6,1,0&quot;&gt;WRITE_DAQ&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,6,2,0&quot;&gt;E1 01 02 00 [Addr]&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,6,3,0&quot;&gt;Entry #0에 RPM(2바이트) 주소 설정 (포인터 자동 증가)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,7,0,0&quot;&gt;7&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,7,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,7,1,0&quot;&gt;WRITE_DAQ&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,7,2,0&quot;&gt;E1 01 01 00 [Addr]&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,7,3,0&quot;&gt;Entry #1에 Temp(1바이트) 주소 설정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 실제 패킷 예시 (데이터 2개 읽기)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;가정:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;데이터 1:&lt;/b&gt; 엔진 RPM (주소: 0x12345678, 크기: 2바이트)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;데이터 2:&lt;/b&gt; 냉각수 온도 (주소: 0x1234567A, 크기: 1바이트)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0&quot;&gt;설정 대상:&lt;/b&gt; DAQ 리스트 #0, ODT #0&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size20&quot;&gt;① SET_DAQ_PTR (포인터 지정)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&quot;DAQ #0의 ODT #0, 그 안의 0번 자리에 데이터를 정의하겠다&quot;라고 선언합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;Packet:&lt;/b&gt; [0xE2] [0x00] [0x00] [0x00] [0x00] (CMD, Reserved, DAQ_L, ODT, Element)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size20&quot;&gt;② WRITE_DAQ (RPM 매핑)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&quot;그 자리에 2바이트짜리 RPM 주소를 넣겠다&quot;는 명령&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;Packet:&lt;/b&gt; [0xE1] [0x01] [0x02] [0x00] [78 56 34 12] (CMD, Bitmask, Size, Address)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size20&quot;&gt;③ WRITE_DAQ (Temp 매핑)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;다음 위치(Element 1)에 1바이트짜리 온도 주소 배정 (포인터는 자동으로 다음으로 넘어감)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;Packet:&lt;/b&gt; [0xE1] [0x01] [0x01] [0x00] [7A 56 34 12] (CMD, Bitmask, Size, Address)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;3. 설정 완료 후 전송되는 DTO 프레임 구조&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;설정이 끝나고 START_STOP_DAQ_LIST 명령으로 측정을 시작시, ECU는 다음과 같은 &lt;b data-index-in-node=&quot;55&quot; data-path-to-node=&quot;21&quot;&gt;DTO 패킷 전송&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22&quot;&gt;[실제 데이터 패킷 예시]&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;PID (ODT 번호):&lt;/b&gt; 0x00 (Absolute 모드 가정)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;Timestamp:&lt;/b&gt; 0x0001 (2바이트 가정)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0&quot;&gt;Data:&lt;/b&gt; RPM(0x0BB8 = 3000), Temp(0x5A = 90도)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-ved=&quot;0CAAQ3ecQahgKEwjUj9bxsYmTAxUAAAAAHQAAAAAQwAI&quot; data-hveid=&quot;0&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;24&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,0,0,0&quot;&gt;ID Field (1B)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,0,1,0&quot;&gt;Timestamp Field (2B)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,0,2,0&quot;&gt;Data Field (3B)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0,0&quot;&gt;00&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,1,0&quot;&gt;01 00&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;24,1,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,2,0&quot;&gt;B8 0B 5A&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0&quot;&gt;ID Field:&lt;/b&gt; 이 데이터가 ODT #0번임을 나타내는 PID 값&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0&quot;&gt;Timestamp Field:&lt;/b&gt; 데이터가 생성된 시점의 타이머 값&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0&quot;&gt;Data Field:&lt;/b&gt; 설정한 순서대로 RPM(2B)과 온도(1B)가 연속 배치&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>측정 및 보정 (Measurement and Calibration)/XCP</category>
      <category>XCP</category>
      <category>동적 DAQ 설정</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/156</guid>
      <comments>https://autosw.tistory.com/156#entry156comment</comments>
      <pubDate>Fri, 6 Mar 2026 03:58:24 +0900</pubDate>
    </item>
    <item>
      <title>XCP DAQ : 동기화 데이터 전송 모델</title>
      <link>https://autosw.tistory.com/155</link>
      <description>&lt;!-- draw.io diagram --&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-mxgraph=&quot;{&amp;quot;highlight&amp;quot;:&amp;quot;#0000ff&amp;quot;,&amp;quot;nav&amp;quot;:true,&amp;quot;resize&amp;quot;:true,&amp;quot;dark-mode&amp;quot;:&amp;quot;auto&amp;quot;,&amp;quot;toolbar&amp;quot;:&amp;quot;zoom layers tags lightbox&amp;quot;,&amp;quot;edit&amp;quot;:&amp;quot;_blank&amp;quot;,&amp;quot;xml&amp;quot;:&amp;quot;&amp;lt;mxfile host=\&amp;quot;app.diagrams.net\&amp;quot; agent=\&amp;quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36\&amp;quot; version=\&amp;quot;29.2.9\&amp;quot;&amp;gt;\n  &amp;lt;diagram name=\&amp;quot;페이지-1\&amp;quot; id=\&amp;quot;VOWeaBKocSfoSsIw6jde\&amp;quot;&amp;gt;\n    &amp;lt;mxGraphModel dx=\&amp;quot;786\&amp;quot; dy=\&amp;quot;791\&amp;quot; grid=\&amp;quot;1\&amp;quot; gridSize=\&amp;quot;10\&amp;quot; guides=\&amp;quot;1\&amp;quot; tooltips=\&amp;quot;1\&amp;quot; connect=\&amp;quot;1\&amp;quot; arrows=\&amp;quot;1\&amp;quot; fold=\&amp;quot;1\&amp;quot; page=\&amp;quot;1\&amp;quot; pageScale=\&amp;quot;1\&amp;quot; pageWidth=\&amp;quot;827\&amp;quot; pageHeight=\&amp;quot;1169\&amp;quot; math=\&amp;quot;0\&amp;quot; shadow=\&amp;quot;0\&amp;quot;&amp;gt;\n      &amp;lt;root&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;0\&amp;quot; /&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;1\&amp;quot; parent=\&amp;quot;0\&amp;quot; /&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;ODT #0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;90\&amp;quot; width=\&amp;quot;206\&amp;quot; x=\&amp;quot;317\&amp;quot; y=\&amp;quot;340\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;0&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;1&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;Memory in Slave\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;270\&amp;quot; width=\&amp;quot;140\&amp;quot; x=\&amp;quot;80\&amp;quot; y=\&amp;quot;190\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0000&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0011&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 2\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0021&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 3\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;90\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-52\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0xBEEF&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;Element 3\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;150\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-51\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;...\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0xCAFE&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;Element 4\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;210\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-47\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;...\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;240\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-12\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-28\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;180\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;365\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;quot; style=\&amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-16\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;PID=0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-17\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-18\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;ODT #1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;120\&amp;quot; width=\&amp;quot;206\&amp;quot; x=\&amp;quot;317\&amp;quot; y=\&amp;quot;190\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;0&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;1&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;2&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;90\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-49\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-50\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-55\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;240\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;215\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot; style=\&amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;240\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-58\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;PID=1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-59\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-60\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-62\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;2\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-61\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-63\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-64\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;quot; value=\&amp;quot;ODT List\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;320\&amp;quot; y=\&amp;quot;140\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-65\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;quot; value=\&amp;quot;DAQ List\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;140\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n      &amp;lt;/root&amp;gt;\n    &amp;lt;/mxGraphModel&amp;gt;\n  &amp;lt;/diagram&amp;gt;\n&amp;lt;/mxfile&amp;gt;\n&amp;quot;}&quot;&gt;슬레이브 메모리, ODT 그리고 DAQ 리스트 연관관계&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;code_1767623383626&quot; data-ke-type=&quot;html&quot; data-source=&quot;&amp;lt;!-- draw.io diagram --&amp;gt;
&amp;lt;div class=&amp;quot;mxgraph&amp;quot; style=&amp;quot;max-width:100%;border:1px solid transparent;&amp;quot; data-mxgraph=&amp;quot;{&amp;amp;quot;highlight&amp;amp;quot;:&amp;amp;quot;#0000ff&amp;amp;quot;,&amp;amp;quot;nav&amp;amp;quot;:true,&amp;amp;quot;resize&amp;amp;quot;:true,&amp;amp;quot;dark-mode&amp;amp;quot;:&amp;amp;quot;auto&amp;amp;quot;,&amp;amp;quot;toolbar&amp;amp;quot;:&amp;amp;quot;zoom layers tags lightbox&amp;amp;quot;,&amp;amp;quot;edit&amp;amp;quot;:&amp;amp;quot;_blank&amp;amp;quot;,&amp;amp;quot;xml&amp;amp;quot;:&amp;amp;quot;&amp;amp;lt;mxfile host=\&amp;amp;quot;app.diagrams.net\&amp;amp;quot; agent=\&amp;amp;quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36\&amp;amp;quot; version=\&amp;amp;quot;29.2.9\&amp;amp;quot;&amp;amp;gt;\n  &amp;amp;lt;diagram name=\&amp;amp;quot;페이지-1\&amp;amp;quot; id=\&amp;amp;quot;VOWeaBKocSfoSsIw6jde\&amp;amp;quot;&amp;amp;gt;\n    &amp;amp;lt;mxGraphModel dx=\&amp;amp;quot;786\&amp;amp;quot; dy=\&amp;amp;quot;791\&amp;amp;quot; grid=\&amp;amp;quot;1\&amp;amp;quot; gridSize=\&amp;amp;quot;10\&amp;amp;quot; guides=\&amp;amp;quot;1\&amp;amp;quot; tooltips=\&amp;amp;quot;1\&amp;amp;quot; connect=\&amp;amp;quot;1\&amp;amp;quot; arrows=\&amp;amp;quot;1\&amp;amp;quot; fold=\&amp;amp;quot;1\&amp;amp;quot; page=\&amp;amp;quot;1\&amp;amp;quot; pageScale=\&amp;amp;quot;1\&amp;amp;quot; pageWidth=\&amp;amp;quot;827\&amp;amp;quot; pageHeight=\&amp;amp;quot;1169\&amp;amp;quot; math=\&amp;amp;quot;0\&amp;amp;quot; shadow=\&amp;amp;quot;0\&amp;amp;quot;&amp;amp;gt;\n      &amp;amp;lt;root&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;0\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;0\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;ODT #0\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;90\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; x=\&amp;amp;quot;317\&amp;amp;quot; y=\&amp;amp;quot;340\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;0&amp;amp;amp;amp;nbsp; 주소,&amp;amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; y=\&amp;amp;quot;30\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;1&amp;amp;amp;amp;nbsp; 주소,&amp;amp;amp;amp;nbsp; Element 크기\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; y=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;Memory in Slave\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;270\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; x=\&amp;amp;quot;80\&amp;amp;quot; y=\&amp;amp;quot;190\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;@0x0000&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; Element 1\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;30\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;@0x0011&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; Element 2\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;@0x0021&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp; Element 3\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;90\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-52\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;120\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;@0xBEEF&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;Element 3\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;150\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-51\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;...\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;180\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;@0xCAFE&amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;nbsp;Element 4\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;210\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-47\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;...\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;140\&amp;amp;quot; y=\&amp;amp;quot;240\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-12\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-28\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;180\&amp;amp;quot; x=\&amp;amp;quot;601\&amp;amp;quot; y=\&amp;amp;quot;365\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;amp;quot; style=\&amp;amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;180\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-16\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;PID=0\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-17\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;0\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-18\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;1\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;120\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;ODT #1\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;120\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; x=\&amp;amp;quot;317\&amp;amp;quot; y=\&amp;amp;quot;190\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;0&amp;amp;amp;amp;nbsp; 주소,&amp;amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; y=\&amp;amp;quot;30\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;1&amp;amp;amp;amp;nbsp; 주소,&amp;amp;amp;amp;nbsp; Element 크기\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; y=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;amp;quot; style=\&amp;amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;amp;quot; value=\&amp;amp;quot;2&amp;amp;amp;amp;nbsp; 주소,&amp;amp;amp;amp;nbsp; Element 크기\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;206\&amp;amp;quot; y=\&amp;amp;quot;90\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-49\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-50\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-55\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;240\&amp;amp;quot; x=\&amp;amp;quot;601\&amp;amp;quot; y=\&amp;amp;quot;215\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;amp;quot; style=\&amp;amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;240\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-58\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;PID=1\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-59\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;0\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-60\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;1\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;120\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-62\&amp;amp;quot; parent=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;amp;quot; style=\&amp;amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;amp;quot; value=\&amp;amp;quot;2\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;180\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot;&amp;amp;gt;\n            &amp;amp;lt;mxRectangle height=\&amp;amp;quot;40\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; as=\&amp;amp;quot;alternateBounds\&amp;amp;quot; /&amp;amp;gt;\n          &amp;amp;lt;/mxGeometry&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-61\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-63\&amp;amp;quot; edge=\&amp;amp;quot;1\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; source=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;amp;quot; style=\&amp;amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;amp;quot; target=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry relative=\&amp;amp;quot;1\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-64\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;amp;quot; value=\&amp;amp;quot;ODT List\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;320\&amp;amp;quot; y=\&amp;amp;quot;140\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n        &amp;amp;lt;mxCell id=\&amp;amp;quot;rTFz6nvDyD9JXuZdVPJA-65\&amp;amp;quot; parent=\&amp;amp;quot;1\&amp;amp;quot; style=\&amp;amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;amp;quot; value=\&amp;amp;quot;DAQ List\&amp;amp;quot; vertex=\&amp;amp;quot;1\&amp;amp;quot;&amp;amp;gt;\n          &amp;amp;lt;mxGeometry height=\&amp;amp;quot;30\&amp;amp;quot; width=\&amp;amp;quot;60\&amp;amp;quot; x=\&amp;amp;quot;601\&amp;amp;quot; y=\&amp;amp;quot;140\&amp;amp;quot; as=\&amp;amp;quot;geometry\&amp;amp;quot; /&amp;amp;gt;\n        &amp;amp;lt;/mxCell&amp;amp;gt;\n      &amp;amp;lt;/root&amp;amp;gt;\n    &amp;amp;lt;/mxGraphModel&amp;amp;gt;\n  &amp;amp;lt;/diagram&amp;amp;gt;\n&amp;amp;lt;/mxfile&amp;amp;gt;\n&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;https://viewer.diagrams.net/js/viewer-static.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&quot;&gt;&lt;!-- draw.io diagram --&gt;
&lt;div class=&quot;mxgraph&quot; style=&quot;max-width: 100%; border: 1px solid transparent;&quot; data-mxgraph=&quot;{&amp;quot;highlight&amp;quot;:&amp;quot;#0000ff&amp;quot;,&amp;quot;nav&amp;quot;:true,&amp;quot;resize&amp;quot;:true,&amp;quot;dark-mode&amp;quot;:&amp;quot;auto&amp;quot;,&amp;quot;toolbar&amp;quot;:&amp;quot;zoom layers tags lightbox&amp;quot;,&amp;quot;edit&amp;quot;:&amp;quot;_blank&amp;quot;,&amp;quot;xml&amp;quot;:&amp;quot;&amp;lt;mxfile host=\&amp;quot;app.diagrams.net\&amp;quot; agent=\&amp;quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36\&amp;quot; version=\&amp;quot;29.2.9\&amp;quot;&amp;gt;\n  &amp;lt;diagram name=\&amp;quot;페이지-1\&amp;quot; id=\&amp;quot;VOWeaBKocSfoSsIw6jde\&amp;quot;&amp;gt;\n    &amp;lt;mxGraphModel dx=\&amp;quot;786\&amp;quot; dy=\&amp;quot;791\&amp;quot; grid=\&amp;quot;1\&amp;quot; gridSize=\&amp;quot;10\&amp;quot; guides=\&amp;quot;1\&amp;quot; tooltips=\&amp;quot;1\&amp;quot; connect=\&amp;quot;1\&amp;quot; arrows=\&amp;quot;1\&amp;quot; fold=\&amp;quot;1\&amp;quot; page=\&amp;quot;1\&amp;quot; pageScale=\&amp;quot;1\&amp;quot; pageWidth=\&amp;quot;827\&amp;quot; pageHeight=\&amp;quot;1169\&amp;quot; math=\&amp;quot;0\&amp;quot; shadow=\&amp;quot;0\&amp;quot;&amp;gt;\n      &amp;lt;root&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;0\&amp;quot; /&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;1\&amp;quot; parent=\&amp;quot;0\&amp;quot; /&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;ODT #0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;90\&amp;quot; width=\&amp;quot;206\&amp;quot; x=\&amp;quot;317\&amp;quot; y=\&amp;quot;340\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;0&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-3\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;1&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;Memory in Slave\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;270\&amp;quot; width=\&amp;quot;140\&amp;quot; x=\&amp;quot;80\&amp;quot; y=\&amp;quot;190\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0000&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0011&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 2\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0x0021&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; Element 3\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;90\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-52\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0xBEEF&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;Element 3\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;150\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-51\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;...\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;@0xCAFE&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;Element 4\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;210\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-47\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-7\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;...\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;140\&amp;quot; y=\&amp;quot;240\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-12\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-45\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-28\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-4\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;180\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;365\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-14\&amp;quot; style=\&amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-16\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;PID=0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-17\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-18\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-15\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;ODT #1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;120\&amp;quot; width=\&amp;quot;206\&amp;quot; x=\&amp;quot;317\&amp;quot; y=\&amp;quot;190\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;0&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기 (ODT Entry)\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;30\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;1&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-41\&amp;quot; style=\&amp;quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rotatable=0;whiteSpace=wrap;html=1;\&amp;quot; value=\&amp;quot;2&amp;amp;amp;nbsp; 주소,&amp;amp;amp;nbsp; Element 크기\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;206\&amp;quot; y=\&amp;quot;90\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-49\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-8\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-50\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-9\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-43\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-55\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-10\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-44\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;240\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;215\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot; style=\&amp;quot;shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;\&amp;quot; value=\&amp;quot;\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;240\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-58\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;PID=1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-59\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;0\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;60\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-60\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;1\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;120\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-62\&amp;quot; parent=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-57\&amp;quot; style=\&amp;quot;shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;\&amp;quot; value=\&amp;quot;2\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;180\&amp;quot; as=\&amp;quot;geometry\&amp;quot;&amp;gt;\n            &amp;lt;mxRectangle height=\&amp;quot;40\&amp;quot; width=\&amp;quot;60\&amp;quot; as=\&amp;quot;alternateBounds\&amp;quot; /&amp;gt;\n          &amp;lt;/mxGeometry&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-61\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-42\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-56\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-63\&amp;quot; edge=\&amp;quot;1\&amp;quot; parent=\&amp;quot;1\&amp;quot; source=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-48\&amp;quot; style=\&amp;quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\&amp;quot; target=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-5\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry relative=\&amp;quot;1\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-64\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;quot; value=\&amp;quot;ODT List\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;320\&amp;quot; y=\&amp;quot;140\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n        &amp;lt;mxCell id=\&amp;quot;rTFz6nvDyD9JXuZdVPJA-65\&amp;quot; parent=\&amp;quot;1\&amp;quot; style=\&amp;quot;text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;\&amp;quot; value=\&amp;quot;DAQ List\&amp;quot; vertex=\&amp;quot;1\&amp;quot;&amp;gt;\n          &amp;lt;mxGeometry height=\&amp;quot;30\&amp;quot; width=\&amp;quot;60\&amp;quot; x=\&amp;quot;601\&amp;quot; y=\&amp;quot;140\&amp;quot; as=\&amp;quot;geometry\&amp;quot; /&amp;gt;\n        &amp;lt;/mxCell&amp;gt;\n      &amp;lt;/root&amp;gt;\n    &amp;lt;/mxGraphModel&amp;gt;\n  &amp;lt;/diagram&amp;gt;\n&amp;lt;/mxfile&amp;gt;\n&amp;quot;}&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://viewer.diagrams.net/js/viewer-static.min.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DTO 패킷 (DAQ 와 STIM 에 사용)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 44.4573%; text-align: center;&quot; colspan=&quot;2&quot;&gt;&lt;b&gt;Identification Field&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25.3876%; text-align: center;&quot;&gt;&lt;b&gt;Timestamp Field&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.1551%; text-align: center;&quot;&gt;&lt;b&gt;Data Field&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%; text-align: center;&quot;&gt;PID&lt;br /&gt;(DAQ = 0x00 ... 0xFB)&lt;/td&gt;
&lt;td style=&quot;width: 24.6124%; text-align: center;&quot;&gt;DAQ 리스트 번호 &lt;br /&gt;(상대적 ODT 경우)&lt;/td&gt;
&lt;td style=&quot;width: 25.3876%; text-align: center;&quot;&gt;데이터 전송 또는 샘플링 시간&lt;/td&gt;
&lt;td style=&quot;width: 30.1551%; text-align: center;&quot;&gt;실제 측정값&lt;br /&gt;ODT 정의된 순서에 따라&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;02&lt;/td&gt;
&lt;td style=&quot;width: 24.6124%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25.3876%;&quot;&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;7,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,1,0&quot;&gt;2B 1A&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.1551%;&quot;&gt;B8 0B 2D 87&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;절대적 ODT vs 상대적 ODT&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-sheets-baot=&quot;1&quot; data-sheets-root=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;Absolute ODT&lt;/td&gt;
&lt;td&gt;Relative ODT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;식별자 구성&lt;/td&gt;
&lt;td&gt;오직 PID (1 Byte)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;PID + DAQ List Number&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ODT 번호 성격&lt;/td&gt;
&lt;td&gt;시스템 전체의 고유 번호&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;특정 DAQ 리스트 내의 순번&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최대 ODT 개수&lt;/td&gt;
&lt;td&gt;최대 251개 (DAQ 기준)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;이론상 수만 개 가능&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;통신 효율&lt;/td&gt;
&lt;td&gt;높음 (식별 필드가 짧음)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;낮음 (식별 필드가 길어짐)&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;언제 쓰는가?&lt;/td&gt;
&lt;td&gt;소규모/중규모 데이터 측정 시&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;대규모/복잡한 데이터 측정 시&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DAQ&lt;/b&gt; 로 사용될 경우 (슬레이브 --&amp;gt; 마스터)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PID 는 &lt;b&gt;0x00 &amp;lt;= DAQ &amp;lt;= 0xFB&lt;/b&gt; 내의 ODT 번호&lt;/li&gt;
&lt;li&gt;ODT 번호는 데이터 필드에 담겨질 수집된 데이터 요소를 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;STIM&lt;/b&gt;으로 사용될 경우 (마스터 --&amp;gt; 슬레이브)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PID는 &lt;b&gt;0x00 &amp;lt;= STIM &amp;lt;= 0xBF&lt;/b&gt; 내의 ODT 번호&lt;/li&gt;
&lt;li&gt;ODT 번호는 데이터 필드에 담겨질 제어(STIM) 데이터 요소를 정의&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DAQ : Data AcQuisition
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;슬레이브 메모리상의 데이터 개체&amp;nbsp; --&amp;gt; 동기화된 방식으로 전송 ---&amp;gt;&amp;nbsp; 마스터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;개체 기술표 (ODT ; Object Description Table)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동기화된 데이터 전송 개체들과 슬레이브 메모리간의 매핑 정보를 기술&lt;/li&gt;
&lt;li&gt;다중 ODT entry들을 하나의 ODT로 그룹화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동적 DAQ 리스트를 사용할 경우 : 최대 ODT Entry (MAX_ODT_ENTRIES) 의 수는 0으로 기록&lt;/li&gt;
&lt;li&gt;정적 DAQ 리스트를 사용할 경우&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 최대 ODT Entry (MAX_ODT_ENTRIES) 의 수는 해당 DAQ 리스트에 포함되는 ODT 중 가장 많은 ODT Entry 갯수를 표시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;패킷 아이디 (PID ; Packet IDentifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ODT에 기술된 개체들의 내용을 식별하는데 사용되는 ID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이벤트 채널 (Event Channel)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;XCP는 동시에 활성화된 다중 DAQ 리스트들을 허용 --&amp;gt; 각 DAQ 리스트별 샘플링과 전송은 슬레이브상의 개별 이벤트에 의해 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DAQ 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 105px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 9.76745%; height: 63px; text-align: center;&quot; rowspan=&quot;2&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 76.9768%; height: 21px; text-align: center;&quot; colspan=&quot;3&quot;&gt;CTO 명령&lt;/td&gt;
&lt;td style=&quot;width: 13.2558%; height: 21px; text-align: center;&quot;&gt;DTO 명령&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 19.3024%; height: 42px;&quot;&gt;DAQ 리스트 개수 생성&lt;br /&gt;(ALLOC_DAQ)&lt;/td&gt;
&lt;td style=&quot;width: 32.5581%; height: 42px;&quot;&gt;각 DAQ 리스트 별 ODT 개수 할당&lt;br /&gt;(ALLOC_ODT, ALLOC_ODT_ENTRY)&lt;/td&gt;
&lt;td style=&quot;width: 25.1163%; height: 42px;&quot;&gt;ODT에 담을 변수 정의&lt;br /&gt;(SET_DAQ_PTR, WRTIE_DAQ 등)&lt;/td&gt;
&lt;td style=&quot;width: 13.2558%; height: 42px;&quot;&gt;데이터 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 9.76745%; height: 21px;&quot;&gt;정적 DAQ&lt;/td&gt;
&lt;td style=&quot;width: 19.3024%; height: 21px;&quot;&gt;&lt;b&gt;사전 정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.5581%; height: 21px;&quot;&gt;&lt;b&gt;사전 정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25.1163%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;td style=&quot;width: 13.2558%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 9.76745%; height: 21px;&quot;&gt;동적 DAQ&lt;/td&gt;
&lt;td style=&quot;width: 19.3024%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;td style=&quot;width: 32.5581%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;td style=&quot;width: 25.1163%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;td style=&quot;width: 13.2558%; height: 21px;&quot;&gt;런타임 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정적 DAQ (Static DAQ) : DAQ 리스트 형태 사전 정의 --&amp;gt; 런타임시 ODT 변수 정의 필요 !!!
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;초기화 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;FREE_DAQ (0xD6)&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;-&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;기존에 설정된 모든 DAQ 내용을 초기화합니다. (구조는 유지)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;포인터 설정 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;SET_DAQ_PTR (0xE2)&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;00 00 00 01&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;&quot;DAQ 리스트 0번의 0번 ODT, 1번 Entry를 가리켜라&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;주소 기입 &lt;b data-path-to-node=&quot;11,5,0,0&quot; data-index-in-node=&quot;0&quot;&gt;(내용물 채우기) &lt;/b&gt;: &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;WRITE_DAQ (0xF2)&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;04 00 12 34 56 78&lt;/span&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;&quot;방금 지정한 곳에 0x12345678 주소의 4바이트 데이터를 담아라&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,0,0&quot;&gt;시작 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;START_STOP_DAQ_LIST (0xDE)&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;01 00 00 ...&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,3,0&quot;&gt;&quot;0번 DAQ 리스트를 시작(Select)해라&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;동적 DAQ (Dynamic DAQ) : 가용 HEAP 크기만 전달 후 DAQ 리스트 형태 런타임 정의 --&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;런타임시 ODT 변수 정의&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;초기화 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;FREE_DAQ (0xD6)&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;-&lt;/span&gt;&lt;span data-path-to-node=&quot;11,1,3,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,3,0&quot;&gt;동적 DAQ에서는 기존 할당된 모든 메모리를 해제합니다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;리스트 할당 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,1,0&quot;&gt;ALLOC_DAQ (0xD5)&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,2,0&quot;&gt;00 0A&lt;/span&gt;&lt;span data-path-to-node=&quot;11,2,3,0&quot;&gt;&quot;DAQ 리스트를 총 10개 생성해라&quot;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;ODT 할당 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,1,0&quot;&gt;ALLOC_ODT (0xD4)&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;00 01 05&lt;/span&gt;&lt;span data-path-to-node=&quot;11,3,3,0&quot;&gt;&quot;1번 DAQ 리스트 안에 ODT를 5개 만들어라&quot;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span data-path-to-node=&quot;11,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0,0&quot;&gt;Entry 할당 : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,1,0&quot;&gt;ALLOC_ODT_ENTRY (0xD3)&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,4,2,0&quot;&gt;00 01 00 08&lt;/span&gt;&lt;span data-path-to-node=&quot;11,4,3,0&quot;&gt;&quot;1번 DAQ의 0번 ODT에 데이터를 담을 칸(Entry)을 8개 만들어라&quot;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span data-path-to-node=&quot;11,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,0,0&quot;&gt;주소 기입 (내용물 채우기) : &lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5,1,0&quot;&gt;WRITE_DAQ (0xF2)&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5,2,0&quot;&gt;04 00 11 22 33 44&lt;/span&gt;&lt;span data-path-to-node=&quot;11,5,3,0&quot;&gt;(이후 과정은 정적 DAQ와 동일&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b data-path-to-node=&quot;6,4,0,0&quot; data-index-in-node=&quot;0&quot;&gt;시작 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;START_STOP_DAQ_LIST (0xDE)&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;01 00 00 ...&lt;/span&gt;&lt;span data-path-to-node=&quot;6,4,3,0&quot;&gt;&quot;0번 DAQ 리스트를 시작(Select)해라&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>측정 및 보정 (Measurement and Calibration)/XCP</category>
      <category>XCP DAQ</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/155</guid>
      <comments>https://autosw.tistory.com/155#entry155comment</comments>
      <pubDate>Mon, 5 Jan 2026 22:30:33 +0900</pubDate>
    </item>
    <item>
      <title>프로토콜 활성화</title>
      <link>https://autosw.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Wireshark에서 특정 프로토콜 (예, XCP)를 지원함에도 불구하고 화면 상에 해당 프로토콜이 표시되지 않는 경우는 해당 프로토콜에 대한 설정을 추가해 주어야 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;편집 -&amp;gt; 설정 -&amp;gt; Protocols -&amp;gt; XCP
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;XCP -&amp;gt; UDP/TCP Mapping -&amp;gt; 편집&lt;/li&gt;
&lt;li&gt;+ 버튼을 클릭하여 IP 주소, 프로토콜, 포트 등을 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo3U25/dJMcadHnS53/BNOTpqkgaki3ukkUbepU6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo3U25/dJMcadHnS53/BNOTpqkgaki3ukkUbepU6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo3U25/dJMcadHnS53/BNOTpqkgaki3ukkUbepU6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo3U25%2FdJMcadHnS53%2FBNOTpqkgaki3ukkUbepU6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;707&quot; height=&quot;451&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>이더넷/와이어샤크 (Wireshark)</category>
      <category>Wireshark XCP 설정</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/154</guid>
      <comments>https://autosw.tistory.com/154#entry154comment</comments>
      <pubDate>Mon, 29 Dec 2025 22:30:16 +0900</pubDate>
    </item>
    <item>
      <title>와이어샤크 업데이트 (우분투)</title>
      <link>https://autosw.tistory.com/153</link>
      <description>&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-sfc-cp=&quot;&quot; data-animation-nesting=&quot;&quot;&gt;Advanced Update (Using Wireshark PPA for Latest Versions)&lt;span data-processed=&quot;true&quot; data-wiz-uids=&quot;uBaFKb_1i,uBaFKb_1j,uBaFKb_1k&quot;&gt;&lt;span data-processed=&quot;true&quot; data-wiz-attrbind=&quot;class=uBaFKb_1i/TKHnVd;&quot; data-animation-atomic=&quot;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-processed=&quot;true&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-processed=&quot;true&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQAA&quot;&gt;&lt;span data-processed=&quot;true&quot; data-sfc-cp=&quot;&quot;&gt;&lt;b&gt;Open Terminal&lt;/b&gt;. &lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: left;&quot;&gt;Press&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Ctrl + Alt + T&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQAQ&quot;&gt;&lt;span data-processed=&quot;true&quot; data-sfc-cp=&quot;&quot;&gt;&lt;b&gt;Add Wireshark Stable PPA&lt;/b&gt;:&lt;/span&gt;
&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQAg&quot; data-wiz-uids=&quot;uBaFKb_1t,uBaFKb_1u,uBaFKb_1v&quot;&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-animation-atomic=&quot;&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-processed=&quot;true&quot;&gt;bash&lt;/div&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;pre class=&quot;smali&quot; data-processed=&quot;true&quot;&gt;&lt;code&gt;sudo add-apt-repository ppa:wireshark-dev/stable
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQBA&quot;&gt;&lt;span data-processed=&quot;true&quot; data-sfc-cp=&quot;&quot;&gt;&lt;b&gt;Update Repository List&lt;/b&gt;:&lt;/span&gt;
&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQBQ&quot; data-wiz-uids=&quot;uBaFKb_22,uBaFKb_23,uBaFKb_24&quot;&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-animation-atomic=&quot;&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-processed=&quot;true&quot;&gt;bash&lt;/div&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;pre class=&quot;ebnf&quot; data-processed=&quot;true&quot;&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQBw&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: left;&quot; data-processed=&quot;true&quot; data-sfc-cp=&quot;&quot;&gt;&lt;b&gt;Install/Upgrade Wireshark&lt;/b&gt;:&lt;/span&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-processed=&quot;true&quot; data-hveid=&quot;CAUQCA&quot; data-wiz-uids=&quot;uBaFKb_2b,uBaFKb_2c,uBaFKb_2d&quot;&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-processed=&quot;true&quot; data-animation-atomic=&quot;&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-processed=&quot;true&quot;&gt;bash&lt;/div&gt;
&lt;div data-processed=&quot;true&quot;&gt;
&lt;pre class=&quot;cmake&quot; data-processed=&quot;true&quot;&gt;&lt;code&gt;sudo apt install wireshark
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: left;&quot; data-processed=&quot;true&quot; data-wiz-uids=&quot;uBaFKb_2g,uBaFKb_2h,uBaFKb_2i&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>이더넷/와이어샤크 (Wireshark)</category>
      <category>Wireshark Update</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/153</guid>
      <comments>https://autosw.tistory.com/153#entry153comment</comments>
      <pubDate>Mon, 29 Dec 2025 16:44:19 +0900</pubDate>
    </item>
    <item>
      <title>XCP 기초 (Universal Measurement and Calibration Protocol)</title>
      <link>https://autosw.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;XCP는 차량 환경을 포함하는 임베디드 시스템에서 제어기의 특정 메모리 값이나 애플리케이션의 변수값을 거의 실시간으로 측정하고 필요시 수정할 수 있도록 ASAM 네트워킹 그룹에서 고안된 프로토콜로써, 이전 CAN 프로토콜만을 지원하던 CCP의 프로토콜 한계를 보완하여 Ethernet, Flexray 등의 다양한 통신 프로토콜을 지원하고 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;XCP 동작 구조
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터(Master)-슬레이브(Slave) 구조로, 하나의 마스터가 여러 슬레이브 ECU에 연결 후 실시간 데이터를 제어 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XCP 데이터 베이스
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ASAM A2L 파일이라는 데이터베이스를 사용해 ECU 내부 변수의 물리적 주소와 데이터 타입을 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XCP 패킷
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CTO(Command Transfer Object) : 명령과 응답을 담당&lt;/li&gt;
&lt;li&gt;DTO(Data Transfer Object) : 실시간 데이터 전송을 담당&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XCP 측정 (Measurement)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;폴링 (Polling)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정해진 주기에 따라 마스터가 전송 요청하고 슬레이브가 답하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;동기화 데이터 전송 (Synchronous Data Transfer)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DAQ(Data Acquisition)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;슬레이브가 특정 주기나 이벤트 발생 시마다 마스터의 요청 없이도 데이터를 자동 전송&lt;/li&gt;
&lt;li&gt;효율적인 데이터 전송을 위해 ODT(Object Descriptor Table) 구조 적용 후 다중 변수를 단일 패킷으로 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;STIM(Stimulation)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DAQ가 슬레이브 메모리상의 변수 측정을 위해 &lt;u&gt;슬레이브에서 마스터로&lt;/u&gt; 데이터 전송&lt;/li&gt;
&lt;li&gt;STIM은 슬레이브 메모리상의 변수값 자극(Stimulation)을 위해 &lt;u&gt;마스터에서 슬레이브로&lt;/u&gt; 데이터 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XCP 보정 (Calibration)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마스터가 슬레이브의 메모리 값을 직접 수정하여 제어 로직의 파라미터를 실시간으로 변경하는 과정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XCP는 'Universal' 명칭과 같이 물리 계층(CAN, Ethernet, FlexRay 등)에 독립적으로 동작하는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이더넷 기반의 &lt;/span&gt;&lt;b data-index-in-node=&quot;8&quot; data-path-to-node=&quot;1,7,0&quot;&gt;XCP on Ethernet&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;은 높은 대역폭을 제공하여 수천 개의 신호를 수 밀리초(&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot; data-index-in-node=&quot;54&quot; data-math=&quot;ms&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;ms&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;) 단위로 동시 모니터링 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;전송 계층과 표준 응용 계층의 독립화로, 하드웨어가 변경 여부와 무관하게 상위 소프트웨어의 재사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;참고
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;XCP 마스터 : &lt;a href=&quot;https://github.com/christoph2/pyxcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/christoph2/pyxcp&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;XCP 슬레이브 : &lt;a href=&quot;https://github.com/vectorgrp/XCPlite/tree/master&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/vectorgrp/XCPlite/tree/master&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vector.com/int/en/know-how/protocols/xcp-measurement-and-calibration-protocol/xcp-book/#&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.vector.com/int/en/know-how/protocols/xcp-measurement-and-calibration-protocol/xcp-book/#&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>측정 및 보정 (Measurement and Calibration)/XCP</category>
      <category>XCP 기초</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/152</guid>
      <comments>https://autosw.tistory.com/152#entry152comment</comments>
      <pubDate>Mon, 29 Dec 2025 15:10:52 +0900</pubDate>
    </item>
    <item>
      <title>TCP/IP 프로토콜 테스트</title>
      <link>https://autosw.tistory.com/145</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ARP : Address Resolution Protocol&lt;/li&gt;
&lt;li&gt;ICMPv4 : Internet Control Message Protocol Version 4&lt;/li&gt;
&lt;li&gt;IPv4 : Internet Protocol Version 4&lt;/li&gt;
&lt;li&gt;Dynamic configuration of IPv4 Link Local Address&lt;/li&gt;
&lt;li&gt;UDP : User Datagram Protocol&lt;/li&gt;
&lt;li&gt;DHCPv4 : Dynamic Host configuration Protocol Version 4 Client&lt;/li&gt;
&lt;li&gt;TCP : Transmission Control Protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 항목
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;패킷 생성/수신&lt;/li&gt;
&lt;li&gt;에러 처리&lt;/li&gt;
&lt;li&gt;프로토콜 항목 (헤더, 체크섬, TTL) 검사 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 설정
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하드웨어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 대상(DUT ; Device Under Test) 과 테스트 벤치(Test Bench) 와의 이데넷 인터페이스(RJ45, BroadR-Reach)를 통한 직접 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;img style=&quot;cursor: pointer; max-width: 100%;&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdMAAACjCAYAAADRq/TYAAAAAXNSR0IArs4c6QAAEal0RVh0bXhmaWxlACUzQ214ZmlsZSUyMGhvc3QlM0QlMjJhcHAuZGlhZ3JhbXMubmV0JTIyJTIwbW9kaWZpZWQlM0QlMjIyMDI0LTA0LTIyVDE0JTNBMTIlM0E0NC40NDlaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKFgxMSUzQiUyMExpbnV4JTIweDg2XzY0KSUyMEFwcGxlV2ViS2l0JTJGNTM3LjM2JTIwKEtIVE1MJTJDJTIwbGlrZSUyMEdlY2tvKSUyMENocm9tZSUyRjEyNC4wLjAuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjIxa04tVU1ONnpfTWNIS2dUdHp5cCUyMiUyMHZlcnNpb24lM0QlMjIyNC4yLjMlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTNFJTBBJTIwJTIwJTNDZGlhZ3JhbSUyMG5hbWUlM0QlMjIlRUQlOEUlOTglRUMlOUQlQjQlRUMlQTclODAtMSUyMiUyMGlkJTNEJTIyMWFmVzNYcUFlbHFxMTVtS3FPNm8lMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjgxMCUyMiUyMGR5JTNEJTIyNDQ3JTIyJTIwZ3JpZCUzRCUyMjElMjIlMjBncmlkU2l6ZSUzRCUyMjEwJTIyJTIwZ3VpZGVzJTNEJTIyMSUyMiUyMHRvb2x0aXBzJTNEJTIyMSUyMiUyMGNvbm5lY3QlM0QlMjIxJTIyJTIwYXJyb3dzJTNEJTIyMSUyMiUyMGZvbGQlM0QlMjIxJTIyJTIwcGFnZSUzRCUyMjElMjIlMjBwYWdlU2NhbGUlM0QlMjIxJTIyJTIwcGFnZVdpZHRoJTNEJTIyODI3JTIyJTIwcGFnZUhlaWdodCUzRCUyMjExNjklMjIlMjBtYXRoJTNEJTIyMCUyMiUyMHNoYWRvdyUzRCUyMjAlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlM0Nyb290JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjIwJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyZl9kS2tXQUoxUVZvODhTYWpOM24tMSUyMiUyMHZhbHVlJTNEJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVCJUIyJUE0JUVDJUI5JTk4JTI2bHQlM0JkaXYlMjZndCUzQihUZXN0YmVuY2gpJTI2bHQlM0IlMkZkaXYlMjZndCUzQiUyMiUyMHN0eWxlJTNEJTIyc2tldGNoJTNEMCUzQm91dGxpbmVDb25uZWN0JTNEMCUzQmZvbnRDb2xvciUzRCUyMzIzMkYzRSUzQmdyYWRpZW50Q29sb3IlM0Rub25lJTNCZmlsbENvbG9yJTNEJTIzMjMyRjNEJTNCc3Ryb2tlQ29sb3IlM0Rub25lJTNCZGFzaGVkJTNEMCUzQnZlcnRpY2FsTGFiZWxQb3NpdGlvbiUzRGJvdHRvbSUzQnZlcnRpY2FsQWxpZ24lM0R0b3AlM0JhbGlnbiUzRGNlbnRlciUzQmh0bWwlM0QxJTNCZm9udFNpemUlM0QxMiUzQmZvbnRTdHlsZSUzRDAlM0Jhc3BlY3QlM0RmaXhlZCUzQnBvaW50ZXJFdmVudHMlM0QxJTNCc2hhcGUlM0RteGdyYXBoLmF3czQuY2xpZW50JTNCJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIweCUzRCUyMjQ4MCUyMiUyMHklM0QlMjIxNDAlMjIlMjB3aWR0aCUzRCUyMjc4JTIyJTIwaGVpZ2h0JTNEJTIyNzYlMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjJmX2RLa1dBSjFRVm84OFNhak4zbi00JTIyJTIwc3R5bGUlM0QlMjJlZGdlU3R5bGUlM0RvcnRob2dvbmFsRWRnZVN0eWxlJTNCcm91bmRlZCUzRDAlM0JvcnRob2dvbmFsTG9vcCUzRDElM0JqZXR0eVNpemUlM0RhdXRvJTNCaHRtbCUzRDElM0JlbmRBcnJvdyUzRGNsYXNzaWMlM0JlbmRGaWxsJTNEMSUzQnN0YXJ0QXJyb3clM0RjbGFzc2ljJTNCc3RhcnRGaWxsJTNEMSUzQiUyMiUyMGVkZ2UlM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMSUyMiUyMHNvdXJjZSUzRCUyMmZfZEtrV0FKMVFWbzg4U2FqTjNuLTIlMjIlMjB0YXJnZXQlM0QlMjJmX2RLa1dBSjFRVm84OFNhak4zbi0xJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHJlbGF0aXZlJTNEJTIyMSUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMmZfZEtrV0FKMVFWbzg4U2FqTjNuLTUlMjIlMjB2YWx1ZSUzRCUyMiUyNmx0JTNCZm9udCUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDE0cHglM0IlMjZxdW90JTNCJTI2Z3QlM0JSSjQ1JTIwJUVCJTk4JTkwJUVCJThBJTk0JTIwQnJvYWRSLVJlYWNoJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjIlMjBzdHlsZSUzRCUyMmVkZ2VMYWJlbCUzQmh0bWwlM0QxJTNCYWxpZ24lM0RjZW50ZXIlM0J2ZXJ0aWNhbEFsaWduJTNEbWlkZGxlJTNCcmVzaXphYmxlJTNEMCUzQnBvaW50cyUzRCU1QiU1RCUzQiUyMiUyMHZlcnRleCUzRCUyMjElMjIlMjBjb25uZWN0YWJsZSUzRCUyMjAlMjIlMjBwYXJlbnQlM0QlMjJmX2RLa1dBSjFRVm84OFNhak4zbi00JTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHglM0QlMjItMC41MDgxJTIyJTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyNjglMjIlMjBhcyUzRCUyMm9mZnNldCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14R2VvbWV0cnklM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMmZfZEtrV0FKMVFWbzg4U2FqTjNuLTIlMjIlMjB2YWx1ZSUzRCUyMiVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQiU4QyU4MCVFQyU4MyU4MSUyNmx0JTNCZGl2JTI2Z3QlM0IoRFVUKSUyNmx0JTNCJTJGZGl2JTI2Z3QlM0IlMjIlMjBzdHlsZSUzRCUyMnNrZXRjaCUzRDAlM0JvdXRsaW5lQ29ubmVjdCUzRDAlM0Jmb250Q29sb3IlM0QlMjMyMzJGM0UlM0JncmFkaWVudENvbG9yJTNEbm9uZSUzQmZpbGxDb2xvciUzRCUyMzIzMkYzRCUzQnN0cm9rZUNvbG9yJTNEbm9uZSUzQmRhc2hlZCUzRDAlM0J2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0Rib3R0b20lM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCYWxpZ24lM0RjZW50ZXIlM0JodG1sJTNEMSUzQmZvbnRTaXplJTNEMTIlM0Jmb250U3R5bGUlM0QwJTNCYXNwZWN0JTNEZml4ZWQlM0Jwb2ludGVyRXZlbnRzJTNEMSUzQnNoYXBlJTNEbXhncmFwaC5hd3M0Lm1vYmlsZV9jbGllbnQlM0IlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyMTEwJTIyJTIweSUzRCUyMjEzOSUyMiUyMHdpZHRoJTNEJTIyNDElMjIlMjBoZWlnaHQlM0QlMjI3OCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMmZfZEtrV0FKMVFWbzg4U2FqTjNuLTYlMjIlMjB2YWx1ZSUzRCUyMiVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQyVBMCU4OCVFQyVCMCVBOCUyMiUyMHN0eWxlJTNEJTIyc2tldGNoJTNEMCUzQm91dGxpbmVDb25uZWN0JTNEMCUzQmZvbnRDb2xvciUzRCUyMzIzMkYzRSUzQmdyYWRpZW50Q29sb3IlM0Rub25lJTNCZmlsbENvbG9yJTNEJTIzMjMyRjNEJTNCc3Ryb2tlQ29sb3IlM0Rub25lJTNCZGFzaGVkJTNEMCUzQnZlcnRpY2FsTGFiZWxQb3NpdGlvbiUzRGJvdHRvbSUzQnZlcnRpY2FsQWxpZ24lM0R0b3AlM0JhbGlnbiUzRGNlbnRlciUzQmh0bWwlM0QxJTNCZm9udFNpemUlM0QxMiUzQmZvbnRTdHlsZSUzRDAlM0Jhc3BlY3QlM0RmaXhlZCUzQnBvaW50ZXJFdmVudHMlM0QxJTNCc2hhcGUlM0RteGdyYXBoLmF3czQuZG9jdW1lbnRzMiUzQiUyMiUyMHZlcnRleCUzRCUyMjElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHglM0QlMjI0MTQlMjIlMjB5JTNEJTIyMTAwJTIyJTIwd2lkdGglM0QlMjI0NyUyMiUyMGhlaWdodCUzRCUyMjU0LjcyJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRnJvb3QlM0UlMEElMjAl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&quot; /&gt;&lt;/li&gt;
&lt;li&gt;소프트웨어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 대상
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 대상이 될 프로토콜 스택
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래식 오토사의 경우 (SD, TcpIp, EthIf 그리고 EthDrv)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;img style=&quot;cursor: pointer; max-width: 100%;&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMwAAAFVCAYAAACjPADNAAAAAXNSR0IArs4c6QAAGa50RVh0bXhmaWxlACUzQ214ZmlsZSUyMGhvc3QlM0QlMjJhcHAuZGlhZ3JhbXMubmV0JTIyJTIwbW9kaWZpZWQlM0QlMjIyMDI0LTA0LTIyVDE0JTNBMjglM0EwMC4zNjFaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKFgxMSUzQiUyMExpbnV4JTIweDg2XzY0KSUyMEFwcGxlV2ViS2l0JTJGNTM3LjM2JTIwKEtIVE1MJTJDJTIwbGlrZSUyMEdlY2tvKSUyMENocm9tZSUyRjEyNC4wLjAuMCUyMFNhZmFyaSUyRjUzNy4zNiUyMiUyMGV0YWclM0QlMjIzS1lWSFE1cnRwNFRPakxDNW8yeSUyMiUyMHZlcnNpb24lM0QlMjIyNC4yLjMlMjIlMjB0eXBlJTNEJTIyZGV2aWNlJTIyJTNFJTBBJTIwJTIwJTNDZGlhZ3JhbSUyMG5hbWUlM0QlMjIlRUQlOEUlOTglRUMlOUQlQjQlRUMlQTclODAtMSUyMiUyMGlkJTNEJTIyR1VLVGt4YzRYbnVUZ2ZNMlM5LWolMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjgxMCUyMiUyMGR5JTNEJTIyNDQ3JTIyJTIwZ3JpZCUzRCUyMjElMjIlMjBncmlkU2l6ZSUzRCUyMjEwJTIyJTIwZ3VpZGVzJTNEJTIyMSUyMiUyMHRvb2x0aXBzJTNEJTIyMSUyMiUyMGNvbm5lY3QlM0QlMjIxJTIyJTIwYXJyb3dzJTNEJTIyMSUyMiUyMGZvbGQlM0QlMjIxJTIyJTIwcGFnZSUzRCUyMjElMjIlMjBwYWdlU2NhbGUlM0QlMjIxJTIyJTIwcGFnZVdpZHRoJTNEJTIyODI3JTIyJTIwcGFnZUhlaWdodCUzRCUyMjExNjklMjIlMjBtYXRoJTNEJTIyMCUyMiUyMHNoYWRvdyUzRCUyMjAlMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlM0Nyb290JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjIwJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstMSUyMiUyMHZhbHVlJTNEJTIyRXRoRHJ2JTIyJTIwc3R5bGUlM0QlMjJzaGFwZSUzRG1vZHVsZSUzQmFsaWduJTNEbGVmdCUzQnNwYWNpbmdMZWZ0JTNEMjAlM0JhbGlnbiUzRGNlbnRlciUzQnZlcnRpY2FsQWxpZ24lM0R0b3AlM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQmh0bWwlM0QxJTNCJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIweCUzRCUyMjI2OSUyMiUyMHklM0QlMjIzMTAlMjIlMjB3aWR0aCUzRCUyMjE5MCUyMiUyMGhlaWdodCUzRCUyMjUwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstMiUyMiUyMHZhbHVlJTNEJTIyRXRoSWYlMjIlMjBzdHlsZSUzRCUyMnNoYXBlJTNEbW9kdWxlJTNCYWxpZ24lM0RsZWZ0JTNCc3BhY2luZ0xlZnQlM0QyMCUzQmFsaWduJTNEY2VudGVyJTNCdmVydGljYWxBbGlnbiUzRHRvcCUzQndoaXRlU3BhY2UlM0R3cmFwJTNCaHRtbCUzRDElM0IlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyMjY3JTIyJTIweSUzRCUyMjI0MCUyMiUyMHdpZHRoJTNEJTIyMTUyJTIyJTIwaGVpZ2h0JTNEJTIyNTAlMjIlMjBhcyUzRCUyMmdlb21ldHJ5JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjI0VGMyLTQwRndXTjA4S3JjUWR2ay0zJTIyJTIwdmFsdWUlM0QlMjJUY3BJcCUyMiUyMHN0eWxlJTNEJTIyc2hhcGUlM0Rtb2R1bGUlM0JhbGlnbiUzRGxlZnQlM0JzcGFjaW5nTGVmdCUzRDIwJTNCYWxpZ24lM0RjZW50ZXIlM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCd2hpdGVTcGFjZSUzRHdyYXAlM0JodG1sJTNEMSUzQiUyMiUyMHZlcnRleCUzRCUyMjElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHglM0QlMjIyNzAlMjIlMjB5JTNEJTIyMTcwJTIyJTIwd2lkdGglM0QlMjI5MCUyMiUyMGhlaWdodCUzRCUyMjUwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstNCUyMiUyMHZhbHVlJTNEJTIyU0QlMjIlMjBzdHlsZSUzRCUyMnNoYXBlJTNEbW9kdWxlJTNCYWxpZ24lM0RsZWZ0JTNCc3BhY2luZ0xlZnQlM0QyMCUzQmFsaWduJTNEY2VudGVyJTNCdmVydGljYWxBbGlnbiUzRHRvcCUzQndoaXRlU3BhY2UlM0R3cmFwJTNCaHRtbCUzRDElM0IlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214R2VvbWV0cnklMjB4JTNEJTIyMjcwJTIyJTIweSUzRCUyMjMwJTIyJTIwd2lkdGglM0QlMjI5MCUyMiUyMGhlaWdodCUzRCUyMjUwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstMTQlMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMC4yNSUzQmV4aXRZJTNEMCUzQmV4aXREeCUzRDAlM0JleGl0RHklM0QwJTNCZW50cnlYJTNEMC41JTNCZW50cnlZJTNEMSUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0IlMjIlMjBlZGdlJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyMzIxLjUlMjIlMjB5JTNEJTIyMTAwJTIyJTIwYXMlM0QlMjJzb3VyY2VQb2ludCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyMzE5JTIyJTIweSUzRCUyMjgwJTIyJTIwYXMlM0QlMjJ0YXJnZXRQb2ludCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14R2VvbWV0cnklM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMjRUYzItNDBGd1dOMDhLcmNRZHZrLTUlMjIlMjB2YWx1ZSUzRCUyMlRDOCUyMFByb3RvY29sJTIwSGFuZGxlciUyMiUyMHN0eWxlJTNEJTIyc2hhcGUlM0Rtb2R1bGUlM0JhbGlnbiUzRGxlZnQlM0JzcGFjaW5nTGVmdCUzRDIwJTNCYWxpZ24lM0RjZW50ZXIlM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCd2hpdGVTcGFjZSUzRHdyYXAlM0JodG1sJTNEMSUzQmZpbGxDb2xvciUzRCUyM2ZmZjJjYyUzQnN0cm9rZUNvbG9yJTNEJTIzZDZiNjU2JTNCJTIyJTIwdmVydGV4JTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIweCUzRCUyMjI3MCUyMiUyMHklM0QlMjIxMDAlMjIlMjB3aWR0aCUzRCUyMjE5MCUyMiUyMGhlaWdodCUzRCUyMjUwJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstOSUyMiUyMHN0eWxlJTNEJTIyZWRnZVN0eWxlJTNEb3J0aG9nb25hbEVkZ2VTdHlsZSUzQnJvdW5kZWQlM0QwJTNCb3J0aG9nb25hbExvb3AlM0QxJTNCamV0dHlTaXplJTNEYXV0byUzQmh0bWwlM0QxJTNCZXhpdFglM0QwLjUlM0JleGl0WSUzRDElM0JleGl0RHglM0QwJTNCZXhpdER5JTNEMCUzQmVudHJ5WCUzRDAuOTMzJTNCZW50cnlZJTNEMC4wNCUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0JlbnRyeVBlcmltZXRlciUzRDAlM0IlMjIlMjBlZGdlJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteEdlb21ldHJ5JTIwcmVsYXRpdmUlM0QlMjIxJTIyJTIwYXMlM0QlMjJnZW9tZXRyeSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214UG9pbnQlMjB4JTNEJTIyMzMyJTIyJTIweSUzRCUyMjE1MCUyMiUyMGFzJTNEJTIyc291cmNlUG9pbnQlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteFBvaW50JTIweCUzRCUyMjMyMC45NyUyMiUyMHklM0QlMjIxNzIlMjIlMjBhcyUzRCUyMnRhcmdldFBvaW50JTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhHZW9tZXRyeSUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQyUyRm14Q2VsbCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyNFRjMi00MEZ3V04wOEtyY1FkdmstMTElMjIlMjBzdHlsZSUzRCUyMmVkZ2VTdHlsZSUzRG9ydGhvZ29uYWxFZGdlU3R5bGUlM0Jyb3VuZGVkJTNEMCUzQm9ydGhvZ29uYWxMb29wJTNEMSUzQmpldHR5U2l6ZSUzRGF1dG8lM0JodG1sJTNEMSUzQmV4aXRYJTNEMC43NSUzQmV4aXRZJTNEMSUzQmV4aXREeCUzRDAlM0JleGl0RHklM0QwJTNCZW50cnlYJTNEMC44NjIlM0JlbnRyeVklM0QwLjA0JTNCZW50cnlEeCUzRDAlM0JlbnRyeUR5JTNEMCUzQmVudHJ5UGVyaW1ldGVyJTNEMCUzQiUyMiUyMGVkZ2UlM0QlMjIxJTIyJTIwcGFyZW50JTNEJTIyMSUyMiUyMHNvdXJjZSUzRCUyMjRUYzItNDBGd1dOMDhLcmNRZHZrLTUlMjIlMjB0YXJnZXQlM0QlMjI0VGMyLTQwRndXTjA4S3JjUWR2ay0yJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHJlbGF0aXZlJTNEJTIyMSUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NBcnJheSUyMGFzJTNEJTIycG9pbnRzJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhQb2ludCUyMHglM0QlMjIzOTglMjIlMjB5JTNEJTIyMTUwJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGQXJyYXklM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteEdlb21ldHJ5JTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDJTJGbXhDZWxsJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhDZWxsJTIwaWQlM0QlMjI0VGMyLTQwRndXTjA4S3JjUWR2ay0xMiUyMiUyMHZhbHVlJTNEJTIyJTIyJTIwc3R5bGUlM0QlMjJlbmRBcnJvdyUzRGNsYXNzaWMlM0JodG1sJTNEMSUzQnJvdW5kZWQlM0QwJTNCZW50cnlYJTNEMC45JTNCZW50cnlZJTNEMCUzQmVudHJ5RHglM0QwJTNCZW50cnlEeSUzRDAlM0JlbnRyeVBlcmltZXRlciUzRDAlM0IlMjIlMjBlZGdlJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjElMjIlMjB0YXJnZXQlM0QlMjI0VGMyLTQwRndXTjA4S3JjUWR2ay0xJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMHdpZHRoJTNEJTIyNTAlMjIlMjBoZWlnaHQlM0QlMjI1MCUyMiUyMHJlbGF0aXZlJTNEJTIyMSUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteFBvaW50JTIweCUzRCUyMjQ0MCUyMiUyMHklM0QlMjIxNTAlMjIlMjBhcyUzRCUyMnNvdXJjZVBvaW50JTIyJTIwJTJG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&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;아답티브 오토사의 경우 (ara::com 그리고 POSIX 운영체제별 네트워크 스택)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 진행을 위해 필요한 AUTOSAR Testability 프로토콜 스택&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트 벤치
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 진행을 위해 필요한 AUTOSAR Testability 프로토콜 스택&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;AUTOSAR Testability&lt;/span&gt;&amp;nbsp;프로토콜을 기반으로 하는 각 테스트 케이스별 스크립트&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>이더넷/TC8 테스트</category>
      <category>TC8</category>
      <category>TCP/IP 테스트</category>
      <author>AutoSW</author>
      <guid isPermaLink="true">https://autosw.tistory.com/145</guid>
      <comments>https://autosw.tistory.com/145#entry145comment</comments>
      <pubDate>Mon, 22 Apr 2024 05:08:32 +0900</pubDate>
    </item>
  </channel>
</rss>