<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NTREXGO - 디바이스마트, 엔티렉스 컨텐츠 통합 사이트 &#187; 17호</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/17%ed%98%b8/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ntrexgo.com</link>
	<description>엔티렉스, 디바이스마트 컨텐츠 통합 사이트</description>
	<lastBuildDate>Thu, 03 Mar 2022 06:47:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>[17호]JK전자와 함께하는 ARM 완전정복(3)-3</title>
		<link>http://www.ntrexgo.com/archives/13367</link>
		<comments>http://www.ntrexgo.com/archives/13367#comments</comments>
		<pubDate>Sun, 10 Mar 2013 06:20:23 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[jk전자]]></category>
		<category><![CDATA[매거진]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13367</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 3부 3편. 자료는 ARM을 처음 접하는 입문자로서 S/W 엔지니어 혹은 H/W 엔지니어를 대상으로 하였습니다. 처음에는 Cortex-M3 구조를 목표로 하였으나 전통적인 ARM(주로 ARM7, ARM9)의 구조에 대해서 먼저 이야기한 다음 Cortex-M3 구조에 대해서 하기로 마음을 고쳐 먹었습니다. Cortex-M3도 ARM 이기 때문에 전통적인 ARM의 구조에 대해서 잘 이해하고 Cortex-M3 구조와 비교해 보면서 공부한다면 큰 도움이 될 것입니다.]]></description>
				<content:encoded><![CDATA[<table style="width: 600px" border="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자.jpg" rel="lightbox[13367]"><img class="alignnone  wp-image-13318" alt="jk전자" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자-300x222.jpg" width="192" height="142" /></a></td>
<td><span style="color: #000080"><strong><span style="font-size: large">JK전자와 함/께/하/는 ARM 완전 정복</span></strong></span><span style="color: #666699"><strong><span style="line-height: 19px">Ⅱ.ARM Applications &#8211; 1부</span></strong></span>글 | JK전자</td>
</tr>
</tbody>
</table>
<p><span style="color: #008000;background-color: #ffff99"><strong>4. 개발환경 설정</strong></span></p>
<p><strong><span style="color: #008000">4.1 IAR Workbench 개발환경 설정</span></strong></p>
<p>ARM Simulator 기반의 실습 프로젝트와 유사하지만 디버거 설정 부분과 Pre-include directory 설정 등이 추가됩니다.<br />
<span style="background-color: #ffff00">(1) Create New Project</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK060.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13291" alt="17featureJK060" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK060-620x446.jpg" width="620" height="446" /></a></p>
<p><span style="background-color: #ffff00">(2) Empty project 생성</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK061.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13292" alt="17featureJK061" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK061.jpg" width="408" height="347" /></a></p>
<p><span style="background-color: #ffff00">(3) 프로젝트 파일이름 입력 &#8211; “mini2440_test”</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK062.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13293" alt="17featureJK062" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK062-620x435.jpg" width="620" height="435" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK077.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13308" alt="17featureJK077" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK077-620x428.jpg" width="620" height="428" /></a></p>
<p><span style="background-color: #ffff00">(4) 그룹생성 &#8211; “base”, “testcode”그룹 생성</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK078.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13309" alt="17featureJK078" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK078-620x427.jpg" width="620" height="427" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK079.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13310" alt="17featureJK079" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK079-620x428.jpg" width="620" height="428" /></a></p>
<p><span style="background-color: #ffff00">(5) 소스 파일추가</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK080.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13311" alt="17featureJK080" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK080-620x428.jpg" width="620" height="428" /></a><br />
- “base”그룹 : base 폴더 안의 *.s, *.c 파일들 추가<br />
- “testcode”그룹 : testcode 폴더 안의 *.c 파일들 추가<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK081.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13312" alt="17featureJK081" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK081-620x428.jpg" width="620" height="428" /></a></p>
<p><span style="background-color: #ffff00">(6) 프로젝트 옵션 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK082.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13313" alt="17featureJK082" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK082-620x429.jpg" width="620" height="429" /></a></p>
<p><span style="background-color: #ffff99">(6.1) Target Device 설정 : Samsung S3C2440A로 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK066.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13297" alt="17featureJK066" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK066-620x437.jpg" width="620" height="437" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK067.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13298" alt="17featureJK067" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK067.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(7) Processor Mode 설정 : “ARM”모드로 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK068.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13299" alt="17featureJK068" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK068.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(8) C/C++ Compiler Pre-include 디렉토리 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK084.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13315" alt="17featureJK084" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK084.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(9) Assembler Pre-include 디렉토리 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK085.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13316" alt="17featureJK085" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK085.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(10) Scattor Loading 파일 설정 : 프로젝트 디렉토리에 “mini2440_lnk.icf”파일을 선택합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK083.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13314" alt="17featureJK083" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK083.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(11) Program Start Entry 설정 : “ __program_start”라고 입력합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK070.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13301" alt="17featureJK070" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK070.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(12) 디버깅 정보를 포함하도록 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK071.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13302" alt="17featureJK071" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK071.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(13) Map 파일을 생성하도록 합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK072.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13303" alt="17featureJK072" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK072.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(14) Debugger 정보 설정 : Dirver &#8211; Simulator, Run to main은 반드시 설정 해제합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK073.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13304" alt="17featureJK073" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK073-620x456.jpg" width="620" height="456" /></a></p>
<p><span style="color: #339966"><strong>4.2 JTAG 을 이용한 프로그램 다운로드</strong></span></p>
<p><span style="color: #99cc00"><strong>4.2.1 ARM-JTAG을 이용한 프로그램 다운로드 </strong></span></p>
<p><span style="background-color: #ffff00">(1) ARM-JTAG Standard 버젼 이상을 사용해야 합니다.</span></p>
<p><span style="background-color: #ffff00">(2) IAR 개발환경에서 Debugger를 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK074.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13305" alt="17featureJK074" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK074-620x446.jpg" width="620" height="446" /></a><br />
RDI Driver를 JICE.dll 로 설정합니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK075.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13306" alt="17featureJK075" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK075-620x446.jpg" width="620" height="446" /></a></p>
<p><span style="background-color: #ffff00">(3) Windows7 사용자일 경우 IAR IDE 프로그램과, JICE Server의 실행 환경을 관리자 권한으로 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK048.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13279" alt="17featureJK048" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK048-620x367.jpg" width="620" height="367" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK049.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13280" alt="17featureJK049" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK049-620x430.jpg" width="620" height="430" /></a></p>
<p><span style="background-color: #ffff00">(4) JICE Server 를 실행한 후 Target Detect 를 합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK050.jpg" rel="lightbox[13367]"><img class="alignnone size-full wp-image-13281" alt="17featureJK050" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK050.jpg" width="410" height="400" /></a></p>
<p><span style="background-color: #ffff00">(5) IAR Workbench 에서 “Download and Debugging”을 실행합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK051.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13282" alt="17featureJK051" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK051-620x401.jpg" width="620" height="401" /></a></p>
<p>위와 같은 화면이 나왔으면 정상적으로 실행이 완료된 상태입니다. 참고로 “mini2440_lnk.icf”파일은 S3C2440의 RAM(0&#215;30000000)영역에서 실행이 되도록 되어 있습니다. NOR 플래시에 다운로드해서 실행을 할 수도 있지만 NOR 플래시도 10만번 이상 Erase하게 되면 수명이 다하기 때문에 테스트용으로는 주로 RAM에서 실행되도록 합니다.</p>
<p><span style="background-color: #ffff00">(6) NOR 플래시에 프로그램을 다운로드 하는 방법</span><br />
- “mini2440_lnk.icf”파일에서 “define symbol EXECUTE_IN_SDRAM=1;”부분을 “define symbol EXECUTE_IN_SDRAM=0;”으로 수정합니다.<br />
- IAR 프로젝트를 Rebuild 합니다.<br />
- jcs 스크립트 파일에서 “mini2440_test.bin”파일의 이름과 경로를 수정합니다.<br />
- JICE Commander를 실행 -&gt; Script Run -&gt; “S3C2440_NOR(SST39VF1601)_PROGRAM_WITH_FLASHAGENT.jcs”를 실행합니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK052.jpg" rel="lightbox[13367]"><img class="alignnone size-large wp-image-13283" alt="17featureJK052" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK052-620x215.jpg" width="620" height="215" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: small"><strong>■ 이것으로 ARM Applications 1부를 마치며, 다음호에는 아래 내용에 대하여 살펴보도록 하겠습니다.</strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13367/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]JK전자와 함께하는 ARM 완전정복(3)-2</title>
		<link>http://www.ntrexgo.com/archives/13348</link>
		<comments>http://www.ntrexgo.com/archives/13348#comments</comments>
		<pubDate>Sun, 10 Mar 2013 05:43:18 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[jk전자]]></category>
		<category><![CDATA[매거진]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13348</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 3부 2편. 자료는 ARM을 처음 접하는 입문자로서 S/W 엔지니어 혹은 H/W 엔지니어를 대상으로 하였습니다. 처음에는 Cortex-M3 구조를 목표로 하였으나 전통적인 ARM(주로 ARM7, ARM9)의 구조에 대해서 먼저 이야기한 다음 Cortex-M3 구조에 대해서 하기로 마음을 고쳐 먹었습니다. Cortex-M3도 ARM 이기 때문에 전통적인 ARM의 구조에 대해서 잘 이해하고 Cortex-M3 구조와 비교해 보면서 공부한다면 큰 도움이 될 것입니다.]]></description>
				<content:encoded><![CDATA[<table style="width: 600px" border="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자.jpg" rel="lightbox[13348]"><img class="alignnone wp-image-13318" alt="jk전자" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자-300x222.jpg" width="192" height="142" /></a></td>
<td><span style="color: #000080"><strong><span style="font-size: large">JK전자와 함/께/하/는 ARM 완전 정복</span></strong></span><span style="color: #666699"><br />
<strong><span style="line-height: 19px">Ⅱ.ARM Applications &#8211; 1부</span></strong></span>글 | JK전자</td>
</tr>
</tbody>
</table>
<p><span style="background-color: #ffff99;color: #008000"><strong>2. 어셈블리어 실습</strong></span></p>
<p><span style="color: #339966"><strong>2.1 ARM Simulator 환경 설정</strong></span></p>
<p>IAR ARM용 컴파일러는 가격이 그렇게 싸지는 않습니다. 다행히도 www.iar.com 에서 시간 제한(30일), 사이즈 제한(32Kbyte) 버젼을 다운 받아서 사용해 볼 수 있습니다.</p>
<p><span style="color: #99cc00"><strong>2.1.1 IAR Evaluation 버젼 다운로드</strong></span><br />
- 다운로드 사이트 방문<br />
<a href="http://supp.iar.com/Download/SW/?item=EWARM-EVAL" target="_blank">http://supp.iar.com/Download/SW/?item=EWARM-EVAL</a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK034.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13265" alt="17featureJK034" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK034-620x372.jpg" width="620" height="372" /></a><br />
패키지 사이즈가 약 830MB정도 입니다. 다운 받아서 설치하시기 바랍니다.</p>
<p>다음은 Evaluation 버젼을 다운로드 받기 위한 절차대로 화면을 캡쳐해 놓은 것입니다. 참조하시기 바랍니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK057.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13288" alt="17featureJK057" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK057-620x434.jpg" width="620" height="434" /></a><br />
반드시 “Code size limited”를 선택하시기 바랍니다. 그렇지 않으면 30일 이후에 더이상 IAR 컴파일러를 사용할 수 없게 됩니다.</p>
<p><span style="background-color: #ffff00">(2) IAR Evaluation 버젼 설치 </span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK054.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13285" alt="17featureJK054" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK054-620x387.jpg" width="620" height="387" /></a><br />
설치가 완료되면 마지막에 License 를 입력하는 화면이 나옵니다. 여기에서 “Register with IAR System to get an evaluation license”를 선택하시기 바랍니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK055.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13286" alt="17featureJK055" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK055-620x387.jpg" width="620" height="387" /></a><br />
현재 설치된 제품 중에 라이센스가 없는 제품의 리스트가 나옵니다. 선택을 하고 “다음”으로 진행합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK056.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13287" alt="17featureJK056" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK056-620x387.jpg" width="620" height="387" /></a><br />
IAR Evaluation 버젼을 다운받기 위해서 입력했던 Email 주소로 Registeration Confirm 메일이 와있을 것입니다.<br />
Confirm 메일에 있는 Confirm 링크를 클릭하면 “Registration Complete”와 함께 Evaluation License 번호를 알 수가 있습니다. 그 번호를 위의 화면의 빈 칸에 입력하고 나서 “Regiser”버튼을 누르면 잠시 후에 네트워크를 통해서 Evaluation 라이센스 번호를 받게 됩니다. 경우에 따라서 Fail 이라는 메세지가 나올 수도 있습니다. 그때는 “Register”버튼을 다시 한번 클릭해서 재시도해 보시기 바랍니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK058.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13289" alt="17featureJK058" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK058-620x387.jpg" width="620" height="387" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK059.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13290" alt="17featureJK059" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK059-620x387.jpg" width="620" height="387" /></a><br />
모든 설치가 완료된 화면입니다.</p>
<p><span style="color: #99cc00"><strong>2.1.2 ARM Simulator 프로젝트 생성</strong></span><br />
아래 화면대로 따라서 ARM Simulator 기반의 실습 프로젝트를 생성해 보시기 바랍니다.</p>
<p><span style="background-color: #ffff00">(1) Create New Project</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK060.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13291" alt="17featureJK060" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK060-620x446.jpg" width="620" height="446" /></a></p>
<p><span style="background-color: #ffff00">(2) Empty project 생성<strong> </strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK061.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13292" alt="17featureJK061" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK061.jpg" width="408" height="347" /></a></p>
<p><span style="background-color: #ffff00">(3) 프로젝트 파일이름 입력 &#8211; “arm_simulator”</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK062.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13293" alt="17featureJK062" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK062-620x435.jpg" width="620" height="435" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK063.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13294" alt="17featureJK063" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK063-620x447.jpg" width="620" height="447" /></a></p>
<p><span style="background-color: #ffff00">(4) 그룹생성 &#8211; “base”, “testcode”그룹 생성</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK064.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13295" alt="17featureJK064" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK064-620x444.jpg" width="620" height="444" /></a><br />
- “base”그룹 : 2440init_ewarm.s 추가<br />
- “testcode”그룹 : main.c, SegInit.c 추가</p>
<p><span style="background-color: #ffff00">(6) 프로젝트 옵션 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK065.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13296" alt="17featureJK065" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK065-620x445.jpg" width="620" height="445" /></a></p>
<p><span style="background-color: #ffff99">(6.1) Target Device 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK066.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13297" alt="17featureJK066" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK066-620x437.jpg" width="620" height="437" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK067.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13298" alt="17featureJK067" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK067.jpg" width="614" height="474" /></a><br />
Samsung S3C2440A 로 설정합니다.</p>
<p><span style="background-color: #ffff00">(7) Processor Mode 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK068.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13299" alt="17featureJK068" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK068.jpg" width="614" height="474" /></a><br />
“ARM”모드로 설정합니다.</p>
<p><span style="background-color: #ffff00">(8) Scattor Loading 파일 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK069.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13300" alt="17featureJK069" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK069.jpg" width="614" height="474" /></a><br />
프로젝트 디렉토리에 “arm_simulator.icf”파일을 선택합니다.</p>
<p><span style="background-color: #ffff00">(9) Program Start Entry 설정</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK070.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13301" alt="17featureJK070" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK070.jpg" width="614" height="474" /></a><br />
“ __program_start”라고 입력합니다.</p>
<p><span style="background-color: #ffff00">(10) 디버깅 정보를 포함하도록 설정합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK071.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13302" alt="17featureJK071" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK071.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(11) Map 파일을 생성하도록 합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK072.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13303" alt="17featureJK072" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK072.jpg" width="614" height="474" /></a></p>
<p><span style="background-color: #ffff00">(12) Debugger 정보 설정 : Dirver &#8211; Simulator, Run to main은 반드시 설정 해제합니다.</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK073.jpg" rel="lightbox[13348]"><img class="alignnone size-large wp-image-13304" alt="17featureJK073" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK073-620x456.jpg" width="620" height="456" /></a></p>
<p><span style="color: #339966"><strong>2.2 Data Processing Instructions</strong></span></p>
<p>2장에서는 ARM Simulator를 활용한 어셈블리어 실습을 해보도록 하겠습니다. 이 내용들은 ARM Architecture Instruction의 이론 부분을 설명할 때 한번씩 나왔던 내용입니다. 여기서는 이론으로 공부했던 내용들을 실제로 ARM Simulator에서 코드를 작성한 후 컴파일하고 실행해서 결과 값을 직접 확인해 보는데 의미가 있습니다.</p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="5">
<tbody>
<tr>
<td>R0 = 0&#215;00<br />
R1 = 0&#215;22<br />
R2 = 0&#215;02<br />
R3 = 0&#215;00<br />
R4 = 0&#215;00</td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK000.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13231" alt="17featureJK000" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK000.jpg" width="388" height="150" /></a></td>
</tr>
</tbody>
</table>
<p>레지스터 값이 위와 같을 때 아래 예제들을 차례대로 수행해 보세요.</p>
<p><span style="color: #000000;background-color: #ffff00">(1) AND R0, R0, #0xFF</span><br />
2440init_ewarm.s 파일에 다음과 같이 입력을 합니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td>SECTION IMAGE_STARTUP:CODE (2)<br />
PUBLIC __program_start<br />
CODE32<br />
__program_start<br />
b ResetHandler<br />
b HandlerUndef ;handler for Undefined mode<br />
b HandlerSWI ;handler for SWI interrupt<br />
b HandlerPabort ;handler for PAbort<br />
b HandlerDabort ;handler for DAbort<br />
b . ;reserved<br />
b HandlerIRQ ;handler for IRQ interrupt<br />
b HandlerFIQ ;handler for FIQ interrupt<br />
ResetHandler<br />
MOV R0, #0&#215;00<br />
MOV R1, #0&#215;22<br />
MOV R2, #0&#215;02<br />
MOV R3, #0&#215;00<br />
MOV R4, #0x00AND R0, R0, #0xFF<br />
ADD R0, R0, #1<br />
ADD R0, R0, R1<br />
LSL R1, R0, #2<br />
SUB R3, R2, R1, LSR R2HandlerFIQ<br />
b .HandlerIRQ<br />
b .HandlerUndef<br />
b .HandlerSWI<br />
b .HandlerDabort<br />
b .HandlerPabort<br />
b .END</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK000.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13231" alt="17featureJK000" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK000.jpg" width="388" height="150" /></a></p>
<p><span style="background-color: #ffff00">(2) ADD R0, R0, #1 ; R0 = R0 + 1 = 0&#215;1</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK001.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13232" alt="17featureJK001" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK001.jpg" width="396" height="148" /></a></p>
<p><span style="background-color: #ffff00">(3) ADD R0, R0, R1 ; R0 = R0 + R1 = 0&#215;01 + 0&#215;22 = 0&#215;23</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK002.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13233" alt="17featureJK002" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK002.jpg" width="406" height="148" /></a></p>
<p><span style="background-color: #ffff00">(4) LSL R1, R0, #2 ; 0&#215;23(100011) LSL #2 = 0x8C(10001100) -&gt; 참고로 왼쪽으로 2번 쉬프트 하면 *4 를 한 것과 같습니다.</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK003.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13234" alt="17featureJK003" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK003.jpg" width="408" height="146" /></a></p>
<p><span style="background-color: #ffff00">(5) SUB R3, R2, R1, LSR R2</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK004.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13235" alt="17featureJK004" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK004.jpg" width="405" height="148" /></a></p>
<p>R3의 값이 0xFFFFFFDF 로 복잡한 값이 나왔습니다. 왜 이런 결과가 나왔을까요? 우선 R1을 오른쪽으로 2번 쉬프트시키면 0&#215;23이 되고 R2(0&#215;02)에서 R1(0&#215;23)을 빼면 결과 값이 -0&#215;21가 되고 이 값을 2의 보수로 표시하면 0xFFFFFFDF가 됩니다.</p>
<p>0&#215;21 = 00000000000000000000000000100001<br />
-0&#215;21 = 11111111111111111111111111011111 &#8211;&gt; 0&#215;21의 2의 보수<br />
참고로 2의 보수를 취하는 방법은 원래의 2진수에서 0-&gt;1, 1-&gt;0 으로 바꾼 후에 1을 더하면 되겠지요.</p>
<p><span style="color: #339966"><strong>2.3 Multiply Instructions</strong></span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>R0 = 0&#215;01<br />
R1 = 0&#215;02<br />
R2 = 0&#215;03<br />
R3 = 0&#215;04</td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK005.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13236" alt="17featureJK005" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK005.jpg" width="405" height="151" /></a></td>
</tr>
</tbody>
</table>
<p>레지스터 값이 위와 같을 때 아래 예제들을 차례대로 수행해보세요.</p>
<p><span style="background-color: #ffff00">(1) MUL R2, R0, R1 ; R2 = R0*R1 = 0&#215;02</span><br />
2440init_ewarm.s 파일에 다음과 같이 입력을 합니다.</p>
<table style="width: 620px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, 0&#215;01<br />
MOV R1, 0&#215;02<br />
MOV R2, 0&#215;03<br />
MOV R3, 0x04MUL R2, R0, R1<br />
MULS R2, R0, R1<br />
MLA R3, R2, R1, R0</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK006.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13237" alt="17featureJK006" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK006.jpg" width="407" height="148" /></a></p>
<p><span style="background-color: #ffff00">(2) MULS R2, R0, R1 ; R2 = R0*R1 = 0&#215;02</span><br />
MUL 명령과 같은 명령입니다. 하지만 MUL뒤에 “S”가 붙으면 명령어 처리가 끝난 이후에 CPSR의 Flag Field가 연산 결과에 따라서 업데이트가 됩니다.<br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK006.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13237" alt="17featureJK006" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK006.jpg" width="407" height="148" /></a></p>
<p><span style="background-color: #ffff00">(3) MLA R3, R2, R1, R0 ; R3 = R2*R1 + R0</span><br />
참 효율적이네요. 명령어 하나로 곱하기 연산과 더하기 연산을 같이 할 수 있습니다.<br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK007.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13238" alt="17featureJK007" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK007.jpg" width="407" height="150" /></a></p>
<p><span style="color: #339966"><strong>2.4 Load/Store Instructions</strong></span></p>
<p><span style="color: #99cc00"><strong>2.4.1 Pre-index</strong></span><br />
R0 = 0&#215;31000000<br />
R1 = 0&#215;00<br />
R2 = 0&#215;00<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK008.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13239" alt="17featureJK008" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK008.jpg" width="407" height="149" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK009.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13240" alt="17featureJK009" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK009.jpg" width="387" height="181" /></a></p>
<p><span style="background-color: #ffff00">(1) LDR R1, [R0] ; R1 2440init_ewarm.s 파일에 다음과 같이 입력을 합니다.</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, 0&#215;31000000<br />
MOV R1, 0&#215;0<br />
MOV R2, 0x0LDR R1, [R0]
STR R1, [R0, #4]
STR R1, [R0, #4]!</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK010.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13241" alt="17featureJK010" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK010.jpg" width="408" height="146" /></a></p>
<p><span style="background-color: #ffff00">(2) STR R1, [R0, #4] ; R1</span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK011.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13242" alt="17featureJK011" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK011.jpg" width="385" height="120" /></a></p>
<p><span style="background-color: #ffff00">(3) STR R1, [R0, #4]! ; R1</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK012.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13243" alt="17featureJK012" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK012.jpg" width="403" height="150" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK013.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13244" alt="17featureJK013" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK013.jpg" width="388" height="121" /></a></p>
<p><span style="color: #99cc00"><strong>2.4.2 Post-index</strong></span><br />
R0 = 0&#215;31000000<br />
R1 = 0&#215;00<br />
R2 = 0&#215;04<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK014.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13245" alt="17featureJK014" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK014.jpg" width="393" height="148" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK009.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13240" alt="17featureJK009" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK009.jpg" width="387" height="181" /></a></p>
<p><span style="background-color: #ffff00">(1) LDR R1, [R0], R2 ; R1</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, 0&#215;31000000<br />
MOV R1, 0&#215;0<br />
MOV R2, 0x4LDR R1, [R0], R2<br />
STR R1, [R0], #4</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK015.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13246" alt="17featureJK015" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK015.jpg" width="394" height="149" /></a></p>
<p><span style="background-color: #ffff00">(2) STR R1, [R0], #4 ; R1</span><br />
- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK016.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13247" alt="17featureJK016" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK016.jpg" width="393" height="145" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK017.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13248" alt="17featureJK017" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK017.jpg" width="389" height="120" /></a></p>
<p><span style="color: #339966"><strong>2.5 Load/Store Multiple Instructions</strong></span></p>
<p>R0 = 0x000A<br />
R4 = 0x000B<br />
R5 = 0x000C<br />
R13 = 0xFFF0<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK035.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13266" alt="17featureJK035" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK035.jpg" width="402" height="172" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK036.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13267" alt="17featureJK036" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK036.jpg" width="392" height="170" /></a></p>
<p><span style="background-color: #ffff00">(1) STMIA R13!, {R0,R4-R5}</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #0x000A<br />
MOV R4, #0X000B<br />
MOV R5, #0x000C<br />
LDR R13, =0xFFF0STMIA R13!, {R0,R4-R5}</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK042.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13273" alt="17featureJK042" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK042.jpg" width="412" height="166" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK036.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13267" alt="17featureJK036" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK036.jpg" width="392" height="170" /></a></p>
<p><span style="background-color: #ffff00">(2) STMIB R13!, {R0,R4-R5}</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #0x000A<br />
MOV R4, #0X000B<br />
MOV R5, #0x000C<br />
LDR R13, =0xFFF0STMIB R13!, {R0,R4-R5}</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK043.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13274" alt="17featureJK043" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK043.jpg" width="402" height="167" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK038.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13269" alt="17featureJK038" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK038.jpg" width="392" height="171" /></a></p>
<p><span style="background-color: #ffff00">(3) STMDA R13!, {R0,R4-R5}</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #0x000A<br />
MOV R4, #0X000B<br />
MOV R5, #0x000C<br />
LDR R13, =0xFFF0STMDA R13!, {R0,R4-R5}</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK042.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13273" alt="17featureJK042" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK042.jpg" width="412" height="166" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK039.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13270" alt="17featureJK039" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK039.jpg" width="392" height="171" /></a></p>
<p><span style="background-color: #ffff00">(4) STMDB R13!, {R0,R4-R5}</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #0x000A<br />
MOV R4, #0X000B<br />
MOV R5, #0x000C<br />
LDR R13, =0xFFF0STMDB R13!, {R0,R4-R5}</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK041.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13272" alt="17featureJK041" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK041.jpg" width="406" height="171" /></a><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK040.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13271" alt="17featureJK040" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK040.jpg" width="386" height="167" /></a></p>
<p><span style="color: #339966"><strong>2.6 Branch Instructions</strong></span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandlersubsequent<br />
MOV R0, #1<br />
MOV R1, #2<br />
BL func1<br />
ADD R2, R0, R1func1<br />
MOV R0, #3<br />
MOV R1, #4<br />
BL func2<br />
ADD R2, R0, R1<br />
MOV PC, LRfunc2<br />
MOV R0, #5<br />
MOV R1, #6<br />
ADD R2, R0, R1<br />
MOV PC, LR</td>
</tr>
</tbody>
</table>
<p>위의 예제를 실행하면 R2 레지스터에 “3”이 저장이 되지 않습니다. R2 레지스터에 “3”이 저장이 될 수 있도록 예제를 수정해 보시기 바랍니다. 수정한 예제 코드는 아래와 같습니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK018.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13249" alt="17featureJK018" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK018.jpg" width="462" height="374" /></a><br />
서브 함수를 호출 할 경우에는 서브 함수에서 사용하는 레지스터와 LR 레지스터를 반드시 저장한 이후에 사용해야 한다는 것을 알 수 있습니다.</p>
<p><span style="color: #339966"><strong>2.7 Status Register Access Instructions</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK019.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13250" alt="17featureJK019" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK019.jpg" width="413" height="227" /></a></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MRS R0, CPSR<br />
BIC R0, R0, #0&#215;80 ; 7번 비트를 clear 하면 인터럽트가 활성화 됩니다.<br />
MSR CPSR, R0</td>
</tr>
</tbody>
</table>
<p>- 실행 결과<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK020.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13251" alt="17featureJK020" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK020.jpg" width="411" height="227" /></a></p>
<p><span style="color: #339966"><strong>2.8 Conditional Execution</strong></span></p>
<p>지금까지 배운 모든 어셈블리어들을 활용해서 최종적으로 몇가지 예제를 풀어 보도록 하겠습니다. 예제를 구현하는데에는 여러가지 방법들이 많이 있겠지만 가장 최적화된 어셈블리 명령어를 사용하시기 바랍니다.</p>
<p><span style="background-color: #ffff00">(1) 1 ~ 10을 더하는 최적화된 어셈블리어로 작성해 보세요.</span></p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R5, #10<br />
MOV R6, #0<br />
loop_sum<br />
ADD R6, R6, R5<br />
SUBS R5, R5, #1<br />
BNE loop_sum ; Not Equal(Z=1)</td>
</tr>
</tbody>
</table>
<p>루프를 사용할 경우에는 거꾸로 도는 것이 효율적입니다.</p>
<p><span style="background-color: #ffff00">(2) 2개 변수 사이의 절대값을 구하세요.</span><br />
- [-2 - 3] 사이의 절대값</p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #-2<br />
MOV R1, #3SUBS R0, R0, R1V<br />
RSBMI R0, R0, #0</td>
</tr>
</tbody>
</table>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK046.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13277" alt="17featureJK046" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK046.jpg" width="612" height="172" /></a></p>
<p>“SUBS R0, R0, R1”명령을 실행했을 때의 그림입니다. R0, CPSR의 “N”Flag를 잘 살펴보시기 바랍니다. 참고로 RSBMI 명령어는 CPSR의 “N”Flag가 Set되어 있을 때 뺄셈을 하는데 SUB 명령과는 연산의 방향이 반대로 수행이 되는 명령어입니다. 그러니까 이번 예제에서는 “#0”에서 “R0”를 빼는 것입니다.</p>
<p>- [3 - 1] 사이의 절대값</p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="5" cellpadding="0">
<tbody>
<tr>
<td>ResetHandler<br />
MOV R0, #3<br />
MOV R1, #1SUBS R0, R0, R1<br />
RSBMI R0, R0, #0</td>
</tr>
</tbody>
</table>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK045.jpg" rel="lightbox[13348]"><img class="alignnone size-full wp-image-13276" alt="17featureJK045" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK045.jpg" width="611" height="172" /></a><br />
“SUBS R0, R0, R1”명령을 실행했을 때의 그림입니다. R0, CPSR의 “N”Flag를 잘 살펴 보시기 바랍니다.</p>
<p>3장에서는 우리가 실제로 실습에 사용할 S3C2440 ARM9 개발보드에 대해서 소개하도록 하겠습니다. ARM Simulator에서는 별다른 설정없이도 어셈블리어 실습을 할 수 있었으나 실제 타겟을 사용할 경우에는 개발보드의 메모리 컨트롤러, 부팅과정 등을 제대로 이해하고 있어야 코드 작성이 가능합니다. 실제 개발보드에서 실습을 하기 전에 S3C2440에 대해서 이론적으로 공부해보도록 하겠습니다.</p>
<p>&nbsp;</p>
<p style="text-align: right"><span style="color: #999999"> JK전자와 함께하는 ARM 완전정복(3)-2 에서 계속 됩니다.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13348/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]아두이노 호환 E2sKit-Uno 보드 출시!</title>
		<link>http://www.ntrexgo.com/archives/13508</link>
		<comments>http://www.ntrexgo.com/archives/13508#comments</comments>
		<pubDate>Sun, 10 Mar 2013 05:43:11 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[이엠테크]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13508</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 이엠테크에서 아두이노 호환 E2sKit-Uno 보드를 출시했다. E2sKit-Uno 보드는 아두이노 기본 모델인 Uno 제품의 메인 MCU인 ATmega328P(with Uno Bootloader)를 장착한 보드로 AduKit-USB2Serial보드와 연결하여 아두이노 프로그램으로 작성한 스케치를 업로드 시킬 수 있는 보드이다. ]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn007.jpg" rel="lightbox[13508]"><img class="wp-image-13472 aligncenter" alt="17pn007" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn007.jpg" width="420" height="315" /></a></p>
<p>이엠테크에서 아두이노 호환 E2sKit-Uno 보드를 출시했다. E2sKit-Uno 보드는 아두이노 기본 모델인 Uno 제품의 메인 MCU인 ATmega328P(with Uno Bootloader)를 장착한 보드로 AduKit-USB2Serial보드와 연결하여 아두이노 프로그램으로 작성한 스케치를 업로드 시킬 수 있는 보드이다. 이더넷&lt;-&gt;시리얼 변환 모듈(Ecm5200-UART)을 장착할 수 있는 헤더가 장착되어 있으며, AVR Studio 프로그램으로 개발한 프로그램도 ICSP로 업로드가 가능하다. MCU(E2sKit-Uno or Leonardo)와 이더넷&lt;-&gt;시리얼 변환 모듈(Ecm5200-UART)를 사용해서 인터넷 망을 사용하는 네트워크를 구성할 수 있으며, 인터넷 망을 사용하기 어려운 경우에는 RF모듈과 혼용해서 원격으로 데이터를 수집하고 제어하는 어플리케이션에 적용이 가능하다. 보다 자세한 내용은 디바이스마트 홈페이지를 통해서 확인이 가능하다.</p>
<p>&nbsp;</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="660"><span style="color: #ff6600"><strong>제품 사양</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="620">
<table style="width: 600px" border="1" cellspacing="0" cellpadding="5" align="center">
<tbody>
<tr>
<td bgcolor="#f7f7f7"><strong>Microcontroller</strong></td>
<td>ATmega328P(TQFP type)</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Operating Voltage</strong></td>
<td>4.5V ~ 5.5V</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Digital I/O Pins</strong></td>
<td>14 (of which 6 provide PWM output)</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Analog Input Pins</strong></td>
<td>6</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Flash Memory</strong></td>
<td>32 KB (ATmega328) of which 0.5 KB used by bootloader</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>SRAM</strong></td>
<td>2 KB (ATmega328)</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>EEPROM</strong></td>
<td>1 KB (ATmega328)</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Clock Speed</strong></td>
<td>16 MHz</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>2 x 6Pin Header</strong></td>
<td>Ecm5200-UART 모듈 장착 Header</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>Status LEDs</strong></td>
<td>6 EA</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>LDO</strong></td>
<td>3V3 @1000mA LDO 장착</td>
</tr>
</tbody>
</table>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/data/temp/008004.jpg" width="540" height="405" /></p>
<p align="center">AduKit-USB2Serial(별도구매) + E2sKit-Uno</p>
<p align="center">
</td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="660"><span style="color: #ff6600"><strong>제품 특징</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="620">
<ul>
<li>Uno Bootloader 탑재AduKit-USB2Serial와 연결하여 사용자가 작성한 스케치를 업로드 할 수 있다.</li>
</ul>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38913/img02.jpg" width="527" height="395" /></p>
<ul>
<li>ICSP를 이용 AVR Studio로 개발한 프로그램 업로드</li>
<li>USB(5V)나 외부 5V전원을 사용</li>
<li>외부 전원 연결 케이블 제공(커넥터 작업 없이 초보자도 연결이 용이하다)</li>
<li>이더넷 &lt;-&gt; 시리얼 변환 모듈(Ecm5200-UART) 장착 Header</li>
<li>송/수신 상태 LED 드라이버와 LED 장착</li>
<li>Ecm5200-UART모듈의 네트워크 설정용 점퍼</li>
</ul>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38914/img03.jpg" width="540" height="405" /></p>
<p align="center">E2sKit-Uno + Ecm5200-UART(별도 구매)</p>
<ul>
<li>DFRobot사의 다양한 센서, 스위치, LED모듈등과 연결이 용이하도록 디지털 I/O와 아날로그 입력단자는 GND, +5V, 신호선 3개가 1쌍으로 되어 있어 연결이 매우 쉽다.※ 주의: DFRobot사 제품 연결 시 핀 확인(모델마다 다르다)</li>
</ul>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38913/img04.jpg" width="540" height="405" /></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38913/img05.jpg" width="540" height="282" /></p>
<p align="center">케이블 핀 변경 방법</p>
<p align="center">
</td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="660"><span style="color: #ff6600"><strong>네트워크 구성</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="620">MCU(E2sKit-Uno or Neonardo)와 이더넷&lt;-&gt;시리얼 변환 모듈(Ecm5200-UART)를 사용해서 인터넷 망을 사용하는 네트워크를 구성할 수 있다. 인터넷 망을 사용이 어려운 경우에는 RF모듈과 혼용해서 원격으로 데이터를 수집하고 제어하는 어플리케이션에 적용이 가능하다.</p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38914/img04.jpg" width="572" height="405" /></p>
<p align="center">
</td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="660"><span style="color: #ff6600"><strong>E2sKit-Uno 회로도</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="620">
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/38914/img05.jpg" width="569" height="808" /></p>
<p align="center">
</td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="660"><span style="color: #ff6600"><strong>제품 문의</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10">&lt;ul&gt;&lt;li&gt;전화문의: 042-623-4470&lt;/li&gt;&lt;li&gt;전자우편: &lt;a href=&#8221;mailto:rfmodem@wgmsk.com&#8221; target=&#8221;_blank&#8221;&gt;rfmodem@wgmsk.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;홈페이지: &lt;a href=&#8221;http://www.wgmsk.com/&#8221; target=&#8221;_blank&#8221;&gt;http://www.wgmsk.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td width="620"><img class="aligncenter" alt="" src="http://www.devicemart.co.kr/skin/goods/detail/38914_1.jpg" width="540" height="405" /></td>
</tr>
</tbody>
</table>
<p><a href="http://www.devicemart.co.kr/goods/view.php?seq=38914" target="_blank">제품구입하러가기</a></p>
<p>www.wgmsk.com</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13508/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]424MHz/447MHz 무선통신 모듈 출시!</title>
		<link>http://www.ntrexgo.com/archives/13500</link>
		<comments>http://www.ntrexgo.com/archives/13500#comments</comments>
		<pubDate>Sun, 10 Mar 2013 05:37:33 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[칩센]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13500</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 무선통신 인터페이스 전문 업체인 (주)칩센(www.chipsen.com)에서 424MHz / 447MHz 주파수대역의 무선통신 모듈인 AirBon-F400을 출시했다. 2.4GHz대역의 Wi-Fi, Bluetooth, ZigBee 등은 전파의 직진성이 강해 장애물이 있는 경우, 통신거리가 짧아지는 단점이 있는 반면 AirBon-F400모듈은 전파의 회절이 잘 되어 장애물을 회피하여 도달하는 특징이 있다. 즉, 2.4GHz에서는 불가능했던 건물의 층간 통신이나 바로 앞의 장애물을 뛰어 넘어 건너편까지 통신이 되는 장점이 있다. ]]></description>
				<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><a style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: 13px;line-height: 19px" href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn005.jpg" rel="lightbox[13500]"><img class="alignnone  wp-image-13470" alt="17pn005" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn005.jpg" width="292" height="189" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn006.jpg" rel="lightbox[13500]"><img class="alignnone  wp-image-13471" alt="17pn006" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn006.jpg" width="324" height="203" /></a></td>
</tr>
</tbody>
</table>
<p>무선통신 인터페이스 전문 업체인 (주)칩센(www.chipsen.com)에서 424MHz / 447MHz 주파수대역의 무선통신 모듈인 AirBon-F400을 출시했다. 2.4GHz대역의 Wi-Fi, Bluetooth, ZigBee 등은 전파의 직진성이 강해 장애물이 있는 경우, 통신거리가 짧아지는 단점이 있는 반면 AirBon-F400모듈은 전파의 회절이 잘 되어 장애물을 회피하여 도달하는 특징이 있다. 즉, 2.4GHz에서는 불가능했던 건물의 층간 통신이나 바로 앞의 장애물을 뛰어 넘어 건너편까지 통신이 되는 장점이 있다. 또한, AT명령어로 424MHz와 447MHz를 선택하여 사용할 수 있으며, Sleep모드(저전력) 기능이 있어 배터리를 사용하는 기기에서 효율적으로 전원 관리를 할 수 있다.</p>
<p>또한 통신인터페이스는 UART, SPI, I2C를 제공하여 사용자가 선택해서 사용할 수 있다. 현재 (주)칩센은 AriBon-F400 모듈을 개발완료하여, 금년 2월까지 다양한 환경에서 필드 테스트를 진행하였으며, 사용자가 쉽게 사용할 수 있도록 세팅 프로그램 제작 및 USB 테스트 보드 제작을 마쳤다. 3월부터는 디바이스마트 쇼핑몰에서 구입이 가능하다.</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center"><img alt="" src="http://www.devicemart.co.kr/skin/goods/detail/1060220_1.jpg" width="612" height="4064" /></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.devicemart.co.kr/goods/view.php?seq=1060220" target="_blank">제품구입하러가기</a></p>
<p>TEL. 1599-6005<br />
www.chipsen.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13500/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]실속형 고주파 인두기 TMT-2000S 출시!</title>
		<link>http://www.ntrexgo.com/archives/13492</link>
		<comments>http://www.ntrexgo.com/archives/13492#comments</comments>
		<pubDate>Sun, 10 Mar 2013 05:17:44 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[고주파]]></category>
		<category><![CDATA[마이툴]]></category>
		<category><![CDATA[인두기]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13492</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 공구 전문 쇼핑몰을 운영하고 있는 (주)마이툴에서 Thermaltronics사의 고주파 인두기를 단독 런칭했다.
고주파 인두기는 필요한 만큼의 열량을 자동으로 조절하여 공급하는 방식으로 균일한 납땜품질을 유지해주는 것이 특징인데, TMT-2000S는 특히 컴팩트한 디자인에 저렴한 가격으로 경제적이며, 듀얼포트를 채택하여 별도구매인 디솔더건을 장착하면 납땜작업과 동시에 수리작업도 가능하다.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn004.jpg" rel="lightbox[13492]"><img class="wp-image-13469 aligncenter" alt="17pn004" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn004.jpg" width="384" height="288" /></a></p>
<p>공구 전문 쇼핑몰을 운영하고 있는 (주)마이툴에서 Thermaltronics사의 고주파 인두기를 단독 런칭했다.<br />
고주파 인두기는 필요한 만큼의 열량을 자동으로 조절하여 공급하는 방식으로 균일한 납땜품질을 유지해주는 것이 특징인데, TMT-2000S는 특히 컴팩트한 디자인에 저렴한 가격으로 경제적이며, 듀얼포트를 채택하여 별도구매인 디솔더건을 장착하면 납땜작업과 동시에 수리작업도 가능하다. 또한 50KHz 퀴리 가열 기술을 채택하여 온도조절이나 별도의 교정이 전혀 불필요하며, 스탠드 자체에 인두팁을 보관할 수 있는 공간이 있어 팁 관리 및 교체가 수월하고 핸들을 스탠드에 거치하면 자동으로 OFF되어 팁산화 및 안전사고를 예방할 수 있다.<br />
보다 자세한 사항은 디바이스마트 쇼핑몰을 통해서 확인할 수 있으며 요청시 데모장비도 지원이 가능하다.</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table style="width: 100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td>
<p align="center"><img style="border: 0px" alt="" src="http://www.devicemart.co.kr/data/temp/744574.jpg" usemap="#Map" width="543" height="3693" border="0" /></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.devicemart.co.kr/goods/view.php?seq=38819" target="_blank">제품구입하러가기</a></p>
<p>TEL. 070-7010-6230<br />
www.mytool.co.kr</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13492/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]TMS320C2000 스탠다드패키지 출시!</title>
		<link>http://www.ntrexgo.com/archives/13481</link>
		<comments>http://www.ntrexgo.com/archives/13481#comments</comments>
		<pubDate>Sun, 10 Mar 2013 05:16:19 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[싱크웍스]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13481</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; (주)싱크웍스에서 이번에 출시한 스탠다드 패키지는 TMS320C2000을 개발하는데 필요한 장비, 서적, 평가 보드를 하나의 상품으로 묶어 보관이 편리하도록 구성한 패키지 상품이다.]]></description>
				<content:encoded><![CDATA[<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn002.jpg" rel="lightbox[13481]"><img class=" wp-image-13467 aligncenter" alt="17pn002" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn002.jpg" width="428" height="282" /></a></p>
<p>(주)싱크웍스에서 이번에 출시한 스탠다드 패키지는 TMS320C2000을 개발하는데 필요한 장비, 서적, 평가 보드를 하나의 상품으로 묶어 보관이 편리하도록 구성한 패키지 상품이다.</p>
<p>꼭 필요한 구성품만 넣었기 때문에 가격이 저렴하고, CCS V5를 무료로 사용할 수 있도록 절연 JTAG 에뮬레이터(SDS100i)를 구성하여, TMS320C2000계열의 개발과 학습을 시작하려는 분들에게 권장해드린다. 또한 싱크웍스 교육센터에서 사용되고 있는 펌웨어설계, 시스템 설계, 디지털 필터링 &amp;amp; FFT 강좌 교재와 예제가 함께 구성되어 자가학습이 가능하다. 제품에 대한 보다 자세한 내용은 디바이스마트 홈페이지를 통해서 확인이 가능하다.</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td width="620"><span style="color: #ff6600"><strong>스탠다드 패키지의 구성</strong></span><span style="color: #ff9900">Delfino 개발보드</span></p>
<ul>
<li>TI, Delfino 계열 MCU(TMS320F28335, TMS320C28346)용 개발보드</li>
<li>입력전원 : DC +9V, 1A 이상의 전원</li>
<li>개발 및 학습 보조용 슬레이브 모듈(TMS320F2808초소형 모듈) 기본 탑재</li>
<li>다양한 통신 인터페이스(CAN, RS232, I2C 등) 제공</li>
<li>신호처리용 HIFI 오디오 코덱 칩, 마이크, 시그널 컨디셔닝 회로 탑재</li>
<li>범용 LED, 버튼 스위치, 로터리 엔코더 탑재</li>
<li>PWM to Analog 출력 회로 탑재</li>
</ul>
<p><span style="color: #ff9900">TMS320F28335 초소형 버스 모듈</span></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img02.jpg" /></p>
<ul>
<li>TMS320F28335 ZJZ A 칩 탑재(150MHz,소수연산 가능)</li>
<li>소형 시스템을 위한 초소형 모듈(25.40 mm x 40.64 mm)</li>
<li>고정밀/고신뢰성의 참조전압 회로(LM4040CIM3-2.1) 탑재</li>
<li>주요 GPIO / 주변회로, EMIF 핀 인출</li>
<li>안정적인 전원 설계 &#8211; 5V 입력하면 MCU에서 사용하는 1.9V, 3.3V의 전압으로 가공 / 전달</li>
</ul>
<p><span style="color: #ff9900">절연 JTAG 에뮬레이터</span></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img03.jpg" /></p>
<ul>
<li>CCS V5를 완벽하게 지원하며, 무료로 무제한 사용 가능</li>
<li>Galvanic isolation(전원단:1,000Vrms, 신호단:2,500Vrms)</li>
<li>XDS100 V3 기술 적용하여 XDS100계열 중 가장 빠른 속도</li>
<li>1년간 무상 A/S &#8211; 무상 대체품 서비스</li>
</ul>
<p><span style="color: #ff9900">통신 모듈</span></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img04.jpg" /></p>
<ul>
<li>블루투스 무선 통신 환경의 시스템 개발 가능</li>
<li>USB 인터페이스가 필요한 시스템 개발 가능</li>
<li>데이터 로딩/저장/모니터링 PC 프로그램 지원</li>
<li>안드로이드 앱 지원(블루투스)</li>
<li>지원 가능 통신 속도(USB:2400~937.5kbps, Bluetooth:2400~230.4kbps)</li>
</ul>
<p><span style="color: #ff9900">자가학습 서적</span></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img05.jpg" /></p>
<ul>
<li>펌웨어 설계 : TMS320F28x CPU 구조/FPU/MMR/칩초기화/인터럽트/리셋 및 부트/플래시부트/플래시 메모리 고속화/시스템 신뢰성 향상 기술과 칩 운영 방법 등의 알찬 내용들을 다루고 있습니다.</li>
<li>시스템 설계 : TMS320F28x의 ADC/PWM/CAP/QEP/DMA/통신을 이해하기 쉽도록 이론 설명을 다루고 있습니다.</li>
<li>디지털필터&amp;FFT : TMS320F28x를 이용한 샘플링 이론과 디지털 필터의 원리, 디지털 필터의 위상지연이 제어 시스템에 미치는 영향, FFT의 원리 등 실전에서 바로 적용 가능한 기술을 다루고 있습니다.</li>
<li>CCS V5 핸드북 : Texas Instruments사의 MCU/DSP 개발용 S/W 디버깅 툴인 Code Composer Studio V5를 대상으로, 설치부터 프로젝트의 생성, 디버깅, 기능 및 옵션 등을 쉽게 안내하는 가이드 문서 입니다.</li>
</ul>
</td>
</tr>
<tr>
<td width="620" height="10"></td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><strong><span style="color: #ff6600">제품구성</span></strong></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="left" width="620"><strong>TMS320C2000 스탠다드 패키지의 구성품목</strong></p>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img06.jpg" /></p>
<table style="width: 600px" border="1" cellspacing="0" cellpadding="3" align="center">
<tbody>
<tr>
<th bgcolor="#f7f7f7"><strong>제품구분</strong></th>
<th bgcolor="#f7f7f7">품목</th>
<th bgcolor="#f7f7f7">수량</th>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>개발보드</strong></td>
<td>Delfino 개발보드</td>
<td>1</td>
</tr>
<tr>
<td rowspan="2" bgcolor="#f7f7f7"><strong>프로세서 모듈</strong></td>
<td>TMS320F28335 초소형 버스 모듈</td>
<td>1</td>
</tr>
<tr>
<td>TMS320F2808 초소형 모듈(보조모듈)</td>
<td>1</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>JTAG 에뮬레이터</strong></td>
<td>절연 JTAG 에뮬레이터</td>
<td>1</td>
</tr>
<tr>
<td bgcolor="#f7f7f7"><strong>부가 모듈</strong></td>
<td>Delfino 개발보드용 통신모듈</td>
</tr>
</tbody>
</table>
<p>(Bluetooth/USB)</td>
<td>1</td>
</tr>
<tr>
<td rowspan="5" bgcolor="#f7f7f7"><strong>서적</strong></td>
<td>펌웨어 설계강좌 교재</td>
<td>1</td>
</tr>
<tr>
<td>시스템 설계강좌 교재</td>
<td>1</td>
</tr>
<tr>
<td>디지털필터&amp;FFT 강좌 교재</td>
<td>1</td>
</tr>
<tr>
<td>실습예제 CD</td>
<td>1</td>
</tr>
<tr>
<td>CCS V5 핸드북(CD 포함)</td>
<td>1</td>
</tr>
<tr>
<td rowspan="5" bgcolor="#f7f7f7"><strong>악세사리</strong></td>
<td>전원 케이블</td>
<td>1</td>
</tr>
<tr>
<td>고무발받침</td>
<td>2</td>
</tr>
<tr>
<td>점퍼 및 점퍼 케이블</td>
<td>다수</td>
</tr>
<tr>
<td>USB 케이블</td>
<td>2</td>
</tr>
<tr>
<td>기술지원 자료집 CD</td>
<td>1</td>
</tr>
</tbody>
</table>
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img07.jpg" /></p>
<p align="center">스탠다드 패키지의 보관용 가방은 가로 43cm x 세로 30cm x 높이 11cm 크기 입니다.</p>
</td>
</tr>
<tr>
<td width="620" height="41">
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>제품관련 자료</strong></span></td>
</tr>
<tr>
<td colspan="2" width="620" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="left" width="620">매뉴얼</p>
<ul>
<li><a href="http://www.tms320.co.kr/shop/board/list.php?id=TechniqueDataB" target="_blank">매뉴얼 (정회원)</a></li>
</ul>
<p>회로도</p>
<ul>
<li><a href="http://www.tms320.co.kr/shop/board/list.php?id=TechniqueData" target="_blank">회로도 게시판 이동(골드/실버회원)</a></li>
</ul>
<p>예제 프로그램</p>
<ul>
<li><a href="http://www.tms320.co.kr/shop/board/list.php?id=TraningDataB" target="_blank">기본 예제(정회원)</a></li>
<li><a href="http://www.tms320.co.kr/shop/board/list.php?id=TraningDataA" target="_blank">활용 예제(골드/실버회원)</a></li>
</ul>
</td>
</tr>
<tr>
<td width="620" height="41"></td>
</tr>
<tr>
<td align="left" width="620"><span style="color: #ff6600"><strong>사용 방법</strong></span></p>
<ol>
<li>스탠다드 패키지 가방의 물품을 확인한 후 ①번 영역에 있는 Delfino 개발보드를 꺼내어 확인합니다.이 때, TMS320F28335 초소형 모듈과 TMS320F2808 초소형 모듈이 개발보드에 연결되어 있는지 확인합니다.
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img09.jpg" /></p>
</li>
<li>Delfino 개발보드에 ④번 영역에서 초소형 JTAG 커넥터를 꺼내어 그림과 같은 방향으로 연결합니다.
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img10.jpg" /></p>
</li>
<li>초소형 JTAG 커넥터에 ②번 영역의 절연 JTAG 에뮬레이터를 연결하고 USB 케이블을 PC의 USB 포트에 삽입합니다.
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img11.jpg" /></p>
</li>
<li>③번영역에서 통신모듈을 꺼내어 그림과 같은 방향으로 연결합니다.</li>
<li>④번 영역의 전원 케이블을 개발보드와 연결하고 전원 케이블을 전원 공급기(9V 1A)와 연결한 후 전원을 ON합니다.
<p align="center"><img alt="" src="http://www.devicemart.co.kr/mart7/upload/fd_html_img/1059271/img12.jpg" /></p>
</li>
<li>CCS V5 의 설치와 타겟과의 연결 및 개발 과정을 공부하려면 CCS V5 핸드북 서적을 확인하세요.</li>
<li>자가학습 서적은 펌웨어 설계 &gt; 시스템 설계 &gt; 디지털 필터링 &amp; FFT 순으로 하시면 더욱 효과적입니다.</li>
</ol>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.devicemart.co.kr/goods/view.php?seq=1059271"> 제품구입하러가기</a></p>
<p>TEL. 031-781-2812<br />
FAX. 031-706-2834<br />
www.tms320.kr</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13481/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]하이엔드 급 TI DSP 개발 JTAG 에뮬레이터 XDS560V2 Basic 출시!</title>
		<link>http://www.ntrexgo.com/archives/13464</link>
		<comments>http://www.ntrexgo.com/archives/13464#comments</comments>
		<pubDate>Sun, 10 Mar 2013 04:26:02 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로덕트 뉴스]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[NEWS]]></category>
		<category><![CDATA[product]]></category>
		<category><![CDATA[싱크웍스]]></category>
		<category><![CDATA[프로덕뉴스]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13464</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; Wintech 사의 XDS560V2 Basic 에뮬레이터는 TI DSP 개발 환경 중 하이엔드 급의 JTAG 에뮬레이터로 표준 14핀 규격의 JTAG 연결을 지원하며 TI사의 XDS560V2 기술과 완벽하게 호환된다. ]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn001.jpg" rel="lightbox[13464]"><img class="wp-image-13466 aligncenter" alt="17pn001" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17pn001.jpg" width="384" height="288" /></a></p>
<p>(주)싱크웍스에서 Wintech 사의 TI DSP 개발 JTAG 에뮬레이터 XDS560V2 Basic을 출시했다.<br />
Wintech 사의 XDS560V2 Basic 에뮬레이터는 TI DSP 개발 환경 중 하이엔드 급의 JTAG 에뮬레이터로 표준 14핀 규격의 JTAG 연결을 지원하며 TI사의 XDS560V2 기술과 완벽하게 호환된다. 고속 USB2.0(480Mbps)을 지원하고 향상된 컨트롤러를 갖춰 빠른 속도로 프로그램 로드/실시간 디버깅이 가능하다. 뿐만 아니라 기존의 IEEE1149.1 JTAG 프로토콜과 함께 새로운 IEEE1149.7 프로토콜을 지원하여 시스템 트레이스 기능까지 지원된다. 고성능 JTAG 에뮬레이터를 사용하기 위해서는 CCS의 정품 라이선스가 필요하며, 1개의 전원 LED, 6개의 동작 상태 LED를 갖추고 있어 동작 상태 및 이상 유무를 확인할 수 있다. Code Composer Studio V4.2와 Code Composer Studio V5를 공식 지원하며, 보다 자세한 내용은 디바이스마트 홈페이지를 통해서 확인이 가능하다.</p>
<table style="width: 620px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="600">
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>제품소개</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<ul>
<li>XDS560v2 기술이 적용된 최고의 속도</li>
<li>CCS V4.2 ~ CCS V5 개발 소프트웨어 완벽 지원</li>
<li>JTAG 프로토콜 중 기존의 IEEE1149.1 및 새로운 IEEE1149.7 지원 (실시간 Trace기능 지원)</li>
<li>경제적인 가격의 고성능 JTAG 에뮬레이터</li>
<li>TMS320C28x / C64x+ / ARM / OMAP3-5 / C5000 / C6000 / OMAP-L137 / C6A816x / C66xx / AM1xxx / AM3xxx 등 다양한 TI 프로세서 지원</li>
<li>고속 USB2.0 (480Mbps)연결 지원</li>
<li>체계적인 애프터 서비스로 불편 해소 (A/S접수-&gt;상담-&gt;무상 대체품 제공, 1년 보증기간)Wintech 사의 XDS560V2 Basic 에뮬레이터는 TI DSP 개발 환경 중 하이엔드 급의 JTAG 에뮬레이터입니다. 표준 14핀 규격의 JTAG 연결을 지원하며 TI사의 XDS560V2 기술과 완벽하게 호환됩니다.<br />
고속 USB2.0(480Mbps)을 지원하고 향상된 컨트롤러를 갖춰 빠른 속도로 프로그램 로드/실시간 디버깅이 가능합니다. 뿐만 아니라 기존의 IEEE1149.1 JTAG 프로토콜과 함께 새로운 IEEE1149.7 프로토콜을 지원하여 시스템 트레이스 기능까지 지원됩니다. 고성능 JTAG 에뮬레이터를 사용하기 위해서는 CCS의 정품 라이선스가 필요합니다. 1개의 전원 LED/6개의 동작 상태 LED를 갖추고 있어 동작 상태 및 이상 유무를 확인할 수 있습니다. Code Composer Studio V4.2와 Code Composer Studio V5를 공식 지원합니</li>
</ul>
</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>지원 프로세서</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>TMS320C28x / C64x+ / ARM / OMAP3-5 / C5000 / C6000 / OMAP-L137 / C6A816x / C66xx / AM1xxx / AM3xxx- JTAG Header는 14Pin만 제공됩니다.</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550">CCS &#8211; Code Composer Studio 지원</td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>Code Composer Studio(CCS) V4.2 및 V5 에서 사용 가능</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>지원 O/S 환경 &#8211; Windows 환경 지원</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table style="width: 100%" border="0" cellspacing="8" cellpadding="0">
<tbody>
<tr>
<td align="middle" width="100"><img alt="" src="http://www.dspblog.co.kr/mall/500/450/win2000.jpg" /></td>
<td align="middle" width="100"><img alt="" src="http://www.dspblog.co.kr/mall/500/450/winxp.jpg" /></td>
<td align="middle" width="100"><img alt="" src="http://www.dspblog.co.kr/mall/500/450/winvista.jpg" /></td>
<td align="middle" width="180"><img alt="" src="http://www.dspblog.co.kr/mall/500/450/win7.jpg" /></td>
<td></td>
</tr>
<tr>
<td align="middle">Windows 2000</td>
<td align="middle">XP</td>
<td align="middle">Windows Vista</td>
<td align="middle">Windows 7 32-Bit, Windows 7 64-Bit</td>
<td></td>
</tr>
</tbody>
</table>
<p>&nbsp;</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>애프터서비스 지원</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>구매 후 1년간 보증기간, 애프터서비스 신청시 무상 대체품 서비스 제공(SDS100i)<br />
※ 구매 후 1년간 Warranty 가 적용됩니다.</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>기타 특징</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>- Advanced Emulation Controller로 높은 효율<br />
<span style="line-height: 19px">- 어댑터를 이용한 전원 공급 </span><br />
<span style="line-height: 19px">- +1.2V ~ +4.1V 장치 지원 </span><br />
<span style="line-height: 19px">- 14-핀 표준 JTAG 커넥터 제공 </span><br />
<span style="line-height: 19px">- 에뮬레이터 동작 표시용 LED 7개 탑재</span></p>
<table style="width: 100%" border="0" cellspacing="1" cellpadding="8" bgcolor="#cccccc">
<tbody>
<tr>
<td align="middle" bgcolor="#e7e7e7"><strong>기능</strong></td>
<td align="middle" bgcolor="#e7e7e7"><strong>XDS560V2 Basic</strong></td>
<td align="middle" bgcolor="#e7e7e7"><strong>TDS560PLUS(단종)</strong></td>
<td align="middle" bgcolor="#e7e7e7"><strong>TDS510C2K</strong></td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><strong>JTAG 표준 프로토콜 지원</strong></td>
<td align="middle" bgcolor="#ffffff">IEEE1149.1, IEEE1149.7 지원</td>
<td align="middle" bgcolor="#ffffff">IEEE1149.1 지원</td>
<td align="middle" bgcolor="#ffffff">IEEE1149.1 지원</td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><strong>CCS 지원</strong></td>
<td align="middle" bgcolor="#ffffff">CCS V4.2, V5 지원</td>
<td align="middle" bgcolor="#ffffff">CCS V3.3 지원</td>
<td align="middle" bgcolor="#ffffff">CCS V3.3, V4.2, V5 지원</td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><strong>System Trace 기능 지원</strong></td>
<td align="middle" bgcolor="#ffffff">√</td>
<td align="middle" bgcolor="#ffffff">X</td>
<td align="middle" bgcolor="#ffffff">X</td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><strong>에뮬레이션 기술</strong></td>
<td align="middle" bgcolor="#ffffff">XDS560V2 기술 적용</td>
<td align="middle" bgcolor="#ffffff">XDS560PLUS 기술 적용</td>
<td align="middle" bgcolor="#ffffff">XDS510 기술 적용</td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><strong>멀티 CPU 디버그 지원</strong></td>
<td align="middle" bgcolor="#ffffff">√</td>
<td align="middle" bgcolor="#ffffff">√</td>
<td align="middle" bgcolor="#ffffff">√</td>
</tr>
</tbody>
</table>
<table style="width: 100%" border="0" cellspacing="1" cellpadding="5" bgcolor="#cccccc">
<tbody>
<tr>
<td align="middle" bgcolor="#e7e7e7" height="35"><strong>Wintech XDS560V2-BASIC</strong></td>
<td align="middle" bgcolor="#e7e7e7"><strong>SpectrumDigital XDS560V2 STM</strong></td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff"><img alt="" src="http://www.dspblog.co.kr/mall/500/440/XDS560V2BASIC_CONNECTOR.png" /></td>
<td align="middle" bgcolor="#ffffff"><img alt="" src="http://www.dspblog.co.kr/mall/500/440/XDS560V2STM_CONNECTOR.png" /></td>
</tr>
<tr>
<td align="middle" bgcolor="#ffffff">일체형 구조로 간편하게 타겟 MCU에 연결하여 사용 가능</td>
<td align="middle" bgcolor="#ffffff">다양한 JTAG 연결을 위해 커넥터 3개를 조합</td>
</tr>
</tbody>
</table>
<table style="width: 100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td colspan="2" align="middle" height="35"><strong>표준 TI JTAG 14-Pin 헤더</strong></td>
</tr>
<tr>
<td><img alt="" src="http://www.dspblog.co.kr/mall/500/440/14pin_jtag.jpg" /></td>
<td>5. PD 핀으로 타겟의 전원 연결 확인6. Key 핀으로 JTAG 커넥터 역삽 방지 구조9,11. 동기화 신호를 송수신</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table style="width: 600px" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="550"><span style="color: #ff6600"><strong>제품구성</strong></span></td>
</tr>
<tr>
<td colspan="2" width="600" height="10"></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table style="width: 100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td height="35"><span style="color: #ff9900"><strong>구성품목</strong></span></td>
</tr>
<tr>
<td>1. XDS560V2 BASIC 에뮬레이터 &amp; 케이블 1대2. 별도 전원 공급용 파워어댑터(+5V) 1개3. PC 연결용 USB 케이블 1개(TYPE B)4. 드라이버 CD</p>
<p>5. 품질 보증서</td>
</tr>
<tr>
<td align="middle"><img alt="" src="http://www.dspblog.co.kr/mall/500/450/xds560v2basic_component.jpg" /></td>
</tr>
<tr>
<td align="left" height="45">&gt;&gt;&gt;&gt; <a href="http://www.devicemart.co.kr/goods/view.php?seq=38670" target="_blank">제품 구입하러가기</a> &lt;&lt;&lt;&lt;</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>TEL. 031-781-2812<br />
FAX. 031-706-2834<br />
www.tms320.kr</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13464/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]코일건을 탑재한 원격 조종 미니카</title>
		<link>http://www.ntrexgo.com/archives/13415</link>
		<comments>http://www.ntrexgo.com/archives/13415#comments</comments>
		<pubDate>Sun, 10 Mar 2013 01:28:28 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[프로젝트]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[공모전]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[미니카]]></category>
		<category><![CDATA[코일건]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13415</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 인간에게 위험을 가하는 목표를 사전에 제거하기 위한 목적으로 개발한 원격조종 미니카입니다. 전자공학과 커리큘럼에서 배울 수 있는 모든 전공을 동원하여 시작한 캡스톤 디자인 프로젝트입니다. ]]></description>
				<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ028.jpg" rel="lightbox[13415]"><img class="alignnone  wp-image-13418" alt="17PTBJJ028" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ028-300x199.jpg" width="240" height="159" /></a></td>
<td><span style="font-size: medium"><strong>2012 DIY 프로젝트 작품 공모전</strong></span><span style="color: #333399"><strong><span style="font-size: x-large">코일건을 탑재한 원격 조종 미니카</span></strong></span></p>
<p>&nbsp;</p>
<p style="text-align: right"><span style="color: #808080">글 | 정민우 ctrleee@naver.com</span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="color: #333399"><strong>심사평</strong></span></p>
<p>간단한 구조와 구성으로 좋은 작품을 만들어 낸 경우이다. 짧은 듯 하지만 필요한 내용을 잘 다루고 있고 On Line 상에 전개과정이 모두 수록되어 있어서 쉽게 따라할 수 있으며, 제작 과정을 지켜볼 수 있다.</p>
<p><span style="color: #333399"><strong>개발 동기 및 목적</strong></span></p>
<p>인간에게 위험을 가하는 목표를 사전에 제거하기 위한 목적으로 개발한 원격조종 미니카입니다. 전자공학과 커리큘럼에서 배울 수 있는 모든 전공을 동원하여 시작한 캡스톤 디자인 프로젝트입니다. 전자공학과 커리큘럼 (논리회로, 회로이론, 통신이론, 전자기학, 전자회로, 임베디드H/W, 임베디드 S/W, 자동제어, DSP, 영상처리, 신호 및 시스템 등등)..</p>
<p><span style="color: #333399"><strong>단계별 과정</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ001.jpg" rel="lightbox[13415]"><img class="alignnone size-full wp-image-13420" alt="17PTBJJ001" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ001.jpg" width="441" height="353" /></a></p>
<p><span style="color: #3366ff"><strong>1. 영상처리 (추적 및 트래킹)</strong></span></p>
<p>유저에게 피해를 줄 만한 위험물을 사전에 제거하기 위해서 가장 효율적이라 판단한 비전센서를 통해 위험물의 특징을 추출합니다. 정지된 상황에서의 영상처리가 아닌 동적으로 움직이는 차체에서 수행하는 실시간 영상처리인 만큼 성능을 위하여 PC와 Web-cam을 그리고 openCV를 이용하여 소스코드를 작성하였습니다.<br />
실제 위험을 줄 만한 물체는 주변에서는 찾을 수 없기 때문에 마커 역시 임의로 만들었으며, 마커는 안드로이드 폰을 이용하였으며, App Inventor를 사용하여 간단하게 마커를 만들었습니다. 특정 문자 한글이나 영문, 단색 컬러의 화면을 이용하였습니다.<br />
문자로 한글 혹은 영문을 트래킹하기 위해서 템플릿 매칭 알고리즘을 사용하였고, 단색 컬러화면을 검출하기 위해서 컬러 검출, 추가 특징검출, 마커 좌표검출, 잡음 개선을 통해 마커를 검출하였습니다.</p>
<p><span style="color: #33cccc"><strong>1-1. 마커 색 검출</strong></span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ004.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13423" alt="17PTBJJ004" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ004-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ005.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13424" alt="17PTBJJ005" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ005-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ006.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13425" alt="17PTBJJ006" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ006-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ007.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13426" alt="17PTBJJ007" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ007-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2"> <a href="http://openctrl.tistory.com/entry/Image-Tracking-ver10" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>원격 조종인 만큼 원격지의 PC에서 위험물에 대한 정보를 보내면 차량의 PC에서 그 특징에 맞는 알고리즘을 수행합니다. 빨간 사각형을 선택하면. 우선 웹캠을 통해 얻은 영상에서 R, G, B의 값 중 G, B값 보다 R값이 훨씬 큰 경우를 선택하도록 소스코드를 작성합니다.</p>
<p><span style="color: #33cccc"><strong>1-2. 마커 특징 검출</strong></span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ008.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13427" alt="17PTBJJ008" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ008-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ009.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13428" alt="17PTBJJ009" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ009-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ010.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13429" alt="17PTBJJ010" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ010-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ011.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13430" alt="17PTBJJ011" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ011-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2"> <a href="http://openctrl.tistory.com/entry/Image-Tracking-ver11" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>빨간색 뿐만 아니라 사각형이라는 특징을 추가로 (안드로이드 폰 액정이 사각형)하여 마커의 모서리를 판단해내게 됩니다. 이부분에서는 openCV를 설치하면 제공되는 예제 파일을 많이 참고하였습니다. 특정 크기 정도의 사각형만 잡히도록 레이블링을 하여 하나의 사각형을 검출해내게 됩니다. 이때 이전에 얻은 컬러와 대조하여 같은 위치가 아니라면 재수행을 하였습니다. 깔끔한 마커를 위해 팽창, 침식연산을 이용하여 마커를 제외한 잡음을 없애줍니다.</p>
<p><span style="color: #33cccc"><strong>1-3. 마커의 위치 검출</strong></span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ012.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13431" alt="17PTBJJ012" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ012-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ013.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13432" alt="17PTBJJ013" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ013-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2"> <a href="http://openctrl.tistory.com/entry/Image-Tracking-ver12" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>레이블링 된 마커를 통해 마커의 꼭지점을 얻어 내게 되고, 영상에서의 좌표를 구해냅니다. 이때 마커가 영상 중앙으로부터 얼마나 떨어져 있는지, 그리고 마커의 꼭지점을 이용하여 마커로부터 카메라까지의 거리를 얻어낼 수 있습니다.</p>
<p><span style="color: #33cccc"><strong>1-4. 시리얼 통신</strong></span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ014.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13433" alt="17PTBJJ014" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ014-300x210.jpg" width="300" height="210" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ015.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13434" alt="17PTBJJ015" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ015-300x210.jpg" width="300" height="210" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2"><a href="http://openctrl.tistory.com/entry/Image-Tracking-ver13" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>영상처리를 통해 얻어낸 마커의 좌표를 PC의 USB단자를 이용하여 AVR(mega128)로 전송을 해줍니다. 이때 전송되는 데이터는 마커 중심의 x, y 좌표입니다.</p>
<p><span style="color: #33cccc"><strong>1-5. 트래킹</strong></span></p>
<p>Mega128은 UART, Fast PWM을 사용하여 서보모터 두개(Pitch : 끄덕끄덕, Yaw : 도리도리)를 구동합니다. 이때 PI제어를 이용하여, 빠른 시간에 목표를 찾지 못하더라도, 오차를 최소화하여 마커가 비젼센서의 영역에 들어오면 정조준 할 수 있도록 하였습니다. 아크릴 관에 레이저포인터를 비추어 카메라의 중심으로 코일건 영점을 잡아주었습니다.</p>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ023.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13442" alt="17PTBJJ023" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ023-172x300.jpg" width="172" height="300" /></a></td>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ024.jpg" rel="lightbox[13415]"><img class="size-medium wp-image-13443" alt="17PTBJJ024" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ024-172x300.jpg" width="172" height="300" /></a></td>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ025.jpg" rel="lightbox[13415]"><img class="size-medium wp-image-13444" alt="17PTBJJ025" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ025-172x300.jpg" width="172" height="300" /></a></td>
</tr>
</tbody>
</table>
<table style="border-collapse: collapse;width: 620px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ026.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13445" alt="17PTBJJ026" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ026-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ027.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13446" alt="17PTBJJ027" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ027-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="http://openctrl.tistory.com/entry/Capstone-Design-300" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>빨간 사각형을 카메라가 실시간 트래킹하는 영상입니다. 안드로이드 폰에 빨간 화면을 띄워 놓은 상태이며, 웹캠이미지를 컴퓨터로 받아서 영상 처리 후 시리얼 통신으로 MCU에 전달을 해주며 MCU는 신호를 받아 타이머카운터를 이용하여 2축의 서보모터를 구동시켜 줍니다.<br />
하나의 동영상은 원격지에서 보는 모니터이며, 하나는 아래에 작게 보이지만 서버 컴퓨터의 모니터로 볼 수 있습니다. 조명, 환경의 변화에 따라 검출이 되지 않는 것 보다 오검출하는 상황이 많았습니다.</p>
<p><span style="color: #33cccc"><strong>1-6. 수동모드</strong></span><br />
“모범시민”이란 영화에서처럼 원격지에서 모니터링 해가면서 코일건을 사격할 수 있도록 자동 트래킹이 아닌 수동으로 버튼을 클릭해서 코일건을 원하는 곳으로 지향할 수 있도록 소스코드를 작성하였습니다.</p>
<p><span style="color: #33cccc"><strong>1-7. 영상 전송</strong></span><br />
차량에 적재된 PC(Client)로부터 User’s PC(Server)로 영상을 전송하기 위해 유무선 공유기를 탑재하여 영상전송을 하였습니다. 영상압축을 하지 않았기에 데이터가 상당히 많아 1채널의 그레이 스케일로 영상을 UDP 방송하였습니다. 공유기의 비밀번호를 걸어 서버 PC만 제한적으로 볼 수 있도록 하였습니다.</p>
<p><span style="color: #3366ff"><strong>2. 원격조종 (게이밍 휠)</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ002.jpg" rel="lightbox[13415]"><img class="alignnone  wp-image-13421" alt="17PTBJJ002" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ002-412x620.jpg" width="330" height="496" /></a><br />
게이밍 휠은 키보드나 마우스처럼 HID로 분류가 되어 Windows에서 장치로 인식이 됩니다. 따라서 MFC에서 클래스를 받아서 사용할 수가 있었습니다. 로지텍 윙맨 포스(약 10년전에 산 것..)을 컴퓨터에 연결하고 프로그래밍을 할 수 있는지 MFC로 동작시켜 보았습니다.</p>
<p><span style="color: #33cccc"><strong>2-1. 게이밍 휠 테스트</strong></span><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ003.jpg" rel="lightbox[13415]"><img class="alignnone  wp-image-13422" alt="17PTBJJ003" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ003-620x298.jpg" width="496" height="238" /></a><br />
MFC와 게이밍 핸들러가 잘 동작하는지 확인하기 위해 현재 핸들의 위치와 눌린 버튼, 그리고 현재 악셀, 브레이크의 Position을 출력해주도록 다이얼 로그를 만든 후 게이밍 휠을 연결하고 테스트해봅니다. 버튼은 추후에 미니카의 LED를 구동시켜 전조등 역할의 LED와 브레이크 LED, 그리고 코일건의 격발장치로 사용하게 따로 빼 두었습니다.</p>
<p><span style="color: #33cccc"><strong>2-2. 게이밍 휠 데이터 전송</strong></span></p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ017.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13436" alt="17PTBJJ017" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ017-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ018.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13437" alt="17PTBJJ018" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ018-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ016.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13435" alt="17PTBJJ016" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ016-300x172.jpg" width="300" height="172" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ019.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13438" alt="17PTBJJ019" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ019-300x172.jpg" width="300" height="172" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2"><a href="http://openctrl.tistory.com/entry/Capstone-Design-100" target="_blank">동영상보러가기</a></td>
</tr>
</tbody>
</table>
<p>핸들러의 신호는 2바이트(0~65535)의 크기로 들어오지만 서보모터의 각도도 제한적이라 데이터를 모두 쓸 수 없기 때문에 컴퓨터에서 1바이트(0~255)의 크기로 변환을 시켜 영상 트래킹과 같은 방법의 시리얼 통신을 사용하였습니다. 또한, 미니카가 고속 BLDC모터이기 때문에 악셀 신호는 리미트 값을 주어 일정 속도 이상을 나오지 않게 하도록 프로그래밍 하였습니다.</p>
<p>미니카에 적재된 PC로부터 캠 영상을 유저의 PC에 전송하고 있습니다. 유저는 원격지에서 정면의 모니터를 보며 게이밍 핸들러와 악셀, 브레이크를 이용하여 미니카를 원격 조종하고 있습니다. 유저 PC로부터 미니카로 블루투스 신호를 받아와 MCU는 서보모터와 BLDC모터를 구동하게 됩니다. 또한 BLDC 모터가 모터드라이버를 통해 낼 수 있는 출력속도 중 5%만 사용 할 수 있게 리미트를 주었습니다. 캠의 영상은 전송 속도 때문에 그레이 영상으로 변환 후 전송 하였습니다.</p>
<p><span style="color: #3366ff"><strong>3. 코일건</strong></span></p>
<p>코일건은 다른 총에 비해 하드웨어를 만들기가 쉽고 간단하여 선택을 하게 되었습니다. 텅빈 관에 코일만 감아두어 솔레노이드를 만들어 순간적으로 전류를 흘리면 강력한 전자석이 완성됩니다. 이때 솔레노이드의 외부에서는 자기장이 거의 ‘0’이고, 내부에는 균일한 크기의 자기장이 형성됩니다. 솔레노이드를 통해 흐르는 전류의 크기가 클수록, 솔레노이드의 단위 길이당 감은 횟수가 많을 때 강력한 자기장을 내는 전자석을 만들 수 있습니다. 하지만 감은 횟수를 증가시키면 저항이 커지기 때문에 오히려 전류가 떨어지게 되어 적절하게 감는 것이 중요합니다.<br />
속이 비어 관 앞에 높은 순도를 가진 쇠구슬을 두고 솔레노이드에 전류를 흘려주면 쇠구슬이 인력으로 인해 발사가 되게 됩니다.</p>
<p><span style="color: #33cccc"><strong>3-1. 솔레노이드 및 승압회로 제작</strong></span><br />
일단 쇠구슬 크기를 염두하고 아크릴 관을 구하여 코일을 감습니다. 3가닥의 코일을 병렬로 묶어 저항성분을 낮추고 지름 1.5cm정도의 관에 3cm의 길이로 40턴 정도 감았습니다.<br />
원격 조종 미니카인 만큼 교류 220V는 사용 할 수 없기에 14.4V의 Li-po 배터리를 이용하여 충전을 하게 회로를 만들었습니다. 가지고 있던 220V &#8211; 10V 트랜스를 반대로 사용하여 14.4V 입력으로 400V 가까이 뽑아낼 수 있도록 두고 MCU의 PWM을 사용하여 스위칭 후 브릿지 다이오드를 거쳐 정류하게끔 만들었습니다. PWM은 트랜스에 맞춰 60Hz, duty rate를 30퍼센트로 하였으며, ADC와 CLCD를 사용하여 전압을 보았으나 전압이 올라갈수록 오차가 심하게 나는 바람에 휴대용 멀티미터로 전압을 봐가며 충전하였습니다.</p>
<p><span style="color: #33cccc"><strong>3-2. 커패시터 충/방전</strong></span><br />
커패시터는 400V 1000uF를 네개 병렬로 묶어 400V 4000uF로 사용하였습니다. 정류된 400V를 커패시터에 바로 연결하여 커패시터를 충전시킵니다. 충전이 될수록 고압이 되며, 용량도 크기 때문에 감전에 주의하였습니다. 커패시터는 200V까지는 금방 충전이 되나, 300V정도까지 충전하는데 3분 정도가 소요되었습니다. 쇠구슬은 커패시터에 충전된 전압의 제곱에 비례하게 되어 높은 전압일수록 강력하게 날라가게 됩니다. 하지만 용량이 클 경우 쇠구슬이 솔레노이드를 빠져나간 뒤에 다시 당기는 힘을 받을 수 있기 때문에 포토게이트와 같은 적외선 LED를 이용하여 솔레노이드의 끝에 쇠구슬이 닿으면 커패시터에 방전을 멈추도록 해주어야 합니다 커패시터 스위칭은 SCR의 게이트에 특정 전압, 전류의 펄스신호를 주면 턴온, 턴오프 할 수 있습니다.</p>
<p><span style="color: #33cccc"><strong>3-3. 코일건 설치</strong></span><br />
카메라와 항상 붙어 움직여야 하기에 코일건의 아크릴 관 위에 카메라를 고정 시켰습니다.</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ020.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13439" alt="17PTBJJ020" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ020-172x300.jpg" width="172" height="300" /></a></td>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ021.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13440" alt="17PTBJJ021" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ021-172x300.jpg" width="172" height="300" /></a></td>
<td align="center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ022.jpg" rel="lightbox[13415]"><img class="alignnone size-medium wp-image-13441" alt="17PTBJJ022" src="http://www.ntrexgo.com/wp-content/uploads/2013/02/17PTBJJ022-172x300.jpg" width="172" height="300" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="3"> <a href="http://openctrl.tistory.com/entry/Capstone-Design-200" target="_blank">동영상 보러가기</a></td>
</tr>
</tbody>
</table>
<p>코일건 영상은 400V 4000uF 커패시터에 약 250V정도 충전을 한 뒤 SCR을 turn-on 시켜 순식간에 방전되게 하여 솔레노이드를 구동 시키면 바로 뒤에 달려있는 쇠구슬이 솔레노이드의 인력으로 인해 날아가게 됩니다. 주변의 행인 1, 2님이 존재하여 오토 타겟팅으로 격발하기엔 대단히 위험했기 때문에 수동으로 격발하는 동영상 입니다.</p>
<p><span style="color: #3366ff"><strong>4. 미니카 적재</strong></span></p>
<p><span style="color: #33cccc"><strong>4-1. 블루투스</strong></span><br />
미니카의 PC에서 영상처리하여 타겟의 정보는 바로 옆에 있는 MCU로 주어야 하기 때문에 유선을 이용하여 데이터를 전송 하였습니다. 하지만 원격지의 PC에서 차량 제어를 위한 신호는 블루투스 모듈을 이용하여 받았습니다.</p>
<p><span style="color: #33cccc"><strong>4-2. 배터리</strong></span><br />
14.4V 리튬이온 폴리머 배터리를 2개를 적재하여 하나는 PC전원 및 MCU, 유무선 공유기를 사용하였으며, 다른 하나의 배터리는 단지 차량만을 위해 사용하였습니다.</p>
<p><span style="color: #33cccc"><strong>4-3. 기타</strong></span><br />
디버깅용 USB모니터, 코일건을 위한 커패시터, Web-cam, MCU( ATmega128 *2 ), PC, 유무선 공유기를 적재하였습니다.</p>
<p><span style="color: #3366ff"><strong>5. 고찰 및 느낀 점</strong></span></p>
<p>트래킹과 원격조종, 코일건 세가지가 모두 독립적으로 움직이기 때문에 주행 중에도 오토 타겟팅하여 쇠구슬을 발사할 수 있었지만 코일건의 파괴력이 상상 이상으로 너무 강하여 코일건은 애물단지가 되어버려 아쉬웠습니다. 차라리 코일건 대신 전동건이나 레이져 포인터로 조준과 사격을 했다면 하는 아쉬운 점이 있었습니다. 이번에 재미있는 프로젝트를 수행하면서 하드웨어나 소프트웨어를 디버깅 하는 기술을 나름대로 습득하였다고 생각하며, 특히 PC와 MCU사이의 통신을 배워 앞으로 다양하게 접목을 시킬 수 있게 되어 기쁘고, 더 다양한 센서들을 이용해서 이번 작품을 계속 발전시켜 나가고 싶습니다.</p>
<p><span style="color: #0000ff"><strong>소모비용</strong></span></p>
<table style="border-collapse: collapse;width: 550px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center">컴퓨터(메인보드+HDD+모니터+파워)</td>
<td style="text-align: center">800,000</td>
</tr>
<tr>
<td style="text-align: center">노트북</td>
<td style="text-align: center">700,000</td>
</tr>
<tr>
<td style="text-align: center">안드로이드폰</td>
<td style="text-align: center">0</td>
</tr>
<tr>
<td style="text-align: center">리튬폴리머 배터리</td>
<td style="text-align: center">200,000</td>
</tr>
<tr>
<td style="text-align: center">MS 웹캠</td>
<td style="text-align: center">70,000</td>
</tr>
<tr>
<td style="text-align: center">1:5 미니카</td>
<td style="text-align: center">400,000</td>
</tr>
<tr>
<td style="text-align: center">게이밍 헨들러</td>
<td style="text-align: center">30,000</td>
</tr>
<tr>
<td style="text-align: center">블루투스 &#8211; 2ea</td>
<td style="text-align: center">100,000</td>
</tr>
<tr>
<td style="text-align: center">유무선 공유기</td>
<td style="text-align: center">30,000</td>
</tr>
<tr>
<td style="text-align: center">서보모터 &#8211; 2ea</td>
<td style="text-align: center">100,000</td>
</tr>
<tr>
<td style="text-align: center">아크릴 관</td>
<td style="text-align: center">1,200</td>
</tr>
<tr>
<td style="text-align: center">코일 및 쇠구슬 &#8211; 1ea, 50ea</td>
<td style="text-align: center">20,000</td>
</tr>
<tr>
<td style="text-align: center">커패시터 및 SCR &#8211; 4ea, 1ea</td>
<td style="text-align: center">30,000</td>
</tr>
<tr>
<td style="text-align: center">ATmega128모듈 &#8211; 2ea</td>
<td style="text-align: center">50,000</td>
</tr>
<tr>
<td style="text-align: center">총액</td>
<td style="text-align: center">2,531,200 + a</td>
</tr>
</tbody>
</table>
<p><span style="color: #0000ff"><strong>참고 웹 사이트</strong></span></p>
<p><a href="http://openctrl.tistory.com/category/OpenSTUDY/openProjects" target="_blank">http://openctrl.tistory.com/category/OpenSTUDY/openProjects</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13415/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[17호]JK전자와 함께하는 ARM 완전정복(3)-1</title>
		<link>http://www.ntrexgo.com/archives/13132</link>
		<comments>http://www.ntrexgo.com/archives/13132#comments</comments>
		<pubDate>Sun, 10 Mar 2013 00:42:26 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[특집]]></category>
		<category><![CDATA[17호]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[jk전자]]></category>
		<category><![CDATA[매거진]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=13132</guid>
		<description><![CDATA[디바이스마트 매거진 17호 &#124; 3부 1편. 자료는 ARM을 처음 접하는 입문자로서 S/W 엔지니어 혹은 H/W 엔지니어를 대상으로 하였습니다. 처음에는 Cortex-M3 구조를 목표로 하였으나 전통적인 ARM(주로 ARM7, ARM9)의 구조에 대해서 먼저 이야기한 다음 Cortex-M3 구조에 대해서 하기로 마음을 고쳐 먹었습니다. Cortex-M3도 ARM 이기 때문에 전통적인 ARM의 구조에 대해서 잘 이해하고 Cortex-M3 구조와 비교해 보면서 공부한다면 큰 도움이 될 것입니다.]]></description>
				<content:encoded><![CDATA[<table style="width: 600px" border="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13318" alt="jk전자" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/jk전자-300x222.jpg" width="192" height="142" /></a></td>
<td><span style="color: #000080"><strong><span style="font-size: large">JK전자와 함/께/하/는 ARM 완전 정복</span></strong></span><span style="color: #666699"><strong><span style="line-height: 19px">Ⅱ.ARM Applications &#8211; 1부</span></strong></span>글 | JK전자</td>
</tr>
</tbody>
</table>
<p><span style="font-size: 13px;line-height: 19px">자료는 ARM을 처음 접하는 입문자로서 S/W 엔지니어 혹은 H/W 엔지니어를 대상으로 하였습니다. 처음에는 Cortex-M3 구조를 목표로 하였으나 전통적인 ARM(주로 ARM7, ARM9)의 구조에 대해서 먼저 이야기한 다음 Cortex-M3 구조에 대해서 하기로 마음을 고쳐 먹었습니다. Cortex-M3도 ARM 이기 때문에 전통적인 ARM의 구조에 대해서 잘 이해하고 Cortex-M3 구조와 비교해 보면서 공부한다면 큰 도움이 될 것입니다.</span></p>
<p>ARM Architecture 강의에서는 특정 CPU(S3C2440, STM32Fxx) 에 대한 내용 보다는 ARM Core의 이론적인 구조 자체에 대해서 많은 설명을 하였습니다. 이번 강의에서는 Samsung의 ARM9 CPU S3C2440 개발보드를 이용해서 실제 실습을 통해서 ARM에 대해서 공부해 보도록 하겠습니다.<br />
I. ARM Architecture ~ IV. Cortex-M3 Applications 까지 분명 쉽지 않은 지루하고도 먼 여행이 되겠지만 ARM을 공부하는 임베디드 관련 엔지니어라면 언젠가는 한 번은 넘어야 하는 산이라 생각됩니다. 부디 이 자료가 ARM을 정복하는데 조금이라도 도움이 되시길 바랍니다.</p>
<p>&nbsp;</p>
<p><span style="font-size: small;color: #f68412"><strong>강의 전체 로드맵</strong></span></p>
<p>I. ARM Architecture | 임베디드 시스템 개론에 대한 설명과 ARM7, ARM9 의 구조에 대해서 설명합니다.<br />
<span style="color: #808000"><strong>II. ARM Applications | 삼성의 S3C2440(ARM9) 개발보드(S3C2440 Mini 개발보드)를 이용해서 어셈블리어와 UART, GPIO 등을 실습합니다.</strong></span><br />
III. Cortex-M3 Architecture | Cortex-M3의 특징과 구조에 대해서 설명합니다.<br />
IV. Cortex-M3 Applications | STM32F103VCT6 Dragon 개발보드를 이용해서 GPIO, LCD, SPI, UART, MP3, SDIO, I2C 등을 실습합니다.</p>
<p>이 강의 자료에 대한 모든 질의사항은<a href="http://cafe.naver.com/avrstudio" target="_blank"> http://cafe.naver.com/avrstudio</a>의 ARM Architecture Q&amp;A게시판에 글을 남겨 주시거나 jk@deviceshop.net로 메일을 보내주시기 바랍니다. 가급적이면 여러 사람이 질문에 대한 답변을 공유할 수 있도록 네이버 카페 게시판을 이용해주셨으면 합니다. 감사합니다.</p>
<p><span style="font-size: small;color: #f68412"><strong>Ⅱ. ARM Applications 1부 목차</strong></span></p>
<table style="width: 620px" border="0">
<tbody>
<tr>
<td>1. Base of Software Engineering<br />
1.1 Memory Endian Formats<br />
1.2 보수 표현<br />
1.3 논리연산<br />
1.4 진수변환<br />
1.5 Data Types<br />
1.6 Aligned &amp; Un-Aligned Data<br />
2. 어셈블리어 실습<br />
2.1 ARM Simulator 환경 설정</td>
<td>2.2 Data Processing Instructions<br />
2.3 Multiply Instructions<br />
2.4 Load/Store Instructions<br />
2.5 Branch Instructions<br />
2.6 Status Register Access Instructions<br />
2.7 Conditional Execution<br />
3.1 S3C2440 CPU<br />
3.2 S3C2440 Features</td>
<td>3. S3C2440 개발보드 소개<br />
3.3 S3C2440 HW IPs<br />
3.4 Memory Controller<br />
3.5 Timer<br />
3.6 UART<br />
3.7 NAND Booting<br />
4. 개발환경 설정<br />
4.1 IAR Workbench 개발환경 설정<br />
4.2 ARM-JTAG 을 이용한 프로그램 다운로드</td>
</tr>
</tbody>
</table>
<p>1장의 내용은 컴퓨터를 전공한 사람이라면 누구나 다 아는 내용이지만 어셈블리어 실습을 하기위해서는 반드시 알아야 하는 내용입니다. 다 아는 내용이겠지만 기억을 되살리는 차원에서 간단하게만 설명 하도록 하겠습니다.</p>
<p><span style="color: #008080;background-color: #ffff99"><strong>1. Base of Software Engineering</strong></span></p>
<p><span style="color: #339966"><strong>1.1 Memory Endian Formats</strong></span></p>
<p>워드 데이터 안에서의 바이트 순서로 크게 빅 엔디언과 리틀 엔디언으로 나눌 수 있습니다. 빅 엔디언은 사람이 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 오는 방법이고, 리틀 엔디언은 반대로 작은 단위의 바이트가 앞에 오는 방법입니다. 다시 한번 강조하지만 이것은 워드 범위 내에서의 바이트 단위의 순서입니다.<br />
또한 ARM 레지스터에 저장이 될 경우에는 엔디안의 구분이 없고 메모리 접근 측면에서만 구분이 필요합니다.</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><span style="font-size: small">엔디안 종류</span></td>
<td><span style="font-size: small">0&#215;1234</span></td>
<td><span style="font-size: small">0&#215;12345678</span></td>
<td><span style="font-size: small">아키텍쳐</span></td>
</tr>
<tr>
<td><span style="font-size: small">Big-endian</span></td>
<td><span style="font-size: small">12 34</span></td>
<td><span style="font-size: small">12 34 56 78</span></td>
<td><span style="font-size: small">모토로라 등</span></td>
</tr>
<tr>
<td><span style="font-size: small">Little-endian</span></td>
<td><span style="font-size: small">34 12</span></td>
<td><span style="font-size: small">78 56 34 12</span></td>
<td><span style="font-size: small">x86</span></td>
</tr>
</tbody>
</table>
<p>* 몇몇 아키텍처는 빅 엔디언과 리틀 엔디언 중 하나를 선택할 수 있도록 설계되어있고, 이를 바이 엔디언(Bi-endian)이라 부릅니다. PowerPC, DEC 알파, MIPS, PA-RISC, IA-64 등은 바이 엔디언을 사용하는 대표적인 아키텍처입니다. 우리가 공부하고 있는 ARM도 엔디언을 선택해서 사용할 수 있도록 설계되어 있습니다.<br />
x86 아키텍처가 리틀 엔디언을 쓰기 때문에, 오늘날 x86 아키텍처를 사용하는 대부분의 데스크톱 컴퓨터는 리틀 엔디언을 쓰며 이를 &#8220;인텔 포맷&#8221; 이라고 합니다</p>
<p style="padding-left: 30px">Example)<br />
32비트 숫자인 0x2A를 Little-endian으로 표시 하면?<br />
0&#215;00 00 00 2A = 2A 00 00 00</p>
<p><span style="color: #339966"><strong>1.2 보수 표현</strong></span><br />
컴퓨터에서 보수를 사용하는 이유는 무엇일까요? 모든 것이 0과 1로 표현되는 컴퓨터에서 음수를 표현하는데 편리하기 때문에 사용합니다. 물론 이를 이용해서 뺄셈도 합니다. 예를 들면 12-3의 수식을 컴퓨터(ALU)에서 계산을 하면 실제로는 12에서 3을 빼는 것이 아니라 12와 3의 2의 보수(3의 음수표현)를 더해서 계산을 하게 됩니다.</p>
<p><span style="color: #99cc00"><strong>1.2.1 &#8220;1&#8243; 의 보수</strong></span><br />
주어진 이진수의 모든 자리 숫자를 반전(0을 1로, 1을 0으로)시키면 1의 보수를 얻을 수 있습니다.</p>
<p style="padding-left: 30px">8자리의 이진수 01001011(십진수로 75)의 1의 보수를 구하면 아래와 같습니다.<br />
01001011 의 모든 자리의 수를 반전시킨다.<br />
10110100 &#8211;&gt; 1의 보수</p>
<p><span style="color: #99cc00"><strong>1.2.2 &#8220;2&#8243; 의 보수</strong></span><br />
1의 보수를 구한 다음 2진수 &#8220;1&#8243; 을 더하면 됩니다.<br />
8자리의 이진수 01001011(십진수로 75)의 2의 보수를 구하면 아래와 같습니다.</p>
<p style="padding-left: 30px">01001011 의 모든 자리의 수를 반전시킨다.<br />
10110100 &#8211;&gt; 1의 보수</p>
<p style="padding-left: 30px">10110100<br />
+) 00000001 &#8211;&gt; 1의 보수에서 1을 더합니다.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;<br />
10110101 &#8211;&gt; 2의 보수</p>
<p>보수를 구할 때 한 자리가 더 길어질 경우에는 가장 높은 자리의 숫자는 버립니다.</p>
<p><span style="color: #99cc00"><strong>1.2.3 &#8220;2&#8243; 의 보수를 이용한 뺄셈</strong></span></p>
<p style="padding-left: 30px">예제) 100-75를 2의 보수를 이용해서 연산하시요.<br />
100-75는 100+(-75)와 같으므로</p>
<p style="padding-left: 30px">01100100 (10진수 100)<br />
+) 10110101 (10진수 75의 2의 보수)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;<br />
100011001</p>
<p>새로 생긴 가장 높은 자리의 숫자를 빼고 남은 00011001은 십진수로 25와 같으며 이는 계산하려던 식의 결과입니다.</p>
<p style="padding-left: 30px">예제) 10-75를 2의 보수를 이용해서 연산하시요.<br />
10-75는 10+(-75)와 같으므로</p>
<p style="padding-left: 30px">00001010 (10진수 10)<br />
+) 10110101 (10진수 75의 2의 보수)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;<br />
10111111 (이 결과는 음수 : MSB가 1 이므로 다시 2의 보수를 취하면 65 즉 -65)</p>
<p style="padding-left: 30px">10111111 결과는 MSB가 1(음수)이므로 다시 2의 보수를 취해보면 01000001은 십진수로 65와 같으며 이는 계산하려던 식의 결과 -65가 됩니다.</p>
<p><span style="color: #339966"><strong>1.3 논리 연산</strong></span></p>
<p><span style="color: #99cc00"><strong>1.3.1 NOT</strong></span><br />
2진수 각 자리의 값을 반대로 바꾸는 연산입니다. 이 연산은 어떤 값의 보수를 구할 때 효과적으로 사용할 수 있습니다.</p>
<p style="padding-left: 30px">NOT 0111<br />
= 1000</p>
<p>C나 C++에는 &#8220;~&#8221; 연산을 통해 이 값을 구할 수 있습니다.</p>
<p style="padding-left: 30px">x = ~y;</p>
<p><span style="color: #99cc00"><strong>1.3.2 OR</strong></span><br />
두 값의 각 자릿수를 비교해, 둘 중 하나라도 1이 있다면 1을, 아니면 0을 계산합니다.</p>
<p style="text-align: left;padding-left: 30px">0101<br />
OR 0011<br />
= 0111</p>
<p>C/C++에는 “ | ” 연산자가 이 기능을 제공합니다.</p>
<p style="padding-left: 30px">x = y | z;</p>
<p><strong><span style="color: #99cc00">1.3.3 XOR</span> </strong><br />
두 값의 각 자릿수를 비교해, 값이 같으면 0, 다르면 1을 계산합니다.</p>
<p style="padding-left: 30px">0101<br />
XOR 0011<br />
= 0110</p>
<p>C/C++에는 “ ^ ” 연산자가 이 기능을 제공한다.</p>
<p style="padding-left: 30px">x = y ^ z;</p>
<p><span style="color: #99cc00"><strong>1.3.4 AND</strong></span><br />
두 값의 각 자릿수를 비교해, 두 값 모두에 1이 있을 때에만 1을, 나머지 경우에는 0을 계산합니다.</p>
<p style="padding-left: 30px">0101<br />
AND 0011<br />
= 0001</p>
<p>C/C++에는 “ &amp; ” 연산자가 이 기능을 제공한다.</p>
<p style="padding-left: 30px">x = y &amp; z;</p>
<p><span style="color: #339966"><strong>1.4. Shift 연산</strong></span></p>
<p><span style="color: #99cc00"><strong>1.4.1 왼쪽으로 쉬프트(&lt;&lt;)</strong></span><br />
“ &lt;&lt; ” 키워드는 데이터를 왼쪽으로 비트 수만큼 이동시키기 때문에 2의 “이동할 비트수”를 제곱한 값과 데이터가 곱해진 값이 결과 값으로 도출됩니다. 5(b00000101)를 왼쪽으로 3비트 이동시키면 5 &lt;&lt; 3 = 40(b00101000) 즉 5 * 8 한 것과 같은 효과가 나타납니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK023.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13254" alt="17featureJK023" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK023.jpg" width="382" height="191" /></a></p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center">가중치</td>
<td style="text-align: center">128</td>
<td style="text-align: center">64</td>
<td style="text-align: center">32</td>
<td style="text-align: center">16</td>
<td style="text-align: center">8</td>
<td style="text-align: center">4</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">연산전</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
</tr>
<tr>
<td style="text-align: center">연산후</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
</tr>
</tbody>
</table>
<p><span style="color: #99cc00"><strong>1.4.2 오른쪽으로 쉬프트(&gt;&gt;)</strong></span><br />
“&gt;&gt;” 키워드는 데이터를 오른쪽으로 비트 수만큼 이동시키기 때문에 2의 “이동한 비트수”를 제곱한 값으로 데이터를 나눗셈 한 값이 도출됩니다.<br />
40(b00101000)를 오른쪽으로 1비트 이동시키면 40 &gt;&gt; 1 = 20(b00101000) 즉 40/2 한 것과 같은 효과가 있습니다.<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK024.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13255" alt="17featureJK024" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK024.jpg" width="382" height="192" /></a></p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center">가중치</td>
<td style="text-align: center">128</td>
<td style="text-align: center">64</td>
<td style="text-align: center">32</td>
<td style="text-align: center">16</td>
<td style="text-align: center">8</td>
<td style="text-align: center">4</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">연산전</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">2</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
</tr>
<tr>
<td style="text-align: center">연산후</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
</tr>
</tbody>
</table>
<p><span style="color: #99cc00"><strong>1.4.3 부호가 있는 왼쪽 쉬프트 연산(&lt;&lt;)</strong></span><br />
79(b01001111) &lt;&lt; 1 = -98(b10011110)<br />
부호 비트(“1”)와 그 다음 비트(“0”)가 서로 다른 값인 경우 부호가 바뀌고 Overflow가 발생하게 됩니다. 위의 예제에서는 양수에서 음수로 바뀌면서 Overflow가 발생하였습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK025.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13256" alt="17featureJK025" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK025.jpg" width="382" height="191" /></a></p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="text-align: center">가중치</td>
<td style="text-align: center">부호</td>
<td style="text-align: center">64</td>
<td style="text-align: center">32</td>
<td style="text-align: center">16</td>
<td style="text-align: center">8</td>
<td style="text-align: center">4</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">연산전</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">연산후</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
<td style="text-align: center">0</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">0</td>
</tr>
</tbody>
</table>
<p><span style="color: #99cc00"><strong>1.4.4 부호가 있는 오른쪽 쉬프트 연산(&gt;&gt;)</strong></span><br />
여기서 65의 2의 보수를 이용해서 -65를 표현했습니다. -65(b10111111) &gt;&gt; 1 = -33(b11011111)<br />
예를 들어 위의 그림과 같이 “1011 1111” 값을 오른쪽으로 한번 이동하면 왼쪽에 생긴 빈 공간은 최상위 비트인 1 값으로 채워지는 것입니다. 만약 “-160 &gt;&gt; 4v 를 연산하면 -160 의 이진수 값인“1010 0000”가 오른쪽으로 4비트만큼 이동하고, 왼쪽에 생긴 네개의 빈 공간은 최상위 비트인 1 로 채워지므로 연산 결과는 “1111 1010”가 됩니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK026.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13257" alt="17featureJK026" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK026.jpg" width="318" height="192" /></a></p>
<p>&nbsp;</p>
<p><span style="color: #339966"><strong>1.5 Rotate 연산</strong></span></p>
<p>데이터의 모든 비트들을 각각 서로 이웃한 비트의 자리로 옮기고 한 쪽 끝에서 밀려 나가는 비트가 다시 반대편 끝으로 들어오게 되는 연산입니다.</p>
<p><span style="color: #99cc00"><strong>1.5.1 부호 없는(Rotate no carry) 왼쪽 Rotate</strong></span><br />
23(b00010111) ROL 1 = 46(b00101110)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK027.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13258" alt="17featureJK027" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK027.jpg" width="318" height="192" /></a><br />
Left circular shift or rotate</p>
<p><span style="color: #99cc00"><strong>1.5.2 부호 없는(Rotate no carry) 오른쪽 Rotate</strong></span><br />
23(b00010111) ROR 1 = 139(b10001011)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK028.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13259" alt="17featureJK028" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK028.jpg" width="318" height="192" /></a><br />
Right circular shift or rotate</p>
<p><strong><span style="color: #99cc00">1.5.3 부호 있는(Rotate through carry) 왼쪽 Rotate</span> </strong><br />
ROL과 동일하지만 Carry Flag가 최하위 비트로 이동하고, 최상의 비트의 값이 Carry Flag 로 이동됩니다.<br />
23(b00010111) RCL 1 = 47(b00101111)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK029.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13260" alt="17featureJK029" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK029.jpg" width="363" height="192" /></a><br />
Left rotate through carry</p>
<p><span style="color: #99cc00"><strong>1.5.4 부호 있는(Rotate through carry) 오른쪽 Rotate</strong></span><br />
23(b00010111) RCR 1 = 267(b100001011)</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK030.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13261" alt="17featureJK030" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK030.jpg" width="359" height="192" /></a><br />
Right rotate through carry<br />
아주 기본적인 내용들이지만 기본적인 것부터 정확하게 알고 있어야 합니다. 주로 데이터 암호화나, 고속의 그래픽 처리 작업 등에서 Shift, Rotate 연산을 많이 사용합니다.</p>
<p><span style="color: #339966"><strong>1.6 진수변환</strong></span></p>
<p>2진수를 16진수로 변환할 때 4자리씩 끊어서 계산하면 편리합니다. 자주 쓰이는 수들의 2진수와 16진수들의 예제들입니다.</p>
<p style="padding-left: 30px">2^4 = 16B = b0001 0000 = 0&#215;10<br />
2^5 = 32B = b0010 0000 = 0&#215;20<br />
2^6 = 64B = b0100 0000 = 0&#215;40<br />
2^7 = 128B = 0&#215;80<br />
2^8 = 256B = b0001 0000 0000 = 0&#215;100<br />
2^10 = 1KB = b0100 0000 0000 = 0&#215;400<br />
2^20 = 1MB = b0001 0000 0000 0000 0000 0000 = 0&#215;100000<br />
2^30 = 1GB = 0&#215;40000000<br />
2^40 = 1TB = 0X10000000000<br />
4KB = 0&#215;1000, 64KB = 0&#215;10000, 1MB = 0&#215;100000</p>
<p style="padding-left: 30px">Ex)<br />
4GB = 4*1GB = 4 * 2^30 = 2^2 * 2^30 = 2^32 = 0&#215;100000000<br />
256KB = 256*1KB = 2^8 * 2^10 = 2^18 = 0&#215;40000<br />
96KB = 64KB + 32KB = 2^6*2^10 + 2^5*2^10 = 0&#215;10000 + 0&#215;3000 = 0&#215;13000<br />
135KB = 128KB + 4KB + 2KB + 1KB = 2^17 + 2^12 + 2^11 + 2^10 = 0&#215;20000 + 0&#215;1000 + 0&#215;800 + 0&#215;400 = 0x21c00</p>
<p><span style="color: #339966"><strong>1.7 Data Types</strong></span></p>
<p>Byte(8 bits)<br />
Halfword(16 bits)<br />
Word (32 bits)<br />
Long Word (64 bits)</p>
<p>- Value ranges</p>
<p>unsigned char val;<br />
<span style="color: #3366ff">0 &lt;= val &lt;= 2^8(255)</span><br />
signed char val;<br />
-128(0&#215;80) &lt;= val &lt;= 127(0x7F)<br />
int(signed 32bit integer) val;<br />
<span style="color: #3366ff">0&#215;8000 0000 &lt;= val &lt;= 7FFFF FFFF</span></p>
<p><span style="color: #339966"><strong>1.8 Aligned &amp; Un-Aligned Data Access</strong></span></p>
<p><span style="color: #99cc00"><strong>1.8.1 Aligned Access</strong></span></p>
<p>(1) Halfword Data Access : 데이터의 주소 값이 짝수이어야 합니다.<br />
(2) Word Data Access : 데이터의 주소 값이 4의 배수이어야 합니다.</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td bgcolor="#E4F7BA">Aligned Data Access</td>
</tr>
<tr>
<td>char buf[100];int *p;<br />
int gVar;p = (int *)&amp;buf[0];<br />
gVar = *p &#8211;&gt; Data Abort 가능성 1p = (int *)&amp;buf[1];<br />
gVar = *p &#8211;&gt; Data Abort 가능성 2</td>
</tr>
</tbody>
</table>
<p>- Data Abort 가능성 2 : buf의 데이터형이 char(8 bit) 이기 때문에 0번째 이후 부터는 4의 배수가 아니기 때문에 Data Abort 가능성이 있습니다.<br />
- Data Abort 가능성 1 : 0번째 인덱스인데 어떻게 보면 Data Abort 가능성이 없는 것처럼 보입니다. 보통은 Linker가 알아서 buf 변수의 할당 주소를 4의 배수에 맞추어 주지만 그렇지 않을 가능성도 있기 때문에 링커에 따라서는 Data Abort 가능성이 있는 것입니다. 그렇다면 Data Abort가 발생하지 않도록 char 배열 buf를 선언하려면 어떻게 해야 할까요? 컴파일러 지시자를 사용해서 char 배열 buf를 강제로 4의 배수로 맞추어 주는 것입니다.</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td bgcolor="#E4F7BA">Aligned Data Access</td>
</tr>
<tr>
<td>#pragma data_alignment = 2 &#8211;&gt; 강제로 4의 배수가 되도록 지시<br />
char buf[100];int *p;<br />
int gVar;p = (int *)&amp;buf[0];<br />
gVar = *p &#8211;&gt; 정상동작p = (int *)&amp;buf[1];<br />
gVar = *p &#8211;&gt; 1번째 배열에서는 여전히 Data Abort 가능성 2</td>
</tr>
</tbody>
</table>
<p>여기서 또 한가지 ARM C언어에서 구조체 선언을 할 때 어떻게 선언하는 것이 효율적인지를 알아 봅시다.</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td colspan="2" bgcolor="#E4F7BA">비 효율적인 구조체 데이터 선언</td>
</tr>
<tr>
<td>struct {<br />
char a;<br />
int b;<br />
short c;<br />
int d;<br />
} gVar;</td>
<td>메모리 배치<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK031.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13262" alt="17featureJK031" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK031.jpg" width="225" height="134" /></a></td>
</tr>
</tbody>
</table>
<p>위의 그림을 보면 총 5byte의 메모리 공간을 낭비하였습니다. 그렇다면 선언 순서를 short c, int b 의 순서를 바꾸면 어떻게 될까요?</p>
<table style="border-collapse: collapse;width: 600px" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td colspan="2" bgcolor="#E4F7BA">비 효율적인 구조체 데이터 선언</td>
</tr>
<tr>
<td>struct {<br />
char a;<br />
short c;<br />
int b;<br />
int d;<br />
}gVar;</td>
<td>메모리 배치<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK032.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13263" alt="17featureJK032" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK032.jpg" width="225" height="134" /></a></td>
</tr>
</tbody>
</table>
<p>단지 선언 순서만 바꾸어도 메모리 낭비가 5-byte에서 1-byte로 줄었습니다.</p>
<p><strong><span style="color: #99cc00">1.8.2 Un-Aligned Data Access</span> </strong></p>
<p>(1) ARM Architecture v6 부터 지원됨<br />
(2) ARM Architecture v4T, v5T(E) 등에서 Un-aligned data를 접근하려고 하면 Data Abort가 발생합니다.</p>
<p><em id="__mceDel"><br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK033.jpg" rel="lightbox[13132]"><img class="alignnone  wp-image-13264" alt="17featureJK033" src="http://www.ntrexgo.com/wp-content/uploads/2013/05/17featureJK033-620x170.jpg" width="496" height="136" /></a></em></p>
<p>&nbsp;</p>
<p style="text-align: right"><span style="color: #999999">JK전자와 함께하는 ARM 완전정복(3)-2 에서 계속 됩니다.</span><a href="http://wp.me/p3jmc8-3ti" target="_blank"><br />
</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/13132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
