Customer Support
Your Key to Embedded Innovations
[PRACTICE] PRACTICE 스크립트에서 메모리를 읽거나 메모리에 기록하려면 어떻게 해야 하나요? | |||
Raw Memory 쓰기 PRACTICE 스크립트에서 메모리 위치(또는 메모리 매핑 레지스터에 쓰기)를 작성하는 것은 다음 명령과 함께 작동합니다
Data.Set D:0x1000 %Long 0x12345678 Data.Set D:0x3000 %Long 42.
%Byte 는 8비트를 의미 %Word는 16비트를 의미 %Long는 32비트를 의미 %Quad는 64비트를 의미 3,5,6,7바이트 너비에 대한 형식 지정자도 있습니다. Raw Memory 읽기 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비트 값의 최하위 비트를 설정하기 위해 읽기-수정-쓰기를 수행하는 방법을 보여줍니다. Variables 쓰기 Var.set Var.set myvar=0x100 Var.set flags=flags|0x10
따라서 여기서는 십진수 값 뒤에 점이 따를 필요가 없습니다. 또한 Training HLL Debugging의 "Change a Variable Value" 장도 참조하세요. Variables 읽기 Var.VALUE() 예시: ECHO Var.VALUE(myvar) WAIT (Var.VALUE(flags)&0x10)==0x10
다른 궁금한 사항은 trace32@mdstech.co.kr로 문의주십시오. 감사합니다. |
|||
[TRACE32 PowerView] CPU 레지스터가 특정 값일 때 프로그램 실행을 중지할 수 있나요? | |||
CPU 레지스터 read 또는 write는 프로세서 on-chip 디버깅 구현에서 지원되지 않으므로 프로그램 실행을 중지할 수 없습니다. 프로그램 실행 또는 메모리 액세스(read/write)에 breakpoint를 설정할 수 있을 뿐입니다. Break.Set myFunc /Program /CONDition Register(R0)==0 다른 궁금한 사항은 trace32@mdstech.co.kr로 문의주십시오. 감사합니다. |
|||
[TRACE32 PowerView] 단일 주소를 가지는 어셈블리 함수 | |||
어셈블리 함수는 종종 컴파일러에 의해 디버깅 되었을 때, 단일 주소 레이블로 표현됩니다. 이러한 단일 주소를 가지는 어셈블리 함수의 경우 함수 런타임 분석이나 함수 커버리지 창에 포함되지 않을 수 있습니다. 이러한 경우 sYmbol.Bodify.AddressToRange 와 sYmbol.Modify.RangeToFunction 명령어를 함께 사용하여 함수로 인식하게 할 수 있습니다. 예시 : sYmbol.Modify.AddressToRange _divsi3 sYmbol.Modify.RangeToFunction _divsi3 sYmbol.Modify.AddressToRange 명령은 단일 주소 레이블을 주소 범위가 있는 심볼로 확장합니다. 주소 범위는 심볼 주소에서 시작하여 다음 심볼 주소에서 1을 뺀 주소에서 끝납니다. sYmbol.Modify.RangeToFunction 명령은 확장된 범위를 함수로 변환합니다. 다른 궁금한 사항은 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 명령어
사용 예시:
더 많은 사용 예시는 TRACE32 설치 폴더 > pdf >
Ide_func.pdf 에서 확인할 수 있습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다 |
|||
[TRACE32 PowerView] TRACE32 PowerView에서 OS 관련 명령어를 실행할 수 있나요? | |||
사용자가 원하는 작업에 따라 적합한 명령어를 사용할 수
있습니다. 외부 프로그램 또는 배치 파일을 실행하려면 아래 명령
중 하나를 사용할 수 있습니다. (blocking:
명령어 결과가 있을 때까지 현재 작업을 대기. Non-blocking:
명령어 결과 없더라도 진행) OS.Area
OS.Window
OS.screen
·
Windows에서는 쉘 없이 명령이 직접 실행되며, 콘솔 애플리케이션의
출력이 임시 명령 창에 표시됨. ·
Linux에서는 TRACE32 GUI를 시작한 쉘에 출력이 표시됨 (Nonblocking 방식) OS.Hidden
< cmdline >: 출력이 표시되지 않음 (블로킹 방식) OS.Command
< cmdline >: 시스템 쉘에서 출력되며, 리다이렉션을 허용함. ·
Windows에서는 Non-blocking 방식. ·
Linux에서는 Blocking 방식이지만 앰퍼샌드(&)를 추가하면 Non-blocking 방식으로 실행 가능. 더 많은 OS 관련
함수는 TRACE32 설치 폴더 > pdf >
Ide_func.pdf 에서 확인할 수 있습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다 |
|||
[TRACE32 PowerView] Data.LOAD.ELF 는 ELF program header 또는 ELF section header를 사용하나요? | |||
ELF 파일은 다음과 같은 소스 정보를 포함하고 있습니다.
Data.LOAD.ELF 명령어의 옵션을 사용하여, 코드 다운로드 시 사용할 주소 및 크기 정보를 설정 할 수 있습니다.
대부분의 경우 기본 Data.LOAD.ELF 설정을 사용하는 것으로 충분하며, 이러한 옵션은 필요하지 않습니다. 그러나 링커가 program table 또는 section table 에 잘못된 정보를 생성한 경우, 하나 이상의 옵션을 사용하는 것이 필요할 수도 있습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 바랍니다. 감사합니다. |
|||
[TRACE32 PowerView] TRACE32에서 C 매크로의 값을 볼 수 있나요? | |||
매크로는 일반적으로 ELF 파일에 있는 DWARF 디버그 정보의 일부가 아닙니다. 따라서 디버거는 해당 값을 알 수 없습니다. 하지만 TRACE32에서 매크로를 선언할 수 있습니다. sYmbol.CREATE.MACRO MACRO_1 < contents > 다음을 사용하여 수동으로 만든 매크로 목록을 표시할 수 있습니다. sYmbol.List.MACRO 때로는 컴파일러가 매크로 정보를 ELF 파일에 내보낼 수도 있습니다. 이는 GCC 컴파일러의 경우 -g3 옵션을 사용하여 ".debug_macinfo" 섹션에 매크로 정보를 내보냅니다. Data.LOAD.Elf 명령을 사용하여 이러한 ELF 파일을 로드하는 경우 /MACRO 옵션을 사용하여 매크로 정보를 TRACE32로 가져옵니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 바랍니다. 감사합니다. |
|||
[TRACE32 PowerView] 특정 이벤트가 발생했을때 스크립트를 실행할 수 있나요? | |||
ON 또는 GLOBALON 명령어를 사용하여 스크립트를 실행할 수 있습니다. ON은 테스트 케이스를 제어하는 스크립트가 실행중인 경우에 적합합니다. GLOBALON은 이벤트를 다시 비활성화할 때까지 이벤트에 대한 액션을 원하는 경우에 적합합니다. 명령어 사용법은 다음과 같습니다. ON|GLOBALON < event > < action > 지원되는 이벤트 및 동작에 대한 자세한 내용은 "General Commands Reference Guide O" 및 "General Commands Reference Guide G" 메뉴얼에서 각각 ON 및 GLOBALON 명령에 대한 설명을 참고하세요. 이벤트 핸들러를 비활성화하려면 ON|GLOBALON < event > inherit 를 사용하세요. 예: 1. 프로그램 실행이 멈추면 지정한 스크립트를 실행합니다. GLOBALON PBREAK DO myscript.cmm 2. 프로그램 실행도중 에러가 발생하면 스크립트 실행을 계속합니다. ON ERROR CONTinue 3. 타겟 전원이 들어오면 powerup_handler 함수를 실행합니다. ON POWERUP GOSUB powerup_handler 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 바랍니다. 감사합니다. |
|||
[TRACE32 PowerView] TRACE32에서 PRACTICE 명령을 사용해 새로운 타입 정의를 할 수 있나요? | |||
TRACE32에서는 새로운 타입을 수동으로 추가할 수 없습니다. 해결책으로, 소스 파일 내에서 타입을 선언한 후 컴파일하고, 결과로 나온 ELF 파일을 TRACE32에 로드하는 방법이 있습니다. 예시:
typedef struct { 2. C 파일을 컴파일합니다. gcc typedef.c -g -o typedef.elf -nostartfiles -nodefaultlibs 3. ELF 파일을 /NoCODE 및 /NoCLEAR 옵션을 사용해 TRACE32에 로드합니다: Data.LOAD.Elf typedef.elf /NoClear /NoCODE 다른 궁금한 사항은 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 스크립트가 완료될 때까지 기다리지 않으므로, 사용하지 않는게 좋습니다. |
|||
[TRACE32 PowerView] PRACTICE 스크립트에서 함수의 반환 값을 확인하는 방법은 뭔가요? | |||
모든 함수는 일반적인 경우 return이라고 불리는 의사 변수(pseudo-variable)를 가지고 있습니다. 이는 sYmbol.Browse.Var \\*\*\< myfunc >\* 창에서 확인할 수 있습니다. (myfunc 은 함수 이름) PRACTICE 함수에서 Var.VALUE( < variable > ) 명령을 사용하면 모든 변수의 값을 확인할 수 있습니다. 이를 통해 myfunc() 함수의 반환 값을 얻을 수 있습니다. GO sYmbol.EXIT(myfunc) // myfunc의 return 문으로 이동 PRINT Var.VALUE(return) // 반환 값을 얻습니다. 모듈 테스트를 수행하고자 하는 경우 Var.set 명령어와 Var.VALUE( 예 : 임의의 파라미터(5, 3)를 사용하여 inf func3(int a, int b) 함수를 호출하고 반환 값을 얻고자 하는 경우 다음을 수행합니다. Var.NEWLOCAL \x // PRACTICE 스택에 인공 변수 생성 Var.set \x=func3(5,3) // CPU에서 인수 5와 3을 사용하여 func3() 실행 PRINT Var.VALUE(\x) // 반환 값 가져오기 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 바랍니다. 감사합니다. |
|||
[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 로 문의 바랍니다 감사합니다. |
|||
[TRACE32 PowerView] PRACTICE 스크립트에서 특정 소스 코드 라인에 브레이크 포인트를 설정하려면 어떻게 해야 하나요? | |||
다음 구문을 사용하여
|
|||
[TRACE32 PowerView] Data.LOAD 명령어 사용 시 'Overlapping memory location' 에러 발생 | |||
이 오류 메시지는 오브젝트 파일 내에 코드나 데이터를 동일한 주소로 로드하는 섹션이 있다는 것을 의미하며, 이는 오브젝트 파일의 오류입니다. TRACE32는 이러한 섹션들을 오브젝트 파일에 나타난 순서대로 로드합니다.
다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] Data.LOAD 명령어를 사용하면, "entry near offset ..."이라는 에러가 나옵니다. | |||
이 오류 메시지는 다음과 같은 이유로 발생할 수 있습니다:
2. 오브젝트 파일이 TRACE32 PowerView에서 지정한 아키텍처가 아닌 다른 아키텍처로 컴파일되었는지 확인해 보세요. 예를 들어 Arm용 TRACE32 PowerView에서 x86용으로 컴파일된 ELF 파일을 로드하는 경우 이 오류 메시지가 표시됩니다. 3. 파일 형식이 TRACE32 버전에서 지원되지 않는 경우입니다. 예를 들어 사용 중인 TRACE32 소프트웨어에서 지원하지 않는 최신 컴파일러 버전을 사용하는 경우 이런 일이 발생할 수 있습니다. 최신 TRACE32 릴리스로 업데이트하거나 trace32@mdstech.co.kr에 소프트웨어를 요청하세요. 4. 오브젝트 파일의 형식이 아직 TRACE32 PowerView에서 지원되지 않는 경우입니다. 가능하신다면, 오브젝트 파일을 포함하여 trace32@mdstech.co.kr 에 연락 주세요. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다 |
|||
[TRACE32 PowerView] TRACE32를 Jenkins와 통합하는 방법은 무엇인가요??? | |||
TRACE32 PowerView 사용자 인터페이스를 비활성화하려면 TRACE32 config 파일(T32 폴더 밑에 config.t32 파일)에서 SCREEN=로 시작하는 줄을 찾아 SCREEN=OFF로 변경합니다. SCREEN=로 시작하는 줄이 없는 경우 파일 끝에 빈 줄을 추가한 다음 SCREEN=OFF 줄을 추가합니다. 그런 다음 수행하려는 작업이 포함된 시작스크립트로 TRACE32 PowerView를 시작하거나 외부 프로그램(예를들면 python 스크립트 또는 C 어플리케이션)에서 TRACE32 어플리케이션을 제어할 수 있습니다. TRACE32 어플리케이션은 OS 반환값읗 인수로 사용할 수 있는 quit 명령을 사용하여 닫을 수 있습니다. 자세한 내용은 "TRACE32 installation guide"와 "API for remote control and jtag access in C" 에서 확인하시면 됩니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] 인라인 함수를 debug/trace 할 수 있나요? | |||
인라인 함수는 각 call site의 calling functions 내부에 내장되어 있으며 고유 시작 주소가 없습니다. 인라인 함수는 sYmbol.List.InlineFunction 명령을 사용하여 TRACE32에 표시할 수 있습니다 컴파일러가 debug information의 인라인에 대한 정보를 제공하는 경우 디버거는 인라인 함수에 대한 일부 정보를 표시할 수 있습니다. 예를 들어 다음 이미지는 함수 func1이 함수 func2 내부에 두 번 인라인 되었음을 보여줍니다: 이 정보는 함수 stack frame의 디버거에서 사용됩니다(Frame.view) 함수에 고유 시작 주소가 없으므로 함수 시작 시 breakpoint를 설정할 수 없습니다. 따라서 breakpoint 시 TRACE32에 "symbol not found"라는 오류 메시지가 표시됩니다 그러나 assembly로 변환된 인라인 함수의 싱글 라인에서 program breakpoint를 설정할 수 있습니다. 함수가 두 번 이상 인라인으로 표시되면 다른 호출 지점을 표시하도록 확장할 수 있는 [+] 기호가 표시될 수 있습니다 TRACE32는 Trace.STATistic.sYmbol, Trace.Chart.sYmbol 및 Trace.PROFILEChart.sYmbol 명령의 /INLINE 옵션을 사용하여 Trace 결과를 기반으로 인라인 함수에 대한 runtime 정보를 표시할 수 있습니다. 이러한 명령에 대한 자세한 내용은 https://www.lauterbach.com/pdf/general_ref_t.pdf 을 참조하세요 최적화 코드 디버깅에 대한 자세한 내용은 다음 동영상을 참조하세요: https://support.lauterbach.com/kb/articles/debugging-optimized-code-in-trace32 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] [Simulink] 'TRACE32 XIL: Cannot find header file for TRACE32 Remote API' 에러 발생 | |||
해당 에러는 지원되는 컴파일러를 설치한 후 MATLAB에서 C/C++ MEX 컴파일러가 설정되지 않은 경우 발생합니다. 자세한 내용은 아래의 링크를 참고하십시오. https://www.mathworks.com/support/requirements/supported-compilers.html 해당 에러 상황은 또한 다음이 경우에도 나타날 수 있습니다. - Simulink와 TRACE32의 통합 환경에서 TRACE32 설치 폴더의 demo/api/capi/dll 내부에서 t32api 라이브러리를 찾을 수 없습니다. (Windows의 경우 t32api64.dll/t32api.dll, Linux의 경우 t32api64.so) - Simulink와 TRACE32의 통합 환경에서 TRACE32 설치 폴더의 deml/api/capi/src 내부에서 t32.h 헤더 파일을 찾을 수 없습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의주십시오. 감사합니다. |
|||
[TRACE32 PowerView] TRACE32를 Hidden Instance로 실행하는 방법 | |||
구성 파일(예: config.t32)에 SCREEN= 옵션을 추가하여 TRACE32 Hidden Instance로 시작하는 세 가지 방법이 있습니다. 다음 옵션 중 하나를 선택하세요. 1. TRACE32의 main window는 안 보이는 상태로 유지됩니다. 그러나 dialog 나 다른 window들은 열 수 있습니다. 테스트 중 오류가 발생하는 경우에 유용합니다. SCREEN= INVISIBLE 2. TRACE32의 main window를 포함해 모든 dialog와 window들은 오류가 발생하더라도 보이지 않습니다. SCREEN=OFF 3. TRACE32의 main window가 호스트 컴퓨터의 툴바에 추가됩니다. 오류가 발생하는 경우 전체가 표시될 수 있습니다. SCREEN= VICON 자세한 내용은 TRACE32 설치 가이드의 "TRACE32 as a Hidden Instance" 챕터를 참고해주세요. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 바랍니다. 감사합니다. |
|||
[TRACE32 PowerView] 특정 메모리 접근 시 발생하는 Bus error | |||
"Bus error"는 TRACE32 디버거가 특정 메모리 접근을 시도할 때 CPU가 처리할 수 없는 영역이면 발생합니다. Bus error는 CPU 내부에서 먼저 발생하고 TRACE32 디버거에는 나중에 보고됩니다. Bus error의 원인:
Buss error가 발생한 영역에 대한 오류 메시지가 명확하지 않을 수 있습니다. 예를
들어, B::List나 B::Data.dump 창에서는 버스
오류가 ???????로 표시될 수 있습니다. 1. Buss error의 원인을 알아보기 위해 다음 단계를 시도해봅니다: 2. TRACE32 명령 식별: Bus error를 유발하는 TRACE32 명령(read, write)이나 창 열기(B::List)와 같은 특정 TRACE32 action을 확인합니다. 3. Bus error 재현 준비: Bus error를 재현할 환경을 설정합니다. 오류를 발생시키지 않습니다. 4. 로그 설정: B::SYStem.LOG 창을 엽니다. Init 버튼을 눌러 "log" 상태를 ON으로 설정합니다. 5. 로그 리스트 열기: B::SYStem.LOG.List 창을 엽니다. 6. Bus error 발생: Bus error를 유발하는 작업을 수행합니다. 7. 로그 분석: B::SYStem.LOG.List 창의 마지막 줄에 Bus error를 유발한 접근 정보와 action을 확인합니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다 |
|||
[TRACE32 PowerView] TRACE32를 업데이트한 후 Windows 스케일링을 100% 이상으로 설정했을 때, 글꼴과 대화상자가 더 크게 표시됩니다. | |||
이 문제는 2022년 5월에 출시한 TRACE32 PowerView rev. 147211 버전의 고해상도 DPI(High-DPI) 지원이 도입되면서 발생한 것입니다. 고해상도 DPI 모니터를 사용하고 스케일링 설정이 100% 이상인 사용자들은 PowerView에서 글꼴 크기가 증가하는 현상을 겪게 됩니다. 원래의 작은 글꼴 크기를 선호하신다면, "SETUP.GUI.FontSize 14." 및 "SETUP.GUI.DialogFontSize 16." 명령어를 사용자의 자동 시작 스크립트(User's Autostart script)에 추가하십시오. 해당 스크립트는 메뉴에서 "File > Automatic Scripts on Start > Edit User's Autostart Script"를 통해 편집할 수 있습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 바랍니다. 감사합니다. |
|||
[TRACE32 PowerView] ELF 파일에 "readelf -l" 명령어 사용시, 2개의 Address type(논리 주소, 물리주소)이 확인됩니다. 어떤 주소가 사용되나요? | |||
물리 주소 (physical address) 가 0이 아닌 경우, 물리 주소가 사용됩니다. 만약 0인 경우에는 논리 주소 (logical address)가 사용됩니다. Data.LOAD 명령어의 /LOGLOAD 또는 /PHYSLOAD 옵션을 사용하여 하나를 강제로 사용 할 수 있습니다 : sYmbol.List.MAP 명령어는 다운로드 시 코드에 저장된 주소 범위를 표시합니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 부탁드립니다. 감사합니다. |
|||
[TRACE32 PowerView] TRACE32 PowerView를 원격으로 제어하는 방법 | |||
TRACE32 PowerView를 원격으로 제어하는 방법은 세 가지가 있습니다.
다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] "no response from InterCom" 에러 메시지 발생 원인과 해결방법 | |||
"no response from InterCom" 오류는 InterCom 통신을 활성화한 TRACE32 SW 사용 시 발생할 수 있습니다. InterCom 통신은 t32start 설정이나 TRACE32 구성 파일(C:\T32\config.t32)에서 활성화된 설정에 의해 사용됩니다. InterCom 통신은 두 개 이상의 TRACE32 애플리케이션이 UDP를 통해 상호 통신해야 할 때, 예를 들어 AMP(비대칭 멀티프로세싱) 멀티코어 디버그 세션에서 필요합니다. "no response from InterCom" 오류 메시지는 InterCom 명령을 확인하는 기본 시간 초과가 500ms를 초과할 때 나타납니다. 이 상황은 여러 개의 PoverView 인스턴스가 하나의 디버그 포트 대역폭을 공유해야 할 때 발생할 수 있습니다. 필요한 대역폭은 각 TRACE32 애플리케이션의 업데이트 속도를 줄여서 감소시킬 수 있습니다. SETUP.URATE <time> or <frequency> SETUP.URATE 이 방법이 충분하지 않거나, 결과적으로 업데이트 속도가 받아들일 수 없을 정도로 낮아진다면, InterCom 응답 시간 초과를 늘리는 방법도 있습니다. 이 방법은 빌드 리비전 34366부터 사용할 수 있습니다. SETUP.INTERCOMACKTIMEOUT <time> SETUP.INTERCOMACKTIMEOUT InterCom 참가자에 대한 PRACTICE 실행 성능을 적절한 수준으로 유지하기 위해 가능한 한 낮게 설정되어 있습니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] Eclipse를 TRACE32 PowerView 대신 디버거 사용자 인터페이스로 사용할 수 있나요? | |||
Lauterbach는 Target Communication Framework(TCF)를 기반으로 한 Eclipse와의 TRACE32 통합을 제공합니다. TRACE32 PowerView는 TCF 에이전트로 구성할 수 있습니다. 이 통합을 통해 Eclipse 기반 인터페이스 내에서 TRACE32의 디버그 기능에 접근할 수 있습니다. TRACE32 PowerView와 Eclipse를 동시에 사용하는 것도 가능합니다. 단, 이 통합에서는 TRACE32의 확장된 기능, 예를 들어 trace view, MMU view 및 OS aware 디버깅은 지원되지 않습니다. TRACE32의 Eclipse 통합에 대한 자세한 내용은 "TRACE32 as TCF Agent" 애플리케이션 노트를 참조하세요. 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 부탁드립니다. 감사합니다. |
|||
[TRACE32 PowerView] TRACE32는 C++ STL에 대한 프리티 프린팅(pretty printing)을 지원할 수 있나요? | |||
지원하고 있습니다. sYmbol.AddInfo.Type 및 Var.OBJECT 명령어를 통해 사용 가능합니다. * sYmbol.AddInfo.Type 명령어를 사용하여 STL 컨테이너 타입을 정의할 수 있습니다. * 변수 드롭다운 메뉴에 "View Object in Window" 라는 새로운 항목이 추가됩니다. * Var.OBJECT는 컨테이너를 사람이 읽기 쉬운 형태로 표시할 수 있습니다. * 추가된 타입 정보는 if/else/while 표현시을 포함하여 더 복잡할 수 있습니다. * 더자세한 내용은 demo/etc/sta 을 참조하시면 됩니다 다른 궁금한 사항은 TRACE32@mdstech.co.kr로 문의 부탁드립니다. 감사합니다. |
|||
[TRACE32 PowerView] Peripheral 레지스터를 읽을 때, 에러가 발생합니다 | |||
보통의 경우, 모듈의 Clock이 활성화가 되기 전에 Peripheral 레지스터를 읽으면 해당 문제가 발생합니다. Peripheral register는 종종 bus error들을 발생시킵니다. 그 결과 해당 레지스터의 값들은 물음표로 표시됩니다. 심지어 access가 버스 스톨을 생성하고 새로운 reset이 실행될 때까지 메모리 액세스를 차단하기 때문에 프로세서가 충돌하는 경우도 발생할 수 있습니다. 따라서 주변 모듈에 액세스하기 전에 해당 모듈의 클럭이 이미 활성화되어 있는지가 중요합니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다. |
|||
[TRACE32 PowerView] 에러 메시지 : "FATAL ERROR from InterCom-driver: can not bind read socket" | |||
PC에서 TRACE32에 대한 InterCom 통신을 사용하고 있을 경우 발생하게 되는 현상입니다. 이러한 InterCom 통신은 TRACE32 PowerView 소프트웨어 구성에서 특정 설정을 함으로써 활성화합니다. T32Start 옵션 중 InterCom 설정이나 TRACE32 구성 파일(config.t32) 내부에서 활성화할 수 있습니다. InterCom 통신은 멀티 코어 디버깅이나 GTM과 같은 코프로세서 디버깅을 위해 두 개 이상의 TRACE32 PowerView가 함께 통신(UDP를 통해)하는 경우 필요합니다. 문제는 서로 다른 애플리케이션(여러 TRACE32 실행 파일 또는 다른 애플리케이션)에서 동일한 InterCom 포트 주소를 사용하여 발생합니다. PC에서 "netstat -a" 명령을 사용하여 사용 중인 포트를 확인할 수 있습니다. TRACE32의 경우, T32Start 구성에서 "Use Auto Increment Port: Yes" 옵션을 사용하여 이 문제를 해결할 수 있습니다. config.t32 파일을 사용하는 경우 다른 InterCom 포트를 수동으로 설정해야 합니다. 다른 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주십시오. 감사합니다. |