MDSTECH
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객지원
뉴스레터
Q&A
FAQ
원격지원
검색창
검색버튼
회원가입
로그인
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객 지원
뉴스레터
Q&A
FAQ
원격지원
사이트맵 보기
Script Programming 문서 원본 보기
←
Script Programming
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게만 가능합니다:
사용자
문서의 원본을 보거나 복사할 수 있습니다:
<h1><span style="font-family: 굴림; font-size: small;"> </span></h1> <h2 style="margin: 0cm 0cm 8pt;"><strong><span lang="EN-US" style="color: black; line-height: 107%; font-family: "Verdana",sans-serif; font-size: 36pt; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">시작하기 전에</span></strong></h2> <p><span style="font-family: 굴림; font-size: small;"> </span></p> <p>본 문서는TRACE32-ICD를 이용한 예제를 중심으로 cmm 파일을 이용하여 고급적인 기능을 사용하기 위한 방법을 대해 알아 보기로 하자. (<sup>*</sup>MDS테크놀로지 제공하는 ARM920T 보드)</p> <p> </p> <h2><span style="font-family: 굴림; font-size: small;"> </span> <p style="margin: 0cm 0cm 8pt;"><strong><span lang="EN-US" style="color: black; line-height: 107%; font-family: "Verdana",sans-serif; font-size: 36pt; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">CMM 구조</span></strong></p> <span style="font-family: 굴림; font-size: small;"> </span></h2> <p>Point) CMM 파일 작성하는 방법을 익혀보자.</p> <h2><strong><span style="font-size: x-large;">CMM 작성</span></strong></h2> <p>Cmm은 TRACE32내에서 사용하고 있는 스크립트이다. TRACE32내에서 여러 명령어를 하나의 파일로 작성을 해서 인터프리터 방식으로 실행이 된다. 시작은 B::으로 시작되고 ENDDO로 끝을 나타낸다. Cmm 구성 형태를 보면 아래와 같다.</p> <p><img src="/data/wiki/2015-02-16/1424053730.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">주석문(Comment) </span></strong></h2> <p>Cmm 문장 중 주석문은 [//] 와 [;]로 표현되는데 실행에는 참여하지 않고, 단지 그 스크립트 명령어가 어떤 역할을 하는지 설명해 주는 것으로 스크립트 문장 중 어느 곳에 와도 무방하다.</p> <p><img src="/data/wiki/2015-02-16/1424053852.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">변수(Variable)와 명칭(Name: identifier) </span></strong></h2> <p>cmm에서 변수란 사용자가 부여하는 명칭으로 다음과 같은 규칙이 있다.</p> <p>- 변수명의 구성은 영문자(A-Z,a-z),숫자(0-9),밑줄(_)로 구성된다.</p> <p>- 첫 글자는 반드시 영문자로 시작하여야 하며 두 번째 글자부터 영문자, 숫자, 밑줄 어느 것이 와도 무방하다.</p> <p>- 밑줄은 영문자나 숫자 사이에 나와도 상관없으며 변수의 처음이나 끝 부분에는 나올 수 없다.</p> <p>- 변수명의 길이는 제한이 없다.</p> <p>- 변수명에는 예약어나 특수 문자를 사용할 수 없다.</p> <p>- Global 변수는 대문자, local 변수는 소문자로 구별을 하면 변수 보기가 더 편리하다.</p> <p>- Global 변수는 다른 cmm 파일내에서도 변수를 사용할 수가 있고, local 변수는 현재 cmm 파일내에서만 사용이 가능하다.</p> <p> </p> <h2><strong><span style="font-size: x-large;">선언문</span></strong></h2> <p>선언문이란 구현하고자 하는 스크립트가 어떠한 형태인가에 상관없이 동일하게 변수를 사용한다. 즉, 정수형, 실수형,long형,double형 변수가 따로 구분이 없다.</p> <p> </p> <p>* 상수(Constant)</p> <p>1) 정수형 상수 : 소수점을 포함하고 있지 않는 10진수(1234.),16진수(0x1234)</p> <p>2) 실수형 상수 : 소수점을 포함하고 있는 것(1.23, 9.9E5)</p> <p>3) 문자형 상수 : 문자형을 포함하고 있는 것 (“MDS”,”TRACE32”)</p> <p>4) 변환 문자: %d – 10진 정수를 표시,%h – 16진로 표시</p> <p> </p> <h2><strong><span style="font-size: x-large;">산술연산자</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424053941.png" alt="" /></p> <p>Example 1.1</p> <p><img src="/data/wiki/2015-02-16/1424062457.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">관계연산자</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424059946.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">논리연산자</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424059958.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">비트연산자</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424059965.png" alt="" /></p> <p>Example 1.2</p> <p><img src="/data/wiki/2015-02-16/1424062560.png" alt="" /></p> <p>Example 1.3</p> <div><img src="/data/wiki/2015-02-16/1424062620.png" alt="" /></div> <p>Example 1.4</p> <div><img src="/data/wiki/2015-02-16/1424062722.png" alt="" /></div> <p>Example 1.5</p> <div><img src="/data/wiki/2015-02-16/1424062739.png" alt="" /></div> <p><img src="/data/wiki/2015-02-16/1424062757.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">If-else문</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424062798.png" alt="" /></p> <p>if문은 조건절의 내용에 따라서 true나 false값을 반환한다. Else 절은 필요시 기술하며 필요 없을 경우에는 생략할 수 있다. If 조건절 이후 한 문장일 경우에는 블록으로 지정하지 않아도 되지만, 한 문장 이상일 경우에는 괄호를 사용하여 블록으로 지정해야 한다.</p> <p><img src="/data/wiki/2015-02-16/1424062807.png" alt="" /></p> <p>조건에 따라 두 개의 절을 수행할 필요가 있을 경우에는 else 절을 기술한다.(example_2_1.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424062821.png" alt="" /></p> <p>If문 내에 또 다른 if문이 내포될 수 있다. If 문에서는 필요에 따라 else 절이 생략될 수 있으며, 내포된 if문에서 else절과 관련된 if문은 같은 블록 내의 가장 가까운 if 문이다.( example_2_2.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424062849.png" alt="" /></div> <p> </p> <p> </p> <h2><strong><span style="font-size: x-large;">While문</span></strong></h2> <p>반복논리를 제공하기 위해 while, repeat 문을 제공하고 있다. 반복문들은 지정된 문장을 조건이 만족할 때까지 반복한다. 조건을 지정하는 방법에 따라 while, repeat문이 구분되어 사용된다.</p> <p>(example_3_1.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424062921.png" alt="" /></p> <p>지정한 횟수만큼 반복할 때 repeat를 사용한다. (example_3_2.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424062978.png" alt="" /></div> <p>Cmm 프로그램 제어를 이동시키기 위해서 goto, return, gosub 문을 제공한다. 이 문장들은 프로그램의 수행 순서를 변화시키는 역할을 한다. (example_3_3.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063000.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">문자 입출력</span></strong></h2> <p>Print 명령어로 출력을 한다.</p> <div><img src="/data/wiki/2015-02-16/1424063087.png" alt="" /></div> <p>예) 메시지를 출력한다. (example_4_1.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063099.png" alt="" /></div> <p>enter 명령어로 String 값을 입력할 수가 있다. 입력이 끝난 후 Enter키를 누른다.</p> <div><img src="/data/wiki/2015-02-16/1424063104.png" alt="" /></div> <p>예) 메시지를 출력한다. (example_4_2.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063108.png" alt="" /></div> <p>실습) 메뉴 만들기</p> <p>예) 메시지를 출력한다. (example_4_3.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063121.png" alt="" /></div> <p> </p> <h2><strong><span style="font-size: x-large;">파일 입출력</span></strong></h2> <p>cmm에서는 다양한 방법으로 입출력을 수가 있다. AREA.OPEN, PRINTER.OPEN, OPEN #1, READ #1, WRITE #1 이 있다.</p> <p> </p> <p>1) AREA.OPEN(example_5_1.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063197.png" alt="" /></p> <p>2) PRINTER.OPEN(example_5_2.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063201.png" alt="" /></p> <p>3) WRITE #1(example_5_3.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063206.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">이벤트</span></strong></h2> <p>시스템(타겟 & PowerView)의 상태가 변할 때 ON-command은 정의되어 있는 PRACTICE 프로그램으로 자동 분기하도록 한다. ON commands들은 PRACTICE 스택 안에 저장 되므로 정의된 블록 내에서만 동작한다.주의 할 점은 ENDDO 혹은 END을 script마지막 부분에 사용해서는 안된다. 이 경우 정의된 이벤트들이 지워진다.</p> <p> </p> <p>(1) ON COMMANDS 정의 및 용도</p> <p>(a) POWERUP 이벤트</p> <p>타겟 파워가 켜질 때 발생된다.</p> <p> </p> <p>(b) SYSUP 이벤트</p> <p>PowerView가 active mode로 변할 때 발생된다.</p> <p> </p> <p>(c) SYSDOWN 이벤트</p> <p>PowerView가 RESET state로 변할 때 발생된다.</p> <p> </p> <p>(d) PBREAK 이벤트</p> <p>타겟 프로그램이 브레이크에 의해서 멈추거나 step시 발생 된다.</p> <p> </p> <p>(e) PBREKAT 이벤트</p> <p>특정한 위치에 브레이크를 걸고 타겟을 running시킨 후 이 위치에서 타겟이 멈추면 발생 된다.</p> <p>Step을 이용해서 이 위치에 갈 경우에도 마찬가지로 설정된 이벤트가 발생 된다.</p> <p> </p> <p>(f) ERROR 이벤트</p> <p>cmm파일 내의 command에 의해서 에러가 생길 때 발생 된다.</p> <p> </p> <p>(a) 단일 이벤트 설정(example_6_1.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063230.png" alt="" /></p> <p>(b) 다중 이벤트 설정(example_6_2.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424063255.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">Dialog box</span></strong></h2> <p>Cmm 파일을 이용하여 사용자 GUI환경을 꾸밀 수가 있다.</p> <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="355" valign="top"> <p>CHOOSEBOX - Define a choosebox</p> <p>CLOSE - Catch window close</p> <p>COMBOBOX - Define a combobox</p> <p>DEFBUTTON - Define the default button</p> <p>DEFCOMBOBOX - Define a default combo box</p> <p>DEFEDIT - Define an edit control</p> <p>DEFHOTCOMBOBOX - Define a default hot combo box</p> <p>DEFHOTEDIT - Define an hot edit control</p> <p>DEFMEDIT - Define a default multiline edit control</p> <p>DLISTBOX - Define an default listbox</p> <p>DYNCOMBOBOX - Define a dynamic combo box</p> <p>DYNDEFCOMBOBOX - Define a default dynamic combo box</p> <p>DYNDEFHOTCOMBOBOX - Define a dynamic default hot combo box</p> <p>DYNHOTCOMBOBOX - Define a dynamic hot combo box</p> <p>EDIT - Define an edit control</p> <p>HEADER - Define window header</p> <p>HELP - Define a help icon</p> <p>HOTEDIT - Define a hot edit control</p> <p>HOTCOMBOBOX - Define a hot combo box</p> <p>ICON - Define an icon</p> <p>LINE - Define a decorative line</p> <p>LISTBOX - Define a listbox</p> <p>MEDIT - Define a multiline edit control</p> <p> </p> </td> <td width="338" valign="top"> <p>MLISTBOX - Define a multiline listbox</p> <p>POS - Define position and size</p> <p>POSX - Define position and size</p> <p>POSY - Define position and size</p> <p>PULLDOWN - Define a pulldown button</p> <p>SPACE - Define space</p> <p>STATIC</p> <p>TEXT - Define a text item</p> <p>VLINE - Define a decorative vertical line</p> <p>DIALOG.AREA</p> <p>DIALOG.view</p> <p>DIALOG.DIR - Opens file browser</p> <p>DIALOG.Disable - Disable dialog elements</p> <p>DIALOG.Enable - Enable dialog elements</p> <p>DIALOG.Disable - DIALOG.view</p> <p>DIALOG.END Close the dialog window</p> <p>DIALOG.EXecute - Execute a dialog button</p> <p>DIALOG.File - Get a filename with a dialog box</p> <p>DIALOG.FileW - Get a filename with a dialog box</p> <p>DIALOG.OK - Create standard dialog box</p> <p>DIALOG.Program - Interactive programming</p> <p>DIALOG.ReProgram - Batch programming</p> <p>DIALOG.SELect - tbd.</p> <p>DIALOG.Set - Set the value of a dialog element</p> <p>DIALOG.SetDIR</p> <p>DIALOG.SetFile - Get a filename for a dialog element</p> <p>DIALOG.view - Show dialog window</p> </td> </tr> </tbody> </table> <p>예제) (example_7_1.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063285.png" alt="" /></div> <h2>CMM Debugging</h2> <p>Pedit loadsymbol.cmm</p> <p><img src="/data/wiki/2015-02-16/1424063407.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: large;">load.cmm 파일 Open</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424060586.png" alt="" /></p> <h2><strong><span style="font-size: large;">Debug -> Macros</span></strong></h2> <p>Wr.we.plist : cmm debugging 하는 윈도우</p> <p>Wr.we.pmacro: cmm 파일내의 Global, local 변수값 확인 윈도우</p> <p><img src="/data/wiki/2015-02-16/1424060612.png" alt="" /></p> <p> </p> <h2><span style="font-size: large;">기능 설명(Tool bar)</span></h2> <p><img src="/data/wiki/2015-02-16/1424063537.png" alt="" /></p> <p><img src="/data/wiki/2015-02-16/1424060644.png" alt="" /></p> <p> </p> <p>기능 설명(Pop_up)</p> <div><img src="/data/wiki/2015-02-16/1424063447.png" alt="" /></div> <p><img src="/data/wiki/2015-02-16/1424060714.png" alt="" /></p> <p> </p> <p> </p> <h2><strong><span style="font-size: large;">Cmm breakpoint 설정</span></strong></h2> <p>Cmm breakpoint à continue</p> <p><img src="/data/wiki/2015-02-16/1424060738.png" alt="" /></p> <h2><strong><span style="font-size: large;">cmm 변수값 확인</span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424060760.png" alt="" /></p> <p> </p> <h2><strong><span style="font-size: x-large;">Command 명령어</span></strong></h2> <h2><strong><span style="font-size: large;">Data.set </span></strong></h2> <p>Memory에 직접 Data 값을 쓰기/읽기</p> <div><img src="/data/wiki/2015-02-16/1424063575.png" alt="" /></div> <p>예제) (example_8_1.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063582.png" alt="" /></div> <h2><strong><span style="font-size: large;">Register.set </span></strong></h2> <p>Register에 직접 Data 값을 쓰기/읽기</p> <div><img src="/data/wiki/2015-02-16/1424063587.png" alt="" /></div> <p>예제) (example_8_2.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063625.png" alt="" /></div> <h2><strong><span style="font-size: large;">Var.set </span></strong></h2> <p>Variable에 직접 Data 값을 쓰기/읽기</p> <div><img src="/data/wiki/2015-02-16/1424063646.png" alt="" /></div> <p>예제) (example_8_3.cmm)</p> <div><img src="/data/wiki/2015-02-16/1424063654.png" alt="" /></div> <h2><strong><span style="font-size: large;">Break.set </span></strong></h2> <p><img src="/data/wiki/2015-02-16/1424063670.png" alt="" /></p> <p>예제) (example_8_4.cmm)</p> <p><img src="/data/wiki/2015-02-16/1424064787.png" alt="" /></p> <p> </p> <h1><span style="font-family: 굴림; font-size: small;"> </span></h1> <h2 style="margin: 0cm 0cm 8pt;"><strong><span lang="EN-US" style="color: black; line-height: 107%; font-family: "Verdana",sans-serif; font-size: 36pt; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">CMM 기초 프로그래밍</span></strong></h2> <h2><strong><span style="font-size: x-large;">Stack 윈도우를 TEXT파일로 저장</span></strong></h2> <p>Stack 윈도우에 있는 내용을 TEXT 파일로 저장을 하고 싶을 때 사용을 한다.</p> <p>예제) example_9_1.cmm</p> <p><img src="/data/wiki/2015-02-16/1424064800.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">엑셀 파일로 변환하기</span></strong></h2> <p>변수의 값을 logging 한 후 excel 파일로 저장해서 보고 싶을 경우에 사용을 한다.</p> <p>예제) example_9_2.cmm</p> <div><img src="/data/wiki/2015-02-16/1424064041.png" alt="" /></div> <h2><strong><span style="font-size: x-large;">Binary 선택</span></strong></h2> <p>Binary 파일을 매번 dialog로 선택을 하는 것이 아니라 한번 선택을 하게 되면 계속 사용 할 수 있도록 쓰는 예제이다.</p> <p>예제) example_9_3.cmm</p> <p><img src="/data/wiki/2015-02-16/1424064260.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">프로그램 실행 횟수와 시간 측정</span></strong></h2> <p>0x1250 Address에 breakpoint를 설정해 놓고 이 위치를 몇번이나 실행되는지 횟수와 다시 실행될때까지의 시간을 측정을 하고 싶을 때 사용을 할 수가 있다.</p> <p>예제) example_9_4.cmm</p> <p><img src="/data/wiki/2015-02-16/1424064282.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">사용자 메뉴 구성</span></strong></h2> <p>TRACE32 메뉴에 사용자 별도의 메뉴를 구성할 수가 있다.</p> <p>예제) example_9_5.cmm</p> <p><img src="/data/wiki/2015-02-16/1424065124.png" alt="" /></p> <h2><strong><span style="font-size: x-large;">AREA을 이용한 메뉴 구성</span></strong></h2> <p>예제) example_9_6.cmm</p> <p><img src="/data/wiki/2015-02-16/1424065501.png" alt="" /></p>
Script Programming
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
행위
검색
TRACE32 Dummy
TRACE32
iTSP User's Guide
aTSP User's Guide
Linux Debugging
Debugging Tips
Trace Analysis
Virtual Target
TRACE32로 바라본 ARM
TRACE32 FAQ
TRACE32 Trouble Shooting
TRACE32 Software Update
Software Revision History
DT10 / DT-Win
다운로드
DT10 Evaluation
DT-Win Evaluation
TestPoint 삽입 Error
Build Error
DT10 FAQ
도구
여기를 가리키는 문서
가리키는 글의 바뀜
특수 문서 목록
문서 정보