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

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

작성한 질문수

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

s334_LDR, STR 명령어

.libs_sector 에 대해서

작성

·

185

1

s334 강의에서 .libs_sector 가 링커스크립트에서 .data 섹션에 위치할 수 있도록 설정해 주어서 ram 영역에 존재한다고 말씀하셨는데, 그럼 링커스크립트에서 따로 설정해 주지 않는다면 libs_sector 레이블 부분은 flash메모리인 .text 섹션이나 .rodata 섹션에 존재한다고 이해하는 것이 맞나요?? 제 생각이 맞다면 정확히 어느 섹션에 위치하는지 알려주시면 감사하겠습니다!

답변 1

1

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

안녕하세요, 규철님!

libs.s 파일내 선언되어 있는 'libs_sector'는 코드는 아니고 상수 테이블이기 때문에, 링커스크립트 파일내에 특별히 명시되지 않는 경우, 이 영역은 별도의 세그먼트로 만들어집니다.

RAM 영역이 아닌 ROM(FLASH) 영역에 선언되며, 실제 만들어진 리포트파일(map파일)에 따르면 'libs_sector' 세그먼트는 .rodata 세그먼트 직후에 위치하고 있는 것이 확인됩니다.

 

00_CORTEX_02_ASSEMBLY2_f429.map 파일의 내용 일부

. . .

 

 .rodata.__sf_fake_stdout

                0x0000000008003d48       0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.macos64_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-findfp.o)

                0x0000000008003d48                __sf_fake_stdout

 .rodata._vfprintf_r.str1.1

                0x0000000008003d68       0x11 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.macos64_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf.o)

 .rodata._printf_i.str1.1

                0x0000000008003d79       0x22 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.macos64_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o)

                0x0000000008003d9c                . = ALIGN (0x4)

 *fill*         0x0000000008003d9b        0x1 

 

.libs_sector    0x0000000008003d9c       0x2c

 .libs_sector   0x0000000008003d9c       0x2c ./Core/Src/libs.o

 

.ARM.extab      0x0000000008003dc8        0x0

                0x0000000008003dc8                . = ALIGN (0x4)

 *(.ARM.extab* .gnu.linkonce.armextab.*)

                0x0000000008003dc8                . = ALIGN (0x4)

 

. . . 

 

- 끝 -

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

작성한 질문수

질문하기