STM32에서 코드, 로다타, RW-data, ZI-data의 의미

919 단어
keil 컴파일 프로젝트를 사용하여hex를 생성할 때 프로그램의 크기와 차지하는 메모리를 제공합니다.그렇다면 도대체 이 메시지를 어떻게 봤을까?
Code: 프로그램 코드 섹션입니다.
RO-DAta: 프로그램이 정의한 상수와const형 데이터를 나타낸다.
RW-DAta: 초기화된 정적 변수의 초기 값을 나타냅니다.
ZI-DAta: 초기화되지 않은 정적 변수를 나타내며 초기 값이 없는 변수입니다.
#define DATA (0x10000000) /* RO-Data */
char const GcChar = 5; /* RO-Data */
char GcStr[] = "string."; /* RW-Data */
char GcZero; /* ZI-Data */

여기서,
ROM(Flash) Size = Code+RO-Data+RW-Data;
RAM Size = RW-Data+ZI-Data;
왜 상술한 RW-DAta는 Flash와 RAM을 차지하는가, 변수는 RAM에 놓인 것이 아닌가.
Flash 사용RW 데이터는 ZI처럼'무중생유'할 수 없기 때문에 ZI단 데이터는 그 소재만을 요구한다
의 영역을 모두 0으로 초기화하기 때문에 컴파일러가 제시한 ZI 기지와 크기에 따라 해당하는 RAM을
낱개로 정리하다.그러나 RW 세그먼트 데이터는 이렇게 하지 않기 때문에 컴파일러는 모든 RW 세그먼트 데이터에 값을 부여하기 위해 먼저 RW 세그먼트를
의 모든 초기 값을 Flash에 저장하고 프로그램이 실행될 때 Flash의 데이터를 RAM으로 운반하기 때문에 RW
세그먼트는 Flash를 사용하고 RAM을 사용하며 공간 크기는 동일합니다.
 
내용은 에서 참고하였다.

좋은 웹페이지 즐겨찾기