Error: L6236E: No section matches selector - no section to be FIRST/LAST

Başlatan sseedat, 06 Haziran 2016, 15:04:02

sseedat

Selamlar,

stm32f103 işlemcisi için keil derleyicisi olmadan makefile ile soruce kodları derliyorum. Fakat şöyle bit hata alıyorum;

Error: L6236E: No section matches selector - no section to be FIRST/LAST

Bu hatanın nasıl çözüleceğine dair fikri olan varmı.

scatter file:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08003000 0x0001D000  {    ; load region size_region
  ER_IROM1 0x08003000 0x0001D000  {  ; load address = execution address
;LR_IROM1 0x08000000 0x0001F800  {    ; load region size_region
;  ER_IROM1 0x08000000 0x0001F800  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000010 0x00004FF0  {  ; RW data
;  RW_IRAM1 0x20000000 0x0000C000  {  ; RW data
   .ANY (+RW, +ZI)
  }
}
Görünmez bir mezarlıktır Zaman...

sseedat

hocam çipe ait startup file ekli.

Projeyi keil derleyicisi için düzenleyip sorunsuz derledim(verilen scatter a göre).

Acaba linker a flag falan mı eklemek gerekiyor?
Görünmez bir mezarlıktır Zaman...

sseedat


Linker flag bu şekilde hocam. Gerekiyorsa tüm makefile yi koybilirim.

LFLAGS := --cpu=$(ARCH) --feedback=fb.txt --strict --keep vectors.o --callgraph --scatter=$(SCATTER) --list=$(TARGET).map --map
Görünmez bir mezarlıktır Zaman...

sseedat

Evet hocam dediğiniz şekilde hata 9. satır da *.o (RESET, +First) burayı gösteriyor

"stm32f103rbt6.sct", line 9 (column 9): Error: L6236E: No section matches selector - no section to be FIRST/LAST.
Not enough information to produce a FEEDBACK file.
Not enough information to list the image map.

RESET kodunun nerde olduğunu nasıl bulabilirim?

Teşekkürler
Görünmez bir mezarlıktır Zaman...

sseedat

Hocam ben keil derleyicisini kullanmadan makefile ile derleme yapıyorum. Keil için ayreten proje oluşturup derleme işlemini başarılı bir şekilde yapıyorum.

startup file ise proje klasörümde var (stm32f10x.s adı ile) ve devicesupport klasörünün altında dediğiniz gibi startup file lar mevcut.

stm32f10x.s ise RESET aşağıdaki gibi belirtilmiş;

; Vector Table Mapped to Address 0 at Reset

                AREA    RESET, CODE, READONLY
                EXPORT  __Vectors
Görünmez bir mezarlıktır Zaman...

sseedat

anladım hocam teşekkürler.

makefile bana çinden geldi sorunlu olma ihtimali var :)

dediğiniz durumlara göre düzenlemeleri yapıp derlemeye çalışacağım.
makefile :
ifneq ($(windir),)
SHELL  := cmd.exe
endif
TARGET ?= TP803_ETH_V2.00.08
ARCH   ?= Cortex-M3
SCATTER = stm32f103rbt6.sct

AR      = C:\Keil_v5\ARM\ARMCC\bin\armar.exe
AS      = C:\Keil_v5\ARM\ARMCC\bin\armasm.exe
CC      = C:\Keil_v5\ARM\ARMCC\bin\armcc.exe
LINK    = C:\Keil_v5\ARM\ARMCC\bin\armlink.exe
OBJCOPY = C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe
ifeq ($(SHELL), cmd.exe)
RM      = del /q
else
RM      = rm -f
endif

scanfile=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call scanfile,$d/,$2))

asmfile := $(call scanfile,,*.S)
asmfile := $(wildcard *.S)
srcfile := $(call scanfile,,*.c)
srcfile := $(srcfile:%ucos_ii.c=)
objc := $(srcfile:%.c=%.o)
obja := $(asmfile:%.s=%.o)

AFLAGS := --cpu=$(ARCH) --apcs=interwork
CFLAGS := --cpu=$(ARCH) --apcs=interwork --multibyte_chars -O3
CFLAGS += -I. $(addprefix -I,$(filter-out ./,$(sort $(dir $(call scanfile,,*.h)))))
CFLAGS += -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -DMACH_TP80XETH

ifeq ($(DEBUG),1)
CFLAGS += -DDEBUG -Ddbgout"(level,...)"="(level?printf(__VA_ARGS__):0)"
else

ifeq ($(findstring -DDEBUG,$(OPT)), )
CFLAGS += -DNDEBUG -Ddbgout"(level,...)"="do{}while(0)"
else
CFLAGS += -DDEBUG -Ddbgout"(level,...)"="(level?printf(__VA_ARGS__):0)"
endif #($(findstring -DDEBUG,$(OPT)), )

endif #($(DEBUG),1)

ifeq (fb.txt,$(wildcard fb.txt))
CFLAGS += --feedback=fb.txt
endif #(fb.txt,$(wildcard fb.txt))

LFLAGS := --cpu=$(ARCH) --feedback=fb.txt --strict  --callgraph --scatter=$(SCATTER) --list=$(TARGET).map --map

.PHONY : all clean distclean
all: $(TARGET).bin $(TARGET).hex




#$(TARGET).dfu : $(TARGET).bin
#	bin2dfu $< $@ HPRT

$(TARGET).bin : $(TARGET).axf
	$(OBJCOPY) --bin $< --output $@
	-$(RM) firmware.bin
	-ren $(TARGET).bin firmware.bin
	bin2crcbin.exe ethboot.bin firmware.bin TP803_EthBoard_V2.00.06.bin $(TARGET).bin
#	bin2crcbin.exe ethboot.bin firmware.bin TP805_EthAndUartBoard_V2.00.06.bin $(TARGET).bin
$(TARGET).hex : $(TARGET).axf
	$(OBJCOPY) --i32 $< --output $@

$(TARGET).axf : $(obja) $(objc) $(SCATTER)
	$(LINK) $(LFLAGS) $(^:$(SCATTER)=) --output=$@
	$(OBJCOPY) -z $@
	@$(OBJCOPY) -z $(^:$(SCATTER)=)

$(objc):%.o:%.c Makefile
	$(CC) $(CFLAGS) --depend=$(@:%.o=%.d) -o $@ -c $<

$(obja):%.o:%.S Makefile
	$(AS) $(AFLAGS) --depend=$(@:%.o=%.d) -o $@ $<

clean:
	-$(RM) *.o $(subst /,\,$(strip $(call scanfile,,*.o)))
	-$(RM) *.d $(subst /,\,$(strip $(call scanfile,,*.d)))
distclean: clean
	-$(RM) $(TARGET).dfu
	-$(RM) $(TARGET).axf
	-$(RM) $(TARGET).bin
	-$(RM) $(TARGET).hex
	-$(RM) $(TARGET).map
	-$(RM) $(TARGET).htm
	-$(RM) fb.txt

-include $(call scanfile,,*.d)
Görünmez bir mezarlıktır Zaman...