가상 메모리 주소는 어떻게 설정하나요?

수정일 Fri, 22 Apr 2022 시간: 09:04 AM

   

#define G_STR_TAG (*(volatile struct g_str_tag *) 0xAAAAA000UL)

typedef unsigned int uint32_t;
typedef volatile uint32_t vuint32_t;

struct g_str_tag {
  union {
    vuint32_t Reset;
    struct {
      vuint32_t CLOSE:1;

    } AA;
  } TMP;
};
void testMe (void)
{
  while(0 == (G_STR_TAG.TMP.AA.CLOSE))
  {
    ;
  }
}

   


위 testMe() 함수에 대한 테스트를 진행하기 위해서는 아래의 가상 메모리 설정 추가와  while() 문에서 사용하신 조건

(*(volatile struct g_str_tag *) 0xAAAAA000UL).TMP.AA.CLOSE  에 대한 입력을 하시면 될 것 같습니다.


** 가상 메모리 설정 기능은, 실제 대상 PC에 설치된 Visual Studio 혹은 GCC 컴파일러를 사용하는 호스트용 툴체인에서는 적용되지 않으며,

호스트용 툴체인을 변환 툴체인으로 사용하는 타깃 툴체인에서만 적용됩니다.

 

1. 가상 메모리 설정 방법

창 - 환경설정 - 테스트 - 가상 메모리 주소 메뉴에서 [추가] 버튼을 이용해 사용하신 주소 범위를 입력한다.

가상 메모리 주소는 작은 단위로 등록하는게 좋습니다. Windows(OS) 메모리 상태에 따라 큰 범위의 메모리는 등록이 안될 수도 있습니다.




2. 프로젝트 특성 - 테스트 - 가상 메모리 주소 메뉴에서 위 입력한 가상 주소를 선택한다.



3. testMe_test 의 테스트 정보 탭에서 함수 호출 전 코드에 아래와 같이 해당 변수에 값을 받을 수 있는 CS_UINT_INPUT 매크로를

사용하여 값을 입력합니다.

(*(volatile struct g_str_tag *) 0xAAAAA000UL).TMP.AA.CLOSE = CS_UINT_INPUT(unsigned int,"G_STR_TAG.TMP.AA.CLOSE" );



4. 테스트 케이스에 추가한 입력 변수 G_STR_TAG.TMP.AA.CLOSE 에 0 과 1을 각각 입력 한다.


5. 실행 - [재빌드 후 유닛테스트 실행] 버튼을 클릭하여 다시 수행한다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.