VisualStudio.C++.C#/C . C++
C. C++. 메모리 직접 접근
i.got.it
2020. 1. 20. 19:39
메모리 주소 ( 예. 0xF000F100 등 아무거나 시스템에서 메모리 주소로 사용하고 있는 것 ) 에 직접 접근하여 값 uint32_t 값 기록하는 방법.
임베디드 시스템 이라면 메모리 주소는 GPIO 포트 출력 설정하는 레지스터 주소일수도있고, 플레시 메모리 영역일수도 있다.
// 코드 의미. 주소에 해당하는 숫자를 uint32_t 포인터로 처리하고 그것의 값 * 에 0xFF 대입하라.
// volatile 은 컴파일러 (특히 GCC) 의 최적화 옵션 적용하지 말라는 설정. 코드에 기록된 그대로 컴파일 하라는 의미.
*((volatile uint32_t *) 0xF000F100 ) = 0xFF;
// 매번 위 구문 타이핑 하기 번거로우니 매크로로 정의하면 사용하기 편리하다.
#define MEM_LED (*((volatile uint32_t *) 0xF000F100 ))
MEM_LED = 0xFF;
MEM_LED = 0x00;
연관
- GCC 최적화 옵션 적용하여 실행결과 엉망되는 사례.
첫 등록 : 2020년 1월 20일
최종 수정 :
단축 주소 : https://igotit.tistory.com/2450