임베디드 소스코드를 보다 보면 가끔 변수 타입 앞에 단어 volatile 하나가 더 붙어 있는 경우를 볼 수 있습니다. 뭐 특별한 기능을 하고 있는 것 같지도 않은데 말이죠. 1. volatile의 정의 영어 단어로서 volatile 의미는 휘발성의, 불안정한, 휘발하는 뜻을 가지고 있습니다. 이런 의미로 프로그래밍에서 volatile은 컴파일러에게 특정 변수의 값이 프로그램 흐름에 의해 예측할 수 없으므로, 항상 메모리에서 직접 읽고 쓰도록 지시하는 키워드입니다. 최적화 과정에서 해당 변수의 값이 캐시 되지 않도록 보장하고 주로 하드웨어 레지스터, 멀티스레드 환경의 공유 변수, 인터럽트 핸들러에서 사용되는 변수에 적용됩니다. 2. 하드웨어 코드 예시 변수의 값을 최적화하지 말고 메모리에서 직접..