__attribute__(section) 으로 변수 초기값 설정
글쓴이: 파비안 / 작성시간: 목, 2021/11/25 - 10:01오전
변수를 특정 영역에 위치시키고 초기값을 부여할려고 아래와 같이 작성했습니다.
uint8_t ar[4] __attribute__ ((section(".share"))) = {1, 2, 3, 4};
uint8_t ar[4] __attribute__ ((section(".share"), nocommon)) = {1, 2, 3, 4};
안되더군요.
attribute 로 위치를 지정한 변수에 특정 초기값을 설정하려면 어떻게 하면 되나요?
Forums:
초기화가 되지 않은 글로벌 변수들은 빌드할때 특정
초기화가 되지 않은 글로벌 변수들은 빌드할때 특정 섹션에 배치가 되고 런타임에서 main 들어가기 전에 일괄 0으로 밀어버립니다. 임의로 지정한 섹션에 속한 변수라면 런타임이 어떻게 초기화를 시켜야 할지 모르기 때문에 초기화가 안될거 같네요.
어떤 게 안되시나요?
제가 위 구문을 gcc로 빌드하였을 때는 .share 섹션에 변수들이 잘 들어가 있는 것을 확인할 수 있었습니다.
어떤 환경에서 어떻게 빌드하셨나요?
에러 원인이 다른데 있었네요.
STM32F767 + FreeRTOS
link discrptor에 section 설정할 때 절대주소 위치도 설정했었는데 이미 다른 변수에 할당된 위치라 이동할 수 없는 곳이었고 그래서 발생한 에러였네요. 감사합니다.
댓글 달기