В настоящее время я работаю над созданием программного обеспечения для микроконтроллера SAM7X256 в C. На устройстве работает ОС contiki, и я использую toolchain yagarto.
При изучении файла карты (чтобы выяснить, почему область .text выросла настолько), я обнаружил, что несколько kb области .text, где назначено для поддержки поддержки (см. ниже)
.text 0x00116824 0xee4 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(unwind-arm.o)
0x00116c4c _Unwind_VRS_Get
......
0x0011763c __gnu_Unwind_Backtrace
.text 0x00117708 0x1b0 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(libunwind.o)
0x00117708 __restore_core_regs
0x00117708 restore_core_regs
....
0x00117894 _Unwind_Backtrace
.text 0x001178b8 0x558 c:/toolchains/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.2\libgcc.a(pr-support.o)
0x00117958 __gnu_unwind_execute
...
0x00117e08 _Unwind_GetTextRelBase
Я попытался найти информацию о разматывании и нашел 1 и 2. Однако мне все еще не ясно следующее:
- Когда/зачем мне нужна поддержка для размотки?
- Какая часть моего кода вызывает связь pr-support.o, unwind-arm.o и libunwind.o?
- Если это применимо, как мне избежать ссылки на элементы ниже.
В случае необходимости я включаю ссылку на полный файл .
Заранее благодарим за помощь
Изменить 1: Добавление команд компоновщика
CC = arm-none-eabi-gcc
CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
-I$(CONTIKI_CPU)/dbg-io \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \
-Wall $(ARCH_FLAGS) -g -D SUBTARGET=$(SUBTARGET)
CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN -ffunction-sections
LDFLAGS += -L $(CONTIKI_CPU) --verbose -T $(LINKERSCRIPT) -nostartfiles -Wl,-Map,$(TARGET).map
$(CC) $(LDFLAGS) $(CFLAGS) -nostartfiles -o project.elf -lc Project.a