<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>재미있는</title>
    <link>https://rorsi.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 14 Jun 2026 10:53:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>rorosi</managingEditor>
    <item>
      <title>Vision SDK에서 NDK 네트워크 통신 구성하기</title>
      <link>https://rorsi.tistory.com/182</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;TDA3x EVM에서 Vision SDK의 NDK(Network Development Kit)를 활용하여 네트워크 통신을 구성하는 방법을 정리한다. NullSource에서 생성한 YUV 프레임을 NetworkTx로 PC에 전송하는 과정을 예제로 다룬다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;테스트 환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;TDA3XEVM&lt;/li&gt;
&lt;li&gt;PROCESSOR_SDK_VISION_03_08_00_00&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NDK란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TI-RTOS(SYS/BIOS) 환경에서 동작하는 경량 TCP/IP 네트워크 스택이다. TDA3x의 GMAC Switch 이더넷 하드웨어를 통해 보드와 PC 간 비디오 프레임, 제어 명령 등을 주고받을 수 있다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기능&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TCP/IP 통신&lt;/td&gt;
&lt;td&gt;NetworkTx/Rx 링크로 비디오 데이터 송수신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DHCP / Static IP&lt;/td&gt;
&lt;td&gt;동적, 정적 IP 모두 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telnet&lt;/td&gt;
&lt;td&gt;원격 콘솔 접속 (기본 활성화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual MAC Port&lt;/td&gt;
&lt;td&gt;TDA3xx EVM에서 이더넷 포트 2개 동시 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;전체 구조&lt;/h2&gt;
&lt;pre class=&quot;gherkin&quot;&gt;&lt;code&gt;+------------------+        TCP (Port 29172)        +------------------+
|   TDA3x Board    | ============================== |    PC (Host)     |
|                  |         Ethernet (RGMII)       |                  |
|  NullSrc Link    |                                |  network_rx tool |
|      |           |                                |  또는 nc 명령     |
|  NetworkTx Link  |  &amp;lt;-- PC가 접속하면 전송 시작 --&amp;gt;  |                  |
|      |           |                                |                  |
|  NDK Stack       |                                |                  |
|      |           |                                |                  |
|  GMAC SW Driver  |                                |                  |
+------------------+                                +------------------+&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 포인트: &lt;b&gt;NetworkTx는 서버 모드&lt;/b&gt;다. 보드가 먼저 데이터를 쏘는 게 아니라, PC가 보드의 포트에 TCP 접속해야 전송이 시작된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 포트 번호:&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;5000&lt;/b&gt; - NetworkCtrl (제어 명령)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;29171&lt;/b&gt; - NetworkRx (보드가 수신)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;29172&lt;/b&gt; - NetworkTx (보드가 송신)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1단계: 빌드 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NDK를 쓰려면 세 곳의 설정 파일을 건드려야 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;플랫폼 cfg.mk에서 NDK 활성화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;apps/configs/tda3xx_evm_bios_all/cfg.mk&lt;/code&gt;에서 NDK를 실행할 프로세서를 지정한다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# NDK를 실행할 프로세서 (ipu1_0 | ipu1_1 | none)
NDK_PROC_TO_USE=ipu1_0

# IPv6 지원 여부
NDK_ENABLE_IPV6=no

# TFDTP 고속 전송 프로토콜
NSP_TFDTP_INCLUDE=no&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TDA3x에서는 A15를 NDK 프로세서로 사용할 수 없다. ipu1_0 또는 ipu1_1만 가능하다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;uc_cfg.mk에서 Use-Case 켜기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;apps/configs/tda3xx_evm_bios_all/uc_cfg.mk&lt;/code&gt;에 use-case를 활성화한다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;UC_null_src_ndk=yes&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UC_LIST에 등록 (이걸 빼먹으면 메뉴에 안 나온다)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;apps/configs/cfg.mk&lt;/code&gt;의 UC_LIST에 추가한다.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;UC_LIST = \
    ...
    UC_null_src_mpeg4enc_null \
    UC_null_src_ndk \
    UC_tfdtprx_display \
    ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 빠지면 &lt;code&gt;system_cfg.h&lt;/code&gt;에 &lt;code&gt;#define UC_null_src_ndk&lt;/code&gt;가 생성되지 않고, &lt;code&gt;#ifdef&lt;/code&gt;로 감싸진 메뉴 코드가 컴파일에서 빠진다. uc_cfg.mk에서 yes로 해놔도 소용없다. &lt;b&gt;실제로 이것 때문에 한참 헤맸다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드:&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;cd vision_sdk
make -s

# 변경이 반영 안 되면 클린 빌드
make clean &amp;amp;&amp;amp; make -s&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 후 확인:&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;grep UC_null_src_ndk links_fw/include/config/apps/tda3xx_evm_bios_all/system_cfg.h
# 출력: #define UC_null_src_ndk&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2단계: IP 주소 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 파일: &lt;code&gt;links_fw/src/rtos/bios_app_common/tda3xx/cfg/NDK_config.cfg&lt;/code&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DHCP (기본값)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도 설정 없이 DHCP 서버가 있으면 자동으로 IP가 할당된다.&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;var enableStaticIpEth0 = 0;  // 0 = DHCP&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정적 IP로 변경하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DHCP 서버가 없는 환경이라면 정적 IP를 설정한다.&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;var enableStaticIpEth0 = 1;  // Static IP 활성화&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 하단에서 IP를 수정한다:&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;Ip.address       = &quot;192.168.1.200&quot;;
Ip.mask          = &quot;255.255.255.0&quot;;
Ip.gatewayIpAddr = &quot;192.168.1.1&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 후 재빌드 필요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;MAC 주소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도 설정 불필요. SoC EFuse에서 자동으로 읽어온다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3단계: 예제 코드 분석 (null_src_ndk)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;apps/src/rtos/usecases/null_src_ndk/&lt;/code&gt; 디렉토리의 예제를 살펴보자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;체인 구조&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;NullSource (YUV420SP, 1280x720, 30fps) --&amp;gt; NetworkTx (TCP, Port 29172)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NullSrc 설정&lt;/h3&gt;
&lt;pre class=&quot;xl&quot;&gt;&lt;code&gt;// chains_nullSrcNetworkTx.c
pNullSrcPrm-&amp;gt;timerPeriodMilliSecs = 33;        // 30fps
pNullSrcPrm-&amp;gt;outQueInfo.numCh = 1;
pNullSrcPrm-&amp;gt;channelParams[0].numBuffers = 4;

pChInfo-&amp;gt;width  = 1280;
pChInfo-&amp;gt;height = 720;
// 데이터 포맷: YUV420SP (NV12)
pChInfo-&amp;gt;flags = System_Link_Ch_Info_Set_Flag_Data_Format(
                    pChInfo-&amp;gt;flags, SYSTEM_DF_YUV420SP_UV);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NetworkTx 설정&lt;/h3&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;pObj-&amp;gt;NetworkTxPrm.networkServerPort = NETWORK_TX_SERVER_PORT;  // 29172
ChainsCommon_networkTxSetMode(&amp;amp;pObj-&amp;gt;NetworkTxPrm);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스 버퍼 초기화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NullSource는 빈 버퍼를 생성하므로, 테스트용으로 흰색 프레임을 채워 넣는다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;// Y plane: 흰색 (0xFF)
memset(pVideoFrame-&amp;gt;bufAddr[0], 0xFF, (1280 * 720));
// UV plane: 무채색 (0x80)
memset(pVideoFrame-&amp;gt;bufAddr[1], 0x80, (1280 * 720 / 2));

// 중요: Cache writeback을 해줘야 실제 메모리에 반영된다
Cache_wb(pVideoFrame-&amp;gt;bufAddr[0], ...);
Cache_wb(pVideoFrame-&amp;gt;bufAddr[1], ...);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실행 흐름&lt;/h3&gt;
&lt;pre class=&quot;coq&quot;&gt;&lt;code&gt;Chains_nullSrcNetworkTx()
  +-&amp;gt; Create (체인 생성)
  +-&amp;gt; fillSrcBuf (버퍼에 흰색 프레임 채우기)
  +-&amp;gt; Start (NullSrc 30fps 생성 시작, NetworkTx listen 시작)
  +-&amp;gt; Runtime Menu (0: Stop, p: Print Stats)
  +-&amp;gt; Stop / Delete&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4단계: PC에서 수신 테스트&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보드 실행&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UART 콘솔에서:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;메인 메뉴에서 &lt;code&gt;a&lt;/code&gt; (Miscellaneous test's) 선택&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt; (NullSrc (YUV) + NDK NetworkTx) 선택&lt;/li&gt;
&lt;li&gt;보드 IP 확인 (부팅 시 UART에 출력됨)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;PC에서 접속&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 1: Vision SDK Network Tools&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;cd vision_sdk/apps/tools/network_tools
make
./bin/network_rx --host 192.168.1.200 --port 29172&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 2: netcat으로 간단 테스트&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;nc 192.168.1.200 29172 &amp;gt; received_data.bin

# 수신된 데이터 크기 확인
# YUV420SP 1프레임 = 1280 * 720 * 1.5 = 1,382,400 bytes
ls -l received_data.bin&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 3: tcpdump로 패킷 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 먼저 nc로 접속한 후, 다른 터미널에서 확인
sudo tcpdump -i eth0 host 192.168.1.200 and port 29172 -c 10&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의: tcpdump만 켜놓고 기다리면 아무것도 안 잡힌다. PC에서 먼저 보드에 TCP 접속해야 한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;새로운 NDK Use-Case 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 null_src_ndk를 참고해서 자신만의 use-case를 등록하는 절차:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) cfg.mk 작성&lt;/b&gt; - &lt;code&gt;apps/src/rtos/usecases/my_usecase/cfg.mk&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;ifeq ($(NDK_PROC_TO_USE), none)
    $(error NDK_PROC_TO_USE should be enabled)
endif
ifeq ($(NDK_PROC_TO_USE), ipu1_0)
    NEED_PROC_IPU1_0=yes
endif&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) UC_LIST에 추가&lt;/b&gt; - &lt;code&gt;apps/configs/cfg.mk&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) uc_cfg.mk에서 활성화&lt;/b&gt; - &lt;code&gt;apps/configs/tda3xx_evm_bios_all/uc_cfg.mk&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4) 메뉴 등록&lt;/b&gt; - &lt;code&gt;apps/src/rtos/common/chains_main_bios_misc.c&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;// 메뉴 문자열
#ifdef UC_my_usecase
    &quot;\r\n N: My NDK Usecase&quot;
#endif

// 핸들러
#ifdef UC_my_usecase
    case 'N':
        Chains_myUsecase(&amp;amp;gChains_usecaseCfg);
        break;
#endif&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5) 빌드 후 system_cfg.h에서 define 확인&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 파일 경로&lt;/h2&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;vision_sdk/
├── apps/configs/
│   ├── cfg.mk                              # UC_LIST (마스터 목록)
│   └── tda3xx_evm_bios_all/
│       ├── cfg.mk                          # NDK_PROC_TO_USE 설정
│       └── uc_cfg.mk                       # UC 활성화 on/off
├── apps/src/rtos/
│   ├── common/chains_main_bios_misc.c      # 메뉴 등록
│   └── usecases/null_src_ndk/              # 예제 use-case
├── apps/tools/network_tools/               # PC측 수신 도구
├── links_fw/
│   ├── include/link_api/
│   │   ├── networkCtrl_if.h                # 포트 번호, 헤더 구조체
│   │   ├── networkTxLink.h                 # NetworkTx API
│   │   └── networkRxLink.h                 # NetworkRx API
│   └── src/rtos/bios_app_common/
│       └── tda3xx/cfg/NDK_config.cfg       # IP, 버퍼, 인터럽트 설정&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TI/TDA3</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/182</guid>
      <comments>https://rorsi.tistory.com/182#entry182comment</comments>
      <pubDate>Fri, 20 Mar 2026 13:14:46 +0900</pubDate>
    </item>
    <item>
      <title>TIDL-TOOL 사용 가이드</title>
      <link>https://rorsi.tistory.com/181</link>
      <description>&lt;p data-end=&quot;175&quot; data-start=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;EdgeAI TIDL Tools&lt;/b&gt;는&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TI SoC(예: AM62A, J784S4, TDA4VM 등)에서&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;딥러닝 모델을 **C7x DSP + MMA(DNN 가속기)**에서 실행할 수 있도록&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모델을 &lt;b&gt;컴파일, 양자화, 최적화, 배포&lt;/b&gt;하는 툴체인입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;184&quot; data-start=&quot;177&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쉽게 말하면:&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;263&quot; data-start=&quot;186&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;263&quot; data-start=&quot;188&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC에서 학습된 ONNX 모델을&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TI SoC 내부 가속기에 맞게 &amp;ldquo;변환해서 실행 가능하게 만들어주는 컴파일러 + 런타임 시스템&amp;rdquo;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;297&quot; data-start=&quot;285&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;297&quot; data-start=&quot;285&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반 ONNX 모델은:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;325&quot; data-start=&quot;298&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;313&quot; data-start=&quot;298&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;float32 연산 기반&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;325&quot; data-start=&quot;314&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CPU 중심 실행&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;346&quot; data-start=&quot;327&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 TI SoC 내부 가속기는:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;386&quot; data-start=&quot;347&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;359&quot; data-start=&quot;347&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;INT8 기반 연산&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;372&quot; data-start=&quot;360&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특수한 메모리 구조&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;386&quot; data-start=&quot;373&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;타일링/스케줄링 필요&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;452&quot; data-start=&quot;388&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  그래서 &lt;b&gt;그냥 ONNX를 복사한다고 실행되지 않음&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;  반드시 TIDL로 &amp;ldquo;컴파일&amp;rdquo; 과정을 거쳐야 함&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1771850969526&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(1) 학습 모델 (ONNX)
        &amp;darr;
(2) PC에서 TIDL 컴파일
        &amp;darr;
(3) model-artifacts 생성
        &amp;darr;
(4) 보드에 복사
        &amp;darr;
(5) ONNXRuntime + TIDLExecutionProvider 실행
        &amp;darr;
(6) C7x DSP + MMA 가속 실행&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 환경&lt;/span&gt;&lt;/h3&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;color: #000000;&quot;&gt;Ubuntu 22.04, python 3.10&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SK-AM62A-LP&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11_01_07_05 Processor SDK&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11_01_06_00 TIDL-TOOL&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 포럼 글에 의하면 11_01 버전 SDK는 11_01_06_00 사용하라고 함.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제로 11_01_07_00은 동작 중에 tidl_tool 다운이 안되는 증상이 있음.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?tisearch=e2e-sitesearch&amp;amp;keymatch=TIDL%2011_01_07_00#&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?tisearch=e2e-sitesearch&amp;amp;keymatch=TIDL%2011_01_07_00#&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1771822347921&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;SK-AM62-LP: TIDL tool for SDK11.1 AM62A - Processors forum - Processors - TI E2E support forums&quot; data-og-description=&quot;&quot; data-og-host=&quot;e2e.ti.com&quot; data-og-source-url=&quot;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?tisearch=e2e-sitesearch&amp;amp;keymatch=TIDL%2011_01_07_00#&quot; data-og-url=&quot;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?keymatch=TIDL+11_01_07_00&amp;amp;tisearch=e2e-sitesearch&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?tisearch=e2e-sitesearch&amp;amp;keymatch=TIDL%2011_01_07_00#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1588884/sk-am62-lp-tidl-tool-for-sdk11-1-am62a/6122038?tisearch=e2e-sitesearch&amp;amp;keymatch=TIDL%2011_01_07_00#&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;SK-AM62-LP: TIDL tool for SDK11.1 AM62A - Processors forum - Processors - TI E2E support forums&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;e2e.ti.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC 환경 준비 &lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-end=&quot;667&quot; data-start=&quot;655&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. 필요 라이브러리 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1771850283058&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get install libyaml-cpp-dev libglib2.0-dev&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. TIDL Tools 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1771850361942&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SDK 버전에 맞는 태그 확인:
git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git
cd edgeai-tidl-tools
git checkout &amp;lt;TAG Compatible with your SDK version&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3. 설정 스크립트 적용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1771850382095&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SOC 환경 변수 설정 (예: am62a, j784s4 등)
export SOC=&amp;lt;Your SOC name&amp;gt;
source ./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;*새 터미널을 열 때마다 설정 필요:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1771850440034&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cd edgeai-tidl-tools
source ./setup_env.sh ${SOC}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1702&quot; data-start=&quot;1688&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 data-end=&quot;1744&quot; data-start=&quot;1726&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모델 컴파일&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제 모델 컴파일:&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1771850572883&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;source ./scripts/run_python_examples.sh -o&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1887&quot; data-start=&quot;1867&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위 결과로 다음 산출물이 생성됩니다:&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1771850596893&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;├── model-artifacts/ # 컴파일된 모델
├── models/ # 모델
├── output_images/ # 출력 이미지
├── output_binaries/ # 실행 바이너리
└── test_report_pc_${soc}.csv # 테스트 리포트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2117&quot; data-start=&quot;2080&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; PC 환경에 onnxscript가 설치되어 있지 않으면 다음과 같은 에러가 발생합니다:&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1771852484689&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ModuleNotFoundError: No module named 'onnxscript'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하지만 위 모듈을 따로 설치해도 그에 연관된 모듈과 버전이 맞지 않아 에러가 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의존성 제거를 위해 tvm_compilation_timm_example.py에서 torch.onnx.export(..., dynamo=False)로 고정&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/COApV/dJMcaiWDvFK/fVIcfRdy3GxoqO1MhA0a40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/COApV/dJMcaiWDvFK/fVIcfRdy3GxoqO1MhA0a40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/COApV/dJMcaiWDvFK/fVIcfRdy3GxoqO1MhA0a40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCOApV%2FdJMcaiWDvFK%2FfVIcfRdy3GxoqO1MhA0a40%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;807&quot; height=&quot;368&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발보드에서 테스트&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개발 보드에 &lt;b&gt;TIDL Tools 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1771850678185&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SDK 버전에 맞는 태그 확인:
git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git
cd edgeai-tidl-tools
git checkout &amp;lt;TAG Compatible with your SDK version&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;산출물을 보드로 복사&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC &amp;rarr; 보드&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1771850632409&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;scp -r &amp;lt;pc&amp;gt;/edgeai-tidl-tools/model-artifacts/  &amp;lt;dev board&amp;gt;/edgeai-tidl-tool/
scp -r &amp;lt;pc&amp;gt;/edgeai-tidl-tools/models/  &amp;lt;dev board&amp;gt;/edgeai-tidl-tool/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python 실행:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1771850740534&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export SOC=&amp;lt;Your SOC name&amp;gt;
python3 ./examples/osrt_python/tidl_onnx_inference.py&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-end=&quot;2197&quot; data-start=&quot;2190&quot; data-ke-size=&quot;size16&quot;&gt;리포트 생성:&lt;/p&gt;
&lt;pre id=&quot;code_1771857013347&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;python3 ./scripts/gen_test_report.py&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&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&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;2513&quot; data-start=&quot;2476&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참고 :&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2513&quot; data-start=&quot;2476&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://github.com/TexasInstruments/edgeai-tidl-tools/tree/rel_11_01&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/TexasInstruments/edgeai-tidl-tools/tree/rel_11_01&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1771850997566&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - TexasInstruments/edgeai-tidl-tools: Edgeai TIDL Tools and Examples - This repository contains Tools and example develop&quot; data-og-description=&quot;Edgeai TIDL Tools and Examples - This repository contains Tools and example developed for Deep learning runtime (DLRT) offering provided by TI&amp;rsquo;s edge AI solutions. - GitHub - TexasInstruments/edge...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/TexasInstruments/edgeai-tidl-tools/tree/rel_11_01&quot; data-og-url=&quot;https://github.com/TexasInstruments/edgeai-tidl-tools&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/coGzzU/dJMb82MzZkE/suOiRu1BehbZtKtOlZ7Qg1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bC5ymc/dJMb87f3kGu/kHdmglNLpFBuD97rhmkkc0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/TexasInstruments/edgeai-tidl-tools/tree/rel_11_01&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/TexasInstruments/edgeai-tidl-tools/tree/rel_11_01&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/coGzzU/dJMb82MzZkE/suOiRu1BehbZtKtOlZ7Qg1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bC5ymc/dJMb87f3kGu/kHdmglNLpFBuD97rhmkkc0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - TexasInstruments/edgeai-tidl-tools: Edgeai TIDL Tools and Examples - This repository contains Tools and example develop&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Edgeai TIDL Tools and Examples - This repository contains Tools and example developed for Deep learning runtime (DLRT) offering provided by TI&amp;rsquo;s edge AI solutions. - GitHub - TexasInstruments/edge...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TI/AM62A</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/181</guid>
      <comments>https://rorsi.tistory.com/181#entry181comment</comments>
      <pubDate>Thu, 19 Feb 2026 22:29:34 +0900</pubDate>
    </item>
    <item>
      <title>UART2 추가 가이드</title>
      <link>https://rorsi.tistory.com/180</link>
      <description>&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;테스트 환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;TDA3XEVM&lt;/li&gt;
&lt;li&gt;PROCESSOR_SDK_VISION_03_08_00_00&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TDA3xx Vision SDK 환경에서 UART2(SOC_UART2_BASE)를 통신 전용으로 추가하는 방법을 설명한다. &lt;br /&gt;기존 디버그 UART(UART3, devId=2)는 그대로 유지하고, UART2를 CSL 레벨 폴링 방식으로 별도 구현한다.&lt;/p&gt;
&lt;pre id=&quot;code_1771503845550&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;┌──────────────┐     BSP GIO Driver      ┌─────────────┐
│  Debug Host  │◄────────────────────────►│ UART3       │  디버그 콘솔
│  (PC 터미널)  │     (인터럽트 방식)        │ devId=2     │  Vps_printf
└──────────────┘                          └─────────────┘

┌──────────────┐     CSL Polling Driver   ┌─────────────┐
│  UART        │◄────────────────────────►│ UART2       │  통신
│  외부 장치     │     (레지스터 직접 제어)     │ SOC_UART2   │  
└──────────────┘                          └─────────────┘&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UART를 활성화 하기 전에 해당 핀에 대한 클럭을 활성화 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UART2 클럭은 SBL 부트로더가 활성화한다. &lt;br /&gt;(`sbl_utils_tda3xx.c`의&amp;nbsp;`gModuleEnableTable`에&amp;nbsp;UART1/UART2&amp;nbsp;포함)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NaQLm/dJMcaa5lxEQ/nLpc5dWPerkzNmtcnG40eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NaQLm/dJMcaa5lxEQ/nLpc5dWPerkzNmtcnG40eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NaQLm/dJMcaa5lxEQ/nLpc5dWPerkzNmtcnG40eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNaQLm%2FdJMcaa5lxEQ%2FnLpc5dWPerkzNmtcnG40eK%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;724&quot; height=&quot;282&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔&amp;nbsp;UART2&amp;nbsp;클럭은&amp;nbsp;부트로더(SBL)에서&amp;nbsp;이미&amp;nbsp;활성화&lt;br /&gt;➡&amp;nbsp;PRCM&amp;nbsp;별도&amp;nbsp;설정&amp;nbsp;불필요&lt;br /&gt;&lt;br /&gt;✔&amp;nbsp;하지만&amp;nbsp;핀&amp;nbsp;MUX&amp;nbsp;설정은&amp;nbsp;반드시&amp;nbsp;코드에서&amp;nbsp;직접&amp;nbsp;설정해야&amp;nbsp;함&lt;br /&gt;&amp;rarr;&amp;nbsp;UART2_RXD/PAD,&amp;nbsp;UART2_TXD/PAD&amp;nbsp;각각&amp;nbsp;muxmode/pull-up&amp;nbsp;설정&amp;nbsp;필요&lt;/p&gt;
&lt;pre id=&quot;code_1771504109917&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;| 핀 | PAD 레지스터 오프셋 | 설정값 | 의미 |
|----|-------------------|--------|------|
| UART2_RXD | 0x4A003400 + 0x1CC | 0x00060000 | inputenable=1, pulluden=1, muxmode=0 |
| UART2_TXD | 0x4A003400 + 0x1D0 | 0x00000000 | muxmode=0 |

HW_WR_REG32(SOC_CORE_PAD_IO_REGISTERS_BASE + 0x1ccU, 0x00060000U);
HW_WR_REG32(SOC_CORE_PAD_IO_REGISTERS_BASE + 0x1d0U, 0x00000000U);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;937&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT5sAT/dJMcajnC1l9/skid0gtNmWpGU4Rczei6lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT5sAT/dJMcajnC1l9/skid0gtNmWpGU4Rczei6lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT5sAT/dJMcajnC1l9/skid0gtNmWpGU4Rczei6lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT5sAT%2FdJMcajnC1l9%2Fskid0gtNmWpGU4Rczei6lK%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;957&quot; height=&quot;937&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;937&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uif2t/dJMcagkbaEz/clU50FSnjJ9m3ZHVx7g6n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uif2t/dJMcagkbaEz/clU50FSnjJ9m3ZHVx7g6n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uif2t/dJMcagkbaEz/clU50FSnjJ9m3ZHVx7g6n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuif2t%2FdJMcagkbaEz%2FclU50FSnjJ9m3ZHVx7g6n0%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;947&quot; height=&quot;850&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드는 아래 ti에서 제공하는 기본 예제를 참고하였음&lt;/p&gt;
&lt;pre id=&quot;code_1771505862198&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PROCESSOR_SDK_VISION_03_08_00_00/ti_components/drivers/pdk_01_10_04_05/packages/ti/drv/stw_lld/uartconsole/src/uartconsole.c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 아래와 같은 순서로 초기화 (baud = 38400)&lt;/p&gt;
&lt;pre id=&quot;code_1771504879552&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;┌───────────────────────────────────────────┐
│                                           │
│  ① UARTModuleReset(base)                  │
│     &amp;rarr; UART 모듈 소프트 리셋                   │
│                                            │
│  ② UARTFIFOConfig(base, fifoConfig)       │
│     &amp;rarr; TX/RX FIFO 활성화 및 클리어             │
│     &amp;rarr; TX trigger: 56바이트, RX trigger: 1   │
│                                            │
│  ③ UARTDivisorValCompute(48MHz, baud, 16x) │
│     &amp;rarr; divisor = 48000000 / (16 &amp;times; 38400)    │
│     &amp;rarr; divisor = 78                         │
│                                            │
│  ④ UARTDivisorLatchWrite(base, 78)         │
│     &amp;rarr; DLL = 78 &amp;amp; 0xFF = 0x4E               │
│     &amp;rarr; DLH = 0x00                           │
│                                            │
│  ⑤ UARTRegConfigModeEnable(MODE_B)         │
│     &amp;rarr; LCR = 0xBF (EFR 접근용)                │
│                                             │
│  ⑥ UARTLineCharacConfig(8N1)               │
│     &amp;rarr; 8비트 데이터, 1 스톱비트, 패리티 없음       │ 
│                                             │
│  ⑦ UARTDivisorLatchDisable()               │
│     &amp;rarr; DLAB 비트 클리어                        │
│                                             │
│  ⑧ UARTBreakCtl(DISABLE)                   │
│     &amp;rarr; Break condition 비활성화                │
│                                             │
│  ⑨ UARTOperatingModeSelect(UART16x)         │
│     &amp;rarr; MDR1[2:0] = 0 (UART 16x 모드)          │
│                                             │
└─────────────────────────────────────────────┘
| 레지스터 | 오프셋 | 역할 |
|---------|--------|------|
| RBR (Receive Buffer) | 0x00 | 수신 데이터 읽기 (DLAB=0) |
| THR (Transmit Holding) | 0x00 | 송신 데이터 쓰기 (DLAB=0) |
| DLL / DLH | 0x00 / 0x04 | Baud rate 분주기 (DLAB=1) |
| LCR (Line Control) | 0x0C | 8N1 설정 + DLAB 제어 |
| LSR (Line Status) | 0x14 | DR(bit0)=수신있음, THRE(bit5)=송신가능 |
| MDR1 (Mode Definition) | 0x20 | 동작모드 (0=UART16x) |
| SYSS (System Status) | 0x54 | RESETDONE(bit0) |&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 내용은 아래 파일에서 확인 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1771505876359&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PROCESSOR_SDK_VISION_03_08_00_00/ti_components/drivers/pdk_01_10_04_05/packages/ti/csl/src/ip/uart/V1/priv/uart.c&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일안에 UARTCharPut을 통해 Write, UARTCharGet을 통해 Read 작업을 수행하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1772702711806&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void UARTCharPut(uint32_t baseAddr, uint8_t byteTx)
{
    uint32_t lcrRegValue = 0;

    /* Switching to Register Operational Mode of operation. */
    lcrRegValue = UARTRegConfigModeEnable(baseAddr, UART_REG_OPERATIONAL_MODE);

    /*
    ** Waits indefinitely until the THR and Transmitter Shift Registers are
    ** empty.
    */
    while (((uint32_t) UART_LSR_TX_SR_E_MASK |
            (uint32_t) UART_LSR_TX_FIFO_E_MASK) !=
           (HW_RD_REG32(baseAddr + UART_LSR) &amp;amp;
            ((uint32_t) UART_LSR_TX_SR_E_MASK |
             (uint32_t) UART_LSR_TX_FIFO_E_MASK)))
    {
        /* Do nothing - Busy wait */
    }

    HW_WR_REG32(baseAddr + UART_THR, (uint32_t) byteTx);

    /* Restoring the value of LCR. */
    HW_WR_REG32(baseAddr + UART_LCR, lcrRegValue);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1772702695538&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/**
 * \brief    This API waits indefinitely for the arrival of a byte in
 *           the receiver FIFO. Once a byte has arrived, it returns that
 *           byte.
 *
 * \param    baseAddr     Memory address of the UART instance being used.
 *
 * \return   This returns the read byte.
 */

int8_t UARTCharGet(uint32_t baseAddr)
{
    uint32_t lcrRegValue = 0;
    int8_t   retVal      = 0;
    uint32_t tempRetVal  = 0;

    /* Switching to Register Operational Mode of operation. */
    lcrRegValue = UARTRegConfigModeEnable(baseAddr, UART_REG_OPERATIONAL_MODE);

    /* Waits indefinitely until a byte arrives in the RX FIFO(or RHR). */
    while ((uint32_t) UART_LSR_RX_FIFO_E_RX_FIFO_E_VALUE_0 ==
           (HW_RD_REG32(baseAddr + UART_LSR) &amp;amp;
            UART_LSR_RX_FIFO_E_MASK))
    {
        /* Do nothing - Busy wait */
    }

    tempRetVal = HW_RD_REG32(baseAddr + UART_RHR);
    retVal     = ((int8_t) tempRetVal);

    /* Restoring the value of LCR. */
    HW_WR_REG32(baseAddr + UART_LCR, lcrRegValue);

    return retVal;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TI/TDA3</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/180</guid>
      <comments>https://rorsi.tistory.com/180#entry180comment</comments>
      <pubDate>Thu, 19 Feb 2026 21:59:25 +0900</pubDate>
    </item>
    <item>
      <title>XFI Performance</title>
      <link>https://rorsi.tistory.com/179</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Jetson AGX Orin Jetpack 36.4.4 에서 &lt;b&gt;HDMI 모니터를 연결했을 때/안 했을 때&lt;/b&gt;&lt;br /&gt;10GbE(XFI) 대역폭(iperf3 throughput)이 &lt;b&gt;유의미하게 차이 나는 현상&lt;/b&gt;을 확인하고,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;04ca4227-e9eb-4793-ac9d-be8e3f13aa1b&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9eeaf875-c371-4bc3-8aaa-7f070806d972&quot;&gt;단순 재현인지&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;4ce71d4d-46df-4ff3-a928-1c7fd49ed51e&quot;&gt;특정 방향(TX/RX)만 영향인지&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2e9c63a5-d374-47f5-9a3e-eb0db3acc20e&quot;&gt;CPU/IRQ/softirq/GUI 부하와 연관인지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;6de539e7-f948-49cb-bc6a-aa5d74d06cf1&quot; data-ke-size=&quot;size16&quot;&gt;를 &lt;b&gt;정량적으로 검증&lt;/b&gt;하는 것이 목적.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;84f986aa-64bc-4c38-b053-f659be0fb4f6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-prosemirror-node-inline=&quot;true&quot; data-prosemirror-node-name=&quot;inlineCard&quot; data-prosemirror-content-type=&quot;node&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&quot;&gt;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1768915099859&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GUI HDMI setting affect XFI performance&quot; data-og-description=&quot;Hi Thers is a special situation. The XFI performance will affect by GUI&amp;rsquo;s HDMI setting. native Ethernet + HDMI (2K) &amp;gt;&amp;gt;&amp;gt; 6Gbps native Ethernet + HDMI (1080P) &amp;gt;&amp;gt;&amp;gt; 9Gbps native Ethernet + HDMI (800X600)&amp;gt;&amp;gt;10Gbps native Ethernet &amp;gt;&amp;gt;10Gbps Why the HDMI setting &quot; data-og-host=&quot;forums.developer.nvidia.com&quot; data-og-source-url=&quot;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&quot; data-og-url=&quot;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bLQt0h/dJMb83ScK2a/MjRcT7RjWSG4UYRObTpJa0/img.png?width=150&amp;amp;height=80&amp;amp;face=0_0_150_80,https://scrap.kakaocdn.net/dn/mS9xa/dJMb88FYOU8/qgTFMukG5M83pLAy6haHO0/img.png?width=150&amp;amp;height=80&amp;amp;face=0_0_150_80&quot;&gt;&lt;a href=&quot;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://forums.developer.nvidia.com/t/gui-hdmi-setting-affect-xfi-performance/288388&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bLQt0h/dJMb83ScK2a/MjRcT7RjWSG4UYRObTpJa0/img.png?width=150&amp;amp;height=80&amp;amp;face=0_0_150_80,https://scrap.kakaocdn.net/dn/mS9xa/dJMb88FYOU8/qgTFMukG5M83pLAy6haHO0/img.png?width=150&amp;amp;height=80&amp;amp;face=0_0_150_80');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GUI HDMI setting affect XFI performance&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Hi Thers is a special situation. The XFI performance will affect by GUI&amp;rsquo;s HDMI setting. native Ethernet + HDMI (2K) &amp;gt;&amp;gt;&amp;gt; 6Gbps native Ethernet + HDMI (1080P) &amp;gt;&amp;gt;&amp;gt; 9Gbps native Ethernet + HDMI (800X600)&amp;gt;&amp;gt;10Gbps native Ethernet &amp;gt;&amp;gt;10Gbps Why the HDMI setting&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;forums.developer.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;15053f10-b0e4-4cc7-aa47-22517246fa21&quot; data-ke-size=&quot;size16&quot;&gt;상기 포럼에 의하면 &lt;b&gt;JETPACK 36.4.4&lt;/b&gt;에서 &lt;b&gt;Issue Fixed&lt;/b&gt; 되었다고 함&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;ea76d0a8-4328-4925-a91c-ff1a2d71efdc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테스트 환경&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;791f20f1-5f47-4773-8972-d736fd2fbe32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a01080e4-6290-493c-a1ef-f89dbda1ec45&quot;&gt;&lt;b&gt;JETPACK&lt;/b&gt;: &lt;b&gt;36.4.4&lt;/b&gt;&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;60b94fd7-0f03-493a-81cb-293659dd08d5&quot;&gt;장비: &lt;b&gt;Jetson AGX Orin 32GB 2대&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;94b85ff9-8953-4ba0-a62f-7d9f31081e9e&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fdfeb23e-7b18-4379-9f4b-e4d3dcb5cf62&quot;&gt;&lt;b&gt;SERVER 보드1:&lt;/b&gt; AGX Orin (Native 10G 동작안함) + Intel 10G PCIe NIC + jetson_clock 사용&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;3cfe22a7-82c5-4238-8f94-2fb72ce646ec&quot;&gt;&lt;b&gt;CLIENT 보드2:&lt;/b&gt; AGX Orin + Native 10G Port(XFI)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;table&quot; data-prosemirror-content-type=&quot;node&quot; data-prosemirror-initial-todom-render=&quot;true&quot;&gt;
&lt;div data-testid=&quot;table-alignment-container&quot;&gt;
&lt;div data-testid=&quot;table-container&quot; data-layout=&quot;center&quot; data-number-column=&quot;false&quot;&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.116%; height: 346px;&quot; border=&quot;1&quot; data-ssr-placeholder-replace=&quot;table-14db1602-12c9-41d7-b35a-32d824960402&quot; data-ssr-placeholder=&quot;table-14db1602-12c9-41d7-b35a-32d824960402&quot; data-table-width=&quot;1466&quot; data-table-local-id=&quot;14db1602-12c9-41d7-b35a-32d824960402&quot; data-autosize=&quot;false&quot; data-layout=&quot;center&quot; data-number-column=&quot;false&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;height: 42px; width: 8.02217%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;Test ID&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.8126%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;HDMI 연결&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 12.9058%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;jetson_clocks&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 15.9339%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;방향&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 11.2774%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;Avr (Gbps)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.1156%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0 (%)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 7.90522%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;IRQ&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 23.0273%; text-align: center;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;비고&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b9869ba1-7419-4071-9fac-48a6a8a81f70&quot;&gt;
&lt;td style=&quot;height: 42px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8659fa48-c2c2-4e6f-9e90-fe0dc698e666&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;bce91f19-6fa5-4f96-8539-3dc533bd910a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1143d3ff-1617-4732-8e50-7cecc13dc28a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;dc8f5d27-7a50-4c1b-af06-32cfc76f483b&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;TX (Client&amp;rarr;Server)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f55ee047-5fba-4cc3-9a2b-c4f1b263a138&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;4.7 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f72d2e93-7c12-4272-adac-d3f3150b9ead&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;58%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8a4d8d18-baf6-48b2-ab30-5ff7c80bcb93&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;중간중간 속도가 올라가는 증상 있음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e2633651-9b4c-4c38-9b14-2d0bd1582224&quot;&gt;
&lt;td style=&quot;height: 34px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;04a72cca-ee09-43e3-9c01-ccbf367aba3b&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T2&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f58ef821-8ae5-4ca8-b2a3-9043bb85036a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2bf4d5d8-2734-4695-bb6c-24cd42ab8372&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9ba75b4a-5cc0-49ef-936e-59a1bbf54c17&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;RX (-R, Server&amp;rarr;Client)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;83c721d1-2980-4659-a4a5-f92229e00938&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;9.4 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;85e16605-4ced-40d1-8915-64e4bced1883&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;100%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;425e6c25-49a7-43e7-8b80-364c529b0dc8&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;553edb0b-e8b9-4871-b3e3-9f5ddfeb495a&quot;&gt;
&lt;td style=&quot;height: 42px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;72b2668b-e4c7-42f4-95cd-da18c6f526e0&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T3&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;c2c271b7-c06a-477d-b95f-6534e26d4bdd&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;209ab938-b942-4258-8715-48ef82b6ee82&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a7784bc3-6450-4748-8851-6f1437a01860&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;TX (Client&amp;rarr;Server)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a0b9cfa2-d65e-49c3-98e1-41731f5edb69&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;7.5 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9a7db940-be81-4be5-a20d-2c9816c7e95e&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;88%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0313cbe7-9b76-414a-bffc-668e76fba853&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;중간중간 속도가 내려가는 증상 있음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e8e22665-50b8-4b51-b406-aced429269db&quot;&gt;
&lt;td style=&quot;height: 34px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f5290f3e-46ef-4079-be19-a19d7162b6c9&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T4&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;384e300b-1259-477b-9471-d1450c9d1da2&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2c902526-e163-48a1-8a25-ae7d5b697443&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8dfcf49e-9047-4dbd-a032-bcff56ecfd0e&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;RX (-R, Server&amp;rarr;Client)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;dc8bd315-cdbc-465c-bf08-b5e820bd5f77&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;9.4 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;37546be7-6e2a-43c6-83ba-45c0561df144&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;100%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;080f32f9-20be-453f-843e-dd09761c3eb3&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;526d97b7-52ce-4365-b57d-290f3161fcad&quot;&gt;
&lt;td style=&quot;height: 42px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2de3832e-3707-4e51-bee3-57d5c6aff56f&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T5&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a4afd833-5d59-4232-844b-a4e1bc55b721&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9b07570b-0d7a-4f67-9a2e-02d9208ad0f9&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9428ba54-5264-4aea-a777-35d587905796&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;TX (Client&amp;rarr;Server)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5ff59cee-f7f6-4b3d-b9b6-e0bc3b80f54a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;9.4 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a47b848b-127c-441c-abeb-4188f4f1d86e&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;63%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;6731157a-be56-40d5-af40-66d5f5690432&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;중간중간 속도가 내려가는 증상 있음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f32272ea-c744-42d4-93d3-4b41d24989db&quot;&gt;
&lt;td style=&quot;height: 34px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;be79e0e2-083f-40b0-92e9-b9936f99b3d5&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T6&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e5879465-82c5-427d-93da-641463c07484&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;OFF&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;433a1319-9849-4e39-b1c1-4ccaf7efed0d&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;92225b8e-66cf-4e45-a08f-662a96a8edfa&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;RX (-R, Server&amp;rarr;Client)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;cf893264-e0b8-4eac-b8bf-c5422168cc6d&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;9.4 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;af44053f-0b16-415a-bdee-257c9e5bec72&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;88%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;63ff3251-da8a-48a4-b9c9-3600b13e9494&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;d031a20c-be40-438b-994e-9c4d57ba8757&quot;&gt;
&lt;td style=&quot;height: 42px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;ff2a7fb8-bc3d-4bcd-89bf-5f30e93e0090&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T7&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f889fd5a-62bf-40ef-9a2a-220f5b4b8cf3&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f835df99-0b84-4b23-b917-4c26248165ef&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a6f71fc4-0bd5-4a41-94d6-aa243dc8fb31&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;TX (Client&amp;rarr;Server)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0c1eae81-8835-4b8c-a1d7-862bdc1fc824&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;7.8 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2d6bf7b4-3131-4d0b-92dd-9966c1b38be2&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;87%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 42px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;36095f87-e8e2-42a2-b8ae-1e767c2e39ce&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;중간중간 속도가 내려가는 증상 있음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 34px;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableRow&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;aad589d5-f105-4c42-9dc9-c082a84d94dd&quot;&gt;
&lt;td style=&quot;height: 34px; width: 8.02217%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;6792b30b-545c-4b17-8ea0-5514d1a8cf5a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;T8&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.8126%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;d954b7fa-a557-49f7-b249-85ec9b55815a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 12.9058%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f9482d6a-d88a-4aa6-a0bb-69f063e83a05&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 15.9339%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f9c76956-2e7f-41d0-8d13-80c6e04037ec&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;RX (-R, Server&amp;rarr;Client)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 11.2774%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fdf90d8c-7733-444b-97b8-e8e6eeaf89dd&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;9.4 Gbits&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 10.1156%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2007bf0e-6e4b-4169-9170-f71facec0952&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;90%&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 7.90522%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;57d9dfe6-b007-44a1-86e4-ade1df59321a&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;CPU0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 34px; width: 23.0273%;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;tableCell&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;7a63fd38-f2fc-4c41-bd1d-fdd2a1f88ce9&quot;&gt;&lt;br /&gt;&lt;br /&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;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;bad216eb-1364-48cd-85f0-867775fcf004&quot; data-ke-size=&quot;size16&quot;&gt;이전 포럼 사례들은 테스트 조건이 일정하지 않아, 본 검증에서는 &lt;b&gt;HDMI 연결 유무&lt;/b&gt; 및 &lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;jetson_clocks&lt;/span&gt;&lt;b&gt; 적용 여부&lt;/b&gt;를 분리하여 &lt;b&gt;10GbE(XFI) throughput&lt;/b&gt;을 측정하였다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;bad216eb-1364-48cd-85f0-867775fcf004&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;eaf9425e-62ef-4fcf-9483-5d8036903765&quot; data-ke-size=&quot;size16&quot;&gt;측정 결과, &lt;b&gt;RX(-R) 방향은 HDMI 연결 유무 및 &lt;/b&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;jetson_clocks&lt;/span&gt;&lt;b&gt; 적용 여부와 관계없이 약 9.4Gbps로 안정적으로 유지되었으며&lt;/b&gt;, HDMI 유무에 따른 유의미한 차이는 확인되지 않았다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;eaf9425e-62ef-4fcf-9483-5d8036903765&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;반면 &lt;b&gt;TX 방향은 테스트 조건에 따라 throughput 변동이 관측되었고&lt;/b&gt;, 특히 &lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;jetson_clocks&lt;/span&gt; OFF 조건에서 상대적으로 큰 성능 저하가 발생하였다.&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;eaf9425e-62ef-4fcf-9483-5d8036903765&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e61654ad-6ce6-4302-8278-5495448f0e77&quot; data-ke-size=&quot;size16&quot;&gt;따라서 본 검증 기준으로, &lt;b&gt;JetPack 36.4.4 환경에서 HDMI 연결 유무만으로 10GbE(XFI) throughput 차이가 결정된다고 보기 어렵고&lt;/b&gt;, 성능 변동은 &lt;b&gt;HDMI 연결 자체보다는 DVFS 기반 클럭 정책(특히 EMC/CPU 클럭 변화)의 영향이 더 큰 것으로 판단된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e61654ad-6ce6-4302-8278-5495448f0e77&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b2301eb6-0705-450a-999d-6e57443e86ba&quot; data-ke-size=&quot;size16&quot;&gt;또한 NVIDIA 포럼에 따르면 Jetson 플랫폼은 기본적으로 **DVFS(Dynamic Voltage and Frequency Scaling)**가 활성화되어 있으며, &lt;b&gt;HDMI 출력이 없는(headless) 상태에서는 디스플레이 부하가 감소함에 따라 EMC(External Memory Controller) clock이 낮아질 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b2301eb6-0705-450a-999d-6e57443e86ba&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이 경우 10GbE와 같이 &lt;b&gt;메모리 대역폭 의존도가 높은 워크로드&lt;/b&gt;에서 throughput 저하가 발생할 수 있으므로, 클럭을 최대치로 유지하기 위해 &lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;sudo jetson_clocks&lt;/span&gt;&lt;b&gt; 사용을 권장&lt;/b&gt;하고 있다.&lt;br /&gt;(참고 포럼: &lt;span data-prosemirror-node-inline=&quot;true&quot; data-prosemirror-node-name=&quot;inlineCard&quot; data-prosemirror-content-type=&quot;node&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&quot;&gt;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; )&lt;/p&gt;
&lt;figure id=&quot;og_1768915279394&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;[35.4.1] LAN Tx performace is getting lower when HDMI is plug out -EE&quot; data-og-description=&quot;Hi @DaneLLL 我們找了一塊eMMC的SOM測試狀況如下方附件影片: V_20231024_174354_ES2.zip (20.7 MB) 提供給您參考, 看是否跟您那邊的手法相同.&quot; data-og-host=&quot;forums.developer.nvidia.com&quot; data-og-source-url=&quot;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&quot; data-og-url=&quot;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9XUfw/dJMb8RRLRXK/fFhp6cw12ZHkWLustrePS0/img.jpg?width=1184&amp;amp;height=758&amp;amp;face=712_307_789_392,https://scrap.kakaocdn.net/dn/qfcTQ/dJMb8WetvMo/KX6DIaaWvrerIOnByjHGkk/img.jpg?width=1184&amp;amp;height=758&amp;amp;face=712_307_789_392,https://scrap.kakaocdn.net/dn/lljmz/dJMb8TB3spH/CoxBhCCETLn55aQw6ZDyQK/img.jpg?width=690&amp;amp;height=441&amp;amp;face=417_181_460_227&quot;&gt;&lt;a href=&quot;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://forums.developer.nvidia.com/t/35-4-1-lan-tx-performace-is-getting-lower-when-hdmi-is-plug-out-ee/269294/21&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9XUfw/dJMb8RRLRXK/fFhp6cw12ZHkWLustrePS0/img.jpg?width=1184&amp;amp;height=758&amp;amp;face=712_307_789_392,https://scrap.kakaocdn.net/dn/qfcTQ/dJMb8WetvMo/KX6DIaaWvrerIOnByjHGkk/img.jpg?width=1184&amp;amp;height=758&amp;amp;face=712_307_789_392,https://scrap.kakaocdn.net/dn/lljmz/dJMb8TB3spH/CoxBhCCETLn55aQw6ZDyQK/img.jpg?width=690&amp;amp;height=441&amp;amp;face=417_181_460_227');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[35.4.1] LAN Tx performace is getting lower when HDMI is plug out -EE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Hi @DaneLLL 我們找了一塊eMMC的SOM測試狀況如下方附件影片: V_20231024_174354_ES2.zip (20.7 MB) 提供給您參考, 看是否跟您那邊的手法相同.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;forums.developer.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;72b9ae69-f4a1-418b-bcf8-e5d312d715b6&quot; data-ke-size=&quot;size16&quot;&gt;EMC 동작과 관련하여 NVIDIA 공식 문서의 &lt;b&gt;Memory Power Management&lt;/b&gt; 가이드는 다음과 같은 흐름으로 이해할 수 있다.&lt;/p&gt;
&lt;h3 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1b136a19-da52-4915-ba16-e6c6f67c0e36&quot; data-ke-size=&quot;size23&quot;&gt;HDMI 출력이 존재하는 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5d9777d9-ad73-40b9-a7a5-0aee42c87c62&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;43a55af9-6afa-4969-9aea-1671a7f4ffb7&quot;&gt;GPU/디스플레이 하드웨어가 활성화됨&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;03dbdba7-e556-45a4-a067-ccf575a1d5ed&quot;&gt;메모리 대역폭 요구가 증가함&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;606a5831-a811-40b4-8402-d3aea65d697f&quot;&gt;SoC가 EMC clock을 상대적으로 높은 수준으로 유지할 가능성이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;4594d87e-aac0-445b-91cf-fe4fc1eb7097&quot; data-ke-size=&quot;size23&quot;&gt;HDMI 출력이 없는(headless) 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;6aa1db8a-e157-4ff1-abad-cbecb24aa961&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1f54bfb7-81c5-430d-9d70-c719f27d111b&quot;&gt;디스플레이 부하가 감소함&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;43c59ead-835c-4eb6-af58-236ec9f4390a&quot;&gt;DVFS 정책에 따라 EMC clock이 낮아질 수 있음&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;a0bd189d-37ce-4655-b6c7-a31c3aa69903&quot;&gt;메모리 대역폭 변화에 따라 10GbE throughput 저하가 발생할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;f6404398-fcba-4145-b33b-e4465eb9ea64&quot; data-ke-size=&quot;size16&quot;&gt;(참고 문서: &lt;span data-prosemirror-node-inline=&quot;true&quot; data-prosemirror-node-name=&quot;inlineCard&quot; data-prosemirror-content-type=&quot;node&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&quot;&gt;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; )&lt;/p&gt;
&lt;figure id=&quot;og_1768915283357&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Jetson Orin Nano Series, Jetson Orin NX Series and Jetson AGX Orin Series &amp;mdash; NVIDIA Jetson Linux Developer Guide&quot; data-og-description=&quot;Jetson Orin Nano Series, Jetson Orin NX Series and Jetson AGX Orin Series This topic describes power and performance management features of NVIDIA&amp;reg; Jetson Orin&amp;trade; Nano series, Jetson Orin&amp;trade; NX series and NVIDIA&amp;reg; Jetson AGX Orin&amp;trade; series devices. It des&quot; data-og-host=&quot;docs.nvidia.com&quot; data-og-source-url=&quot;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&quot; data-og-url=&quot;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html#memory-power-management&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Jetson Orin Nano Series, Jetson Orin NX Series and Jetson AGX Orin Series &amp;mdash; NVIDIA Jetson Linux Developer Guide&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Jetson Orin Nano Series, Jetson Orin NX Series and Jetson AGX Orin Series This topic describes power and performance management features of NVIDIA&amp;reg; Jetson Orin&amp;trade; Nano series, Jetson Orin&amp;trade; NX series and NVIDIA&amp;reg; Jetson AGX Orin&amp;trade; series devices. It des&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.nvidia.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>NVIDIA/Jetson</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/179</guid>
      <comments>https://rorsi.tistory.com/179#entry179comment</comments>
      <pubDate>Tue, 20 Jan 2026 22:21:42 +0900</pubDate>
    </item>
    <item>
      <title>Draw2D를 이용해 한글 표시</title>
      <link>https://rorsi.tistory.com/178</link>
      <description>&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5fb7fff1-72e9-48b8-82b1-1716fb0a183e&quot; data-ke-size=&quot;size16&quot;&gt;본 글은 TDA3 플랫폼에서 &lt;b&gt;화면에 UTF-8 인코딩 기반의 한글 문자&lt;/b&gt;를 표시하기 위한 Draw2D 기반의 문자 출력 작업을 단계별로 정리한 가이드입니다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;86bc3e42-7eec-4d8c-8ade-bc6a9a5b25d5&quot; data-ke-size=&quot;size20&quot;&gt;1. 기본 개념: 화면 출력 원리&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fa298b72-df98-4c68-acd9-20dbf0384008&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fc0b0144-1842-411c-bf64-1a31862ce99f&quot;&gt;디스플레이 출력은 &lt;b&gt;픽셀 단위로 점을 찍는 방식&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;dbae5867-a4f5-4bcf-99b9-60b850ad83f4&quot;&gt;문자를 표시하려면 **글자마다 픽셀의 점 활성/비활성 상태를 갖는 font data가 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;306e7bab-ca35-41e0-8b29-6c566c20cb32&quot; data-ke-size=&quot;size20&quot;&gt;2. Font 데이터 생성 준비&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 제공된 Draw2D 문자 데이터는 ASCII 데이터를 기반으로 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;07ab2e49-a488-4b80-a2fe-556781eedfc8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;d6c2fabd-ca8c-483b-b0f8-5891dd61aa9d&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;52b62ac4-201a-423a-b0f1-95834fb7d37b&quot;&gt;한자/한글 문자를 표시하려면 &lt;b&gt;글자별 Dot(점) 형태의 비트맵 데이터&lt;/b&gt;가 있어야 합니다.&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9207d295-a33f-49b4-91a8-64a11f502112&quot;&gt;이를 위해 다음 도구를 사용할 수 있습니다:
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;23870672-bb2b-4111-824a-1222e3d52a18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;fda6dc97-f5dd-4e62-87a9-3829877656e8&quot;&gt;&lt;b&gt;font generator 소프트웨어&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/njgFP/dJMcafrIyfb/O0ajZkFbvYq9eutEkGX8D1/font.py?attach=1&amp;amp;knm=tfile.py&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;font.py&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1767187451529&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;server@server-MS-7B23:~/work$ python3 font.py 
한글 문자열을 입력하세요: 조 
폰트 크기(px)를 입력하세요 (예: 16, 24, 32): 16

// ====================================================
// TEXT = &quot;조&quot;
// Font size = 16x16, 1bit, LSB-left
// ====================================================

{ &quot;조&quot;, { 0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x0E,0x00,0x06,0x00,0x03,0xC0,0x03,0xE0,0x07,0x38,0x1C,0x8C,0x31,0x80,0x01,0x80,0x01,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00 } },

// ASCII preview: &quot;조&quot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;█████████&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;███&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;████&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;██████&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;███&amp;middot;&amp;middot;&amp;middot;&amp;middot;███&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;██&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;██████████████&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;
&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&amp;middot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 프로그램은 PC에서 TTF 한글/영문 폰트를 16x16 같은 고정 크기 에서 1bit 비트맵으로 변환하여, TI Draw2D에서 바로 쓸수 있게 C 배열로 변환하는 프로그램 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5c82ef50-e882-432e-b6fb-c167d70a74e1&quot; data-ke-size=&quot;size20&quot;&gt;3. 데이터 구조 작성&lt;/h4&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;9079848a-7ccc-45a4-b6d2-c3a7c018f3ab&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UTF-8 기반 중요 포인트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;0e20182e-c617-4e14-900c-37f698b01ce9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2c0c0cc0-8d90-4236-83c3-87e479a7501b&quot;&gt;&lt;b&gt;한글은 UTF-8 인코딩에서 3바이트 사용&lt;/b&gt; &amp;rarr; 따라서 널 종료 포함하여 4바이트 형태로 처리.&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;ad3327c3-557d-4c85-8edf-2d90441ba11f&quot;&gt;만든 비트맵 데이터를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;6a1c22be-63dd-4ecd-b461-e3677af5b2dc&quot; data-ke-size=&quot;size23&quot;&gt;코드 예시&lt;/h3&gt;
&lt;pre id=&quot;code_1767187485962&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;utils/draw2d/include/draw2d.h&amp;gt;

static const UInt32 gDraw2D_Font_BytesPerPixel = 2;
static const UInt32 gDraw2D_Font_CharNum = 2;        /* 현재 한글 문자 개수 */
static const UInt32 gDraw2D_Font_CharWidth = 24;
static const UInt32 gDraw2D_Font_CharHeight = 24;

static const typFNT_KR24 gDraw2D_Font_KR24[] =
{
    { &quot;조&quot;, { 0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x0E,0x00,0x06,0x00,0x03,0xC0,0x03,0xE0,0x07,0x38,0x1C,0x8C,0x31,0x80,0x01,0x80,0x01,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00 } },
    { &quot;준&quot;, { 0x00,0x00,0xF8,0x0F,0x00,0x0F,0xC0,0x03,0xF0,0x0F,0x1C,0x38,0x00,0x00,0x00,0x00,0xFE,0x7F,0x80,0x01,0x80,0x01,0x98,0x01,0x18,0x00,0x18,0x00,0xF8,0x1F,0x00,0x00 } },
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;43efdcd9-894e-4b2e-96f0-3374c1ea3983&quot; data-ke-size=&quot;size16&quot;&gt;주의:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;aa433056-e2e7-47fb-a30a-90e6a2373382&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;ce418c55-5483-421d-a0ad-33859b844fd7&quot;&gt;&lt;span data-prosemirror-mark-name=&quot;code&quot; data-prosemirror-content-type=&quot;mark&quot;&gt;Index[4]&lt;/span&gt;는 &lt;b&gt;UTF-8 3바이트 + 널 종료&lt;/b&gt; 구성.&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;c2e7e42a-6bce-4ee4-b984-b995035c2ae6&quot;&gt;Dot 데이터는 &lt;b&gt;폭&amp;times;높이&amp;times;bpp 계산값&lt;/b&gt;이며, 여기서는 24&amp;times;24&amp;times;2byte 기준.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;e33383cc-9e52-4449-a761-7a4b1847d5e0&quot; data-ke-size=&quot;size20&quot;&gt;4. 속성 함수 구현&lt;/h4&gt;
&lt;pre id=&quot;code_1767187504274&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Int32 Draw2D_getFontPropertyKorea24x24(Draw2D_FontProperty *pProp)
{
    if(pProp == NULL)
        return SYSTEM_LINK_STATUS_EFAIL;

    pProp-&amp;gt;width       = gDraw2D_Font_CharWidth;
    pProp-&amp;gt;height      = gDraw2D_Font_CharHeight;
    pProp-&amp;gt;addrKorea24   = (typFNT_KR24 *)gDraw2D_Font_KR24;
    pProp-&amp;gt;num         = gDraw2D_Font_CharNum;
    pProp-&amp;gt;bpp         = gDraw2D_Font_BytesPerPixel;
    pProp-&amp;gt;lineOffset  = pProp-&amp;gt;num * pProp-&amp;gt;width * pProp-&amp;gt;bpp;
    pProp-&amp;gt;colorFormat = SYSTEM_DF_BGR16_565;

    return SYSTEM_LINK_STATUS_SOK;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;abc3c35d-a1ef-4465-92a2-f40a0e62b29a&quot; data-ke-size=&quot;size16&quot;&gt;주요 속성 세팅&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;2273fdf9-b54b-4639-af6d-222f59d7767d&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;b0fb10f2-053c-4a8e-ae6b-d1fbb4a057d5&quot;&gt;width, height&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;bbca147e-bad2-406f-a423-1a1137950f93&quot;&gt;문자 수(num)&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;5d5d6220-07cc-4cbd-88ae-5b804e73a652&quot;&gt;픽셀 포맷(colorFormat)&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;10f54146-9cba-4d49-b8bf-220d12d470e2&quot;&gt;메모리 오프셋 계산(lineOffset)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;937bb43e-42ff-42c4-af18-9fdaf6ff90a4&quot; data-ke-size=&quot;size20&quot;&gt;5. 한글 문자열 출력 함수 구현&lt;/h4&gt;
&lt;pre id=&quot;code_1767187523059&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UInt8 *Draw2D_getKoreaFontCharAddr(Draw2D_FontProperty *font, char *c)
{
    UInt16 i = 0;

    if (font == NULL || c == NULL)
        return NULL;

    for (i = 0; i &amp;lt; font-&amp;gt;num; i++)
    {
        if (strcmp(font-&amp;gt;addrKorea24[i].Index, c) == 0)
        {
            /* 일치하는 문자 찾음 */
            break;
        }
    }

    return ((UInt8 *)font-&amp;gt;addrKorea24 + i * sizeof(typFNT_KR24));
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;bulletList&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;41d97162-c4a4-4db2-817c-123204125ba9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;028090c7-f456-4846-b26b-416478d856be&quot;&gt;UTF-8 문자열에 대응하는 블록 주소 반환.&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;3ba1c8b6-3185-4f13-863e-c27d12c4411b&quot;&gt;strcmp로 일치 여부 확인.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;8d8f1764-35b2-4146-a646-ebc1c2e15261&quot; data-ke-size=&quot;size20&quot;&gt;6. Draw2D를 이용한 한자 문자열 출력 함수&lt;/h4&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;84afb700-8560-4ee0-9b2c-95728cdc2d92&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심: 문자 &amp;rarr; 픽셀&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1767187538780&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static inline UInt32 utf8_char_bytes(const char *s)
{
    unsigned char c = (unsigned char)*s;

    if ((c &amp;amp; 0x80) == 0x00)      /* 0xxxxxxx: 1바이트 (ASCII) */
        return 1;
    else if ((c &amp;amp; 0xE0) == 0xC0) /* 110xxxxx: 2바이트 */
        return 2;
    else if ((c &amp;amp; 0xF0) == 0xE0) /* 1110xxxx: 3바이트 (한글) */
        return 3;
    else if ((c &amp;amp; 0xF8) == 0xF0) /* 11110xxx: 4바이트 */
        return 4;
    else
        return 1;  /* 에러 시 기본값 */
}

Int32 Draw2D_drawKoreaString_rot(Draw2D_Handle pCtx,
                                 UInt32 startX,
                                 UInt32 startY,
                                 char *str,
                                 Draw2D_FontPrm *pPrm,
                                 UInt32 rotate)
{
    Draw2D_Obj *pObj = (Draw2D_Obj *)pCtx;

    uint32_t h, w, px, py, charIndex;
    uint8_t *fontAddr;
    uint8_t byte, bit;
    uint16_t color;
    Draw2D_FontProperty font;

    /* UTF-8 문자 임시 버퍼: 최대 3바이트 + '\0' */
    char strTmp[4];
    const char *p;
    UInt32 charBytes;

    /* rotate는 호환성을 위해 유지하지만 현재 미사용 */
    (void)rotate;

    /* 폰트 속성(폭/높이/테이블 주소 등) 세팅 */
    Draw2D_getKoreaFontProperty(pPrm, &amp;amp;font);

    /* 시작 위치가 화면 밖이면 종료 */
    if (startX &amp;gt;= pObj-&amp;gt;bufInfo.bufWidth)
        return 0;
    if (startY &amp;gt;= pObj-&amp;gt;bufInfo.bufHeight)
        return 0;

    color = pPrm-&amp;gt;textColor;

    /* 문자열을 UTF-8 단위로 파싱하며 렌더링 */
    p = str;
    charIndex = 0;

    while (*p != '\0')
    {
        /* 현재 문자의 바이트 수 계산 */
        charBytes = utf8_char_bytes(p);

        /* strTmp를 0으로 채워 '\0' 보장 */
        memset(strTmp, 0, sizeof(strTmp));

        /* UTF-8 문자 복사 (실제 바이트 수만큼만) */
        memcpy(strTmp, p, charBytes);

        /* 해당 글자의 폰트 구조체 시작 주소 얻기 */
        fontAddr = Draw2D_getKoreaFontCharAddr(&amp;amp;font, strTmp);
        if (fontAddr == NULL)
        {
            /* 폰트 테이블에 없는 문자는 건너뛰고 다음 문자로 */
            p += charBytes;
            charIndex++;
            continue;
        }

        /*
         * typFNT_KR16 구조체에서 Index 영역을 건너뛰고 bitmap 데이터 시작 위치로 이동.
         * - Index가 char[4]라고 가정하면 sizeof(Index)=4
         * - 만약 구조체 정의가 다르면 오프셋이 틀어짐(offsetof 사용이 더 안전)
         */
        fontAddr += sizeof(font.addrKorea16-&amp;gt;Index);

        /* 현재 글자 출력 위치 */
        px = startX + charIndex * font.width;
        py = startY;

        /*
         * 폰트는 1bit bitmap이라고 가정:
         * - width=16이면 한 줄은 16bit = 2바이트(font.width/8)
         * - (font.width/8) * h 로 h번째 행의 시작 주소 계산
         */
        for (h = 0; h &amp;lt; font.height; h++)
        {
            for (w = 0; w &amp;lt; (font.width / 8); w++)
            {
                /* h번째 행의 w번째 바이트 */
                byte = *(fontAddr + w + (font.width / 8) * h);

                /* 이 바이트가 0이면 8픽셀 모두 꺼짐 &amp;rarr; skip */
                if (byte == 0)
                    continue;

                /*
                 * bit 0..7을 검사해서 켜진 픽셀만 Draw2D_drawPixel 호출
                 * 현재 구현은 LSB가 &quot;왼쪽&quot; 픽셀이라고 가정(LSB-first, left-to-right)
                 * 만약 폰트 데이터가 MSB-first면 (1 &amp;lt;&amp;lt; (7-bit))로 바꿔야 함.
                 */
                for (bit = 0; bit &amp;lt; 8; bit++)
                {
                    if (byte &amp;amp; (1 &amp;lt;&amp;lt; bit)) /* ✅ LSB-left */
                    {
                        Draw2D_drawPixel(
                            pCtx,
                            px + (w * 8 + bit),  /* X: 좌&amp;rarr;우 */
                            py + h,              /* Y: 상&amp;rarr;하 */
                            color,
                            font.colorFormat
                        );
                    }
                }
            }
        }

        /* 다음 문자로 이동 */
        p += charBytes;
        charIndex++;
    }

    return SYSTEM_LINK_STATUS_SOK;
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UTF-8 문자열 길이만큼 루프 - &lt;b&gt;한글을 3바이트 영어나 특수문자는 1바이트, 다 처리 할 수 있게 바이트 수 처리하여 동작&lt;/b&gt;&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1a5d2be6-4735-493d-9331-4cd33e1c85e7&quot;&gt;각 문자 글자폭만큼 점 찍기&lt;/li&gt;
&lt;li data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;listItem&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;1a5d2be6-4735-493d-9331-4cd33e1c85e7&quot;&gt;비트 검사로 채움/배경 색 결정&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;heading&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;aa938894-00ad-4f23-bf22-3cb913545850&quot; data-ke-size=&quot;size20&quot;&gt;7. 테스트 &amp;amp; 확인&lt;/h4&gt;
&lt;p data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;paragraph&quot; data-prosemirror-content-type=&quot;node&quot; data-local-id=&quot;28a95a42-05f4-4323-964a-be2e64a97fad&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예제 호출:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1767187554564&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Draw2D_drawKoreaString(handle,
    stringObj-&amp;gt;startX,
    stringObj-&amp;gt;startY,
    stringObj-&amp;gt;context,   // UTF-8 문자열
    &amp;amp;stringObj-&amp;gt;font,
    0);&lt;/code&gt;&lt;/pre&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;/ul&gt;
&lt;div data-prosemirror-node-block=&quot;true&quot; data-prosemirror-node-name=&quot;mediaSingle&quot; data-prosemirror-content-type=&quot;node&quot; data-media-vc-wrapper=&quot;true&quot;&gt;
&lt;div data-media-vc-wrapper=&quot;true&quot; data-width-type=&quot;pixel&quot; data-width=&quot;660&quot; data-layout=&quot;center&quot; data-node-type=&quot;mediaSingle&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;129&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3LAj/dJMcahiLiRI/IuMVKTQ6d0vklCHc5FesS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3LAj/dJMcahiLiRI/IuMVKTQ6d0vklCHc5FesS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3LAj/dJMcahiLiRI/IuMVKTQ6d0vklCHc5FesS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3LAj%2FdJMcahiLiRI%2FIuMVKTQ6d0vklCHc5FesS0%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;129&quot; height=&quot;47&quot; data-origin-width=&quot;129&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;참고 :&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.csdn.net/AIRKernel/article/details/125503932?spm=1001.2014.3001.5501&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.csdn.net/AIRKernel/article/details/125503932?spm=1001.2014.3001.5501&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TI/TDA3</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/178</guid>
      <comments>https://rorsi.tistory.com/178#entry178comment</comments>
      <pubDate>Wed, 31 Dec 2025 20:57:50 +0900</pubDate>
    </item>
    <item>
      <title>Buildroot를 통해 RPI4  u-boot 부팅</title>
      <link>https://rorsi.tistory.com/177</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 Raspberry Pi에 Buildroot를 설정하고 U-boot를 통해 커널을 로드하는 방법을 안내합니다.전&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;가이드를&amp;nbsp;실행하려면&amp;nbsp;Raspberry&amp;nbsp;Pi에&amp;nbsp;직렬&amp;nbsp;콘솔&amp;nbsp;연결이&amp;nbsp;필요합니다.&amp;nbsp;또한&amp;nbsp;네트워크를&amp;nbsp;통해&amp;nbsp;부팅하려면&amp;nbsp;TFTP&amp;nbsp;서버가&amp;nbsp;필요합니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;테스트&amp;nbsp;환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;Raspberry&amp;nbsp;Pi&amp;nbsp;4&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Buildroot로&amp;nbsp;이미지&amp;nbsp;빌드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Buildroot 프로젝트를 다운&lt;/p&gt;
&lt;pre id=&quot;code_1763693514147&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git clone https://github.com/buildroot/buildroot.git
cd buildroot&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로, 보드에 맞는 defconfig를 선택합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1763693526562&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make raspberrypi4_64_defconfig&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로&amp;nbsp;메뉴를&amp;nbsp;통해&amp;nbsp;빌드&amp;nbsp;시스템에서&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;사항을&amp;nbsp;구성해보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1763693541170&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make menuconfig&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootloader &amp;rarr; U-Boot 활성화&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;477&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJhDgG/dJMcafyfYeO/3EfEnalgLArqdj3fHetE31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJhDgG/dJMcafyfYeO/3EfEnalgLArqdj3fHetE31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJhDgG/dJMcafyfYeO/3EfEnalgLArqdj3fHetE31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJhDgG%2FdJMcafyfYeO%2F3EfEnalgLArqdj3fHetE31%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;733&quot; height=&quot;477&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;477&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 빌드&lt;/p&gt;
&lt;pre id=&quot;code_1763704211263&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make -j$(nproc)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료 후 생성 파일:&lt;/p&gt;
&lt;pre id=&quot;code_1763704240255&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;output/images/sdcard.img&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SD&amp;nbsp;카드에&amp;nbsp;이미지&amp;nbsp;굽기&lt;/h3&gt;
&lt;pre id=&quot;code_1763704266314&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;lsblk     # SD 카드 위치 확인
sudo dd if=output/images/sdcard.img of=/dev/sdX bs=4M status=progress
sync&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;config.txt&amp;nbsp;수정&lt;/h3&gt;
&lt;pre id=&quot;code_1763704911532&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/boot/config.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 내용:&lt;/p&gt;
&lt;pre id=&quot;code_1763704920343&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ---------------------
# Boot U-Boot on RPi4
# ---------------------
kernel=u-boot.bin&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Raspberry&amp;nbsp;Pi&amp;nbsp;4&amp;nbsp;부팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 Header Pin 구성을 확인하여 Uart to USB 장치를 연결해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1187&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vXyum/dJMcadmQPv7/6o35KAZJDFb9PG6S4kOmvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vXyum/dJMcadmQPv7/6o35KAZJDFb9PG6S4kOmvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vXyum/dJMcadmQPv7/6o35KAZJDFb9PG6S4kOmvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvXyum%2FdJMcadmQPv7%2F6o35KAZJDFb9PG6S4kOmvk%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;1187&quot; height=&quot;665&quot; data-origin-width=&quot;1187&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 후 부팅하면 아래 로그창이 나오게 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZpC8/dJMcai2LVLC/MHSKwoXidQ0rqTnwekyhQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZpC8/dJMcai2LVLC/MHSKwoXidQ0rqTnwekyhQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZpC8/dJMcai2LVLC/MHSKwoXidQ0rqTnwekyhQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZpC8%2FdJMcai2LVLC%2FMHSKwoXidQ0rqTnwekyhQK%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;800&quot; height=&quot;545&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;U-Boot&amp;nbsp;Shell에서&amp;nbsp;수동&amp;nbsp;부팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SD&amp;nbsp;카드&amp;nbsp;이미지의&amp;nbsp;커널을&amp;nbsp;로드:&lt;/p&gt;
&lt;pre id=&quot;code_1763704377765&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fatload mmc 0 ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsLb3F/dJMcaihsTks/CTi9W7X2rnQNK3sS3Nql51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsLb3F/dJMcaihsTks/CTi9W7X2rnQNK3sS3Nql51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsLb3F/dJMcaihsTks/CTi9W7X2rnQNK3sS3Nql51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsLb3F%2FdJMcaihsTks%2FCTi9W7X2rnQNK3sS3Nql51%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;1128&quot; height=&quot;585&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TFTP 부팅 예시:&lt;/p&gt;
&lt;pre id=&quot;code_1763704391778&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dhcp ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1763959907937&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;setenv serverip '10.0.0.1'
setenv ipaddr '10.0.0.101'
tftp ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재부팅 후에 는 모든 setenv 설정이 사라집니다. saveenv를 사용하여 설정을 저장합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1763970057817&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Buildroot and U-boot on Raspberry Pi | Casper Andersson&quot; data-og-description=&quot;This post guides you through setting up Buildroot together with U-boot on your Raspberry Pi and loading a kernel through U-boot (rootfs is separate and still needs to be flashed). Having a dedicated bootloader allows controlling the boot process without ha&quot; data-og-host=&quot;casan.se&quot; data-og-source-url=&quot;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&quot; data-og-url=&quot;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Buildroot and U-boot on Raspberry Pi | Casper Andersson&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This post guides you through setting up Buildroot together with U-boot on your Raspberry Pi and loading a kernel through U-boot (rootfs is separate and still needs to be flashed). Having a dedicated bootloader allows controlling the boot process without ha&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;casan.se&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>RaspberryPi4</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/177</guid>
      <comments>https://rorsi.tistory.com/177#entry177comment</comments>
      <pubDate>Fri, 21 Nov 2025 11:52:29 +0900</pubDate>
    </item>
    <item>
      <title>VLC를 이용한 RTP 스트림 재생</title>
      <link>https://rorsi.tistory.com/176</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;본 글은 GStreamer로 송출한 RTP(H.264) 스트림을 VLC 플레이어로 수신 및 재생하는 방법을 설명한다. &lt;br /&gt;Ubuntu&amp;nbsp;환경에서&amp;nbsp;VLC&amp;nbsp;기본&amp;nbsp;패키지(apt&amp;nbsp;install&amp;nbsp;vlc)는&amp;nbsp;RTP/RTSP&amp;nbsp;기능이&amp;nbsp;비활성화되어&amp;nbsp;있으므로, &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Snap&amp;nbsp;버전&amp;nbsp;VLC&amp;nbsp;설치를&amp;nbsp;통해&amp;nbsp;live555&amp;nbsp;기반&amp;nbsp;RTP&amp;nbsp;지원을&amp;nbsp;활성화해야&amp;nbsp;한다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;1. 테스트 환경&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 118px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;항목&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;내용&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;OS&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Ubuntu&amp;nbsp;22.04&amp;nbsp;LTS&amp;nbsp;(x86_64)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;송신 프로그램&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;GStreamer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;수신 프로그램&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;VLC&amp;nbsp;(Snap&amp;nbsp;버전)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;스트림 형식&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;RTP&amp;nbsp;/&amp;nbsp;H.264&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;포트&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;UDP&amp;nbsp;5002&amp;nbsp;(예시)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2. Gstreamer 송신&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음&amp;nbsp;명령을&amp;nbsp;실행하면&amp;nbsp;640&amp;times;480&amp;nbsp;해상도의&amp;nbsp;테스트&amp;nbsp;패턴을&amp;nbsp;RTP(H.264)&amp;nbsp;형태로&amp;nbsp;송출한다.&lt;/p&gt;
&lt;pre id=&quot;code_1762570953813&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;gst-launch-1.0 -v videotestsrc is-live=true pattern=ball ! \
  video/x-raw,width=640,height=480,framerate=30/1 ! \
  x264enc tune=zerolatency bitrate=1000 speed-preset=ultrafast ! \
  rtph264pay pt=96 config-interval=1 ! \
  udpsink host=127.0.0.1 port=5002&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3. SDP 파일 생성&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;VLC가 RTP 세션 정보를 알 수 있도록 .sdp 파일을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명:&amp;nbsp;test.sdp&lt;/p&gt;
&lt;pre id=&quot;code_1762571123221&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cat &amp;gt; test.sdp &amp;lt;&amp;lt;EOF
v=0
o=- 0 0 IN IP4 127.0.0.1
s=GStreamer H264 RTP Stream
c=IN IP4 127.0.0.1
t=0 0
m=video 5002 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
EOF&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. APT 버전 VLC의 한계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VLC는&amp;nbsp;RTP/RTSP/SDP&amp;nbsp;처리를&amp;nbsp;위해&amp;nbsp;LIVE555&amp;nbsp;라이브러리를&amp;nbsp;내부적으로&amp;nbsp;사용하는데,&amp;nbsp;Ubuntu&amp;nbsp;/&amp;nbsp;Debian&amp;nbsp;등&amp;nbsp;특정&amp;nbsp;리눅스&amp;nbsp;배포판에서&amp;nbsp;라이브러리&amp;nbsp;지원이&amp;nbsp;빠진&amp;nbsp;또는&amp;nbsp;비활성화된&amp;nbsp;형태로&amp;nbsp;배포된&amp;nbsp;VLC가&amp;nbsp;많습니다 &lt;br /&gt;&lt;br /&gt;22.04&amp;nbsp;기준&amp;nbsp;버전&amp;nbsp;3.0.16&lt;/p&gt;
&lt;pre id=&quot;code_1762571035044&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;vlc --version | grep live&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;live555&amp;rdquo;&amp;nbsp;관련&amp;nbsp;줄이&amp;nbsp;하나도&amp;nbsp;없음&lt;/p&gt;
&lt;pre id=&quot;code_1762571040427&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. Snap 버전 VLC 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 VLC 제거&lt;/p&gt;
&lt;pre id=&quot;code_1762571065280&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt remove --purge vlc vlc-data vlc-bin vlc-plugin-* -y
sudo apt autoremove -y&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Snap VLC 설치&lt;/p&gt;
&lt;pre id=&quot;code_1762571070664&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo snap install vlc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;live555 모듈 확인&lt;/p&gt;
&lt;pre id=&quot;code_1762571076135&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;VLC media player 3.0.20 Vetinari (revision 3.0.20-1-g2617de71b6)
  access_output_livehttp HTTP Live streaming output
  live555                RTP/RTSP/SDP demuxer (using Live555)
  live555                RTSP/RTP access and demux&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. VLC로 수신&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래&amp;nbsp;명령으로&amp;nbsp;VLC를&amp;nbsp;실행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1762571095881&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/snap/bin/vlc test.sdp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상 로그 예시:&lt;/p&gt;
&lt;pre id=&quot;code_1762571101328&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;live555 debug: RTP subsession 'video/H264'
rtp demux debug: added RTP source (127.0.0.1:5002)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp;GStreamer가&amp;nbsp;보내는&amp;nbsp;RTP&amp;nbsp;영상이&amp;nbsp;VLC&amp;nbsp;화면에&amp;nbsp;표시된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #292a2e; text-align: start;&quot; data-testid=&quot;table-container&quot; data-layout=&quot;default&quot;&gt;
&lt;div data-vc=&quot;table-sticky-scrollbar-container&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot from 2025-11-08 11-45-58.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cz1cps/dJMcabCwe8g/kJDXoeqJSMNLe0C3dqW4I0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cz1cps/dJMcabCwe8g/kJDXoeqJSMNLe0C3dqW4I0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cz1cps/dJMcabCwe8g/kJDXoeqJSMNLe0C3dqW4I0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcz1cps%2FdJMcabCwe8g%2FkJDXoeqJSMNLe0C3dqW4I0%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;1380&quot; height=&quot;596&quot; data-filename=&quot;Screenshot from 2025-11-08 11-45-58.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Linux/GSTREAMER</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/176</guid>
      <comments>https://rorsi.tistory.com/176#entry176comment</comments>
      <pubDate>Sat, 8 Nov 2025 12:06:27 +0900</pubDate>
    </item>
    <item>
      <title>Systemd Getty Autologin 설정 가이드</title>
      <link>https://rorsi.tistory.com/175</link>
      <description>&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;테스트 환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SK-AM62A-LP&lt;/li&gt;
&lt;li&gt;11_01_07_05 Processor SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;255&quot; data-start=&quot;118&quot; data-ke-size=&quot;size16&quot;&gt;본 글은 AM62A EVM에서 시리얼 포트(ttySx) 접속 시 비밀번호 입력 없이 &lt;b&gt;root 계정 자동 로그인&lt;/b&gt;이 필요할 경우, serial-getty@.service를 override 해서 설정할 수 있습니다.&lt;/p&gt;
&lt;h3 data-end=&quot;288&quot; data-start=&quot;262&quot; data-ke-size=&quot;size23&quot;&gt;1. 현재 활성화된 getty 서비스 확인&lt;/h3&gt;
&lt;pre id=&quot;code_1759371246836&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;root@am62axx-evm:/opt/edgeai-gst-apps# systemctl list-units | grep getty
  getty@tty1.service                                                                                      loaded active running   Getty on tty1
  serial-getty@ttyS6.service                                                                              loaded active running   Serial Getty on ttyS6
  system-getty.slice                                                                                      loaded active active    Slice /system/getty
  system-serial\x2dgetty.slice                                                                            loaded active active    Slice /system/serial-getty
  getty.target                                                                                            loaded active active    Login Prompts&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;463&quot; data-start=&quot;427&quot; data-ke-size=&quot;size16&quot;&gt;위 예에서는 ttyS6가 사용되고 있음&lt;/p&gt;
&lt;h3 data-end=&quot;485&quot; data-start=&quot;470&quot; data-ke-size=&quot;size23&quot;&gt;2. 원본 서비스 확인&lt;/h3&gt;
&lt;pre id=&quot;code_1759371925995&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl cat serial-getty@ttyS6.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;623&quot; data-start=&quot;540&quot; data-ke-size=&quot;size16&quot;&gt;원본 내용은 보통 /usr/lib/systemd/system/serial-getty@.service에 있으며, 핵심 실행 라인은 다음과 같다.&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tHGvZ/btsQYPVhahx/AffwYkSb3KVuedhay81k4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tHGvZ/btsQYPVhahx/AffwYkSb3KVuedhay81k4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tHGvZ/btsQYPVhahx/AffwYkSb3KVuedhay81k4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtHGvZ%2FbtsQYPVhahx%2FAffwYkSb3KVuedhay81k4K%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;836&quot; height=&quot;214&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 오버라이드 설정 추가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 명령으로 override 편집을 시작&lt;/p&gt;
&lt;pre id=&quot;code_1759371855652&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl edit serial-getty@ttyS6.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;855&quot; data-start=&quot;832&quot; data-ke-size=&quot;size16&quot;&gt;빈 파일이 열리면 아래 내용을 작성&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca8mBY/btsQ0frDt3g/I5DKJ9S8ZeUYJJSz5xc0L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca8mBY/btsQ0frDt3g/I5DKJ9S8ZeUYJJSz5xc0L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca8mBY/btsQ0frDt3g/I5DKJ9S8ZeUYJJSz5xc0L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca8mBY%2FbtsQ0frDt3g%2FI5DKJ9S8ZeUYJJSz5xc0L0%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;891&quot; height=&quot;67&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-end=&quot;982&quot; data-start=&quot;976&quot; data-ke-size=&quot;size20&quot;&gt;설명&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1097&quot; data-start=&quot;983&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1019&quot; data-start=&quot;983&quot;&gt;ExecStart= : 기존 값을 비우는 역할&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;1060&quot; data-start=&quot;1020&quot;&gt;--autologin root : root 사용자 자동 로그인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1186&quot; data-start=&quot;1099&quot; data-ke-size=&quot;size16&quot;&gt;저장 후 종료하면 /etc/systemd/system/serial-getty@ttyS6.service.d/override.conf 파일이 생성됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;1206&quot; data-start=&quot;1193&quot; data-ke-size=&quot;size23&quot;&gt;4. 변경사항 반영&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경 사항 적용&lt;/p&gt;
&lt;pre id=&quot;code_1759371874059&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl daemon-reload 
systemctl restart serial-getty@ttyS6.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1305&quot; data-start=&quot;1299&quot; data-ke-size=&quot;size16&quot;&gt;상태 확인&lt;/p&gt;
&lt;pre id=&quot;code_1759371881731&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;systemctl status serial-getty@ttyS6.service&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1377&quot; data-start=&quot;1368&quot; data-ke-size=&quot;size23&quot;&gt;5. 테스트&lt;/h3&gt;
&lt;p data-end=&quot;1438&quot; data-start=&quot;1378&quot; data-ke-size=&quot;size16&quot;&gt;PC에서 시리얼 콘솔로 ttyS6에 접속하면, 로그인 프롬프트 없이 곧바로 root 셸에 들어갑니다.&lt;/p&gt;
&lt;p data-end=&quot;1438&quot; data-start=&quot;1378&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cadcoB/btsQZsrG9Gi/Qr59d59HLxb6MDw96zh8Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cadcoB/btsQZsrG9Gi/Qr59d59HLxb6MDw96zh8Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cadcoB/btsQZsrG9Gi/Qr59d59HLxb6MDw96zh8Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcadcoB%2FbtsQZsrG9Gi%2FQr59d59HLxb6MDw96zh8Rk%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;592&quot; height=&quot;331&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>TI</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/175</guid>
      <comments>https://rorsi.tistory.com/175#entry175comment</comments>
      <pubDate>Thu, 2 Oct 2025 11:28:47 +0900</pubDate>
    </item>
    <item>
      <title>[11] AM62A - SDCard 이미지 만들기</title>
      <link>https://rorsi.tistory.com/174</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SDK Linux AM62Ax 패키지에는 create-sdcard.sh 라는 sdcard 파티션을 나눠 각 파티션에 필요한 파일시스템을 설치하는 스크립트가 &amp;lt;PSDK_PATH&amp;gt;/bin 디렉터리에&amp;nbsp; 포함되어 있습니다 .&lt;br /&gt;&lt;br /&gt;스크립트 실행 시 각 단계에 대한 정보를 터미널에 간략하게 제공합니다. 본 글은 스크립트 실행 시 세부 정보를 살펴보고 스크립트 사용 방법도 안내합니다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;스크립트 실행&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;create-sdcard.sh 스크립트는 어느 위치에서나 실행가능하며&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;sudo&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;권한으로 실행해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1755695679100&quot; class=&quot;dts&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo &amp;lt;PSDK\_PATH&amp;gt;/bin/create-sdcard.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;sudo&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;권한 없이 스크립트를 실행하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;sudo&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;권한이 필요하다는 메시지가 표시되고 스크립트가 종료됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;SD 카드 장치 선택&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;스크립트의&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;단계에서는&amp;nbsp;포맷하려는&amp;nbsp;SD&amp;nbsp;카드를&amp;nbsp;선택하라는&amp;nbsp;메시지가&amp;nbsp;표시됩니다.&amp;nbsp;대부분의&amp;nbsp;경우&amp;nbsp;호스트&amp;nbsp;루트&amp;nbsp;파일&amp;nbsp;시스템&amp;nbsp;드라이브는&amp;nbsp;호스트&amp;nbsp;시스템&amp;nbsp;손상을&amp;nbsp;방지하기&amp;nbsp;위해&amp;nbsp;가려져&amp;nbsp;있습니다.&amp;nbsp;메시지가&amp;nbsp;나타나면&amp;nbsp;SD&amp;nbsp;카드에&amp;nbsp;해당하는&amp;nbsp;장치&amp;nbsp;번호를&amp;nbsp;입력합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3853c763-d96d-4909-8ef0-2c58b3f7d40b.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtvHJA/btsP0ZbPwQK/n9wbtlbjHkIGsoMuvDhKS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtvHJA/btsP0ZbPwQK/n9wbtlbjHkIGsoMuvDhKS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtvHJA/btsP0ZbPwQK/n9wbtlbjHkIGsoMuvDhKS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtvHJA%2FbtsP0ZbPwQK%2Fn9wbtlbjHkIGsoMuvDhKS1%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;786&quot; height=&quot;533&quot; data-filename=&quot;3853c763-d96d-4909-8ef0-2c58b3f7d40b.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;SD 카드 파티션 나누기&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SD&amp;nbsp;카드에&amp;nbsp;이미&amp;nbsp;파티션이&amp;nbsp;있는&amp;nbsp;경우&amp;nbsp;카드를&amp;nbsp;다시&amp;nbsp;파티션할&amp;nbsp;것인지&amp;nbsp;묻는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;프롬프트가&amp;nbsp;표시됩니다.&amp;nbsp;카드가&amp;nbsp;아직&amp;nbsp;분할되지&amp;nbsp;않은&amp;nbsp;경우&amp;nbsp;이&amp;nbsp;단계를&amp;nbsp;건너뛰고&amp;nbsp;다음&amp;nbsp;단계로&amp;nbsp;넘어갈&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;cfb13be7-efac-4169-ac99-dd29d34c4db6.png&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dE5D6W/btsFs1c1Nhp/PzcAk9CdPUCUQgPUDV8Qqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dE5D6W/btsFs1c1Nhp/PzcAk9CdPUCUQgPUDV8Qqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dE5D6W/btsFs1c1Nhp/PzcAk9CdPUCUQgPUDV8Qqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdE5D6W%2FbtsFs1c1Nhp%2FPzcAk9CdPUCUQgPUDV8Qqk%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;733&quot; height=&quot;228&quot; data-filename=&quot;cfb13be7-efac-4169-ac99-dd29d34c4db6.png&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;이 작업을 수행 하면 SD 카드의 내용이 지워집니다 .&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;파티션 개수 선택&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp;SD&amp;nbsp;카드용으로&amp;nbsp;생성할&amp;nbsp;파티션&amp;nbsp;수를&amp;nbsp;묻는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;프롬프트가&amp;nbsp;표시됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;21773f21-328f-4e91-8200-21610d9605f5.png&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbwcSN/btsFoIelDAt/nLZSXNCGceuyn1LkigaL1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbwcSN/btsFoIelDAt/nLZSXNCGceuyn1LkigaL1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbwcSN/btsFoIelDAt/nLZSXNCGceuyn1LkigaL1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbwcSN%2FbtsFoIelDAt%2FnLZSXNCGceuyn1LkigaL1K%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;729&quot; height=&quot;268&quot; data-filename=&quot;21773f21-328f-4e91-8200-21610d9605f5.png&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로&amp;nbsp;2개의&amp;nbsp;파티션(boot,&amp;nbsp;rootfs)이&amp;nbsp;필요하기&amp;nbsp;때문에&amp;nbsp;2번을&amp;nbsp;선택합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;SD 카드에 파일 시스템 설치&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SD&amp;nbsp;카드&amp;nbsp;파티션이&amp;nbsp;분할되면&amp;nbsp;파일&amp;nbsp;시스템&amp;nbsp;설치를&amp;nbsp;계속할지&amp;nbsp;아니면&amp;nbsp;스크립트를&amp;nbsp;안전하게&amp;nbsp;종료할지&amp;nbsp;묻는&amp;nbsp;메시지가&amp;nbsp;표시됩니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;82fc8ced-23c5-40e6-b5d9-bb73a946a1c2.png&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnHVWG/btsFt4AFLcW/9fh17Pjjs5IoT8LiHRXAlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnHVWG/btsFt4AFLcW/9fh17Pjjs5IoT8LiHRXAlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnHVWG/btsFt4AFLcW/9fh17Pjjs5IoT8LiHRXAlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnHVWG%2FbtsFt4AFLcW%2F9fh17Pjjs5IoT8LiHRXAlK%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;734&quot; height=&quot;193&quot; data-filename=&quot;82fc8ced-23c5-40e6-b5d9-bb73a946a1c2.png&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SDK에서&amp;nbsp;사전&amp;nbsp;빌드된&amp;nbsp;이미지를&amp;nbsp;사용하여&amp;nbsp;SD&amp;nbsp;카드를&amp;nbsp;생성하려면&amp;nbsp;옵션&amp;nbsp;1&amp;nbsp;을&amp;nbsp;선택해야&amp;nbsp;합니다&amp;nbsp;.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SDK 내에서 이 스크립트를 실행하면 스크립트가 SDK 경로를 확인 후 파일시스템 압축 파일을 풀어 SD 카드에 복사하기 시작합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eotsv/btsQertKzTt/5nh6t1NiLGRqxuhqhK70f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eotsv/btsQertKzTt/5nh6t1NiLGRqxuhqhK70f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eotsv/btsQertKzTt/5nh6t1NiLGRqxuhqhK70f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEotsv%2FbtsQertKzTt%2F5nh6t1NiLGRqxuhqhK70f1%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;984&quot; height=&quot;767&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일이&amp;nbsp;복사되면&amp;nbsp;스크립트가&amp;nbsp;종료됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFy4Cl/btsQfeAEpHt/fZDoDn9y6PQNGuN9PSXcQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFy4Cl/btsQfeAEpHt/fZDoDn9y6PQNGuN9PSXcQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFy4Cl/btsQfeAEpHt/fZDoDn9y6PQNGuN9PSXcQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFy4Cl%2FbtsQfeAEpHt%2FfZDoDn9y6PQNGuN9PSXcQ1%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;1239&quot; height=&quot;635&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqFlHe/btsQhl6x5fc/nDIBwSIjZJ9Y3BeUbbZvY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqFlHe/btsQhl6x5fc/nDIBwSIjZJ9Y3BeUbbZvY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqFlHe/btsQhl6x5fc/nDIBwSIjZJ9Y3BeUbbZvY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqFlHe%2FbtsQhl6x5fc%2FnDIBwSIjZJ9Y3BeUbbZvY0%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;1239&quot; height=&quot;635&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>TI/AM62A</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/174</guid>
      <comments>https://rorsi.tistory.com/174#entry174comment</comments>
      <pubDate>Mon, 1 Sep 2025 14:34:12 +0900</pubDate>
    </item>
    <item>
      <title>[11] AM62A-SK Processor SDK Build</title>
      <link>https://rorsi.tistory.com/173</link>
      <description>&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;테스트 환경&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;SK-AM62A-LP&lt;/li&gt;
&lt;li&gt;11_01_07_05 Processor SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;AM62A&amp;nbsp;시리즈는&amp;nbsp;1~2대의&amp;nbsp;카메라가&amp;nbsp;필요한&amp;nbsp;비전&amp;nbsp;애플리케이션용으로&amp;nbsp;설계되었습니다.&amp;nbsp;H.264/H.265V&amp;nbsp;비디오&amp;nbsp;코덱,&amp;nbsp;RGB-IR을&amp;nbsp;지원하는&amp;nbsp;이미지&amp;nbsp;센서&amp;nbsp;프로세서(ISP),&amp;nbsp;AI&amp;nbsp;가속기가&amp;nbsp;통합되어&amp;nbsp;있어&amp;nbsp;다양한&amp;nbsp;비전&amp;nbsp;애플리케이션에&amp;nbsp;적합합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;d8356e7e-1407-4c89-988d-a09dad3e33b3.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b38vUu/btsFlPZVtjM/6r9BVjdzkKkZ3GSBOnCSOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b38vUu/btsFlPZVtjM/6r9BVjdzkKkZ3GSBOnCSOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b38vUu/btsFlPZVtjM/6r9BVjdzkKkZ3GSBOnCSOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb38vUu%2FbtsFlPZVtjM%2F6r9BVjdzkKkZ3GSBOnCSOK%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;1080&quot; height=&quot;1179&quot; data-filename=&quot;d8356e7e-1407-4c89-988d-a09dad3e33b3.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1179&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PCX85/btsFnXQuZ6j/QCT65v1wAWIuh4whmpUqxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PCX85/btsFnXQuZ6j/QCT65v1wAWIuh4whmpUqxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PCX85/btsFnXQuZ6j/QCT65v1wAWIuh4whmpUqxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPCX85%2FbtsFnXQuZ6j%2FQCT65v1wAWIuh4whmpUqxk%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;659&quot; height=&quot;674&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8qqp7/btsFlPZVtot/H7EExkDTGzRieLXPWZBDE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8qqp7/btsFlPZVtot/H7EExkDTGzRieLXPWZBDE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8qqp7/btsFlPZVtot/H7EExkDTGzRieLXPWZBDE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8qqp7%2FbtsFlPZVtot%2FH7EExkDTGzRieLXPWZBDE1%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;692&quot; height=&quot;730&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;SDK 다운로드&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래 링크에서 11_01_07_05 버전 다운&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1755575929236&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;PROCESSOR-SDK-LINUX-AM62A 소프트웨어 개발 키트(SDK) | TI.com&quot; data-og-description=&quot;download ti-processor-sdk-linux-edgeai-am62a-evm-11.01.07.05-Linux-x86-Install.bin &amp;nbsp;&amp;mdash;&amp;nbsp;2359311&amp;nbsp;K&quot; data-og-host=&quot;www.ti.com&quot; data-og-source-url=&quot;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&quot; data-og-url=&quot;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.ti.com/tool/ko-kr/download/PROCESSOR-SDK-LINUX-AM62A/11.01.07.05&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;PROCESSOR-SDK-LINUX-AM62A 소프트웨어 개발 키트(SDK) | TI.com&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;download ti-processor-sdk-linux-edgeai-am62a-evm-11.01.07.05-Linux-x86-Install.bin &amp;nbsp;&amp;mdash;&amp;nbsp;2359311&amp;nbsp;K&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.ti.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1373&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQoCGy/btsPVEtGeOi/a3RVkKFcgKBtzjxnvmDlG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQoCGy/btsPVEtGeOi/a3RVkKFcgKBtzjxnvmDlG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQoCGy/btsPVEtGeOi/a3RVkKFcgKBtzjxnvmDlG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQoCGy%2FbtsPVEtGeOi%2Fa3RVkKFcgKBtzjxnvmDlG0%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;1373&quot; height=&quot;783&quot; data-origin-width=&quot;1373&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;SDK 실행 방법&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다운로드한&amp;nbsp;실행&amp;nbsp;파일의&amp;nbsp;권한을&amp;nbsp;변경&amp;nbsp;후&amp;nbsp;SDK&amp;nbsp;실행&lt;/p&gt;
&lt;pre id=&quot;code_1755575850224&quot; class=&quot;jboss-cli&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;chmod +x ./ti-processor-sdk-linux-am62axx-evm-&amp;lt;version&amp;gt;-Linux-x86-Install.bin
./ti-processor-sdk-linux-am62axx-evm-&amp;lt;version&amp;gt;-Linux-x86-Install.bin&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;실행 후 아래와 같이 설치 프로그램 화면이 나옴 SDK를 설치할 위치의 기본 선택은 사용자의 홈 디렉터리입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;bd73aa29-8d74-4f68-bee9-0d4fbc2c0083.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqrqXf/btsPZpvPvx5/t9HKbSOShqDNFzMtziTYh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqrqXf/btsPZpvPvx5/t9HKbSOShqDNFzMtziTYh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqrqXf/btsPZpvPvx5/t9HKbSOShqDNFzMtziTYh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqrqXf%2FbtsPZpvPvx5%2Ft9HKbSOShqDNFzMtziTYh0%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;602&quot; height=&quot;439&quot; data-filename=&quot;bd73aa29-8d74-4f68-bee9-0d4fbc2c0083.png&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;설정 스크립트 실행&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;SDK&amp;nbsp;소프트웨어&amp;nbsp;개발을&amp;nbsp;편리하게&amp;nbsp;하기&amp;nbsp;위해서&amp;nbsp;TI&amp;nbsp;측에서&amp;nbsp;제공해 주는&amp;nbsp;스크립트&amp;nbsp;실행&amp;nbsp;이는&amp;nbsp;호스트&amp;nbsp;측에서&amp;nbsp;TI&amp;nbsp;개발을&amp;nbsp;용이하게&amp;nbsp;해주는&amp;nbsp;실행파일이다.&lt;/p&gt;
&lt;pre id=&quot;code_1755575850225&quot; class=&quot;arduino&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;설정 스크립트는 먼저 사용자가 권장되는 Ubuntu Long Term Support(LTS) 배포판을 실행하고 있는지 확인하고, 그렇지 않은 경우 종료됩니다. 사용자가 다른 Ubuntu 버전이나 다른 Linux 배포판을 실행 중인 경우 해당 배포판과 일치하도록 환경 설정 스크립트를 수정하는 것이 좋습니다. 현재 Ubuntu 버전 22.04가 지원됩니다.&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;make를&amp;nbsp;수행하기&amp;nbsp;위해&amp;nbsp;필요한&amp;nbsp;패키지&amp;nbsp;설치&lt;/p&gt;
&lt;pre id=&quot;codecell0&quot; class=&quot;bash&quot; style=&quot;color: #404040; text-align: start;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo apt-get install build-essential autoconf automake bison flex libgnutls28-dev libmpc-dev libmpcdec6 libmpc3 libmpcdec-dev libssl-dev bc u-boot-tools swig python3 python3-pip

pip3 install jsonschema pyelftools PyYAML Mako yamllint&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;빌드&amp;nbsp;방법&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Build the Linux Kernel&lt;/p&gt;
&lt;pre id=&quot;codecell5&quot; class=&quot;bash&quot; style=&quot;color: #404040; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;make linux&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Build the Device Tree&lt;/p&gt;
&lt;pre id=&quot;code_1755576219056&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make linux-dtbs&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Clean the Linux Kernel&lt;/p&gt;
&lt;pre id=&quot;code_1755576243502&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make linux_clean&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Install the Linux kernel modules&lt;/p&gt;
&lt;pre id=&quot;codecell6&quot; class=&quot;bash&quot; style=&quot;color: #404040; text-align: left;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;make linux_install&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Build u-boot&lt;/p&gt;
&lt;pre id=&quot;code_1755576265318&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make u-boot&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Clean u-boot&lt;/p&gt;
&lt;pre id=&quot;code_1755576273262&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make u-boot_clean&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Installing to SD card&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 Rules.make는 DESTDIR를 파일 시스템의 NFS 경로로 지정합니다. SD 카드에 파일시스템을 설치하려면 명령줄에서 DESTDIR에 다른 경로를 지정해야 한다.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;SD&amp;nbsp;카드에&amp;nbsp;모든&amp;nbsp;것을&amp;nbsp;설치하려면&amp;nbsp;아래&amp;nbsp;명령&amp;nbsp;실행&lt;/p&gt;
&lt;pre id=&quot;code_1755576315248&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo DESTDIR=/media/$USER/rootfs make linux_install&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;Cross-Compile&amp;nbsp;Toolchain&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로&amp;nbsp;SDK&amp;nbsp;안&amp;nbsp;sysroot&amp;nbsp;폴더에&amp;nbsp;Cross-Compile&amp;nbsp;Toolchain이&amp;nbsp;존재하지만&amp;nbsp;09&amp;nbsp;버전&amp;nbsp;이후로&amp;nbsp;폴더&amp;nbsp;이름을&amp;nbsp;바꿀&amp;nbsp;시&amp;nbsp;컴파일&amp;nbsp;중에&amp;nbsp;에러가&amp;nbsp;발생한다.&amp;nbsp;SDK&amp;nbsp;설치&amp;nbsp;과정 중에&amp;nbsp;Toolchain&amp;nbsp;위치를&amp;nbsp;고정적으로&amp;nbsp;설정하고&amp;nbsp;있는&amp;nbsp;것으로&amp;nbsp;추측된다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그렇기&amp;nbsp;때문에&amp;nbsp;폴더이름이나&amp;nbsp;위치를&amp;nbsp;변경&amp;nbsp;시&amp;nbsp;아래에서&amp;nbsp;Cross-Compile&amp;nbsp;Toolchain을&amp;nbsp;다운로드&amp;nbsp;한다.&lt;/p&gt;
&lt;pre id=&quot;code_1755576580752&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
$ tar -Jxvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz -C $HOME
$ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
$ tar -Jxvf arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz -C $HOME&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다운로드하고 아래 이미지와 같이 경로를 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TI/AM62A</category>
      <author>rorosi</author>
      <guid isPermaLink="true">https://rorsi.tistory.com/173</guid>
      <comments>https://rorsi.tistory.com/173#entry173comment</comments>
      <pubDate>Tue, 19 Aug 2025 22:10:39 +0900</pubDate>
    </item>
  </channel>
</rss>