<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코독코독</title>
    <link>https://coderdocument.tistory.com/</link>
    <description>Coder Document</description>
    <language>ko</language>
    <pubDate>Mon, 1 Jun 2026 10:22:00 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>뜨요르</managingEditor>
    <image>
      <title>코독코독</title>
      <url>https://tistory1.daumcdn.net/tistory/7081420/attach/8651b24985824f40a03fd8df02763f27</url>
      <link>https://coderdocument.tistory.com</link>
    </image>
    <item>
      <title>MCU - 타이머/카운터</title>
      <link>https://coderdocument.tistory.com/entry/MCU-%ED%83%80%EC%9D%B4%EB%A8%B8%EC%B9%B4%EC%9A%B4%ED%84%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Timer/Counter&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;용도&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 시간 및 펄스 폭 측정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 외부 event count&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- PWM(Pulse Width Modulation) 펄스 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주기적인 인터럽트 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8bit 타이머/카운터 : 0x00 ~ 0xFF까지 카운트가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16bit &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;타이머/카운터 :&lt;span&gt;&amp;nbsp;0x0000 ~ 0xFFFF까지 카운트가 가능하다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;동작&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회로에서 입력으로 clock 신호가 들어오면 clock이 발생한 개수를 count한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;타이머/카운터 차이&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타이머는 &lt;b&gt;mcu 내부 clock&lt;/b&gt;을 입력으로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카운터는 &lt;b&gt;외부 clock&lt;/b&gt;을 입력으로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;사용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 일정 시간마다 동작되어야 하는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 주기적으로 오버플로우가 발생하도록 하여 오버플로우가 발생한 경우, 특정 동작을 수행하도록 설계된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 모터 동작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; PWM 펄스를 생성하여 High/Low 펄스의 비율로 파형이 발생하도록 설계한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 타이머를 이용한 외부 사건이 얼마의 시간동안 수행되었는지 시간 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 카운터를 이용한 외부 사건이 얼마나 발생하였는지 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;PWM 신호&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PWM 신호란, Tw 시간 내에 Ton과 Toff 시간의 비율을 조절하여 만든 신호를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ton이 커지면 출력되는 평균 전압이 커지게 되고, 반대로 줄어들면 평균 전압이 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;전체 중 Ton이 되는 비율을 duty ratio(듀티비)라고 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgajXR/btsIIBoQBTd/VZPQKrdVojdHXQzcRdYWn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgajXR/btsIIBoQBTd/VZPQKrdVojdHXQzcRdYWn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgajXR/btsIIBoQBTd/VZPQKrdVojdHXQzcRdYWn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgajXR%2FbtsIIBoQBTd%2FVZPQKrdVojdHXQzcRdYWn1%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;1093&quot; height=&quot;297&quot; data-origin-width=&quot;1093&quot; data-origin-height=&quot;297&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;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/35</guid>
      <comments>https://coderdocument.tistory.com/entry/MCU-%ED%83%80%EC%9D%B4%EB%A8%B8%EC%B9%B4%EC%9A%B4%ED%84%B0#entry35comment</comments>
      <pubDate>Mon, 8 Jul 2024 02:02:06 +0900</pubDate>
    </item>
    <item>
      <title>MCU - 인터럽트 (3)</title>
      <link>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;MCU - 인터럽트 (2)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&lt;a href=&quot;https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-2&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-2&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;외부 인터럽트&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞 장에서 서술한 ( &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&lt;b&gt;인터럽트 조건 발생 시에만 관련 플래그 트리거 &lt;/b&gt;)에 해당하는 종류이다.&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 입력 펄스의 변화를 감지하여 인터럽트가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;입력 펄스의 인터럽트 설정&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 입력 펄스의 edge 트리거 방식&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 상승 에지 발생 : level이 low에서 high로 변경될 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E2EkC/btsIrIO9lmy/VrotX5BxXGwETsqMsklAI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E2EkC/btsIrIO9lmy/VrotX5BxXGwETsqMsklAI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E2EkC/btsIrIO9lmy/VrotX5BxXGwETsqMsklAI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE2EkC%2FbtsIrIO9lmy%2FVrotX5BxXGwETsqMsklAI1%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;187&quot; height=&quot;248&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 하강 에지 발생 : level이 high에서 low로 변경될 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bASiwC/btsIrarQI8z/YjYMoFYfNTA9PBWW1uIh11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bASiwC/btsIrarQI8z/YjYMoFYfNTA9PBWW1uIh11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bASiwC/btsIrarQI8z/YjYMoFYfNTA9PBWW1uIh11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbASiwC%2FbtsIrarQI8z%2FYjYMoFYfNTA9PBWW1uIh11%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;191&quot; height=&quot;131&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 에지 발생 (상승, 하강) : level이 변경될 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QOuD0/btsIqP9iDF9/yU4YXcvZYB0AJ25qwGuio0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QOuD0/btsIqP9iDF9/yU4YXcvZYB0AJ25qwGuio0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QOuD0/btsIqP9iDF9/yU4YXcvZYB0AJ25qwGuio0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQOuD0%2FbtsIqP9iDF9%2FyU4YXcvZYB0AJ25qwGuio0%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;194&quot; height=&quot;123&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 입력 펄스의 level 트리거 방식&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- HIGH 입력 : level이 high일 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tUFsN/btsIpU4xZIE/i1iJhOU990PzUNqaCLV1E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tUFsN/btsIpU4xZIE/i1iJhOU990PzUNqaCLV1E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tUFsN/btsIpU4xZIE/i1iJhOU990PzUNqaCLV1E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtUFsN%2FbtsIpU4xZIE%2Fi1iJhOU990PzUNqaCLV1E1%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;196&quot; height=&quot;109&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- LOW 입력 : level이 low일 때&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;401&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ5n00/btsIp1inm9Q/dslSnTfCFgCy13hKKLyfTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ5n00/btsIp1inm9Q/dslSnTfCFgCy13hKKLyfTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ5n00/btsIp1inm9Q/dslSnTfCFgCy13hKKLyfTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ5n00%2FbtsIp1inm9Q%2FdslSnTfCFgCy13hKKLyfTK%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;198&quot; height=&quot;134&quot; data-origin-width=&quot;401&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;동작이 필요없을 때 슬립 모드로 &lt;/span&gt;에너지를 아끼고, 동작이 필요할 때 이를 해제하기 위해 사용하는 경우가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬립 모드가 해제되고 나서 동작이 정상적으로 인식되기 전에 인터럽트가 사라진다면 슬립모드에서는 벗어나지만 ISR은 발생하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비동기적으로 인터럽트를 지원하지 않는 외부 인터럽트의 경우, 에지 트리거방식으로 설정하면 해당 인터럽트로는 슬립 모드를 벗어날 수 없다. (I/O 클락에 따라 인터럽트 발생 여부를 판단하기 때문)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주의&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 펄스를 인식하는 경우, 스위치가 눌릴 때 단시간에 접점이 탈부착되는 과정을 여러 번 반복하는 현상(Chattering/bouncing 현상)이 발생할 수 있다. software 적으로 여러번 인식되지 않도록 하는 처리가 필요할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인터럽트 관련 레지스터를 체크하는 순서&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인터럽트 트리거 방식을 결정하는 레지스터 세팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인터럽트가 발생할 조건 설정, 어떤 조건에서 인터럽트를 발생시킬지 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 인터럽트 마스크 레지스터 세팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 사용할 인터럽트 허가, 인터럽트를 발생 시킬 ISR의 종류를 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 전체 인터럽트 허가 레지스터 세팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 전체 인터럽트 허가, 인터럽트 동작 시작 허가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이 비트가 1로 설정되었을 때, 비로소 인터럽트가 발생했는지 체크하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 플래그 레지스터 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인터럽트 발생 여부 확인, 인터럽트가 발생했을 때 1로 세팅되고 이를 인지하여 ISR을 실행하게 된다.&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;ISR이 수행되는 중에 인터럽트가 발생한다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트가 발생하지 않도록 하기 위해서는 3번의 전체 인터럽트 허가 비트를 클리어해주고 ISR이 종료될 때, 다시 1로 세팅해주면 된다.&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/34</guid>
      <comments>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-3#entry34comment</comments>
      <pubDate>Mon, 8 Jul 2024 00:58:20 +0900</pubDate>
    </item>
    <item>
      <title>MCU - 인터럽트 (2)</title>
      <link>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;MCU - 인터럽트 (1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 인터럽트 우선 순위&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트는 비동기적으로 발생하기 때문에 여러 개가 인터럽트를 요청하는 경우가 발생할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우, 마이크로컨트롤러는 한번에 여러 개의 인터럽트를 처리할 수 없기 때문에 순차적으로 처리할 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크로컨트롤러에 따라 우선순위가 정해져 있어 변경하지 못하는 경우도 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 인터럽트 처리 절차&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o8gHT/btsIidvNV3I/OG5LqeCek1YzVdKbArW57K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o8gHT/btsIidvNV3I/OG5LqeCek1YzVdKbArW57K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o8gHT/btsIidvNV3I/OG5LqeCek1YzVdKbArW57K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo8gHT%2FbtsIidvNV3I%2FOG5LqeCek1YzVdKbArW57K%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;710&quot; height=&quot;458&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트 벡터 테이블은 각 인터럽트에 대해 ISR의 주소로 점프하여 ISR 프로그램을 처리 할 수 있도록 점프 명령과 점프할 ISR 주소를 담고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트 서비스 루틴(ISR)은 각 인터럽트가 발생하였을 때, 수행할 프로그램이 정의된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 전체 동작 순서&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. main 프로그램 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 인터럽트 발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-1. main 프로그램에서 현재 명령어 수행 완료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. main 프로그램 중단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-1. 스택에 PC 저장 (ISR을 마치고 돌아올 포인트 저장)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-2.범용 레지스터, 인터럽트 상태 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-3. 다른 인터럽트 블로킹&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 해당 인터럽트에 따른 인터럽트 백터 테이블 참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4-1. ISR 벡터 주소를 PC에 적재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 해당 ISR 주소로 점프&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 인터럽트 프로그램(ISR) 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 인터럽트 프로그램 종료 후, RETI 명령어 수행 (인터럽트로부터 main 프로그램으로 복귀)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7-1. 스택에 저장된 main 프로그램의 PC, 레지스터, 인터럽트 상태의 이전 값을 복원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 중단된 main 프로그램 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 인터럽트 종류&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Reset&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 1) 외부 핀&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 2) 전원 투입 리셋&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 3) 저전압 검출 리셋&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 4) 워치독 리셋&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 외부 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 타이머/카운터 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. SPI 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. USART 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. ADC 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. EEPROM 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. I2C 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;... 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 인터럽트의 형태&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인터럽트 발생 시, 관련 플래그 비트를 1로 세팅하여 트리거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램 카운터가 실제 인터럽트 벡터로 지정되어 ISR이 수행된 경우, 해당 플래그를 클리어(0으로 세팅) 시키는 구조임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클리어 시킬 경우, 수동으로 해당 비트에 0을 써넣는 방법과 ISR 수행 시 하드웨어적으로 자동 클리어 되는 형식이 존재함.&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;/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;2. 인터럽트 조건 발생 시에만 관련 플래그 트리거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트 발생 조건이 사라지면 해당 인터럽트 요청이 사라지는 구조임.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우, 인터럽트 발생 조건이 사라진 후, 인터럽트가 허가되면 ISR이 불리지 않는다.'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;- 인터럽트 허가&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;전체 인터럽트 허가 플래그와 각각의 기능에 따라 인터럽트 허가 플래그가 존재한다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;전체 인터럽트 플래그가 비활성화된 경우, 각각의 인터럽트 플래그를 활성화하더라도 인터럽트가 발생하지 않는다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; 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;MCU마다 인터럽트가 발생했을 때, 인터럽트 서비스루틴을 수행하고,&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;수동으로 클리어해주어야 하는 경우, 클리어를 해주지 않으면 계속 인터럽트 서비스루틴이 불려 동작이 정상적으로 수행되지 않을 수 있으므로 주의해야 한다.&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/33</guid>
      <comments>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-2#entry33comment</comments>
      <pubDate>Mon, 1 Jul 2024 01:08:09 +0900</pubDate>
    </item>
    <item>
      <title>MCU - 인터럽트 (1)</title>
      <link>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;인터럽트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트란, 프로그램이 수행되고 있는 동안에 어떤 조건이 발생하여 수행 중인 프로그램을 일시적으로 중지하게 만드는 조건이나 사건의 발생을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터럽트는 사건에 대해 비동기적으로 반응한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인터럽트 프로그램 실행 과정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJC7Ov/btsIhiq5PeC/5bU6so7xuT2BDVaeZyV3e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJC7Ov/btsIhiq5PeC/5bU6so7xuT2BDVaeZyV3e1/img.png&quot; data-alt=&quot;인터럽트가 없는 프로그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJC7Ov/btsIhiq5PeC/5bU6so7xuT2BDVaeZyV3e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJC7Ov%2FbtsIhiq5PeC%2F5bU6so7xuT2BDVaeZyV3e1%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;472&quot; height=&quot;103&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인터럽트가 없는 프로그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&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;684&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQkvA/btsIhSemLhs/2loVZSK4NzgqDY1nswiuQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQkvA/btsIhSemLhs/2loVZSK4NzgqDY1nswiuQ1/img.png&quot; data-alt=&quot;인터럽트가 존재하는 프로그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQkvA/btsIhSemLhs/2loVZSK4NzgqDY1nswiuQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQkvA%2FbtsIhSemLhs%2F2loVZSK4NzgqDY1nswiuQ1%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;467&quot; height=&quot;157&quot; data-origin-width=&quot;684&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;인터럽트가 존재하는 프로그램&lt;/figcaption&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;마이크로컨트롤러가 프로그램을 실행하는 과정은 한번에 하나의 명령어만 처리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러므로 인터럽트가 발생하면 현재 수행하던 Main 프로그램을 일시 중단하고 인터럽트 처리를 위한 ISR 프로그램을 수행한 후, 다시 원래 Main 프로그램으로 복귀하는 구조로 이루어진다.&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;Main Program이 비동기적으로 발생한 event에 대해 반응하여 프로그램을 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 비동기적인 event에 대응하여 인터럽트를 처리하는 프로그램을 인터럽트 서비스 루틴 (Interrupt Service Routine)&amp;nbsp; 또는 인터럽트 핸들러 (Interrupt Handler)라고 부른다.&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;Main Program을 기본 레벨에서의 수행, Foreground에서 수행하는 프로그램이라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ISR을 인터럽트 레벨에서 수행, Background에서 수행하는 프로그램이라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인터럽트의 구분&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- 인터럽트 발생 원인에 따른 구분&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 하드웨어에 의한 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 마이크로컨트롤러에 연결된 하드웨어에 의해 발생하는 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 내부 기능에 의해 발생하는 내부 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;2) 소프트웨어에 의한 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 정의되지 않은 명령의 실행, 연산 불가 명령 실행 (0으로 나누기)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 위와 같은 소프트웨어적인 이상 동작에 의해 발생하는 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- 인터럽트 발생 시, 처리 방식에 따른 구분&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 일반적인 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 프로그래머가 인터럽트 요청을 무시할 수 있는 인터럽트를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 인터럽트 마스크 레지스터 또는 Interrupt Enable Register를 이용하여 설정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;2) 차단 불가 인터럽트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 프로그래머가 인터럽트 요청을 무시할 수 없는 인터럽트를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/32</guid>
      <comments>https://coderdocument.tistory.com/entry/MCU-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8#entry32comment</comments>
      <pubDate>Mon, 1 Jul 2024 00:54:57 +0900</pubDate>
    </item>
    <item>
      <title>MCU - I/O 레지스터</title>
      <link>https://coderdocument.tistory.com/entry/IO-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;I/O&amp;nbsp;레지스터&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I/O(Input/Output) register는 입출력 레지스터로 주변 소자의 기능을 제어하기 위해 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 레지스터는 SRAM 영역에 주소가 할당되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;I/O 레지스터의 일반적인 제어 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- I/O 포트를 제어하기 위해 sfrb, sfrw 키워드가 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- I/O 레지스터의 주소는 헤더 파일에 정의되어 있다.&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;sfrb : byte 단위 특수 기능 레지스터를 지정하는 지시어다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sfrw : word 단위 특수 기능 레지스터를 지정하는 지시어다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;C8051 I/O Register&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User's Guides for Keil C51 Development Tools 내용을 참조하자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&quot;&gt;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721573535151&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;Documentation &amp;ndash; Arm Developer&quot; data-og-description=&quot;&quot; data-og-host=&quot;developer.arm.com&quot; data-og-source-url=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&quot; data-og-url=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers&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;Documentation &amp;ndash; Arm Developer&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;developer.arm.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-ke-size=&quot;size16&quot;&gt;Special-Function-Registers(SFR)에 접근하기 위한 별도의 메모리 영역을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;SFR은 프로그램에서 타이머, 카운터, 직렬 I/O, 포트 I/O 및 주변 장치를 제어하는 ​​데 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;SFR은 주소 0x80~0xFF에 있으며 비트, 바이트 및 단어로 액세스할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cx51 컴파일러는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a style=&quot;color: #00c1de;&quot; href=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers/sfr?lang=en&quot;&gt;sfr&lt;/a&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a style=&quot;color: #00c1de;&quot; href=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers/sfr16?lang=en&quot;&gt;sfr16&lt;/a&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;및&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;a style=&quot;color: #00c1de;&quot; href=&quot;https://developer.arm.com/documentation/101655/0961/Cx51-User-s-Guide/Language-Extensions/Data-Types/Special-Function-Registers/sbit?lang=en&quot;&gt;sbit&lt;/a&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;데이터 유형을 사용하여 SFR에 대한 액세스를 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- 8bit 특수 기능 레지스터&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'sfr 변수이름 = sfr의 주소(상수)'의 형태로 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;sfr&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;P0&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0x80&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; /* Port-0, address 80h */&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sfr&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;P1&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0x90&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; /* Port-1, address 90h */&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sfr&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;P2&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0xA0&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; /* Port-2, address 0A0h */&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sfr&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;P3&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0xB0&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; /* Port-3, address 0B0h */&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- 16bit 특수 기능 레지스터&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'sfr16 변수이름 = 16bit sfr의 주소(상수)'의 형태로 나타낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;sfr16 T2 = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0xCC&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;/* Timer 2: T2L 0CCh, T2H 0CDh */&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sfr16 RCAP2 = &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;0xCA&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;/* RCAP2L 0CAh, RCAP2H 0CBh */&lt;/span&gt; &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;span style=&quot;text-align: start;&quot;&gt;주의&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sfr&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;변수는 함수 내부에서 선언할 수 없습니다. 함수 본문 외부에서 선언해야 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sfr&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;변수는 항상 휘발성입니다. 컴파일러는 이 유형의 변수에 대한 액세스를 최적화하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;- sfr 내의 비트&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;sbit&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;name&lt;span style=&quot;text-align: start;&quot;&gt; = &lt;/span&gt;sfr-name&lt;span style=&quot;text-align: start;&quot;&gt; ^ &lt;/span&gt;bit-position&lt;span style=&quot;text-align: start;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;sfr PSW = 0xD0;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;sbit OV = PSW^2;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sfr IE = 0xA8;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;sbit EA = IE^7;&lt;/span&gt; &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;b&gt;자세한 내용은 위 링크 참조&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;C8051F38x datasheet&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfxRMG/btsIHbrkmhk/G0itOi1bwQ6fvPEro2X8b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfxRMG/btsIHbrkmhk/G0itOi1bwQ6fvPEro2X8b0/img.png&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;147&quot; data-is-animation=&quot;false&quot; width=&quot;777&quot; height=&quot;201&quot; style=&quot;width: 52.268%; margin-right: 10px;&quot; data-widthpercent=&quot;52.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfxRMG/btsIHbrkmhk/G0itOi1bwQ6fvPEro2X8b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfxRMG%2FbtsIHbrkmhk%2FG0itOi1bwQ6fvPEro2X8b0%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;569&quot; height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mFh2M/btsIImFlvZ0/MZC2HCrPBfeiY9KfSOmymK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mFh2M/btsIImFlvZ0/MZC2HCrPBfeiY9KfSOmymK/img.png&quot; data-origin-width=&quot;807&quot; data-origin-height=&quot;234&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.5692%;&quot; data-widthpercent=&quot;47.12&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mFh2M/btsIImFlvZ0/MZC2HCrPBfeiY9KfSOmymK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmFh2M%2FbtsIImFlvZ0%2FMZC2HCrPBfeiY9KfSOmymK%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;234&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Code&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rInBM/btsIG0XHxay/Rxzh03Tx64fSKBKiyuSsQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rInBM/btsIG0XHxay/Rxzh03Tx64fSKBKiyuSsQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rInBM/btsIG0XHxay/Rxzh03Tx64fSKBKiyuSsQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrInBM%2FbtsIG0XHxay%2FRxzh03Tx64fSKBKiyuSsQ0%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;850&quot; height=&quot;475&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;475&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;I/O 레지스터의 비트단위 제어 방법&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- I/O 레지스터 영역 중 비트 단위의 제어가 가능한 영역에서 사용할 수 있는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- '레지스터.비트번호'와 같은 형태로 접근할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 비트 단위 접근은 실제 어셈블리 명령어 CBI, SBI, SBIC, SBIS에 의해 처리된다.&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/31</guid>
      <comments>https://coderdocument.tistory.com/entry/IO-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0#entry31comment</comments>
      <pubDate>Mon, 1 Jul 2024 00:19:53 +0900</pubDate>
    </item>
    <item>
      <title>MCU - 상태 레지스터</title>
      <link>https://coderdocument.tistory.com/entry/%EC%83%81%ED%83%9C-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;상태&amp;nbsp;레지스터&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태 레지스터(Status Register)란 가장 최근에 실행된 산술 연산의 명령 처리 결과에 대한 상태 정보를 표현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 상태 정보는 조건부 처리 명령어(if ... 등)에 의해 프로그램의 흐름을 제어해야 할 경우, 사용될 수 있다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;- 연산 결과에 따라 나타나는 플래그&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부호 플래그 : 가장 최근 수행된 산술 연산 결과과 +일 경우 0, -일 경우 1로 세팅된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제로 플래그 : 연산 결과가 0일 경우 1, 0이 아닌 경우 0으로 세팅된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐리 플래그 : 자리 올림이 발생하거나 감산 결과 자리내림이 발생할 경우 1로 세팅된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오버플로우 플래그 : 연산기가 처리하는 데이터 비트를 초과할 경우, 1로 세팅된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패리티 플래그 : 연산 결과가 짝수인지 홀수인지 나타내는데 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;/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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 인터럽트 플래그가 비활성화된 경우, 각각의 인터럽트 플래그를 활성화하더라도 인터럽트가 발생하지 않는다.&lt;/p&gt;
&lt;p 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;MCU마다 인터럽트가 발생했을 때, 인터럽트 서비스루틴을 수행하고,&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;수동으로 클리어해주어야 하는 경우, 클리어를 해주지 않으면 계속 인터럽트 서비스루틴이 불려 동작이 정상적으로 수행되지 않을 수 있으므로 주의해야 한다.&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/30</guid>
      <comments>https://coderdocument.tistory.com/entry/%EC%83%81%ED%83%9C-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0#entry30comment</comments>
      <pubDate>Sun, 30 Jun 2024 23:43:25 +0900</pubDate>
    </item>
    <item>
      <title>MCU - 마이크로컨트롤러</title>
      <link>https://coderdocument.tistory.com/entry/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%ACMCU</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;마이크로컨트롤러&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크로컨트롤러(microcontroller, MCU)는 CPU, 기억장치(RAM, ROM), 입출력 장치를 하나의 칩에 모두 내장하여 정해진 기능을 수행할 수 있다.&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;MCU는 micro controller unit의 약자이다.&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;마이크로컨트롤러의 종류에는 8051, AVR, PIC, ARM, 80C196 ... 등이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크로컨트롤러를 컨트롤할 때 AND, OR, XOR 등의 비트 연산을 수행할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFfyqX/btsIhKOkOR1/VhtKuCqb81cQRolCZmIRMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFfyqX/btsIhKOkOR1/VhtKuCqb81cQRolCZmIRMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFfyqX/btsIhKOkOR1/VhtKuCqb81cQRolCZmIRMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFfyqX%2FbtsIhKOkOR1%2FVhtKuCqb81cQRolCZmIRMK%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;619&quot; height=&quot;324&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;491&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중앙처리장치(CPU)는 마이크로컨트롤러의 중심을 담당한다. 명령어의 인식, 해석과 실행을 제어하고 연산 처리를 수행한다. 이 내부에는 PC, IR, ALU, Register, Instruction decoder, Control unit으로 구성된다.&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;Program Counter : 프로그램 카운터로, 다음에 수행될 명령어의 주소를 저장하고 있는 레지스터이다. 프로그램의 흐름을 제어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Instruction Register : 명령어 레지스터로, 수행될 명령어의 이진 코드를 가진 레지스터이다. 프로그램 메모리에서 명령어를 가져와서 임시 보관한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Arithmetic Logic Unit (ALU): 산술논리연산장치로, 정보에 대한 연산을 수행한다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Register : 정보를 임시로 저장하는 장치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Instruction decoder, Control unit : 명령어 레지스터에 있는 명령어를 해석하고 제어 모듈을 통해&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;동작을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;CPU 기본 동작&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;프로그램 카운터에 의해 지정된 메모리의 위치에서 명령어를 읽어 명령어 레지스터에 임시 저장한다. 그 후,&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;명령어 디코더와 제어장치에서 명령어를 해석하고 명령어에 따라 ALU에서 연산을 수행하거나 프로그램의 흐름을 제어한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;1. 프로그램 카운터에 적힌 주소가 주소 버스에 놓인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;2. 메모리 읽기 제어 신호가 활성화된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;3. 명령어(Opcode)가 ROM에서 읽혀 데이터 버스에 놓인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;4. 명령어(Opcode)가 CPU 내의 명령어 레지스터에 놓인다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;5. 프로그램 카운터가 증가한다.&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;CPU를 통해 처리되는 명령은 산술 연산, 논리 연산, 데이터의 레지스터 이동, 프로그램의 분기 동작 등이 있다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램 메모리는 CPU에서 수행해야 하는 프로그램의 명령어 집합들이 저장되어 있고, ROM으로 구현되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 메모리는 CPU에서 명령어가 처리된 후 임시로 발생하는 데이터를 저장하기 위해 사용된다. 일반적으로 RAM으로 구현된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;장치 간의 데이터 교환&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장치들과 데이터를 교환하기 위해 세가지 버스가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 주소 버스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CPU가 주변장치의 위치를 지정하기 위해 사용되고, 단방향으로 제어된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주소 버스의 크기는 CPU에서 최대로 지정가능한 주소의 최대 크기를 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 주소 버스가 16bit이라면, 0x0000 ~ 0xFFFF 까지 지정할 수 있다. 2^16 = 64KB 주소 공간에 접근할 수 있다.&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;2. 데이터 버스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- CPU와 기억장치 / 입출력 장치 사이로 정보를 전달하고, 양방향으로 제어된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 연산 시, 기본적인 단위를 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 버스의 크기에 따라 빠른 속도로 명령어를 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 2byte 연산을 위해 8bit 데이터 버스를 가지고 있다면 2번의 데이터 접근이 필요하지만 16bit 데이터 버스라면 1번만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &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;3. 제어 버스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메모리나 입출력 장치와 데이터를 접근할 때 필요한 신호를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 주소 버스와 데이터 버스에서 정보의 이동을 동기화 시킬 때 사용되는 타이밍 신호 등을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 제어 신호는&amp;nbsp;clock 신호, read 신호, write 신호가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 제어 신호가 &lt;b&gt;읽기 신호&lt;/b&gt;인 경우, 지정된 주소의 기억장치에서 데이터를 읽어 데이터 버스에 적재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; 쓰기 신호&lt;/b&gt;인 경우, 데이터 버스에 저장될 데이터를 실어주고 기억 장치에 write 신호를 보내 지정한 위치에 데이터를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 기록한다.&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>sg.kim</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/29</guid>
      <comments>https://coderdocument.tistory.com/entry/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%ACMCU#entry29comment</comments>
      <pubDate>Sun, 30 Jun 2024 23:05:06 +0900</pubDate>
    </item>
    <item>
      <title>HDMI란 무엇인가?</title>
      <link>https://coderdocument.tistory.com/entry/HDMI%EC%9D%98-%EA%B8%B0%EC%B4%88</link>
      <description>&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI란?&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI(High Definition Multimedia Interface)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2002&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년에 처음 발표된 음성 신호 전송까지 포함된 디스플레이 인터페이스 커넥터 표준 규격입니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;영상 신호뿐만 아니라 음성 신호까지 전송되어 케이블을 줄일 수 있는 점이 장점입니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNhwDQ/btsIchL5ejw/xjIkhzXk5RK2vawZwTg5x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNhwDQ/btsIchL5ejw/xjIkhzXk5RK2vawZwTg5x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNhwDQ/btsIchL5ejw/xjIkhzXk5RK2vawZwTg5x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNhwDQ%2FbtsIchL5ejw%2FxjIkhzXk5RK2vawZwTg5x0%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;362&quot; height=&quot;357&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TMDS&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 통해 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;R, G, B &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;세 가지 원색을 전송하고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, HV &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;B &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호통로에서 전송되며 R,&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; G &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호통로에 음성 신호가 전송&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DDC&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Display Data Channel, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디스플레이 데이터 통로로&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;장치의 송출 사양 신호와 데이터 격식 신호를 받는 용도로 사용되며&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;장치의 이런 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;E-EDID(Enhanced Extended Display Identification Data,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;호환성 식별 데이터&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정보가 전송&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CEC&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Consumer Electronics Control, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전자제어통로로&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, HDMI CEC Network&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상의 상호작용을 통제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HPD&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Hot Plug Detect, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 신호가 오지 않으면 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DDC &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호를 하단으로 전송하지 않도록 함&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI 핀 정보&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;864&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHstKu/btsIeij0Svb/vCYfaGcvtcvMIODbwKfmkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHstKu/btsIeij0Svb/vCYfaGcvtcvMIODbwKfmkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHstKu/btsIeij0Svb/vCYfaGcvtcvMIODbwKfmkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHstKu%2FbtsIeij0Svb%2FvCYfaGcvtcvMIODbwKfmkK%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;616&quot; height=&quot;415&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;864&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1-9는 TMDS 데이터 전송에 사용되는 핀이며 세 그룹이 있습니다.&lt;/li&gt;
&lt;li&gt;10~12번은 TMDS 클럭 전송에 사용되는 핀으로 한 세트로 존재합니다. TMDS 클록은 픽셀 클록입니다.&lt;/li&gt;
&lt;li&gt;13은 소비자 가전 호환 전송 프로토콜인 CEC 핀입니다.&lt;/li&gt;
&lt;li&gt;14는 예약된 핀입니다.&lt;/li&gt;
&lt;li&gt;15,16은 DDC의 핀이고 DDC는 I2C 프로토콜 전송을 기반으로 하므로 핀은 SCL 및 SDA입니다.&lt;/li&gt;
&lt;li&gt;17은 접지입니다.&lt;/li&gt;
&lt;li&gt;18은 +5V 전원입니다.&lt;/li&gt;
&lt;li&gt;19는 연결을 설정하는 데 사용되는 HPD 핀입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI 종류&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/odTMe/btsIcrOvaNe/l3BmqDKYs1yO41cXlr1Oy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/odTMe/btsIcrOvaNe/l3BmqDKYs1yO41cXlr1Oy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/odTMe/btsIcrOvaNe/l3BmqDKYs1yO41cXlr1Oy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FodTMe%2FbtsIcrOvaNe%2Fl3BmqDKYs1yO41cXlr1Oy0%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;446&quot; height=&quot;287&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI Standard(Type-A)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 모니터 사이의 연결&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, TV &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 사용되고 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mini HDMI(Type-C)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 소형화된 카메라&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;캠코더 종류 또는 작은 모니터 등에서 사용되고 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Micro HDMI(Type-D)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 예전에 휴대폰 등에서 탑재되는 경우도 있었으나 최근 거의 사라졌습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;고속 직렬 데이터 전송 기술&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TDMS(Transition Minimized Differential Signaling)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DVI &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;및 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 인터페이스와 기타 디지털 통신 인터페이스에서 사용됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;비디오 데이터를 전송&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하고 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 사용할 때 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;트위스트 페어&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;케이블&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 사용하여 비디오 데이터를 전송합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;세 개의 링크 각각은 서로 다른 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;RGB &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;구성 요소에 해당&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HTMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DVI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 기능을 포함하며 디지털 오디오 및 제어 정보를 운반하도록&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 확장합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&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;1241&quot; data-origin-height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRINDX/btsIcSZkhuP/drQAj1eWhJYk0biUMVcFCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRINDX/btsIcSZkhuP/drQAj1eWhJYk0biUMVcFCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRINDX/btsIcSZkhuP/drQAj1eWhJYk0biUMVcFCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRINDX%2FbtsIcSZkhuP%2FdrQAj1eWhJYk0biUMVcFCK%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;672&quot; height=&quot;243&quot; data-origin-width=&quot;1241&quot; data-origin-height=&quot;449&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;DDC&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DDC &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;EDID &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;정보를 하위 장치에서 상위 장치로 제공&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. EDID&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;VESA&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;EDID &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;규칙을 따릅니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 출력 가능한 모든 기능 및 호환성 정보를 묘사합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;소스 장치와 싱크 장치가 커뮤니케이션 하는데 사용되는 프로토콜&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DCC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;I2C &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;규격을 따르고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, EDID&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 칩의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ROM&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에 저장되어 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI ROM&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;I2C Address&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 항상 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0xA0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;회로설계 중 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DDC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포트에는 저항 연결이 필요합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;저항은 최소 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.3K&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 되어야 합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&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;1005&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBZXX8/btsIcfU01rr/z63T3tVDFt4iunxvRl6jH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBZXX8/btsIcfU01rr/z63T3tVDFt4iunxvRl6jH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBZXX8/btsIcfU01rr/z63T3tVDFt4iunxvRl6jH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBZXX8%2FbtsIcfU01rr%2Fz63T3tVDFt4iunxvRl6jH1%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;490&quot; height=&quot;267&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CEC&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;color: #000000;&quot;&gt;CEC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단선 양방향 통신 기술 입니다.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;전자기기들은 연결된 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;HDMI &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;장치의 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;One Touch Play, System Standby&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;와 같은 신호 통제에 사용&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;VCD&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 재생할 때&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, TV&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;CEC &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;신호에 의해 재생을 시작&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하게 됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호가 통과된 이후에는 플레이어 연결부의 통로에 의해 화면이 전환됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. TV&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 전원을 끄면 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CEC &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호가 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;연결을 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Standby&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 진입하도록 합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러므로 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 단일 리모컨과 같이 작동합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CEC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 통신 협약 버스로&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물리주소가 연결된 모든 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI&amp;nbsp;Process&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 물리 주소를 분배하고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, DDC &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호를 해당 물리주소로 전송합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만일 신호가 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;high&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 유지한 후 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;low&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 내려오지 않는다면&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신호 데이터가 들어오지 않았다는 것을 의미합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&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;1230&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wT4CV/btsIdhTPYC5/8QbwcaTK90Ip8ZlQtXWTd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wT4CV/btsIdhTPYC5/8QbwcaTK90Ip8ZlQtXWTd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wT4CV/btsIdhTPYC5/8QbwcaTK90Ip8ZlQtXWTd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwT4CV%2FbtsIdhTPYC5%2F8QbwcaTK90Ip8ZlQtXWTd1%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;634&quot; height=&quot;233&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HPD&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모니터나 기타 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;디스플레이 장치에 접속이 되었는지를 감지&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하기 위해 달아 놓습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디스플레이 장치를 소스 장치에&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Hot Plugging &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하는 것은 디바이스들이 둘다 전원이 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;on &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;되어있음을 의미합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 예전 기술에서 많이 요구하였던&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나 혹은 두 장치 모두 전원이 꺼져 있어야 하는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;cold-plugged&quot; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기술과 차이가 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HPD&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI, DP, DVI &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;스펙들의 기능이며&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통은 접촉하는 커넥터의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;single pin&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;으로 이루어집니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Pin&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 동작은 수신부가 출력을 내고 송신부가 수신하는 형태로 동작을 합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 수신 측의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HPD&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;은 송신측 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+5v &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출력에 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pullup&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 되어 있어 송신 측에서도 영향을 받습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 그래서 규격에는 송신 측에서 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+2v &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이상이면 인식을 해야 한다고 나와 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&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;1229&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9Irm/btsIaFmVePU/b89MVXJiGz2KHUoMjLe9r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9Irm/btsIaFmVePU/b89MVXJiGz2KHUoMjLe9r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9Irm/btsIaFmVePU/b89MVXJiGz2KHUoMjLe9r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9Irm%2FbtsIaFmVePU%2Fb89MVXJiGz2KHUoMjLe9r1%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;606&quot; height=&quot;227&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czVmto/btsId3N6v7i/LCFVesSNC91LR0EuSlHq9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czVmto/btsId3N6v7i/LCFVesSNC91LR0EuSlHq9k/img.png&quot; data-alt=&quot;HDMI 전송 다이어그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czVmto/btsId3N6v7i/LCFVesSNC91LR0EuSlHq9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczVmto%2FbtsId3N6v7i%2FLCFVesSNC91LR0EuSlHq9k%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;583&quot; height=&quot;389&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HDMI 전송 다이어그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 그림에서 볼 수 있듯이 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 다음 네 가지 유형의 데이터를 전송합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그림의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프리앰블&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 제어 정보인 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CTLx&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 데이터 아일랜드 또는 비디오 데이터가 나중에 전송될지 여부를 나타내는 데 사용될 수 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. D[1:0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;채널 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;과 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 통해 전송되며 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4bi&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;차지합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HSYNC, VSYNC &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;채널&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 이용합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;D[1:0] &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전송에는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트가 소요됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 아일랜드&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(Data Island)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 오디오 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터 및 다양한 보조 데이터 입니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3:0] &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;채널을 통해 전송되며 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12bi&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 차지합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 데이터&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, RGB &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형식의 이미지가 다이어그램으로 전송됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:0] &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;R&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, G, B&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 각각 채널 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2, 1, 0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 통해 전송되며 각 색상은 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8bit&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;총 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;24bit&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 차지합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Source&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 각 색상 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8bit &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;encode&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;거쳐 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10bit &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터를 얻은 후&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Serializer&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 거쳐 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;직렬로 출력됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sin&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;k&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트 데이터가 먼저 복원된 후 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TMDS &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;decode&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;통해 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트 소스 데이터를 얻습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; HDMI&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오는 스트림 전송이므로 패킷 전송을 포함하지 않습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&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;1071&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqI8jQ/btsIfLSHHrg/2bvxTGOL0XAQJSSFleCaCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqI8jQ/btsIfLSHHrg/2bvxTGOL0XAQJSSFleCaCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqI8jQ/btsIfLSHHrg/2bvxTGOL0XAQJSSFleCaCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqI8jQ%2FbtsIfLSHHrg%2F2bvxTGOL0XAQJSSFleCaCk%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;672&quot; height=&quot;107&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Control &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동안 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CTLx&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HSYNC, SYNC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 전송됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프리앰블&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 정보 조합에는 다음 두가지 유형 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Video Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에 대한 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CTL0:3=1000&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;과&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Island&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에 대한 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CTL0:3=1010&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. HSYNC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, VSYNC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도 이때 변경될 수 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Island&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Control &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 모두 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;블랭킹된&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 영역에서 수행됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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-filename=&quot;blob&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DzqXo/btsIdGFU9jX/TLDHDJ0Q20prg0XBeDUEEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DzqXo/btsIdGFU9jX/TLDHDJ0Q20prg0XBeDUEEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DzqXo/btsIdGFU9jX/TLDHDJ0Q20prg0XBeDUEEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDzqXo%2FbtsIdGFU9jX%2FTLDHDJ0Q20prg0XBeDUEEK%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;622&quot; height=&quot;340&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;445&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;1211&quot; data-origin-height=&quot;1013&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kH2wA/btsIe3fwznj/uCB33lT1BonqaX3nLkWUv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kH2wA/btsIe3fwznj/uCB33lT1BonqaX3nLkWUv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kH2wA/btsIe3fwznj/uCB33lT1BonqaX3nLkWUv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkH2wA%2FbtsIe3fwznj%2FuCB33lT1BonqaX3nLkWUv0%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;708&quot; height=&quot;592&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;1013&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Control Period, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Island&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period, Video &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period 3&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가지 전송 단계의 전환 프로세스는 위의 그림과 같습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Island&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 패킷 형태로 전송되며&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오디오 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;및 비디오 정보 설명에 사용되는 정보 프레임 및 기타 데이터를 포함하는 오디오 데이터 및 보조 데이터를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전송합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Island&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;길이가 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개의 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자로 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구성된 선행 가드 밴드로 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시작되며&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;너비가 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개의 문자인 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;트레일링&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 가드 밴드로 끝납니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가드 밴드는 다음과 같습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch0: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n.a&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch1: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = 0b0100110011&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch2: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = 0b0100110011&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&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;936&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wyp5G/btsIdyA6TTy/N5oV6QW8rZsDKDLC3GrvB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wyp5G/btsIdyA6TTy/N5oV6QW8rZsDKDLC3GrvB1/img.png&quot; data-alt=&quot;720x480p 영상 전송을 위한 HDMI 타이밍 다이어그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wyp5G/btsIdyA6TTy/N5oV6QW8rZsDKDLC3GrvB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWyp5G%2FbtsIdyA6TTy%2FN5oV6QW8rZsDKDLC3GrvB1%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;646&quot; height=&quot;660&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;720x480p 영상 전송을 위한 HDMI 타이밍 다이어그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;영상 데이터 기간 동안 유효한 영상 데이터가 전송됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Video Data&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Period&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;길이가 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개의 문자&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;픽셀&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로 구성된 선행 가드 밴드로 시작되며&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가드 밴드는 다음과 같습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch0: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = 0b1011001100&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch1: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = 0b0100110011&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ch2: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;q_out&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[9:0] = 0b1011001100&lt;/span&gt;&lt;/p&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;885&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RtBr6/btsIdy2dQxI/0Aam8YgmuroYkJDXXgdom1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RtBr6/btsIdy2dQxI/0Aam8YgmuroYkJDXXgdom1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RtBr6/btsIdy2dQxI/0Aam8YgmuroYkJDXXgdom1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRtBr6%2FbtsIdy2dQxI%2F0Aam8YgmuroYkJDXXgdom1%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;408&quot; height=&quot;230&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;498&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;885&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pH7Ce/btsIdxvqeeW/uhJ09FrgTn5S8KXgFuSMCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pH7Ce/btsIdxvqeeW/uhJ09FrgTn5S8KXgFuSMCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pH7Ce/btsIdxvqeeW/uhJ09FrgTn5S8KXgFuSMCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpH7Ce%2FbtsIdxvqeeW%2FuhJ09FrgTn5S8KXgFuSMCk%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;368&quot; height=&quot;218&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 데이터 스트림 섹션 앞에는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가드 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;밴드&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프리앰블이&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가드 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;밴드와&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프리앰블을&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 통해 수신된 데이터 스트림과 정확한 동기화가 가능합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위의 그림은 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Clock&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;당&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;픽셀로 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 데이터&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 데이터 활성화&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;H-SYNC, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;V-SYNC&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 배열을 보여줍니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RGB4:4:4, YCbCr4:4, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;YCbCr4:2:2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 세 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가지 픽셀 인코딩이 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지원됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 형식 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CEA-861-D &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형식 외에도 더욱 다양한 특수 형식이 지원됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;색 심도는 픽셀당 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;24, 30, 36 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;및 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트를 지원할 수 있습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래는 각각 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;24bit/pixel RGB444, YCbCr422, YCbCr444&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 픽셀 인코딩 다이어그램입니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RGB444&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 색상당 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사람의 눈은 색보다 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;휘도에&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 영향을 많이 받습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;따라서 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Y&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;휘도에&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 해당되고 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cb,Cr&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;은 색에 해당됩니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;YCbCr422&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Y&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;는 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트를 사용하고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cb&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;와 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cr&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트를 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; YCbCr444&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Y&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,Cb&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;및 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cr&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;은 모두 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비트를 사용합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&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;584&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctiRo8/btsIeAYYBil/KSbRwl9wF88OofiQTpVKTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctiRo8/btsIeAYYBil/KSbRwl9wF88OofiQTpVKTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctiRo8/btsIeAYYBil/KSbRwl9wF88OofiQTpVKTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctiRo8%2FbtsIeAYYBil%2FKSbRwl9wF88OofiQTpVKTk%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;380&quot; height=&quot;258&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;397&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uwR4q/btsIfvo2HPJ/Wo4MjMJU1IJQ6hpzUHhbK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uwR4q/btsIfvo2HPJ/Wo4MjMJU1IJQ6hpzUHhbK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uwR4q/btsIfvo2HPJ/Wo4MjMJU1IJQ6hpzUHhbK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuwR4q%2FbtsIfvo2HPJ%2FWo4MjMJU1IJQ6hpzUHhbK0%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;372&quot; height=&quot;245&quot; data-origin-width=&quot;585&quot; data-origin-height=&quot;386&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;363&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OAGU6/btsIfHbJnck/L21DDWKN1T0TbBVdRUx0IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OAGU6/btsIfHbJnck/L21DDWKN1T0TbBVdRUx0IK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OAGU6/btsIfHbJnck/L21DDWKN1T0TbBVdRUx0IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOAGU6%2FbtsIfHbJnck%2FL21DDWKN1T0TbBVdRUx0IK%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;351&quot; height=&quot;218&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;363&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HDMI 버전에 따른 사양&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2HUEC/btsIcBp0R4v/F8WrwL3X18v9VSKcE6oni0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2HUEC/btsIcBp0R4v/F8WrwL3X18v9VSKcE6oni0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2HUEC/btsIcBp0R4v/F8WrwL3X18v9VSKcE6oni0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2HUEC%2FbtsIcBp0R4v%2FF8WrwL3X18v9VSKcE6oni0%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;1475&quot; height=&quot;907&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>뜨요르</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/28</guid>
      <comments>https://coderdocument.tistory.com/entry/HDMI%EC%9D%98-%EA%B8%B0%EC%B4%88#entry28comment</comments>
      <pubDate>Wed, 26 Jun 2024 09:30:15 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 인터페이스 명 변경 방법</title>
      <link>https://coderdocument.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%AA%85-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;네트워크&amp;nbsp;인터페이스&amp;nbsp;명&amp;nbsp;변경&amp;nbsp;방법&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;cmd에서 ifconfig 명령으로 네트워크 인터페이스를 보면 이름이 enp10s0이라던가 wlp7s0과 같이 보이는 경우가 있을 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oqVMp/btsIcBp2q4v/KKD66ImFok0siJEGX7mTZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oqVMp/btsIcBp2q4v/KKD66ImFok0siJEGX7mTZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oqVMp/btsIcBp2q4v/KKD66ImFok0siJEGX7mTZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoqVMp%2FbtsIcBp2q4v%2FKKD66ImFok0siJEGX7mTZ1%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;754&quot; height=&quot;589&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;949&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이때 이렇게 보이는 네트워크 인터페이스명을 우리에게 익숙한 eth, wlan으로 보이도록 바꾸는 방법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다음 순서대로 진행해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. dmesg | grep -i wlp (또는 dmesg | grep -i eth 또는 dmesg | grep -i wlan)&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGpRXm/btsIb5rpsCx/fXOHBCt3TKfkWBTyfgxlB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGpRXm/btsIb5rpsCx/fXOHBCt3TKfkWBTyfgxlB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGpRXm/btsIb5rpsCx/fXOHBCt3TKfkWBTyfgxlB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGpRXm%2FbtsIb5rpsCx%2FfXOHBCt3TKfkWBTyfgxlB0%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;865&quot; height=&quot;56&quot; data-filename=&quot;2.png&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;56&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;size18&quot;&gt;해당 명령을 통해 부팅 시, wlan0을 wlp7s0으로 rename하고 있음을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. vi /etc/default/grub&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;229&quot; data-origin-height=&quot;18&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/myaGX/btsIcW1zGZa/1H0KtkHzynXlOlkMiwvwq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/myaGX/btsIcW1zGZa/1H0KtkHzynXlOlkMiwvwq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/myaGX/btsIcW1zGZa/1H0KtkHzynXlOlkMiwvwq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmyaGX%2FbtsIcW1zGZa%2F1H0KtkHzynXlOlkMiwvwq1%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;395&quot; height=&quot;31&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;229&quot; data-origin-height=&quot;18&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;size18&quot;&gt;부팅 시 rename하고 있으므로 부트로더 설정을 수정해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;4.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Joesx/btsIcpws2Sr/1rgVF0fdEqSFyjHUyDXjDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Joesx/btsIcpws2Sr/1rgVF0fdEqSFyjHUyDXjDk/img.png&quot; data-alt=&quot;before&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Joesx/btsIcpws2Sr/1rgVF0fdEqSFyjHUyDXjDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJoesx%2FbtsIcpws2Sr%2F1rgVF0fdEqSFyjHUyDXjDk%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;670&quot; height=&quot;250&quot; data-filename=&quot;4.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;before&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;5.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKYywT/btsIcXzlVmj/wxK5Zz8EVfpNFd5JE7gxik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKYywT/btsIcXzlVmj/wxK5Zz8EVfpNFd5JE7gxik/img.png&quot; data-alt=&quot;after&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKYywT/btsIcXzlVmj/wxK5Zz8EVfpNFd5JE7gxik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYywT%2FbtsIcXzlVmj%2FwxK5Zz8EVfpNFd5JE7gxik%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;669&quot; height=&quot;241&quot; data-filename=&quot;5.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;after&lt;/figcaption&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;size18&quot;&gt;파일을 열면&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt; GRUB_CMDLINE_LINUX= &lt;/b&gt;이 적혀있는 라인을 볼 수 있는데, 해당 라인에 after 이미지와 같이 &lt;span style=&quot;color: #8a3db6;&quot;&gt;&lt;b&gt;&quot;net.ifnames=0 biosdevname=0&quot;&lt;/b&gt; &lt;/span&gt;을 써준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만약 해당 라인에 이미 무언가 써져있다면 그 뒤에 이어서 쓰면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3. grub-mkconfig -o /boot/grub/grub.cfg&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;6.png&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjw4rn/btsIbwJybnn/TUCuaDgSxTN11ykIyW8Ls0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjw4rn/btsIbwJybnn/TUCuaDgSxTN11ykIyW8Ls0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjw4rn/btsIbwJybnn/TUCuaDgSxTN11ykIyW8Ls0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjw4rn%2FbtsIbwJybnn%2FTUCuaDgSxTN11ykIyW8Ls0%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;894&quot; height=&quot;212&quot; data-filename=&quot;6.png&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;257&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;size18&quot;&gt;설정을 바꿔준 후, grub 설정파일을 다시 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;완료되면 위와 같이 done 메세지가 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. reboot&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위 과정을 마친 후, 변경사항을 적용하기 위해 재부팅한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;재부팅한 후, 다시 ifconfig 명령을 입력하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;8.png&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ2yIh/btsIcAkokxX/spuu2clAitZC7psrsAr9vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ2yIh/btsIcAkokxX/spuu2clAitZC7psrsAr9vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ2yIh/btsIcAkokxX/spuu2clAitZC7psrsAr9vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ2yIh%2FbtsIcAkokxX%2Fspuu2clAitZC7psrsAr9vK%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;787&quot; height=&quot;587&quot; data-filename=&quot;8.png&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;714&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;위와 같이 네트워크 인터페이스명이 변경되어 보이는것을 확인할 수 있다.&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;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;참고사이트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://dreamholic.tistory.com/100&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dreamholic.tistory.com/100&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Embedded SW 기초</category>
      <author>stdQ</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/27</guid>
      <comments>https://coderdocument.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%AA%85-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95#entry27comment</comments>
      <pubDate>Tue, 25 Jun 2024 20:55:06 +0900</pubDate>
    </item>
    <item>
      <title>Makefile</title>
      <link>https://coderdocument.tistory.com/entry/Makefile</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;Makefile이란&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;make빌드 방식은 gcc 빌드 방식을 대신하여 간단하게 빌드 할 수 있도록 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이때 Makefile은 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;make&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;빌드툴을 이용하여 프로그램을 빌드할 수 있도록&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;make문법에 맞게 작성하는 문서라고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;gcc 빌드는 해본사람이라면 알겠지만 실행파일을 만드는데 필요한 소스파일이 적을 때엔 make빌드보다 간단하고 쉬워보이지만 필요한 파일이 많아질수록 점차 복잡해지고 오래걸린다는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;make빌드는 Makefile을 통해 복잡한 빌드과정을 간단하게 수행할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1719413287154&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CROSS_COMPILE=/usr/lib/aarch64-linux-gun/aarch64-linux-gun-
CC=$(CROSS_COMPILE)gcc
TARGET=test
OBJS=test.o

all: $(TARGET)

$(TARGET): $(OBJS)
    $(CC) -o $(TARGET) $(OBJS)

%.o: %.c
    $(CC) -c -o $@ $&amp;lt;

clean:
    rm -rf $(TARGET) $(OBJS)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;가장 기본적인 형태의 Makefile을 작성해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Makefile을 어떻게 작성하는지, 한 줄씩 알아보도록 할건데 &lt;b&gt;그 전에&lt;/b&gt; 우선 할당 유형 연산자부터 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;할당 유형&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Make는 Makefile을 쓰는 것을 단순화하기 위해 변수가 지원된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;=, ?=, :=, ::=, +=, !=연산자 중 하나를 가지고 할당된다. 각 연산자의 차이점은 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.6512%; height: 208px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;유형&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;=&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;지연된 값을 변수에 할당한다.&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;변수가 사용될 때마다 변수의 값이 요구된다는 의미이다. 쉘 명령의 결과를 대입할 때 - 변수가 읽혀질 때마다 쉘 명령이 실행된다는 것을 잊지 마시라.&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;:= / &lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;::=&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;이러한 대입은 변수값을 한 번만 처리하고 그 값을 저장한다. &lt;br /&gt;단순하고 강력하다. 이런 유형의 할당은 디폴트로 선택되어야 한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;?=&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;변수가 정의되지 않은 경우에만 :=역할을 한다. 그렇지 않은 경우는 아무것도 하지 않는다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;+=&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;더하기 대입 연산자이다. &lt;br /&gt;변수가 미리 :=또는 ::=에 설정되어 있는 경우, 우변은 즉시 값으로 간주된다. 그렇지 않으면 지연된 값으로 간주된다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10.1163%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;!=&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 89.8837%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot;&gt;쉘 대입 연산자다. &lt;br /&gt;우변은 즉시 평가되고 쉘에 전달된다. 결과는 좌변의 변수에 저장된다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style8&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이제 예제 Makefile을 한 줄 씩 자세히 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;우선, CC는 컴파일러를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;CC 뒤에 붙인 $(CROSS_COMPILE)이 크로스 컴파일러이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;CROSS_COMPILE 경로에 해당 컴파일러에 대한 크로스 컴파일러가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;컴파일러는 보통 컴파일 하는 시스템과 실행파일이 동작하는 시스템이 일치하는 '네이티브 컴파일러'겠지만, 임베디드에서는 조금 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;임베디드 시스템의 경우, 코드를 작성하여 컴파일 하는 시스템(PC)과, 컴파일 후 생성된 실행파일이 동작하는 시스템(보드)이 다른 경우가 많은데, 이럴 때는 '크로스 컴파일러' 환경을 구축해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;Makefile을 보다보면 CC를 포함하여 AR, AS, LD, NM, GCC, CPP, CXX, FC, RANLIB, READELF, STRIP, OBJDUMP, INSTALL등 여러 키워드가 보일 것이다. 이것은 전부 컴파일러들이며, 크로스컴파일을 할 수 있도록 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style8&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그 다음으로 보이는 TARGET은 빌드 후 생성될 실행파일의 이름을 의미하고, OBJ는 오브젝트 파일을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;빌드는 전처리 -&amp;gt; 컴파일 -&amp;gt; 어셈블 -&amp;gt; 링킹 의 과정을 거치는데, 이 중 어셈블 단계에서 전처리 된 소스파일을 통해 오브젝트 파일을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이 때 생성되는 오브젝트 파일을 지정하는 라인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;빌드과정.png&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3EgEa/btsIdc5oPk8/KjJNOQIYRYtiWOcVlE1CV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3EgEa/btsIdc5oPk8/KjJNOQIYRYtiWOcVlE1CV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3EgEa/btsIdc5oPk8/KjJNOQIYRYtiWOcVlE1CV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3EgEa%2FbtsIdc5oPk8%2FKjJNOQIYRYtiWOcVlE1CV1%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;920&quot; height=&quot;138&quot; data-filename=&quot;빌드과정.png&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;다음으론 all: $(TARGET) 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;all은 최종적으로 생성되는 target을 의미하는데, TARGET 이라는 실행파일을 생성한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;TARGET에 test를 넣었다면 빌드 후, 최종적으로 test 실행파일이 생성됨을 의미한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그 밑에 또한 비슷한 구조로&amp;nbsp;다음과 같이 작성된것을 볼 수 있는데,&lt;/p&gt;
&lt;pre id=&quot;code_1719429834149&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(TARGET): $(OBJS)
    $(CC) -o $(TARGET) $(OBJS)

%.o: %.c
    $(CC) -c -o $@ $&amp;lt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이는 이렇게 보면 이해하기 쉽다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&amp;lt;target&amp;gt;: &amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;command&amp;gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;target을 생성하기 위해 dependency가 필요하고, 이 dependency를 가지고 command를 실행한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;위의 예제로 다시 보면&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;TARGET을 생성하기 위해 OBJS 파일들이 필요해.&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그 OBJS 파일들을 가지고 CC(크로스 컴파일러)를 통해 링킹해서 TARGET을 생성해.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;이렇게 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #fafafa; color: #666666; text-align: left;&quot;&gt;dependency는 빌드 과정 참고.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;전처리 파일(*.i)을 생성하기 위해서는 소스파일(*.c)이 있어야하고, 컴파일 파일(*.s)을 생성하기 위해서는 전처리 파일(*.i)이 있어야한다. &lt;/span&gt;&lt;span style=&quot;color: #666666; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;또 오브젝트 파일(*.o)을 생성하기 위해서는 컴파일 파일(*.s)이 있어야하고, 최종적으로 실행파일(*.out 또는 *.exe, ...)을 만들기 위해서는 오브젝트 파일(*.o)이 있어야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;참고로 전처리 파일과 컴파일 파일은 실제로 눈에 보이게 생성되지는 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;그러면 그 다음라인은 어떻게 읽을 수 있을까&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;그런데 여기선 의미 모를 기호들이 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;$@ 와 $&amp;lt; 이 보이는데 이 기호들은 무슨 의미를 가지고 있는지부터 알아보자.&lt;/span&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;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;$@ =&amp;gt; &amp;lt;target&amp;gt;: &amp;lt;dependency&amp;gt; tab &lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&amp;lt;command&amp;gt;&amp;nbsp; 구조에서 target을 의미.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;$&amp;lt;&amp;nbsp; =&amp;gt; &lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&amp;lt;target&amp;gt;: &amp;lt;dependency&amp;gt; tab&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&amp;lt;command&amp;gt;&amp;nbsp; 구조에서&lt;span&gt; 현재 target의 첫 번째 dependency 파일을 의미.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; text-align: left;&quot;&gt;&lt;span&gt;그렇다면 이제 해당 라인을 읽을 수 있을 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오브젝트 파일을 생성하기 위해 소스 파일이 필요해.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그 소스 파일들을 가지고 CC(크로스 컴파일러)를 통해 어셈블해서 오브젝트 파일을 생성해.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;마지막 라인이다.&lt;/p&gt;
&lt;pre id=&quot;code_1719432085934&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;clean:
    rm -rf $(TARGET) $(OBJS)&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;size18&quot;&gt;해당 라인은 clean 매크로를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;가장 대표적이고 기본처럼 넣는 매크로이기도 하며, clean 빌드 규칙을 추가해 make 뿐만 아니라 make clean 커멘드를 사용할 수 있게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;make clean 을 통해, 위에서 정의한것과 같이 실행 파일과 오브젝트 파일을 삭제할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;PKG_CONFIG&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;위의 makefile에선 볼 수 없지만 linux에서 테스트 및 개발을 하다보면 설치된 라이브러리 등의 정보를 알아야 할 때가 있다. /usr/lib, /usr/share 등 여러 경로에 있으며 모든 라이브러리 경로를 외울 수 없기 때문에 pkg-config를 이용한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;pkg-config는 설치된 라이브러리에 대한 다양한 정보를 출력한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C, C++ 컴파일러를 위한 매개변수&lt;/li&gt;
&lt;li&gt;링커를 위한 매개변수&lt;/li&gt;
&lt;li&gt;패키지 버전&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;실재 gcc를 이용하여 컴파일하는 경우 다음과 같이 작성한다.&lt;/p&gt;
&lt;pre id=&quot;code_1719540802327&quot; class=&quot;shell&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;$ gcc -o test test.c 'pkg-config --libs --cflags glib-2.0'&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;이러한 정보를 관리하는 파일을 '*.pc' 파일로 관리되며 경로는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;/usr/lib/pkgconfig, /usr/share/ pkgconfig,&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;/usr/local/lib/pkgconfig 등의 경로에 저장된다. PC파일 내용을 보면 아래와 같다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_2024-06-27_10-34-26.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sL9Yq/btsIdz7arJz/x4TNWJa2MKVkfT6FW1vDG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sL9Yq/btsIdz7arJz/x4TNWJa2MKVkfT6FW1vDG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sL9Yq/btsIdz7arJz/x4TNWJa2MKVkfT6FW1vDG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsL9Yq%2FbtsIdz7arJz%2Fx4TNWJa2MKVkfT6FW1vDG0%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;512&quot; height=&quot;311&quot; data-filename=&quot;Screenshot_2024-06-27_10-34-26.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;414&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;size18&quot;&gt;기본적인 라이브러리 이름과 정보, 버전이 있고, 컴파일에 필요한 include 경로 Cflags와 link할 Libs 정보가 저장되어있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;Makefile에서 보면 CFLAGS, LDFLAGS를 볼 수 있다. 이는 이 *.pc파일에서 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;include 경로 Cflags와 link할 Libs 정보를 바탕으로 pkg-config를 실행하는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;추가 컴파일러 및 크로스컴파일러 옵션은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://coderdocument.tistory.com/entry/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-Crocess-Compile&quot;&gt;2024.06.15 - [Embedded SW 기초] - 컴파일러 &amp;amp; 크로스 컴파일&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;글에서 확인하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;참고사이트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719433412726&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;[make] Makefile 개념 및 사용법 정리&quot; data-og-description=&quot;목차&quot; data-og-host=&quot;80000coding.oopy.io&quot; data-og-source-url=&quot;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&quot; data-og-url=&quot;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/G0YbQ/hyWrRZarlw/kVkjFDIQNmtuBnFF5E3001/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739,https://scrap.kakaocdn.net/dn/Sv94U/hyWrMjfqfk/IirokuSEtI8IUnrYJQCzxk/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739,https://scrap.kakaocdn.net/dn/SoGYl/hyWrVUNHKo/qKCmRE4mCYpeOOaSWlKOt1/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739&quot;&gt;&lt;a href=&quot;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://80000coding.oopy.io/b553047b-42f6-4066-9f30-f4aef0b0503d&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/G0YbQ/hyWrRZarlw/kVkjFDIQNmtuBnFF5E3001/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739,https://scrap.kakaocdn.net/dn/Sv94U/hyWrMjfqfk/IirokuSEtI8IUnrYJQCzxk/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739,https://scrap.kakaocdn.net/dn/SoGYl/hyWrVUNHKo/qKCmRE4mCYpeOOaSWlKOt1/img.png?width=2000&amp;amp;height=1739&amp;amp;face=0_0_2000_1739');&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;[make] Makefile 개념 및 사용법 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;80000coding.oopy.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719433411440&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;Makefile을 만들기 위한 A to Z&quot; data-og-description=&quot;1. 프로그램의 실행 순서&quot; data-og-host=&quot;80000coding.oopy.io&quot; data-og-source-url=&quot;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&quot; data-og-url=&quot;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://80000coding.oopy.io/df141ab9-7fa5-40fe-97df-e6004cf6a3b9&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;Makefile을 만들기 위한 A to Z&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 프로그램의 실행 순서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;80000coding.oopy.io&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>Embedded SW 기초</category>
      <author>stdQ</author>
      <guid isPermaLink="true">https://coderdocument.tistory.com/26</guid>
      <comments>https://coderdocument.tistory.com/entry/Makefile#entry26comment</comments>
      <pubDate>Tue, 25 Jun 2024 11:03:30 +0900</pubDate>
    </item>
  </channel>
</rss>