작성
·
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)
. . .
- 끝 -