인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

규철님의 프로필 이미지
규철

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s319_RISC 프로세서의 단점(feat. Branch)

s319 강의 질문

작성

·

1.1K

2

s319 강의에서 1분쯤에 실습프로그램을 컴파일 할때 오류가 발생했습니다. 어떻게 해결할 수 있을지 알려주세요. 오류 메세지를 봐서는 flash메모리에 문제가 생긴거 같습니다.

00_CORTEX_02_ASSEMBLY2_f429.elf section `.text' will not fit in region `FLASH'

region `FLASH' overflowed by 18808 bytes 

콘솔창에 makefile 64줄에 error가 있다고 나와서 사진 첨부합니다.

   

답변 1

1

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. 규철님!

플래시 메모리의 문제는 아니고요, <libs.s> 파일의 라인번호 49의 숫자(2100000)를 작은 값으로 바꾸어 보시기 바랍니다. 해당 숫자가 큰 값일 수록 프로그램의 크기는 커지게 되고, 따라서 그 값이 너무 커지면 플래시 메모리에 프로그램이 저장이 안되기 때문에 나오는 에러 메시지 입니다.

lbl03:

b _exit1

nop

.space 2100000 <------------- 이 값보다 작은 값으로 수정해보세요

 

 

규철님의 프로필 이미지
규철
질문자

빠른 답변 감사합니다! 

코드가 컴파일 된 후 실행파일이 플래쉬메모리의 .text 섹션에 올라가야 되는데 .text 섹션의 다음 섹션을 침범해서 오류가 발생한 것으로 이해하는 것이 맞나요?? 

또한 이런 섹션들의 메모리 주소 영역은 startup 코드에서 직접 설정하는 것인지 궁금합니다!

홍영기님의 프로필 이미지
홍영기
지식공유자

코드가 컴파일 된 후 실행파일이 플래쉬메모리의 .text 섹션에 올라가야 되는데 .text 섹션의 다음 섹션을 침범해서 오류가 발생한 것으로 이해하는 것이 맞나요?? 

ANS) 아마도 'OVERFLOW' 라는 단어 때문에 침범이라고 느끼시는 것 같습니다. 그건 아니고 단순히 프로그램의 크기가 플래시메모리의 크기보다 커져서 들어갈 수 없는 것으로 이해하시면 됩니다:)

또한 이런 섹션들의 메모리 주소 영역은 startup 코드에서 직접 설정하는 것인지 궁금합니다!

ANS) 영상 s707_링커 스크립트 파일 분석(29:07) 편 에서 궁금한 점들이 해결되실 것 같습니다:)

 

규철님의 프로필 이미지
규철

작성한 질문수

질문하기