diff --git a/D21ExampleMakefile b/D21ExampleMakefile index e79a845..2c5e3fa 100644 --- a/D21ExampleMakefile +++ b/D21ExampleMakefile @@ -1,3 +1,4 @@ +print-% : ; @echo $* = $($*) # Generated Variables PROJECT_NAME=testdir CC=arm-none-eabi-gcc @@ -11,8 +12,8 @@ AS=arm-none-eabi-as MCPU=cortex-m0plus MCU=__SAMD21J18A__ -LD_PATH=../ld -LD_SCRIPT=$(LD_PATH)/flash.ld +LD_PATH=../ESF/ld +LD_SCRIPT=$(LD_PATH)/samd21j18a_flash.ld # Generated Flags CFLAGS=-x c \ @@ -22,6 +23,7 @@ CFLAGS=-x c \ -mlong-calls \ -g3 \ -Wall \ +-c \ -std=gnu99 \ -D$(MCU) \ -mcpu=$(MCPU) \ @@ -33,8 +35,7 @@ $(DIR_INCLUDES) \ ELF_FLAGS=-Wl,--start-group -l m -Wl,--end-group -mthumb \ -Wl,-Map=$(QUOTE)$(PROJECT_NAME).map$(QUOTE) --specs=nano.specs -Wl,--gc-sections -mcpu=$(MCPU) \ --T$(QUOTE)$(LD_SCRIPT)$(QUOTE) \ --L$(QUOTE)$(LD_PATH)$(QUOTE) +-T$(QUOTE)$(LD_SCRIPT)$(QUOTE) HEX_FLAGS=-R .eeprom \ -R .fuse \ @@ -70,28 +71,50 @@ else endif # List the subdirectories for creating object files -SUB_DIRS= -# List the object files +SUB_DIRS+= \ +src \ +ESF/mcu/src + +OBJS+= \ +ESF/mcu/src/startup_samd21.o \ +ESF/mcu/src/system_samd21.o \ +src/main.o -OBJS_AS_ARGS += \ +# List the object files +OBJS_AS_ARGS+= \ +$(QUOTE)ESF/mcu/src/startup_samd21.o$(QUOTE) \ +$(QUOTE)ESF/mcu/src/system_samd21.o$(QUOTE) \ +$(QUOTE)src/main.o$(QUOTE) # List the directories containing header files -DIR_INCLUDES += \ +DIR_INCLUDES += \ +-I$(QUOTE)../ESF/hdi$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/component$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/instance$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/pio$(QUOTE) \ +-I$(QUOTE)../ESF/mcu/inc$(QUOTE) \ +-I$(QUOTE)../ESF/common/inc$(QUOTE) \ +-I$(QUOTE)../ESF/common/inc/cmsis$(QUOTE) \ +-I$(QUOTE)../inc$(QUOTE) # List the dependency files DEPS := $(OBJS:%.o=%.d) -DEPS_AS_ARGS += \ +DEPS_AS_ARGS := $(OBJS_AS_ARGS:%.o=%.d) vpath %.c ../ vpath %.s ../ vpath %.S ../ -# All Target + +.PHONY: debug clean + +# All Targets all: $(SUB_DIRS) $(PROJECT_NAME).elf \ $(PROJECT_NAME).bin \ $(PROJECT_NAME).hex \ $(PROJECT_NAME).eep \ $(PROJECT_NAME).lss + $(QUOTE)$(SIZE)$(QUOTE) $(QUOTE)$(PROJECT_NAME).elf$(QUOTE) # Linker target # Make ELF @@ -101,7 +124,6 @@ $(PROJECT_NAME).elf: $(OBJS) $(QUOTE)$(CC)$(QUOTE) -o $@ $(OBJS_AS_ARGS) $(ELF_FLAGS) @echo Finished building target: $@ - $(QUOTE)$(SIZE)$(QUOTE) $(QUOTE)$@$(QUOTE) # Make BIN $(PROJECT_NAME).bin: $(PROJECT_NAME).elf @@ -121,8 +143,7 @@ $(PROJECT_NAME).eep: $(PROJECT_NAME).elf # Make LSS $(PROJECT_NAME).lss: $(PROJECT_NAME).elf - $(QUOTE)$(OBJDUMP)$(QUOTE) -h -S $(QUOTE)$<$(QUOTE) - + $(QUOTE)$(OBJDUMP)$(QUOTE) -h -S $(QUOTE)$<$(QUOTE) > $(QUOTE)$@$(QUOTE) # Compiler targets %.o: %.c @@ -143,24 +164,23 @@ $(PROJECT_NAME).lss: $(PROJECT_NAME).elf $(QUOTE)$(CC)$(QUOTE) $(CFLAGS) -o $(QUOTE)$@$(QUOTE) $(QUOTE)$<$(QUOTE) @echo Finished building: $< -# Detect changes in the dependent files and recompile the respective object files. +$(SUB_DIRS): + $(MK_DIR) "$@" + ifneq ($(MAKECMDGOALS),clean) ifneq ($(strip $(DEPS)),) -include $(DEPS) endif endif -$(SUB_DIRS): - $(MK_DIR) "$@" - clean: rm -f $(OBJS_AS_ARGS) - rm -f $(OUTPUT_FILE_PATH) rm -f $(DEPS_AS_ARGS) - rm -f $(OUTPUT_FILE_NAME).a $(OUTPUT_FILE_NAME).hex $(OUTPUT_FILE_NAME).bin \ - $(OUTPUT_FILE_NAME).lss $(OUTPUT_FILE_NAME).eep $(OUTPUT_FILE_NAME).map \ - $(OUTPUT_FILE_NAME).srec + rm -f $(PROJECT_NAME).a $(PROJECT_NAME).hex $(PROJECT_NAME).bin \ + $(PROJECT_NAME).lss $(PROJECT_NAME).eep $(PROJECT_NAME).map \ + $(PROJECT_NAME).srec $(PROJECT_NAME).elf + +debug: $(PROJECT_NAME).elf + $(QUOTE)arm-none-eabi-gdb$(QUOTE) -iex $(QUOTE)target extended-remote localhost:3333$(QUOTE) $(PROJECT_NAME).elf -debug: $(OUTPUT_FILE_NAME).elf - $(QUOTE)arm-none-eabi-gdb$(QUOTE) -iex $(QUOTE)target extended-remote localhost:3333$(QUOTE) $(OUTPUT_FILE_NAME).elf QUOTE := " diff --git a/testdir/.igloo/.gdb_history b/testdir/.igloo/.gdb_history new file mode 100644 index 0000000..1c403e9 --- /dev/null +++ b/testdir/.igloo/.gdb_history @@ -0,0 +1,6 @@ +load +monitor reset +make +load +monitor reset +q diff --git a/testdir/.igloo/ESF/mcu/src/startup_samd21.d b/testdir/.igloo/ESF/mcu/src/startup_samd21.d new file mode 100644 index 0000000..81e2167 --- /dev/null +++ b/testdir/.igloo/ESF/mcu/src/startup_samd21.d @@ -0,0 +1,115 @@ +ESF/mcu/src/startup_samd21.d ESF/mcu/src/startup_samd21.o: \ + ../ESF/mcu/src/startup_samd21.c ../ESF/mcu/inc/samd21.h \ + ../ESF/mcu/inc/samd21j18a.h \ + /usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h \ + /usr/arm-none-eabi/include/stdint.h \ + /usr/arm-none-eabi/include/machine/_default_types.h \ + /usr/arm-none-eabi/include/sys/features.h \ + /usr/arm-none-eabi/include/_newlib_version.h \ + /usr/arm-none-eabi/include/sys/_intsup.h \ + /usr/arm-none-eabi/include/sys/_stdint.h \ + ../ESF/common/inc/cmsis/core_cm0plus.h \ + ../ESF/common/inc/cmsis/cmsis_version.h \ + ../ESF/common/inc/cmsis/cmsis_compiler.h \ + ../ESF/common/inc/cmsis/cmsis_gcc.h ../ESF/mcu/inc/system_samd21.h \ + ../ESF/hdi/component/ac.h ../ESF/hdi/component/adc.h \ + ../ESF/hdi/component/dac.h ../ESF/hdi/component/dmac.h \ + ../ESF/hdi/component/dsu.h ../ESF/hdi/component/eic.h \ + ../ESF/hdi/component/evsys.h ../ESF/hdi/component/gclk.h \ + ../ESF/hdi/component/hmatrixb.h ../ESF/hdi/component/i2s.h \ + ../ESF/hdi/component/mtb.h ../ESF/hdi/component/nvmctrl.h \ + ../ESF/hdi/component/pac.h ../ESF/hdi/component/pm.h \ + ../ESF/hdi/component/port.h ../ESF/hdi/component/rtc.h \ + ../ESF/hdi/component/sercom.h ../ESF/hdi/component/sysctrl.h \ + ../ESF/hdi/component/tc.h ../ESF/hdi/component/tcc.h \ + ../ESF/hdi/component/usb.h ../ESF/hdi/component/wdt.h \ + ../ESF/hdi/instance/ac.h ../ESF/hdi/instance/adc.h \ + ../ESF/hdi/instance/dac.h ../ESF/hdi/instance/dmac.h \ + ../ESF/hdi/instance/dsu.h ../ESF/hdi/instance/eic.h \ + ../ESF/hdi/instance/evsys.h ../ESF/hdi/instance/gclk.h \ + ../ESF/hdi/instance/sbmatrix.h ../ESF/hdi/instance/i2s.h \ + ../ESF/hdi/instance/mtb.h ../ESF/hdi/instance/nvmctrl.h \ + ../ESF/hdi/instance/pac0.h ../ESF/hdi/instance/pac1.h \ + ../ESF/hdi/instance/pac2.h ../ESF/hdi/instance/pm.h \ + ../ESF/hdi/instance/port.h ../ESF/hdi/instance/rtc.h \ + ../ESF/hdi/instance/sercom0.h ../ESF/hdi/instance/sercom1.h \ + ../ESF/hdi/instance/sercom2.h ../ESF/hdi/instance/sercom3.h \ + ../ESF/hdi/instance/sercom4.h ../ESF/hdi/instance/sercom5.h \ + ../ESF/hdi/instance/sysctrl.h ../ESF/hdi/instance/tc3.h \ + ../ESF/hdi/instance/tc4.h ../ESF/hdi/instance/tc5.h \ + ../ESF/hdi/instance/tc6.h ../ESF/hdi/instance/tc7.h \ + ../ESF/hdi/instance/tcc0.h ../ESF/hdi/instance/tcc1.h \ + ../ESF/hdi/instance/tcc2.h ../ESF/hdi/instance/usb.h \ + ../ESF/hdi/instance/wdt.h ../ESF/hdi/pio/samd21j18a.h +../ESF/mcu/inc/samd21.h: +../ESF/mcu/inc/samd21j18a.h: +/usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h: +/usr/arm-none-eabi/include/stdint.h: +/usr/arm-none-eabi/include/machine/_default_types.h: +/usr/arm-none-eabi/include/sys/features.h: +/usr/arm-none-eabi/include/_newlib_version.h: +/usr/arm-none-eabi/include/sys/_intsup.h: +/usr/arm-none-eabi/include/sys/_stdint.h: +../ESF/common/inc/cmsis/core_cm0plus.h: +../ESF/common/inc/cmsis/cmsis_version.h: +../ESF/common/inc/cmsis/cmsis_compiler.h: +../ESF/common/inc/cmsis/cmsis_gcc.h: +../ESF/mcu/inc/system_samd21.h: +../ESF/hdi/component/ac.h: +../ESF/hdi/component/adc.h: +../ESF/hdi/component/dac.h: +../ESF/hdi/component/dmac.h: +../ESF/hdi/component/dsu.h: +../ESF/hdi/component/eic.h: +../ESF/hdi/component/evsys.h: +../ESF/hdi/component/gclk.h: +../ESF/hdi/component/hmatrixb.h: +../ESF/hdi/component/i2s.h: +../ESF/hdi/component/mtb.h: +../ESF/hdi/component/nvmctrl.h: +../ESF/hdi/component/pac.h: +../ESF/hdi/component/pm.h: +../ESF/hdi/component/port.h: +../ESF/hdi/component/rtc.h: +../ESF/hdi/component/sercom.h: +../ESF/hdi/component/sysctrl.h: +../ESF/hdi/component/tc.h: +../ESF/hdi/component/tcc.h: +../ESF/hdi/component/usb.h: +../ESF/hdi/component/wdt.h: +../ESF/hdi/instance/ac.h: +../ESF/hdi/instance/adc.h: +../ESF/hdi/instance/dac.h: +../ESF/hdi/instance/dmac.h: +../ESF/hdi/instance/dsu.h: +../ESF/hdi/instance/eic.h: +../ESF/hdi/instance/evsys.h: +../ESF/hdi/instance/gclk.h: +../ESF/hdi/instance/sbmatrix.h: +../ESF/hdi/instance/i2s.h: +../ESF/hdi/instance/mtb.h: +../ESF/hdi/instance/nvmctrl.h: +../ESF/hdi/instance/pac0.h: +../ESF/hdi/instance/pac1.h: +../ESF/hdi/instance/pac2.h: +../ESF/hdi/instance/pm.h: +../ESF/hdi/instance/port.h: +../ESF/hdi/instance/rtc.h: +../ESF/hdi/instance/sercom0.h: +../ESF/hdi/instance/sercom1.h: +../ESF/hdi/instance/sercom2.h: +../ESF/hdi/instance/sercom3.h: +../ESF/hdi/instance/sercom4.h: +../ESF/hdi/instance/sercom5.h: +../ESF/hdi/instance/sysctrl.h: +../ESF/hdi/instance/tc3.h: +../ESF/hdi/instance/tc4.h: +../ESF/hdi/instance/tc5.h: +../ESF/hdi/instance/tc6.h: +../ESF/hdi/instance/tc7.h: +../ESF/hdi/instance/tcc0.h: +../ESF/hdi/instance/tcc1.h: +../ESF/hdi/instance/tcc2.h: +../ESF/hdi/instance/usb.h: +../ESF/hdi/instance/wdt.h: +../ESF/hdi/pio/samd21j18a.h: diff --git a/testdir/.igloo/ESF/mcu/src/startup_samd21.o b/testdir/.igloo/ESF/mcu/src/startup_samd21.o new file mode 100644 index 0000000..b073340 Binary files /dev/null and b/testdir/.igloo/ESF/mcu/src/startup_samd21.o differ diff --git a/testdir/.igloo/ESF/mcu/src/system_samd21.d b/testdir/.igloo/ESF/mcu/src/system_samd21.d new file mode 100644 index 0000000..5363681 --- /dev/null +++ b/testdir/.igloo/ESF/mcu/src/system_samd21.d @@ -0,0 +1,115 @@ +ESF/mcu/src/system_samd21.d ESF/mcu/src/system_samd21.o: \ + ../ESF/mcu/src/system_samd21.c ../ESF/mcu/inc/samd21.h \ + ../ESF/mcu/inc/samd21j18a.h \ + /usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h \ + /usr/arm-none-eabi/include/stdint.h \ + /usr/arm-none-eabi/include/machine/_default_types.h \ + /usr/arm-none-eabi/include/sys/features.h \ + /usr/arm-none-eabi/include/_newlib_version.h \ + /usr/arm-none-eabi/include/sys/_intsup.h \ + /usr/arm-none-eabi/include/sys/_stdint.h \ + ../ESF/common/inc/cmsis/core_cm0plus.h \ + ../ESF/common/inc/cmsis/cmsis_version.h \ + ../ESF/common/inc/cmsis/cmsis_compiler.h \ + ../ESF/common/inc/cmsis/cmsis_gcc.h ../ESF/mcu/inc/system_samd21.h \ + ../ESF/hdi/component/ac.h ../ESF/hdi/component/adc.h \ + ../ESF/hdi/component/dac.h ../ESF/hdi/component/dmac.h \ + ../ESF/hdi/component/dsu.h ../ESF/hdi/component/eic.h \ + ../ESF/hdi/component/evsys.h ../ESF/hdi/component/gclk.h \ + ../ESF/hdi/component/hmatrixb.h ../ESF/hdi/component/i2s.h \ + ../ESF/hdi/component/mtb.h ../ESF/hdi/component/nvmctrl.h \ + ../ESF/hdi/component/pac.h ../ESF/hdi/component/pm.h \ + ../ESF/hdi/component/port.h ../ESF/hdi/component/rtc.h \ + ../ESF/hdi/component/sercom.h ../ESF/hdi/component/sysctrl.h \ + ../ESF/hdi/component/tc.h ../ESF/hdi/component/tcc.h \ + ../ESF/hdi/component/usb.h ../ESF/hdi/component/wdt.h \ + ../ESF/hdi/instance/ac.h ../ESF/hdi/instance/adc.h \ + ../ESF/hdi/instance/dac.h ../ESF/hdi/instance/dmac.h \ + ../ESF/hdi/instance/dsu.h ../ESF/hdi/instance/eic.h \ + ../ESF/hdi/instance/evsys.h ../ESF/hdi/instance/gclk.h \ + ../ESF/hdi/instance/sbmatrix.h ../ESF/hdi/instance/i2s.h \ + ../ESF/hdi/instance/mtb.h ../ESF/hdi/instance/nvmctrl.h \ + ../ESF/hdi/instance/pac0.h ../ESF/hdi/instance/pac1.h \ + ../ESF/hdi/instance/pac2.h ../ESF/hdi/instance/pm.h \ + ../ESF/hdi/instance/port.h ../ESF/hdi/instance/rtc.h \ + ../ESF/hdi/instance/sercom0.h ../ESF/hdi/instance/sercom1.h \ + ../ESF/hdi/instance/sercom2.h ../ESF/hdi/instance/sercom3.h \ + ../ESF/hdi/instance/sercom4.h ../ESF/hdi/instance/sercom5.h \ + ../ESF/hdi/instance/sysctrl.h ../ESF/hdi/instance/tc3.h \ + ../ESF/hdi/instance/tc4.h ../ESF/hdi/instance/tc5.h \ + ../ESF/hdi/instance/tc6.h ../ESF/hdi/instance/tc7.h \ + ../ESF/hdi/instance/tcc0.h ../ESF/hdi/instance/tcc1.h \ + ../ESF/hdi/instance/tcc2.h ../ESF/hdi/instance/usb.h \ + ../ESF/hdi/instance/wdt.h ../ESF/hdi/pio/samd21j18a.h +../ESF/mcu/inc/samd21.h: +../ESF/mcu/inc/samd21j18a.h: +/usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h: +/usr/arm-none-eabi/include/stdint.h: +/usr/arm-none-eabi/include/machine/_default_types.h: +/usr/arm-none-eabi/include/sys/features.h: +/usr/arm-none-eabi/include/_newlib_version.h: +/usr/arm-none-eabi/include/sys/_intsup.h: +/usr/arm-none-eabi/include/sys/_stdint.h: +../ESF/common/inc/cmsis/core_cm0plus.h: +../ESF/common/inc/cmsis/cmsis_version.h: +../ESF/common/inc/cmsis/cmsis_compiler.h: +../ESF/common/inc/cmsis/cmsis_gcc.h: +../ESF/mcu/inc/system_samd21.h: +../ESF/hdi/component/ac.h: +../ESF/hdi/component/adc.h: +../ESF/hdi/component/dac.h: +../ESF/hdi/component/dmac.h: +../ESF/hdi/component/dsu.h: +../ESF/hdi/component/eic.h: +../ESF/hdi/component/evsys.h: +../ESF/hdi/component/gclk.h: +../ESF/hdi/component/hmatrixb.h: +../ESF/hdi/component/i2s.h: +../ESF/hdi/component/mtb.h: +../ESF/hdi/component/nvmctrl.h: +../ESF/hdi/component/pac.h: +../ESF/hdi/component/pm.h: +../ESF/hdi/component/port.h: +../ESF/hdi/component/rtc.h: +../ESF/hdi/component/sercom.h: +../ESF/hdi/component/sysctrl.h: +../ESF/hdi/component/tc.h: +../ESF/hdi/component/tcc.h: +../ESF/hdi/component/usb.h: +../ESF/hdi/component/wdt.h: +../ESF/hdi/instance/ac.h: +../ESF/hdi/instance/adc.h: +../ESF/hdi/instance/dac.h: +../ESF/hdi/instance/dmac.h: +../ESF/hdi/instance/dsu.h: +../ESF/hdi/instance/eic.h: +../ESF/hdi/instance/evsys.h: +../ESF/hdi/instance/gclk.h: +../ESF/hdi/instance/sbmatrix.h: +../ESF/hdi/instance/i2s.h: +../ESF/hdi/instance/mtb.h: +../ESF/hdi/instance/nvmctrl.h: +../ESF/hdi/instance/pac0.h: +../ESF/hdi/instance/pac1.h: +../ESF/hdi/instance/pac2.h: +../ESF/hdi/instance/pm.h: +../ESF/hdi/instance/port.h: +../ESF/hdi/instance/rtc.h: +../ESF/hdi/instance/sercom0.h: +../ESF/hdi/instance/sercom1.h: +../ESF/hdi/instance/sercom2.h: +../ESF/hdi/instance/sercom3.h: +../ESF/hdi/instance/sercom4.h: +../ESF/hdi/instance/sercom5.h: +../ESF/hdi/instance/sysctrl.h: +../ESF/hdi/instance/tc3.h: +../ESF/hdi/instance/tc4.h: +../ESF/hdi/instance/tc5.h: +../ESF/hdi/instance/tc6.h: +../ESF/hdi/instance/tc7.h: +../ESF/hdi/instance/tcc0.h: +../ESF/hdi/instance/tcc1.h: +../ESF/hdi/instance/tcc2.h: +../ESF/hdi/instance/usb.h: +../ESF/hdi/instance/wdt.h: +../ESF/hdi/pio/samd21j18a.h: diff --git a/testdir/.igloo/ESF/mcu/src/system_samd21.o b/testdir/.igloo/ESF/mcu/src/system_samd21.o new file mode 100644 index 0000000..1903cf7 Binary files /dev/null and b/testdir/.igloo/ESF/mcu/src/system_samd21.o differ diff --git a/testdir/.igloo/Makefile b/testdir/.igloo/Makefile index e79a845..2c5e3fa 100644 --- a/testdir/.igloo/Makefile +++ b/testdir/.igloo/Makefile @@ -1,3 +1,4 @@ +print-% : ; @echo $* = $($*) # Generated Variables PROJECT_NAME=testdir CC=arm-none-eabi-gcc @@ -11,8 +12,8 @@ AS=arm-none-eabi-as MCPU=cortex-m0plus MCU=__SAMD21J18A__ -LD_PATH=../ld -LD_SCRIPT=$(LD_PATH)/flash.ld +LD_PATH=../ESF/ld +LD_SCRIPT=$(LD_PATH)/samd21j18a_flash.ld # Generated Flags CFLAGS=-x c \ @@ -22,6 +23,7 @@ CFLAGS=-x c \ -mlong-calls \ -g3 \ -Wall \ +-c \ -std=gnu99 \ -D$(MCU) \ -mcpu=$(MCPU) \ @@ -33,8 +35,7 @@ $(DIR_INCLUDES) \ ELF_FLAGS=-Wl,--start-group -l m -Wl,--end-group -mthumb \ -Wl,-Map=$(QUOTE)$(PROJECT_NAME).map$(QUOTE) --specs=nano.specs -Wl,--gc-sections -mcpu=$(MCPU) \ --T$(QUOTE)$(LD_SCRIPT)$(QUOTE) \ --L$(QUOTE)$(LD_PATH)$(QUOTE) +-T$(QUOTE)$(LD_SCRIPT)$(QUOTE) HEX_FLAGS=-R .eeprom \ -R .fuse \ @@ -70,28 +71,50 @@ else endif # List the subdirectories for creating object files -SUB_DIRS= -# List the object files +SUB_DIRS+= \ +src \ +ESF/mcu/src + +OBJS+= \ +ESF/mcu/src/startup_samd21.o \ +ESF/mcu/src/system_samd21.o \ +src/main.o -OBJS_AS_ARGS += \ +# List the object files +OBJS_AS_ARGS+= \ +$(QUOTE)ESF/mcu/src/startup_samd21.o$(QUOTE) \ +$(QUOTE)ESF/mcu/src/system_samd21.o$(QUOTE) \ +$(QUOTE)src/main.o$(QUOTE) # List the directories containing header files -DIR_INCLUDES += \ +DIR_INCLUDES += \ +-I$(QUOTE)../ESF/hdi$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/component$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/instance$(QUOTE) \ +-I$(QUOTE)../ESF/hdi/pio$(QUOTE) \ +-I$(QUOTE)../ESF/mcu/inc$(QUOTE) \ +-I$(QUOTE)../ESF/common/inc$(QUOTE) \ +-I$(QUOTE)../ESF/common/inc/cmsis$(QUOTE) \ +-I$(QUOTE)../inc$(QUOTE) # List the dependency files DEPS := $(OBJS:%.o=%.d) -DEPS_AS_ARGS += \ +DEPS_AS_ARGS := $(OBJS_AS_ARGS:%.o=%.d) vpath %.c ../ vpath %.s ../ vpath %.S ../ -# All Target + +.PHONY: debug clean + +# All Targets all: $(SUB_DIRS) $(PROJECT_NAME).elf \ $(PROJECT_NAME).bin \ $(PROJECT_NAME).hex \ $(PROJECT_NAME).eep \ $(PROJECT_NAME).lss + $(QUOTE)$(SIZE)$(QUOTE) $(QUOTE)$(PROJECT_NAME).elf$(QUOTE) # Linker target # Make ELF @@ -101,7 +124,6 @@ $(PROJECT_NAME).elf: $(OBJS) $(QUOTE)$(CC)$(QUOTE) -o $@ $(OBJS_AS_ARGS) $(ELF_FLAGS) @echo Finished building target: $@ - $(QUOTE)$(SIZE)$(QUOTE) $(QUOTE)$@$(QUOTE) # Make BIN $(PROJECT_NAME).bin: $(PROJECT_NAME).elf @@ -121,8 +143,7 @@ $(PROJECT_NAME).eep: $(PROJECT_NAME).elf # Make LSS $(PROJECT_NAME).lss: $(PROJECT_NAME).elf - $(QUOTE)$(OBJDUMP)$(QUOTE) -h -S $(QUOTE)$<$(QUOTE) - + $(QUOTE)$(OBJDUMP)$(QUOTE) -h -S $(QUOTE)$<$(QUOTE) > $(QUOTE)$@$(QUOTE) # Compiler targets %.o: %.c @@ -143,24 +164,23 @@ $(PROJECT_NAME).lss: $(PROJECT_NAME).elf $(QUOTE)$(CC)$(QUOTE) $(CFLAGS) -o $(QUOTE)$@$(QUOTE) $(QUOTE)$<$(QUOTE) @echo Finished building: $< -# Detect changes in the dependent files and recompile the respective object files. +$(SUB_DIRS): + $(MK_DIR) "$@" + ifneq ($(MAKECMDGOALS),clean) ifneq ($(strip $(DEPS)),) -include $(DEPS) endif endif -$(SUB_DIRS): - $(MK_DIR) "$@" - clean: rm -f $(OBJS_AS_ARGS) - rm -f $(OUTPUT_FILE_PATH) rm -f $(DEPS_AS_ARGS) - rm -f $(OUTPUT_FILE_NAME).a $(OUTPUT_FILE_NAME).hex $(OUTPUT_FILE_NAME).bin \ - $(OUTPUT_FILE_NAME).lss $(OUTPUT_FILE_NAME).eep $(OUTPUT_FILE_NAME).map \ - $(OUTPUT_FILE_NAME).srec + rm -f $(PROJECT_NAME).a $(PROJECT_NAME).hex $(PROJECT_NAME).bin \ + $(PROJECT_NAME).lss $(PROJECT_NAME).eep $(PROJECT_NAME).map \ + $(PROJECT_NAME).srec $(PROJECT_NAME).elf + +debug: $(PROJECT_NAME).elf + $(QUOTE)arm-none-eabi-gdb$(QUOTE) -iex $(QUOTE)target extended-remote localhost:3333$(QUOTE) $(PROJECT_NAME).elf -debug: $(OUTPUT_FILE_NAME).elf - $(QUOTE)arm-none-eabi-gdb$(QUOTE) -iex $(QUOTE)target extended-remote localhost:3333$(QUOTE) $(OUTPUT_FILE_NAME).elf QUOTE := " diff --git a/testdir/.igloo/src/main.d b/testdir/.igloo/src/main.d new file mode 100644 index 0000000..8aab107 --- /dev/null +++ b/testdir/.igloo/src/main.d @@ -0,0 +1,115 @@ +src/main.d src/main.o: ../src/main.c ../inc/igloo.h \ + ../ESF/mcu/inc/samd21.h ../ESF/mcu/inc/samd21j18a.h \ + /usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h \ + /usr/arm-none-eabi/include/stdint.h \ + /usr/arm-none-eabi/include/machine/_default_types.h \ + /usr/arm-none-eabi/include/sys/features.h \ + /usr/arm-none-eabi/include/_newlib_version.h \ + /usr/arm-none-eabi/include/sys/_intsup.h \ + /usr/arm-none-eabi/include/sys/_stdint.h \ + ../ESF/common/inc/cmsis/core_cm0plus.h \ + ../ESF/common/inc/cmsis/cmsis_version.h \ + ../ESF/common/inc/cmsis/cmsis_compiler.h \ + ../ESF/common/inc/cmsis/cmsis_gcc.h ../ESF/mcu/inc/system_samd21.h \ + ../ESF/hdi/component/ac.h ../ESF/hdi/component/adc.h \ + ../ESF/hdi/component/dac.h ../ESF/hdi/component/dmac.h \ + ../ESF/hdi/component/dsu.h ../ESF/hdi/component/eic.h \ + ../ESF/hdi/component/evsys.h ../ESF/hdi/component/gclk.h \ + ../ESF/hdi/component/hmatrixb.h ../ESF/hdi/component/i2s.h \ + ../ESF/hdi/component/mtb.h ../ESF/hdi/component/nvmctrl.h \ + ../ESF/hdi/component/pac.h ../ESF/hdi/component/pm.h \ + ../ESF/hdi/component/port.h ../ESF/hdi/component/rtc.h \ + ../ESF/hdi/component/sercom.h ../ESF/hdi/component/sysctrl.h \ + ../ESF/hdi/component/tc.h ../ESF/hdi/component/tcc.h \ + ../ESF/hdi/component/usb.h ../ESF/hdi/component/wdt.h \ + ../ESF/hdi/instance/ac.h ../ESF/hdi/instance/adc.h \ + ../ESF/hdi/instance/dac.h ../ESF/hdi/instance/dmac.h \ + ../ESF/hdi/instance/dsu.h ../ESF/hdi/instance/eic.h \ + ../ESF/hdi/instance/evsys.h ../ESF/hdi/instance/gclk.h \ + ../ESF/hdi/instance/sbmatrix.h ../ESF/hdi/instance/i2s.h \ + ../ESF/hdi/instance/mtb.h ../ESF/hdi/instance/nvmctrl.h \ + ../ESF/hdi/instance/pac0.h ../ESF/hdi/instance/pac1.h \ + ../ESF/hdi/instance/pac2.h ../ESF/hdi/instance/pm.h \ + ../ESF/hdi/instance/port.h ../ESF/hdi/instance/rtc.h \ + ../ESF/hdi/instance/sercom0.h ../ESF/hdi/instance/sercom1.h \ + ../ESF/hdi/instance/sercom2.h ../ESF/hdi/instance/sercom3.h \ + ../ESF/hdi/instance/sercom4.h ../ESF/hdi/instance/sercom5.h \ + ../ESF/hdi/instance/sysctrl.h ../ESF/hdi/instance/tc3.h \ + ../ESF/hdi/instance/tc4.h ../ESF/hdi/instance/tc5.h \ + ../ESF/hdi/instance/tc6.h ../ESF/hdi/instance/tc7.h \ + ../ESF/hdi/instance/tcc0.h ../ESF/hdi/instance/tcc1.h \ + ../ESF/hdi/instance/tcc2.h ../ESF/hdi/instance/usb.h \ + ../ESF/hdi/instance/wdt.h ../ESF/hdi/pio/samd21j18a.h +../inc/igloo.h: +../ESF/mcu/inc/samd21.h: +../ESF/mcu/inc/samd21j18a.h: +/usr/lib/gcc/arm-none-eabi/10.2.0/include/stdint.h: +/usr/arm-none-eabi/include/stdint.h: +/usr/arm-none-eabi/include/machine/_default_types.h: +/usr/arm-none-eabi/include/sys/features.h: +/usr/arm-none-eabi/include/_newlib_version.h: +/usr/arm-none-eabi/include/sys/_intsup.h: +/usr/arm-none-eabi/include/sys/_stdint.h: +../ESF/common/inc/cmsis/core_cm0plus.h: +../ESF/common/inc/cmsis/cmsis_version.h: +../ESF/common/inc/cmsis/cmsis_compiler.h: +../ESF/common/inc/cmsis/cmsis_gcc.h: +../ESF/mcu/inc/system_samd21.h: +../ESF/hdi/component/ac.h: +../ESF/hdi/component/adc.h: +../ESF/hdi/component/dac.h: +../ESF/hdi/component/dmac.h: +../ESF/hdi/component/dsu.h: +../ESF/hdi/component/eic.h: +../ESF/hdi/component/evsys.h: +../ESF/hdi/component/gclk.h: +../ESF/hdi/component/hmatrixb.h: +../ESF/hdi/component/i2s.h: +../ESF/hdi/component/mtb.h: +../ESF/hdi/component/nvmctrl.h: +../ESF/hdi/component/pac.h: +../ESF/hdi/component/pm.h: +../ESF/hdi/component/port.h: +../ESF/hdi/component/rtc.h: +../ESF/hdi/component/sercom.h: +../ESF/hdi/component/sysctrl.h: +../ESF/hdi/component/tc.h: +../ESF/hdi/component/tcc.h: +../ESF/hdi/component/usb.h: +../ESF/hdi/component/wdt.h: +../ESF/hdi/instance/ac.h: +../ESF/hdi/instance/adc.h: +../ESF/hdi/instance/dac.h: +../ESF/hdi/instance/dmac.h: +../ESF/hdi/instance/dsu.h: +../ESF/hdi/instance/eic.h: +../ESF/hdi/instance/evsys.h: +../ESF/hdi/instance/gclk.h: +../ESF/hdi/instance/sbmatrix.h: +../ESF/hdi/instance/i2s.h: +../ESF/hdi/instance/mtb.h: +../ESF/hdi/instance/nvmctrl.h: +../ESF/hdi/instance/pac0.h: +../ESF/hdi/instance/pac1.h: +../ESF/hdi/instance/pac2.h: +../ESF/hdi/instance/pm.h: +../ESF/hdi/instance/port.h: +../ESF/hdi/instance/rtc.h: +../ESF/hdi/instance/sercom0.h: +../ESF/hdi/instance/sercom1.h: +../ESF/hdi/instance/sercom2.h: +../ESF/hdi/instance/sercom3.h: +../ESF/hdi/instance/sercom4.h: +../ESF/hdi/instance/sercom5.h: +../ESF/hdi/instance/sysctrl.h: +../ESF/hdi/instance/tc3.h: +../ESF/hdi/instance/tc4.h: +../ESF/hdi/instance/tc5.h: +../ESF/hdi/instance/tc6.h: +../ESF/hdi/instance/tc7.h: +../ESF/hdi/instance/tcc0.h: +../ESF/hdi/instance/tcc1.h: +../ESF/hdi/instance/tcc2.h: +../ESF/hdi/instance/usb.h: +../ESF/hdi/instance/wdt.h: +../ESF/hdi/pio/samd21j18a.h: diff --git a/testdir/.igloo/src/main.o b/testdir/.igloo/src/main.o new file mode 100644 index 0000000..e784fe2 Binary files /dev/null and b/testdir/.igloo/src/main.o differ diff --git a/testdir/.igloo/testdir.bin b/testdir/.igloo/testdir.bin new file mode 100644 index 0000000..17d5d6a Binary files /dev/null and b/testdir/.igloo/testdir.bin differ diff --git a/testdir/.igloo/testdir.yml b/testdir/.igloo/testdir.eep similarity index 100% rename from testdir/.igloo/testdir.yml rename to testdir/.igloo/testdir.eep diff --git a/testdir/.igloo/testdir.elf b/testdir/.igloo/testdir.elf new file mode 100644 index 0000000..0ddd97f Binary files /dev/null and b/testdir/.igloo/testdir.elf differ diff --git a/testdir/.igloo/testdir.hex b/testdir/.igloo/testdir.hex new file mode 100644 index 0000000..a21d7b8 --- /dev/null +++ b/testdir/.igloo/testdir.hex @@ -0,0 +1,45 @@ +:100000002020002001010000FD000000FD00000094 +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000FD000000D3 +:100030000000000000000000FD000000FD000000C6 +:10004000FD000000FD000000FD000000FD000000BC +:10005000FD000000FD000000FD000000FD000000AC +:10006000FD000000FD000000FD000000FD0000009C +:10007000FD000000FD000000FD000000FD0000008C +:10008000FD000000FD000000FD000000FD0000007C +:10009000FD000000FD000000FD000000FD0000006C +:1000A000FD000000FD000000FD000000FD0000005C +:1000B0000000000010B5064C2378002B07D1054B3B +:1000C000002B02D0044800E000BF0123237010BDC4 +:1000D0000000002000000000C0020000044B10B52A +:1000E000002B03D00349044800E000BF10BDC04608 +:1000F0000000000004000020C0020000FEE7000035 +:100100002549264870B581420AD0254BC41E0022DD +:10011000A34203D303331A1A92089200214B984743 +:100120002148224BC11E0022994203D803331A1AD8 +:100130009208920000211E4B9847FF221D4B03217D +:1001400093431D4A0C2593600222082430261B4B42 +:100150001B485A62C3788B431343C370C378AB43C5 +:100160002343C370174B987BB043060020203043D5 +:100170009873987BA84304439C73987B88430243FD +:100180009A738023104A51680B4353600F4B984772 +:100190000F4B9847FEE7C046C00200000000002059 +:1001A000000000207D020000000000201C00002054 +:1001B0008F0200000000000000ED00E0FC70004134 +:1001C000005000410048004100400041350200005D +:1001D000D5010000134A144B116880200B43022103 +:1001E00030B51360114C124AC005FA2513686D0032 +:1001F0008B43034313606423C046013B002BFBD1B8 +:10020000013D002DF7D1FA2513686D0023400B4303 +:1002100013606423C046013B002BFBD1013D002D40 +:10022000F7D1E2E78044004102000040FFFFFFBF3A +:100230009044004170B500260C4D0D4C641BA41079 +:10024000A64209D1002600F02BF80A4D0A4C641B87 +:10025000A410A64205D170BDB300EB5898470136F3 +:10026000EEE7B300EB5898470136F2E7AC02000026 +:10027000AC020000AC020000B0020000002310B588 +:100280009A4200D110BDCC5CC4540133F8E703009E +:100290008218934200D1704719700133F9E70000CA +:1002A000F8B5C046F8BC08BC9E467047DD000000AB +:1002B000F8B5C046F8BC08BC9E467047B5000000C3 +:00000001FF diff --git a/testdir/.igloo/testdir.lss b/testdir/.igloo/testdir.lss new file mode 100644 index 0000000..627b306 --- /dev/null +++ b/testdir/.igloo/testdir.lss @@ -0,0 +1,365 @@ + +testdir.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 000002c0 00000000 00000000 00010000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .relocate 00000000 20000000 20000000 000102c0 2**0 + CONTENTS + 2 .bss 0000001c 20000000 20000000 00020000 2**2 + ALLOC + 3 .stack 00002004 2000001c 2000001c 00020000 2**0 + ALLOC + 4 .ARM.attributes 00000028 00000000 00000000 000102c0 2**0 + CONTENTS, READONLY + 5 .comment 0000001e 00000000 00000000 000102e8 2**0 + CONTENTS, READONLY + 6 .debug_info 00003d0a 00000000 00000000 00010306 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 7 .debug_abbrev 000003d9 00000000 00000000 00014010 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 8 .debug_aranges 00000048 00000000 00000000 000143e9 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 9 .debug_ranges 000000f0 00000000 00000000 00014431 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 10 .debug_macro 00011a5c 00000000 00000000 00014521 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 11 .debug_line 00000b0b 00000000 00000000 00025f7d 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 12 .debug_str 0006ed4e 00000000 00000000 00026a88 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_frame 000000dc 00000000 00000000 000957d8 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_loc 0000027c 00000000 00000000 000958b4 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +00000000 : + 0: 20 20 00 20 01 01 00 00 fd 00 00 00 fd 00 00 00 . ............ + ... + 2c: fd 00 00 00 00 00 00 00 00 00 00 00 fd 00 00 00 ................ + 3c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 4c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 5c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 6c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 7c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 8c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + 9c: fd 00 00 00 fd 00 00 00 fd 00 00 00 fd 00 00 00 ................ + ac: fd 00 00 00 00 00 00 00 ........ + +000000b4 <__do_global_dtors_aux>: + b4: b510 push {r4, lr} + b6: 4c06 ldr r4, [pc, #24] ; (d0 <__do_global_dtors_aux+0x1c>) + b8: 7823 ldrb r3, [r4, #0] + ba: 2b00 cmp r3, #0 + bc: d107 bne.n ce <__do_global_dtors_aux+0x1a> + be: 4b05 ldr r3, [pc, #20] ; (d4 <__do_global_dtors_aux+0x20>) + c0: 2b00 cmp r3, #0 + c2: d002 beq.n ca <__do_global_dtors_aux+0x16> + c4: 4804 ldr r0, [pc, #16] ; (d8 <__do_global_dtors_aux+0x24>) + c6: e000 b.n ca <__do_global_dtors_aux+0x16> + c8: bf00 nop + ca: 2301 movs r3, #1 + cc: 7023 strb r3, [r4, #0] + ce: bd10 pop {r4, pc} + d0: 20000000 .word 0x20000000 + d4: 00000000 .word 0x00000000 + d8: 000002c0 .word 0x000002c0 + +000000dc : + dc: 4b04 ldr r3, [pc, #16] ; (f0 ) + de: b510 push {r4, lr} + e0: 2b00 cmp r3, #0 + e2: d003 beq.n ec + e4: 4903 ldr r1, [pc, #12] ; (f4 ) + e6: 4804 ldr r0, [pc, #16] ; (f8 ) + e8: e000 b.n ec + ea: bf00 nop + ec: bd10 pop {r4, pc} + ee: 46c0 nop ; (mov r8, r8) + f0: 00000000 .word 0x00000000 + f4: 20000004 .word 0x20000004 + f8: 000002c0 .word 0x000002c0 + +000000fc : +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + fc: e7fe b.n fc + ... + +00000100 : + if (pSrc != pDest) { + 100: 4925 ldr r1, [pc, #148] ; (198 ) + 102: 4826 ldr r0, [pc, #152] ; (19c ) +{ + 104: b570 push {r4, r5, r6, lr} + if (pSrc != pDest) { + 106: 4281 cmp r1, r0 + 108: d00a beq.n 120 + *pDest++ = *pSrc++; + 10a: 4b25 ldr r3, [pc, #148] ; (1a0 ) + 10c: 1ec4 subs r4, r0, #3 + 10e: 2200 movs r2, #0 + 110: 42a3 cmp r3, r4 + 112: d303 bcc.n 11c + 114: 3303 adds r3, #3 + 116: 1a1a subs r2, r3, r0 + 118: 0892 lsrs r2, r2, #2 + 11a: 0092 lsls r2, r2, #2 + 11c: 4b21 ldr r3, [pc, #132] ; (1a4 ) + 11e: 4798 blx r3 + *pDest++ = 0; + 120: 4821 ldr r0, [pc, #132] ; (1a8 ) + 122: 4b22 ldr r3, [pc, #136] ; (1ac ) + 124: 1ec1 subs r1, r0, #3 + 126: 2200 movs r2, #0 + 128: 4299 cmp r1, r3 + 12a: d803 bhi.n 134 + 12c: 3303 adds r3, #3 + 12e: 1a1a subs r2, r3, r0 + 130: 0892 lsrs r2, r2, #2 + 132: 0092 lsls r2, r2, #2 + 134: 2100 movs r1, #0 + 136: 4b1e ldr r3, [pc, #120] ; (1b0 ) + 138: 4798 blx r3 + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + 13a: 22ff movs r2, #255 ; 0xff + 13c: 4b1d ldr r3, [pc, #116] ; (1b4 ) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + 13e: 2103 movs r1, #3 + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + 140: 4393 bics r3, r2 + 142: 4a1d ldr r2, [pc, #116] ; (1b8 ) + USB->DEVICE.QOSCTRL.bit.DQOS = 2; + 144: 250c movs r5, #12 + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + 146: 6093 str r3, [r2, #8] + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; + 148: 2202 movs r2, #2 + USB->DEVICE.QOSCTRL.bit.DQOS = 2; + 14a: 2408 movs r4, #8 + DMAC->QOSCTRL.bit.DQOS = 2; + 14c: 2630 movs r6, #48 ; 0x30 + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; + 14e: 4b1b ldr r3, [pc, #108] ; (1bc ) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + 150: 481b ldr r0, [pc, #108] ; (1c0 ) + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; + 152: 625a str r2, [r3, #36] ; 0x24 + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + 154: 78c3 ldrb r3, [r0, #3] + 156: 438b bics r3, r1 + 158: 4313 orrs r3, r2 + 15a: 70c3 strb r3, [r0, #3] + USB->DEVICE.QOSCTRL.bit.DQOS = 2; + 15c: 78c3 ldrb r3, [r0, #3] + 15e: 43ab bics r3, r5 + 160: 4323 orrs r3, r4 + 162: 70c3 strb r3, [r0, #3] + DMAC->QOSCTRL.bit.DQOS = 2; + 164: 4b17 ldr r3, [pc, #92] ; (1c4 ) + 166: 7b98 ldrb r0, [r3, #14] + 168: 43b0 bics r0, r6 + 16a: 0006 movs r6, r0 + 16c: 2020 movs r0, #32 + 16e: 4330 orrs r0, r6 + 170: 7398 strb r0, [r3, #14] + DMAC->QOSCTRL.bit.FQOS = 2; + 172: 7b98 ldrb r0, [r3, #14] + 174: 43a8 bics r0, r5 + 176: 4304 orrs r4, r0 + 178: 739c strb r4, [r3, #14] + DMAC->QOSCTRL.bit.WRBQOS = 2; + 17a: 7b98 ldrb r0, [r3, #14] + 17c: 4388 bics r0, r1 + 17e: 4302 orrs r2, r0 + 180: 739a strb r2, [r3, #14] + NVMCTRL->CTRLB.bit.MANW = 1; + 182: 2380 movs r3, #128 ; 0x80 + 184: 4a10 ldr r2, [pc, #64] ; (1c8 ) + 186: 6851 ldr r1, [r2, #4] + 188: 430b orrs r3, r1 + 18a: 6053 str r3, [r2, #4] + __libc_init_array(); + 18c: 4b0f ldr r3, [pc, #60] ; (1cc ) + 18e: 4798 blx r3 + main(); + 190: 4b0f ldr r3, [pc, #60] ; (1d0 ) + 192: 4798 blx r3 + while (1); + 194: e7fe b.n 194 + 196: 46c0 nop ; (mov r8, r8) + 198: 000002c0 .word 0x000002c0 + 19c: 20000000 .word 0x20000000 + 1a0: 20000000 .word 0x20000000 + 1a4: 0000027d .word 0x0000027d + 1a8: 20000000 .word 0x20000000 + 1ac: 2000001c .word 0x2000001c + 1b0: 0000028f .word 0x0000028f + 1b4: 00000000 .word 0x00000000 + 1b8: e000ed00 .word 0xe000ed00 + 1bc: 410070fc .word 0x410070fc + 1c0: 41005000 .word 0x41005000 + 1c4: 41004800 .word 0x41004800 + 1c8: 41004000 .word 0x41004000 + 1cc: 00000235 .word 0x00000235 + 1d0: 000001d5 .word 0x000001d5 + +000001d4
: + + +void init_pin(int port, int pin) +{ + uint32_t* dir_reg = (uint32_t*)((PORT_ADDR | (port * PORT_GROUP_SIZE) | PORT_DIR_OFF)); + *dir_reg |= (1 << pin); + 1d4: 4a13 ldr r2, [pc, #76] ; (224 ) + 1d6: 4b14 ldr r3, [pc, #80] ; (228 ) + 1d8: 6811 ldr r1, [r2, #0] +} + +void clr_pin(int port, int pin) +{ + uint32_t* out_reg = (uint32_t*)((PORT_ADDR | (port * PORT_GROUP_SIZE) | PORT_OUT_OFF)); + *out_reg &= ~(1 << pin); + 1da: 2080 movs r0, #128 ; 0x80 + *dir_reg |= (1 << pin); + 1dc: 430b orrs r3, r1 + *out_reg &= ~(1 << pin); + 1de: 2102 movs r1, #2 +{ + 1e0: b530 push {r4, r5, lr} + *dir_reg |= (1 << pin); + 1e2: 6013 str r3, [r2, #0] + *out_reg &= ~(1 << pin); + 1e4: 4c11 ldr r4, [pc, #68] ; (22c ) + 1e6: 4a12 ldr r2, [pc, #72] ; (230 ) + 1e8: 05c0 lsls r0, r0, #23 + 1ea: 25fa movs r5, #250 ; 0xfa + 1ec: 6813 ldr r3, [r2, #0] + 1ee: 006d lsls r5, r5, #1 + 1f0: 438b bics r3, r1 + 1f2: 4303 orrs r3, r0 + 1f4: 6013 str r3, [r2, #0] +{ + 1f6: 2364 movs r3, #100 ; 0x64 + asm volatile("nop"); + 1f8: 46c0 nop ; (mov r8, r8) + for(i=0;i<100;i++) + 1fa: 3b01 subs r3, #1 + 1fc: 2b00 cmp r3, #0 + 1fe: d1fb bne.n 1f8 + for(;n>0;n--) + 200: 3d01 subs r5, #1 + 202: 2d00 cmp r5, #0 + 204: d1f7 bne.n 1f6 + *out_reg |= (1 << pin); + 206: 25fa movs r5, #250 ; 0xfa + *out_reg &= ~(1 << pin); + 208: 6813 ldr r3, [r2, #0] + *out_reg |= (1 << pin); + 20a: 006d lsls r5, r5, #1 + *out_reg &= ~(1 << pin); + 20c: 4023 ands r3, r4 + *out_reg |= (1 << pin); + 20e: 430b orrs r3, r1 + 210: 6013 str r3, [r2, #0] + *out_reg &= ~(1 << pin); + 212: 2364 movs r3, #100 ; 0x64 + asm volatile("nop"); + 214: 46c0 nop ; (mov r8, r8) + for(i=0;i<100;i++) + 216: 3b01 subs r3, #1 + 218: 2b00 cmp r3, #0 + 21a: d1fb bne.n 214 + for(;n>0;n--) + 21c: 3d01 subs r5, #1 + 21e: 2d00 cmp r5, #0 + 220: d1f7 bne.n 212 + 222: e7e2 b.n 1ea + 224: 41004480 .word 0x41004480 + 228: 40000002 .word 0x40000002 + 22c: bfffffff .word 0xbfffffff + 230: 41004490 .word 0x41004490 + +00000234 <__libc_init_array>: + 234: b570 push {r4, r5, r6, lr} + 236: 2600 movs r6, #0 + 238: 4d0c ldr r5, [pc, #48] ; (26c <__libc_init_array+0x38>) + 23a: 4c0d ldr r4, [pc, #52] ; (270 <__libc_init_array+0x3c>) + 23c: 1b64 subs r4, r4, r5 + 23e: 10a4 asrs r4, r4, #2 + 240: 42a6 cmp r6, r4 + 242: d109 bne.n 258 <__libc_init_array+0x24> + 244: 2600 movs r6, #0 + 246: f000 f82b bl 2a0 <_init> + 24a: 4d0a ldr r5, [pc, #40] ; (274 <__libc_init_array+0x40>) + 24c: 4c0a ldr r4, [pc, #40] ; (278 <__libc_init_array+0x44>) + 24e: 1b64 subs r4, r4, r5 + 250: 10a4 asrs r4, r4, #2 + 252: 42a6 cmp r6, r4 + 254: d105 bne.n 262 <__libc_init_array+0x2e> + 256: bd70 pop {r4, r5, r6, pc} + 258: 00b3 lsls r3, r6, #2 + 25a: 58eb ldr r3, [r5, r3] + 25c: 4798 blx r3 + 25e: 3601 adds r6, #1 + 260: e7ee b.n 240 <__libc_init_array+0xc> + 262: 00b3 lsls r3, r6, #2 + 264: 58eb ldr r3, [r5, r3] + 266: 4798 blx r3 + 268: 3601 adds r6, #1 + 26a: e7f2 b.n 252 <__libc_init_array+0x1e> + 26c: 000002ac .word 0x000002ac + 270: 000002ac .word 0x000002ac + 274: 000002ac .word 0x000002ac + 278: 000002b0 .word 0x000002b0 + +0000027c : + 27c: 2300 movs r3, #0 + 27e: b510 push {r4, lr} + 280: 429a cmp r2, r3 + 282: d100 bne.n 286 + 284: bd10 pop {r4, pc} + 286: 5ccc ldrb r4, [r1, r3] + 288: 54c4 strb r4, [r0, r3] + 28a: 3301 adds r3, #1 + 28c: e7f8 b.n 280 + +0000028e : + 28e: 0003 movs r3, r0 + 290: 1882 adds r2, r0, r2 + 292: 4293 cmp r3, r2 + 294: d100 bne.n 298 + 296: 4770 bx lr + 298: 7019 strb r1, [r3, #0] + 29a: 3301 adds r3, #1 + 29c: e7f9 b.n 292 + ... + +000002a0 <_init>: + 2a0: b5f8 push {r3, r4, r5, r6, r7, lr} + 2a2: 46c0 nop ; (mov r8, r8) + 2a4: bcf8 pop {r3, r4, r5, r6, r7} + 2a6: bc08 pop {r3} + 2a8: 469e mov lr, r3 + 2aa: 4770 bx lr + +000002ac <__frame_dummy_init_array_entry>: + 2ac: 00dd 0000 .... + +000002b0 <_fini>: + 2b0: b5f8 push {r3, r4, r5, r6, r7, lr} + 2b2: 46c0 nop ; (mov r8, r8) + 2b4: bcf8 pop {r3, r4, r5, r6, r7} + 2b6: bc08 pop {r3} + 2b8: 469e mov lr, r3 + 2ba: 4770 bx lr + +000002bc <__do_global_dtors_aux_fini_array_entry>: + 2bc: 00b5 0000 .... diff --git a/testdir/.igloo/testdir.map b/testdir/.igloo/testdir.map new file mode 100644 index 0000000..d511ef6 --- /dev/null +++ b/testdir/.igloo/testdir.map @@ -0,0 +1,882 @@ +Archive member included to satisfy reference by file (symbol) + +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (atexit) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (exit) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (__libc_fini_array) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (__libc_init_array) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + ESF/mcu/src/startup_samd21.o (memcpy) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (memset) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) (__register_exitproc) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) (__call_exitprocs) +/usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) (__retarget_lock_acquire_recursive) + +Allocating common symbols +Common symbol size file + +__lock___atexit_recursive_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___arc4random_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___env_recursive_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___sinit_recursive_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___malloc_recursive_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___at_quick_exit_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___dd_hash_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___tz_mutex 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) +__lock___sfp_recursive_mutex + 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + +Discarded input sections + + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .data.__dso_handle + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .text 0x0000000000000000 0x74 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.extab 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.exidx 0x0000000000000000 0x10 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.attributes + 0x0000000000000000 0x1b /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/startup_samd21.o + .text 0x0000000000000000 0x0 ESF/mcu/src/startup_samd21.o + .data 0x0000000000000000 0x0 ESF/mcu/src/startup_samd21.o + .bss 0x0000000000000000 0x0 ESF/mcu/src/startup_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc ESF/mcu/src/system_samd21.o + .text 0x0000000000000000 0x0 ESF/mcu/src/system_samd21.o + .data 0x0000000000000000 0x4 ESF/mcu/src/system_samd21.o + .bss 0x0000000000000000 0x0 ESF/mcu/src/system_samd21.o + .text.SystemInit + 0x0000000000000000 0x10 ESF/mcu/src/system_samd21.o + .text.SystemCoreClockUpdate + 0x0000000000000000 0x10 ESF/mcu/src/system_samd21.o + .debug_info 0x0000000000000000 0xc2 ESF/mcu/src/system_samd21.o + .debug_abbrev 0x0000000000000000 0x92 ESF/mcu/src/system_samd21.o + .debug_aranges + 0x0000000000000000 0x20 ESF/mcu/src/system_samd21.o + .debug_ranges 0x0000000000000000 0x10 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x30c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xa4e ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x22 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x8e ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x51 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x103 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x6a ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1df ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x3a ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x22 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xaf ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x3ad ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x681 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x8b5 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x230 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xd60 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x4cb ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x9f8 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x82b ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x455 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x5e ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x8fd ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x21c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x95b ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x5e ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x667 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x3af ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xc7a ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1092 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xc4a ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x6ba ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1bbf ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1440 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x344 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x7c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xa0 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x4c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xca ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x94 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x58 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x37d ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x82 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x18d ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xb8 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xa0 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xb8 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1c ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x82 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x15a ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xdc ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x128 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x124 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xe2 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xe2 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xe2 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xe2 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xe2 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x130 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x106 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0xfa ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x40f ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x40 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x37d ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x1e52 ESF/mcu/src/system_samd21.o + .debug_macro 0x0000000000000000 0x6d ESF/mcu/src/system_samd21.o + .debug_line 0x0000000000000000 0x47c ESF/mcu/src/system_samd21.o + .debug_str 0x0000000000000000 0x6e2c4 ESF/mcu/src/system_samd21.o + .comment 0x0000000000000000 0x1f ESF/mcu/src/system_samd21.o + .debug_frame 0x0000000000000000 0x30 ESF/mcu/src/system_samd21.o + .ARM.attributes + 0x0000000000000000 0x2c ESF/mcu/src/system_samd21.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .group 0x0000000000000000 0xc src/main.o + .text 0x0000000000000000 0x0 src/main.o + .data 0x0000000000000000 0x0 src/main.o + .bss 0x0000000000000000 0x0 src/main.o + .debug_macro 0x0000000000000000 0xa4e src/main.o + .debug_macro 0x0000000000000000 0x22 src/main.o + .debug_macro 0x0000000000000000 0x8e src/main.o + .debug_macro 0x0000000000000000 0x51 src/main.o + .debug_macro 0x0000000000000000 0x103 src/main.o + .debug_macro 0x0000000000000000 0x6a src/main.o + .debug_macro 0x0000000000000000 0x1df src/main.o + .debug_macro 0x0000000000000000 0x3a src/main.o + .debug_macro 0x0000000000000000 0x1c src/main.o + .debug_macro 0x0000000000000000 0x22 src/main.o + .debug_macro 0x0000000000000000 0xaf src/main.o + .debug_macro 0x0000000000000000 0x3ad src/main.o + .debug_macro 0x0000000000000000 0x681 src/main.o + .debug_macro 0x0000000000000000 0x8b5 src/main.o + .debug_macro 0x0000000000000000 0x230 src/main.o + .debug_macro 0x0000000000000000 0xd60 src/main.o + .debug_macro 0x0000000000000000 0x4cb src/main.o + .debug_macro 0x0000000000000000 0x9f8 src/main.o + .debug_macro 0x0000000000000000 0x82b src/main.o + .debug_macro 0x0000000000000000 0x455 src/main.o + .debug_macro 0x0000000000000000 0x5e src/main.o + .debug_macro 0x0000000000000000 0x8fd src/main.o + .debug_macro 0x0000000000000000 0x21c src/main.o + .debug_macro 0x0000000000000000 0x95b src/main.o + .debug_macro 0x0000000000000000 0x5e src/main.o + .debug_macro 0x0000000000000000 0x667 src/main.o + .debug_macro 0x0000000000000000 0x3af src/main.o + .debug_macro 0x0000000000000000 0xc7a src/main.o + .debug_macro 0x0000000000000000 0x1092 src/main.o + .debug_macro 0x0000000000000000 0xc4a src/main.o + .debug_macro 0x0000000000000000 0x6ba src/main.o + .debug_macro 0x0000000000000000 0x1bbf src/main.o + .debug_macro 0x0000000000000000 0x1440 src/main.o + .debug_macro 0x0000000000000000 0x344 src/main.o + .debug_macro 0x0000000000000000 0x7c src/main.o + .debug_macro 0x0000000000000000 0xa0 src/main.o + .debug_macro 0x0000000000000000 0x4c src/main.o + .debug_macro 0x0000000000000000 0xca src/main.o + .debug_macro 0x0000000000000000 0x94 src/main.o + .debug_macro 0x0000000000000000 0x58 src/main.o + .debug_macro 0x0000000000000000 0x37d src/main.o + .debug_macro 0x0000000000000000 0x82 src/main.o + .debug_macro 0x0000000000000000 0x18d src/main.o + .debug_macro 0x0000000000000000 0xb8 src/main.o + .debug_macro 0x0000000000000000 0xa0 src/main.o + .debug_macro 0x0000000000000000 0xb8 src/main.o + .debug_macro 0x0000000000000000 0x1c src/main.o + .debug_macro 0x0000000000000000 0x1c src/main.o + .debug_macro 0x0000000000000000 0x1c src/main.o + .debug_macro 0x0000000000000000 0x82 src/main.o + .debug_macro 0x0000000000000000 0x15a src/main.o + .debug_macro 0x0000000000000000 0xdc src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x128 src/main.o + .debug_macro 0x0000000000000000 0x124 src/main.o + .debug_macro 0x0000000000000000 0xe2 src/main.o + .debug_macro 0x0000000000000000 0xe2 src/main.o + .debug_macro 0x0000000000000000 0xe2 src/main.o + .debug_macro 0x0000000000000000 0xe2 src/main.o + .debug_macro 0x0000000000000000 0xe2 src/main.o + .debug_macro 0x0000000000000000 0x130 src/main.o + .debug_macro 0x0000000000000000 0x106 src/main.o + .debug_macro 0x0000000000000000 0xfa src/main.o + .debug_macro 0x0000000000000000 0x40f src/main.o + .debug_macro 0x0000000000000000 0x40 src/main.o + .debug_macro 0x0000000000000000 0x37d src/main.o + .debug_macro 0x0000000000000000 0x1e52 src/main.o + .debug_macro 0x0000000000000000 0x6d src/main.o + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .text.atexit 0x0000000000000000 0x10 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .debug_frame 0x0000000000000000 0x28 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-atexit.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .text.exit 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .text.__libc_fini_array + 0x0000000000000000 0x28 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .debug_frame 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-fini.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data._impure_ptr + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data.impure_data + 0x0000000000000000 0x60 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .rodata._global_impure_ptr + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .text.__register_exitproc + 0x0000000000000000 0xcc /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .bss._global_atexit0 + 0x0000000000000000 0x8c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .data.__atexit_dummy + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .debug_frame 0x0000000000000000 0x30 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__atexit.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .text.__call_exitprocs + 0x0000000000000000 0xb0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .bss._global_atexit + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .data.__atexit_recursive_mutex + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .debug_frame 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-__call_atexit.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_init + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_init_recursive + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_close + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_close_recursive + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_acquire + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_acquire_recursive + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_try_acquire + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_release + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text.__retarget_lock_release_recursive + 0x0000000000000000 0x2 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .debug_frame 0x0000000000000000 0xb0 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + COMMON 0x0000000000000000 0x9 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-lock.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o + .eh_frame 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o + .ARM.attributes + 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +rom 0x0000000000000000 0x0000000000040000 xr +ram 0x0000000020000000 0x0000000000008000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o +LOAD ESF/mcu/src/startup_samd21.o +LOAD ESF/mcu/src/system_samd21.o +LOAD src/main.o +START GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libm.a +END GROUP +START GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/libgcc.a +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/libgcc.a +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +END GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtend.o +LOAD /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + 0x0000000000002000 STACK_SIZE = DEFINED (STACK_SIZE)?STACK_SIZE:DEFINED (__stack_size__)?__stack_size__:0x2000 + +.text 0x0000000000000000 0x2c0 + 0x0000000000000000 . = ALIGN (0x4) + 0x0000000000000000 _sfixed = . + *(.vectors .vectors.*) + .vectors 0x0000000000000000 0xb4 ESF/mcu/src/startup_samd21.o + 0x0000000000000000 exception_table + *(.text .text.* .gnu.linkonce.t.*) + .text.__do_global_dtors_aux + 0x00000000000000b4 0x28 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .text.frame_dummy + 0x00000000000000dc 0x20 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .text.Dummy_Handler + 0x00000000000000fc 0x2 ESF/mcu/src/startup_samd21.o + 0x00000000000000fc DMAC_Handler + 0x00000000000000fc HardFault_Handler + 0x00000000000000fc AC_Handler + 0x00000000000000fc SysTick_Handler + 0x00000000000000fc PendSV_Handler + 0x00000000000000fc NMI_Handler + 0x00000000000000fc TC7_Handler + 0x00000000000000fc SERCOM1_Handler + 0x00000000000000fc ADC_Handler + 0x00000000000000fc TCC1_Handler + 0x00000000000000fc SERCOM2_Handler + 0x00000000000000fc TCC0_Handler + 0x00000000000000fc RTC_Handler + 0x00000000000000fc EIC_Handler + 0x00000000000000fc TC6_Handler + 0x00000000000000fc WDT_Handler + 0x00000000000000fc TC4_Handler + 0x00000000000000fc USB_Handler + 0x00000000000000fc TC3_Handler + 0x00000000000000fc Dummy_Handler + 0x00000000000000fc PM_Handler + 0x00000000000000fc SERCOM5_Handler + 0x00000000000000fc SVC_Handler + 0x00000000000000fc TCC2_Handler + 0x00000000000000fc EVSYS_Handler + 0x00000000000000fc SERCOM3_Handler + 0x00000000000000fc SERCOM4_Handler + 0x00000000000000fc I2S_Handler + 0x00000000000000fc NVMCTRL_Handler + 0x00000000000000fc SERCOM0_Handler + 0x00000000000000fc DAC_Handler + 0x00000000000000fc PTC_Handler + 0x00000000000000fc TC5_Handler + 0x00000000000000fc SYSCTRL_Handler + *fill* 0x00000000000000fe 0x2 + .text.Reset_Handler + 0x0000000000000100 0xd4 ESF/mcu/src/startup_samd21.o + 0x0000000000000100 Reset_Handler + .text.startup.main + 0x00000000000001d4 0x60 src/main.o + 0x00000000000001d4 main + .text.__libc_init_array + 0x0000000000000234 0x48 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + 0x0000000000000234 __libc_init_array + .text.memcpy 0x000000000000027c 0x12 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + 0x000000000000027c memcpy + .text.memset 0x000000000000028e 0x10 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + 0x000000000000028e memset + *(.glue_7t) + .glue_7t 0x000000000000029e 0x0 linker stubs + *(.glue_7) + .glue_7 0x000000000000029e 0x0 linker stubs + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x00000000000002a0 . = ALIGN (0x4) + *fill* 0x000000000000029e 0x2 + *(.init) + .init 0x00000000000002a0 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + 0x00000000000002a0 _init + .init 0x00000000000002a4 0x8 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + 0x00000000000002ac . = ALIGN (0x4) + 0x00000000000002ac __preinit_array_start = . + *(.preinit_array) + 0x00000000000002ac __preinit_array_end = . + 0x00000000000002ac . = ALIGN (0x4) + 0x00000000000002ac __init_array_start = . + *(SORT_BY_NAME(.init_array.*)) + *(.init_array) + .init_array 0x00000000000002ac 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + 0x00000000000002b0 __init_array_end = . + 0x00000000000002b0 . = ALIGN (0x4) + *crtbegin.o(.ctors) + *(EXCLUDE_FILE(*crtend.o) .ctors) + *(SORT_BY_NAME(.ctors.*)) + *crtend.o(.ctors) + 0x00000000000002b0 . = ALIGN (0x4) + *(.fini) + .fini 0x00000000000002b0 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + 0x00000000000002b0 _fini + .fini 0x00000000000002b4 0x8 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + 0x00000000000002bc . = ALIGN (0x4) + 0x00000000000002bc __fini_array_start = . + *(.fini_array) + .fini_array 0x00000000000002bc 0x4 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + *(SORT_BY_NAME(.fini_array.*)) + 0x00000000000002c0 __fini_array_end = . + *crtbegin.o(.dtors) + *(EXCLUDE_FILE(*crtend.o) .dtors) + *(SORT_BY_NAME(.dtors.*)) + *crtend.o(.dtors) + 0x00000000000002c0 . = ALIGN (0x4) + 0x00000000000002c0 _efixed = . + [!provide] PROVIDE (__exidx_start = .) + +.vfp11_veneer 0x00000000000002c0 0x0 + .vfp11_veneer 0x00000000000002c0 0x0 linker stubs + +.v4_bx 0x00000000000002c0 0x0 + .v4_bx 0x00000000000002c0 0x0 linker stubs + +.iplt 0x00000000000002c0 0x0 + .iplt 0x00000000000002c0 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + +.igot.plt 0x00000000000002c0 0x0 + .igot.plt 0x00000000000002c0 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + +.eh_frame 0x00000000000002c0 0x0 + .eh_frame 0x00000000000002c0 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + +.rel.dyn 0x00000000000002c0 0x0 + .rel.iplt 0x00000000000002c0 0x0 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + +.ARM.exidx + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + [!provide] PROVIDE (__exidx_end = .) + 0x00000000000002c0 . = ALIGN (0x4) + 0x00000000000002c0 _etext = . + +.relocate 0x0000000020000000 0x0 load address 0x00000000000002c0 + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _srelocate = . + *(.ramfunc .ramfunc.*) + *(.data .data.*) + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _erelocate = . + +.bss 0x0000000020000000 0x1c + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _sbss = . + 0x0000000020000000 _szero = . + *(.bss .bss.*) + .bss.completed.1 + 0x0000000020000000 0x1 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + *fill* 0x0000000020000001 0x3 + .bss.object.0 0x0000000020000004 0x18 /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + *(COMMON) + 0x000000002000001c . = ALIGN (0x4) + 0x000000002000001c _ebss = . + 0x000000002000001c _ezero = . + +.stack 0x000000002000001c 0x2004 + 0x0000000020000020 . = ALIGN (0x8) + *fill* 0x000000002000001c 0x4 + 0x0000000020000020 _sstack = . + 0x0000000020002020 . = (. + STACK_SIZE) + *fill* 0x0000000020000020 0x2000 + 0x0000000020002020 . = ALIGN (0x8) + 0x0000000020002020 _estack = . + 0x0000000020002020 . = ALIGN (0x4) + 0x0000000020002020 _end = . +OUTPUT(testdir.elf elf32-littlearm) +LOAD linker stubs + +.ARM.attributes + 0x0000000000000000 0x28 + .ARM.attributes + 0x0000000000000000 0x1e /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crti.o + .ARM.attributes + 0x000000000000001e 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtbegin.o + .ARM.attributes + 0x000000000000004a 0x2c ESF/mcu/src/startup_samd21.o + .ARM.attributes + 0x0000000000000076 0x2c src/main.o + .ARM.attributes + 0x00000000000000a2 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x00000000000000ce 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + .ARM.attributes + 0x00000000000000fa 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x0000000000000126 0x1e /usr/lib/gcc/arm-none-eabi/10.2.0/thumb/v6-m/nofp/crtn.o + +.comment 0x0000000000000000 0x1e + .comment 0x0000000000000000 0x1e ESF/mcu/src/startup_samd21.o + 0x1f (size before relaxing) + .comment 0x000000000000001e 0x1f src/main.o + +.debug_info 0x0000000000000000 0x3d0a + .debug_info 0x0000000000000000 0x39b7 ESF/mcu/src/startup_samd21.o + .debug_info 0x00000000000039b7 0x353 src/main.o + +.debug_abbrev 0x0000000000000000 0x3d9 + .debug_abbrev 0x0000000000000000 0x2b7 ESF/mcu/src/startup_samd21.o + .debug_abbrev 0x00000000000002b7 0x122 src/main.o + +.debug_aranges 0x0000000000000000 0x48 + .debug_aranges + 0x0000000000000000 0x28 ESF/mcu/src/startup_samd21.o + .debug_aranges + 0x0000000000000028 0x20 src/main.o + +.debug_ranges 0x0000000000000000 0xf0 + .debug_ranges 0x0000000000000000 0x18 ESF/mcu/src/startup_samd21.o + .debug_ranges 0x0000000000000018 0xd8 src/main.o + +.debug_macro 0x0000000000000000 0x11a5c + .debug_macro 0x0000000000000000 0x306 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000306 0xa4e ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000d54 0x22 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000d76 0x8e ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000e04 0x51 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000e55 0x103 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000f58 0x6a ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000000fc2 0x1df ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000011a1 0x3a ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000011db 0x1c ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000011f7 0x22 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000001219 0xaf ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000012c8 0x3ad ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000001675 0x681 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000001cf6 0x8b5 ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000025ab 0x230 ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000027db 0xd60 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000353b 0x4cb ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000003a06 0x9f8 ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000043fe 0x82b ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000004c29 0x455 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000507e 0x5e ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000050dc 0x8fd ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000059d9 0x21c ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000005bf5 0x95b ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000006550 0x5e ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000065ae 0x667 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000006c15 0x3af ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000006fc4 0xc7a ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000007c3e 0x1092 ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000008cd0 0xc4a ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000991a 0x6ba ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000009fd4 0x1bbf ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000bb93 0x1440 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000cfd3 0x344 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d317 0x7c ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d393 0xa0 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d433 0x4c ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d47f 0xca ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d549 0x94 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d5dd 0x58 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d635 0x37d ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000d9b2 0x82 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000da34 0x18d ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000dbc1 0xb8 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000dc79 0xa0 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000dd19 0xb8 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000ddd1 0x1c ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000dded 0x1c ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000de09 0x1c ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000de25 0x82 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000dea7 0x15a ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e001 0xdc ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e0dd 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e205 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e32d 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e455 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e57d 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e6a5 0x128 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e7cd 0x124 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e8f1 0xe2 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000e9d3 0xe2 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000eab5 0xe2 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000eb97 0xe2 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000ec79 0xe2 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000ed5b 0x130 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000ee8b 0x106 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000ef91 0xfa ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000f08b 0x40f ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000f49a 0x40 ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000f4da 0x37d ESF/mcu/src/startup_samd21.o + .debug_macro 0x000000000000f857 0x1e52 ESF/mcu/src/startup_samd21.o + .debug_macro 0x00000000000116a9 0x6d ESF/mcu/src/startup_samd21.o + .debug_macro 0x0000000000011716 0x346 src/main.o + +.debug_line 0x0000000000000000 0xb0b + .debug_line 0x0000000000000000 0x52a ESF/mcu/src/startup_samd21.o + .debug_line 0x000000000000052a 0x5e1 src/main.o + +.debug_str 0x0000000000000000 0x6ed4e + .debug_str 0x0000000000000000 0x6ec5b ESF/mcu/src/startup_samd21.o + 0x6f44d (size before relaxing) + .debug_str 0x000000000006ec5b 0xf3 src/main.o + 0x6e353 (size before relaxing) + +.debug_frame 0x0000000000000000 0xdc + .debug_frame 0x0000000000000000 0x3c ESF/mcu/src/startup_samd21.o + .debug_frame 0x000000000000003c 0x2c src/main.o + .debug_frame 0x0000000000000068 0x2c /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .debug_frame 0x0000000000000094 0x28 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memcpy-stub.o) + .debug_frame 0x00000000000000bc 0x20 /usr/lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + +.debug_loc 0x0000000000000000 0x27c + .debug_loc 0x0000000000000000 0x27c src/main.o diff --git a/testdir/.igloo/testdir_base.yml b/testdir/.igloo/testdir_base.yml new file mode 100644 index 0000000..e69de29 diff --git a/testdir/ESF/common b/testdir/ESF/common new file mode 120000 index 0000000..a00cb7c --- /dev/null +++ b/testdir/ESF/common @@ -0,0 +1 @@ +/storage/Shared/Documents/Projects/ePenguin/ePenguin-Software-Framework/arch/arm/common \ No newline at end of file diff --git a/testdir/ESF/inc b/testdir/ESF/inc deleted file mode 120000 index b0353f6..0000000 --- a/testdir/ESF/inc +++ /dev/null @@ -1 +0,0 @@ -/storage/Shared/Documents/Projects/ePenguin/ePenguin-Software-Framework/arch/arm/SAM_D2X/inc \ No newline at end of file diff --git a/testdir/ESF/ld/samd21j18a_flash.ld b/testdir/ESF/ld/samd21j18a_flash.ld new file mode 100644 index 0000000..569bd3d --- /dev/null +++ b/testdir/ESF/ld/samd21j18a_flash.ld @@ -0,0 +1,143 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J18A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/testdir/ESF/ld/samd21j18a_sram.ld b/testdir/ESF/ld/samd21j18a_sram.ld new file mode 100644 index 0000000..61b32dc --- /dev/null +++ b/testdir/ESF/ld/samd21j18a_sram.ld @@ -0,0 +1,142 @@ +/** + * \file + * + * \brief Linker script for running in internal SRAM on the SAMD21J18A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Memory Spaces Definitions */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > ram + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > ram + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/testdir/ESF/mcu b/testdir/ESF/mcu new file mode 120000 index 0000000..51a13bb --- /dev/null +++ b/testdir/ESF/mcu @@ -0,0 +1 @@ +/storage/Shared/Documents/Projects/ePenguin/ePenguin-Software-Framework/arch/arm/SAM_D2X/mcu \ No newline at end of file diff --git a/testdir/ESF/src b/testdir/ESF/src deleted file mode 120000 index 209d0ff..0000000 --- a/testdir/ESF/src +++ /dev/null @@ -1 +0,0 @@ -/storage/Shared/Documents/Projects/ePenguin/ePenguin-Software-Framework/arch/arm/SAM_D2X/src \ No newline at end of file diff --git a/testdir/cfg/testdir.yml b/testdir/cfg/testdir.yml new file mode 100644 index 0000000..e69de29 diff --git a/testdir/inc/igloo.h b/testdir/inc/igloo.h new file mode 100644 index 0000000..50fa992 --- /dev/null +++ b/testdir/inc/igloo.h @@ -0,0 +1 @@ +#include diff --git a/testdir/src/main.c b/testdir/src/main.c new file mode 100644 index 0000000..cb08efa --- /dev/null +++ b/testdir/src/main.c @@ -0,0 +1,78 @@ +#include "igloo.h" + +#define PORT_ADDR (0x41004400) + +#define PORT_GROUP_SIZE (0x80) + +#define PORT_A_OFF (0x00) +#define PORT_B_OFF (0x80) + +#define PORT_DIR_OFF (0x00) +#define PORT_OUT_OFF (0x10) + +// LED 0: PA09 +// LED 1: PB01 + +#define LED0_PORT (1) +#define LED0_PIN (30) + +#define LED1_PORT (1) +#define LED1_PIN (1) + +static void init_pin(int port, int pin); +static void set_pin(int port, int pin); +static void clr_pin(int port, int pin); + +static void delay(int n) +{ + int i; + for(;n>0;n--) + { + for(i=0;i<100;i++) + { + + asm volatile("nop"); + } + } +} + + + +int main() +{ + init_pin(LED0_PORT, LED0_PIN); + init_pin(LED1_PORT, LED1_PIN); + + for(;;) + { + set_pin(LED0_PORT, LED0_PIN); + clr_pin(LED1_PORT, LED1_PIN); + delay(500); + clr_pin(LED0_PORT, LED0_PIN); + set_pin(LED1_PORT, LED1_PIN); + delay(500); + } + return 0; +} + +// port 0: A +// port 1: B + + +void init_pin(int port, int pin) +{ + uint32_t* dir_reg = (uint32_t*)((PORT_ADDR | (port * PORT_GROUP_SIZE) | PORT_DIR_OFF)); + *dir_reg |= (1 << pin); +} + +void set_pin(int port, int pin) +{ + uint32_t* out_reg = (uint32_t*)((PORT_ADDR | (port * PORT_GROUP_SIZE) | PORT_OUT_OFF)); + *out_reg |= (1 << pin); +} + +void clr_pin(int port, int pin) +{ + uint32_t* out_reg = (uint32_t*)((PORT_ADDR | (port * PORT_GROUP_SIZE) | PORT_OUT_OFF)); + *out_reg &= ~(1 << pin); +}