사이트맵 보기

FAQ

리스트 게시판
[OS-aware debugging] 상태 표시줄에 "task error"가 표시되는 이유는 무엇인가요?

상태 줄에 빨간색 "task error" 메시지가 표시되면 TRACE32 OS 인식이 현재 작업 정보를 얻을 수 없음을 의미합니다:


OS 인식은 load된 커널 심볼을 사용하여 대상 메모리에 액세스하여 이 정보를 가져옵니다.

따라서 "task error"는 다음과 같은 이유 중 하나가 있을 수 있습니다:
- 커널 심볼이 load되지 않음
- 커널 객체 파일에 디버그 심볼이 포함되어 있지 않거나 축소된 심볼 정보로 컴파일
- 잘못된 커널 심볼
- 잘못된 TRANSlation 설정

- 커널은 아직 부팅되지 않았으며, awareness에 사용되는 커널의 데이터 구조는 아직 초기화되지 않음


지원이 필요하시면 TRACE32@mdstech.co.kr 로 연락주세요.


감사합니다.

[OS-aware debugging] OS-aware 문제 해결하는 방법

문제 증상:

  • TASK.DTask, TASK.Process 등 일부 또는 모든 "Awareness 창"에서 에러가 발생하거나 화면에 해시 패턴("///////")이 나타납니다.
  • Linux 부팅 후 대상(target)이 중지되었을 때 현재 작업(task)이 표시되지 않으며, "(task error)" 또는 "(other)" 메시지가 출력됩니다.
  • List 창에 space-id가 0xFFFF가 표시됩니다
  • .



문제 해결 방법

1. 커널 구성 확인

이 문제는 다음과 같은 커널 구성 문제로 인해 발생할 수 있습니다:

  • "디버그 정보를 포함하여 커널 컴파일" 설정이 누락된 경우 (CONFIG_DEBUG_INFO).
  • "디버깅 정보 축소" 설정이 활성화된 경우 (CONFIG_DEBUG_REDUCED).

C:T32pdftraining_rtos_linux.pdf 문서의 "Kernel Configuration" 섹션을 참고하여 설정을 확인하세요.


2. 메모리 변환 설정(Translation) 비활성화

번역 설정이 문제의 원인일 수 있습니다.

  • 해결 방법:
    B::TRANSlation.OFF 명령을 사용하여 주소 변환 설정을 비활성화한 후 결과가 개선되는지 확인하세요.
  • 자동 감지 스크립트:
    Arm 및 Arm64 환경을 위한 자동 감지 스크립트를 제공합니다.
    경로:
    C:T32demoarmkernellinuxboardgeneric-templatedetect_translation.cmm
  • 스크립트 헤더를 주의 깊게 읽으세요.

스크립트 실행 중 에러가 발생하면, 기술지원 메일을 보내주세요.


3. 로드된 vmlinux와 실행 중인 커널 바이너리의 일치 여부 확인

    확인 절차:
    1. 터미널에서 다음 명령을 실행하여 대상 Linux 배너 정보를 가져옵니다:
      cat /proc/version
    2. 디버거 가상 메모리에 vmlinux 파일을 로드합니다:
      Data.LOAD.Elf vmlinux AVM:0 /NoSymbol
    3. 로딩한 vmlinuxlinux_banner 정보를 덤프합니다:

      Data AVM:linux_banner /NoHex /NoOrient
    4. 두 문자열을 timestamp와 함께 비교합니다.

4. 주의사항

경우에 따라 Linux 배너 비교에서 동일한 문자열을 표시하더라도 심볼이 일치하지 않을 수 있습니다.
대표적인 예는 OpenEmbedded / bitbake가 동일한 폴더에 있는 여러 커널 변형을 컴파일할 수 있다는 사실 때문입니다.
각 결과 파일은 배포 폴더로 이동하며, 일반적으로 빌드 단계에서는 동일한 파일의 변형이 여러 개인 경우 포스트픽스를 추가합니다.
예를 들어 '이미지-5.10-minimal', '이미지-5.10-xen'... 그러나 각 빌드 실행의 'vmlinux' 파일에 대해서는 이 작업이 수행되지 않습니다.
예를 들어 커널이 한 번 빌드된 후 나중에 'initrd'에 내장되는 경우가 있습니다.

일반적으로 모든 커널 심볼에 적용되는 또 다른 함정은 Linux 5.9에서 '0x80000' 오프셋이 커널에서 제거되었다는 것입니다.
하지만 일부 부트로더는 여전히 '0x80000' 오프셋으로 커널을 시작합니다.
이렇게 하면 커널이 제대로 정렬된 다음 주소 위/아래로 재배치됩니다.


"C:T32pdftraining_rtos_linux.pdf" 문서를 참조하여 자세한 정보를 확인하시거나 TRACE32@mdstech.co.kr로 문의주세요.

감사합니다.

[OS-aware debugging] TASK.STacK 창에서 (other)는 무슨 의미인가요?

TRACE32는 current task를 감지하고 current task의 스택포인터를 해당 태스크의 라인에 표시합니다.

만약 current task를 TASK.StacK에 있는 task 중 하나로 명시할 수 없거나,

현재 stack pointer가 TASK.STacK 에 있는 task의 stack 영역에 포함되지 않은 경우 (other)라고 표시합니다.



추가로 궁금한 사항은 TRACE32@mdstech.co.kr 로 문의 주세요.

감사합니다.

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