사이트맵 보기

FAQ

리스트 게시판
[PRACTICE] PRACTICE 스크립트에서 메모리를 읽거나 메모리에 기록하려면 어떻게 해야 하나요?

Raw Memory 쓰기

PRACTICE 스크립트에서 메모리 위치(또는 메모리 매핑 레지스터에 쓰기)를 작성하는 것은 다음 명령과 함께 작동합니다
Data.Set


16진수 값은 접두사 "0x"로 작성해야 하며, 10진수 값은 점 "."으로 끝나야 합니다.

예시:

Data.Set D:0x1000 %Long 0x12345678
Data.Set D:0x3000 %Long 42.


"format"은 작성할 데이터의 너비를 지정합니다.

%Byte 는 8비트를 의미

%Word는 16비트를 의미

%Long는 32비트를 의미

%Quad는 64비트를 의미


3,5,6,7바이트 너비에 대한 형식 지정자도 있습니다.
고정 주소를 사용하는 대신 이미 ELF 파일을 로드한 경우, label을 사용할 수도 있습니다.
Data.Set _IntVec1 %Long 0x800000

어플리케이션의 C/C++ 코드에서 선언된 상위 수준 변수를 작성하는 경우 Var.set 명령을 사용하는 것이 더 편리합니다.



Raw Memory 읽기

PRACTICE 스크립트에서 메모리 위치(또는 메모리 매핑 레지스터로 읽기)를 읽는 것은 PRACTICE 기능과 함께 작동합니다
Data.()
여기서 <value width>는 Byte, Word, Long, Quad를 나타냅니다.

PRACTICE 기능은 PRACTICE 명령 내에서 사용하거나 PRACTICE 매크로에 할당해야 합니다.
예시:

ECHO DATA.Long(D:0x1000)

PRIVATE &myvalue
&myvalue=DATA.Word(D:0x4020)
ECHO "My value is " &myvalue


Data.Set D:0x1000 %Long DATA.Long(D:0x1000)|1

세 번째 예는 주소 0x1000에서 32비트 값의 최하위 비트를 설정하기 위해 읽기-수정-쓰기를 수행하는 방법을 보여줍니다.
어플리케이션의 C/C++ 코드에서 선언된 높은 수준의 변수를 읽는 경우 Var.VALUE() 함수를 사용하는 것이 더 편리합니다.



Variables 쓰기
(ELF를 로드한 후) PRACTICE 스크립트를 통해 프로그램의 변수를 작성하는 것은 다음 명령과 함께 작동합니다.

Var.set

예시:

Var.set myvar=0x100
Var.set flags=flags|0x10


두 번째 예는 "flags"라는 변수의 비트 8을 설정하기 위해 읽기-수정-쓰기를 수행합니다.

Var.로 응시하는 모든 명령어는 기본적으로 "C/C++에서 하는 것처럼"을 의미하는 "High Level Language" 표현식을 처리하는 방식에서 특별하다는 점에 유의하세요.

따라서 여기서는 십진수 값 뒤에 점이 따를 필요가 없습니다. 또한 Training HLL Debugging의 "Change a Variable Value" 장도 참조하세요.



Variables 읽기
(ELF를 로드한 후) PRACTICE 스크립트를 통해 프로그램의 변수를 읽는 것은 이 기능과 함께 작동합니다.

Var.VALUE()


예시:

ECHO Var.VALUE(myvar)
WAIT (Var.VALUE(flags)&0x10)==0x10


두 번째 예시는 'flags'라는 변수에서 비트 8이 설정될 때까지 스크립트 실행을 중단합니다.


관련 문서:


다른 궁금한 사항은 trace32@mdstech.co.kr로 문의주십시오.

감사합니다.



[PRACTICE] Dialog 창 내에서 Practice Macro를 사용할 수 있습니까?

Dialog 블록의 시작 부분에 문자 " &"를 추가해야 하며, 그렇지 않으면 Macro가 해당 블록 내에서 확장되지 않습니다.


예시 : 

DIALOG.view
(&+
...
)


다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오.

감사합니다.

[PRACTICE] TRACE32 PwoerView의 window를 호스트PC 에 저장하는 방법이 있나요?


다음은 TRACE32 window를 파일로 출력할 때 사용할 수 있는 명령어들입니다:


B::PRinTer.FILE B::WinPrint 명령을 사용하여 TRACE32 window의 내용을 파일로 출력할 수 있습니다.

B::PRinTer.FILE 명령어

  • /Append 옵션을 사용하면 기존 파일에 새 데이터를 추가할 수 있습니다.
  • /Append 옵션이 없을 경우, 해당 파일이 이미 존재한다면 파일 내용은 덮어씌워집니다.

사용 예시:


  • B:: PRinTer.FILE output.txt /Append
  • B:: WinPrint.Trace.List
  • B:: WinPrint.Data.dump 0--0xfff

  • B:: PRinTer.FILE file01.html XHTML
  • B:: WinPrint.List.Mix func7--func17

더 많은 사용 예시는 TRACE32 설치 폴더 > pdf > Ide_func.pdf 에서 확인할 수 있습니다.

다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오.

감사합니다


[PRACTICE] Break.Set
/CMD "DO script.cmm" /RESUME 명령어을 사용할 때 "PRACTICE Stack Overflow" 오류 발생

이 오류는 해당 breakpoint가 실행될 때 발생합니다. /RESUME 옵션은 스크립트 실행 후 프로그램 실행을 다시 시작하지만, 스크립트 실행이 끝날 때까지 기다리지 않습니다. 두 번째 breakpoint가 실행되면 첫 번째 스크립트가 여전히 실행 중인 상태에서 두 번째 스크립트가 시작됩니다. breakpoint가 자주 실행되면 병렬로 실행되는 스크립트 수가 특정 최대치를 초과하고, 이로 인해 "PRACTICE Stack Overflow" 오류가 발생할 수 있습니다. 이를 해결하려면 다음 해결책 중 하나를 사용할 수 있습니다:


● /RESUME 옵션을 제거하고 스크립트의 끝에 Go 명령을 삽입하세요. 이 경우 스크립트가 끝난 후에 실행이 다시 시작됩니다. 하지만 breakpoint가 자주 실행되면 여전히 "PRACTICE Stack Overflow" 오류가 발생할 수 있습니다.


● DO 명령어을 개별 PRACTICE 명령어로 교체하세요. 예를 들어,

Break.Set < address >  /CMD "DO script.cmm" /RESUME

대신,

Break.Set < address >  /CMD "" /CMD "" ... /RESUME

● 스크립트 내에서 DO 명령어을 JUMPTO로 교체하세요. 예를 들어:

Break.Set < address >  /CMD "JUMPTO do_it"

STOP

do_it:

...

Go

STOP


또한, PRACTICE 스크립트 내에서 /CMD 옵션 대신에 다음 명령을 사용할 수 있습니다:

Break.Set < address >

RePeaT

 (

   Go
   WAIT !STATE.RUN()
   < break handling >
 )


다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 바랍니다.

감사합니다.

[PRACTICE] 브레이크포인트가 hit 되었을때 cmm script를 실행 시킬 수 있나요???

아래와 같은 명령어를 통해 breakpoint를 setting하거나 아래 스크린샷과 같이 설정하면 가능합니다.


break.set /program /CMD "Do myscript.cmm"




호출된 cmm script의 끝에 "go" 명령어를 추가하여 타겟의 실행을 계속할 수 있습니다.


break.set 명령어는 /resume 옵션도 허용하며, /resume 옵션을 추가 혹은 허용할 경우 do myscropt.cmm 명령어가 실행된 후 프로그램 실행을 재개합니다. 

주의사항으로, 스크립트를 실행하는데 시간이 오래걸린다면, practice 스크립트가 완료될 때까지 기다리지 않으므로, 사용하지 않는게 좋습니다.

[PRACTICE] 논리적 조건으로 중단점을 설정 할 수 있나요?

Break.set 명령어에는 /VarCONDition 옵션이 있으며,

이 옵션을 사용하면 설정된 breakpoint에 도달한 후 CPU 가 중지된 상태로 유지되는 조건을 지정할 수 있습니다.

(breakpoint를 설정하기 위한 다이얼로그에서 "advanced" 항목을 클릭하면, "Condition" 필드를 찾을 수 있습니다.)


Example : 함수 MyFunc에 변수 x==10 및 y==11 옵션으로 breakpoint를 설정합니다.

Break.Set MyFunc /VarCONDition (x==10 && y==11)

결과적으로, MyFunc 함수가 실행될 때마다 CPU 가 중지되지만, 조건 "x==10 && y==11"를 만족하지 않으면, 재 실행됩니다.


PRACTICE 언어로 Break.Set 명령어에 /VarCONDition 옵션 대신 /CONDition을 사용하여 조건을 지정할 수도 있습니다.

이는 Break.Set 창의 CONDition 필드의 HLL 체크박스를 체크 해제하는 것에 해당합니다.


Example : 첫 번째 예제의 동일한 조건으로 다음과 같이 사용할 수 있습니다.

Break.Set MyFunc /CONDition (Var.Value(x)==10. && Var.Value(y)==11.)


참고 : 

PRACTICE의 기본 기수 모드는 16진수이므로 10진수 값을 나타내기 위해 10과 11 뒤에 '온점'을 추가해야 합니다.

그렇지 않으면 0x10과 0x11이 기본적으로 사용됩니다.


다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 바랍니다

감사합니다.

고객문의/
견적문의
기술지원/
데모/
SW요청
031-627-
3116