Инструментальные средства

Учебный лабораторный комплекс SDK-1.1 на базе микроконтроллера ADuC812 с ядром MCS51 # RS-232C, I2C

Re: Инструментальные средства

Сообщение kluchev » 15 апр 2010, 09:36

h0rr0rr_drag0n писал(а):Оказывается SDCC не может компилировать сразу несколько исходных файлов, как GCC (т.е. sdcc mainc. leds.c pld.c не выполнится успешно). Нужно сначала по отдельности создать объектные файлы для каждого из исходных файлов проекта.


Больно мудрёно получилось. Да и не всегда удобно запихивать абсолютно все файлы в компилятор. Например, когда у нас в проекте есть куча библиотек, которые компилируются по необходимости, а не каждый раз.

А вообще, make имеет встроенные средства поиска файлов. При этом, компилятор работает с каждым файлом по отдельности. Посмотри, как сделан Makefile во FreeRTOS. GCC вызывается с каждым файлом по отдельности.

Код: Выделить всё
RM := rm -rf



# Set the optimisation level - this should be set to 0, 1, 2, 3 or s (s for size).

OPTIM=0



###############################################################################

# List the directories that contain files to be built.

###############################################################################



# These two directories contain the FreeRTOS.org kernel source files.

FREERTOS_SOURCE_DIR=./../../../Source

PORT_SOURCE_DIR=./../../../Source/portable/GCC/ColdFire_V2



# This directory contains the standard demo files that get included in every

# FreeRTOS.org demo.  They define tasks that demonstrate the API usage and

# test the FreeRTOS.org port.

COMMON_DEMO_SOURCE_DIR=./../../Common/Minimal



# This directory contains the modified uIP code

FREERTOS_uIP_DIR=./../../Common/ethernet/FreeRTOS-uIP



VPATH=      $(FREERTOS_SOURCE_DIR) : \

         $(PORT_SOURCE_DIR) : \

         $(COMMON_DEMO_SOURCE_DIR) : \

         $(FREERTOS_SOURCE_DIR)/portable/MemMang : \

         $(FREERTOS_uIP_DIR) : \

         . : \

         ./webserver : \

         ./ParTest : \

         ./serial





###############################################################################

# Define a few constants to be used during the build.

###############################################################################



OUTPUT_DIR=./bin

CPU=52235

LINKER_SCRIPT=m52235evb-rom-hosted.ld

SREC_FILENAME=RTOSDemo.s19

ELF_FILENAME=RTOSDemo.elf

CC=m68k-elf-gcc

AS=m68k-elf-as

OBJCOPY=m68k-elf-objcopy





###############################################################################

# List the files to include in the build.  These files will be located from the

# VPATH defined above.

###############################################################################



# The FreeRTOS.org source files.

FreeRTOS_OBJS=         $(OUTPUT_DIR)/portasm.o \

                  $(OUTPUT_DIR)/port.o \

                  $(OUTPUT_DIR)/list.o \

                  $(OUTPUT_DIR)/tasks.o \

                  $(OUTPUT_DIR)/queue.o \

                  $(OUTPUT_DIR)/heap_1.o



# The demo app source files, including the basic WEB server.

Demo_OBJS=            $(OUTPUT_DIR)/main.o \

                  $(OUTPUT_DIR)/ParTest.o \

                  $(OUTPUT_DIR)/flash.o \

                  $(OUTPUT_DIR)/FreeRTOS_Tick_Setup.o \

                  $(OUTPUT_DIR)/BlockQ.o \

                  $(OUTPUT_DIR)/PollQ.o \

                  $(OUTPUT_DIR)/semtest.o \

                  $(OUTPUT_DIR)/GenQTest.o \

                  $(OUTPUT_DIR)/QPeek.o \

                  $(OUTPUT_DIR)/FEC.o \

                  $(OUTPUT_DIR)/blocktim.o \

                  $(OUTPUT_DIR)/recmutex.o \

                  $(OUTPUT_DIR)/printf-stdarg.o



HTTP_OBJS=            $(OUTPUT_DIR)/uIP_Task.o \

                  $(OUTPUT_DIR)/httpd.o \

                  $(OUTPUT_DIR)/httpd-cgi.o \

                  $(OUTPUT_DIR)/httpd-fs.o \

                  $(OUTPUT_DIR)/http-strings.o



# uIP source files

uIP_OBJS=            $(OUTPUT_DIR)/timer.o \

                  $(OUTPUT_DIR)/uip.o \

                  $(OUTPUT_DIR)/uip_arp.o \

                  $(OUTPUT_DIR)/uiplib.o \

                  $(OUTPUT_DIR)/uip-split.o \

                  $(OUTPUT_DIR)/psock.o



OBJS = $(Demo_OBJS) $(FreeRTOS_OBJS) $(uIP_OBJS) $(HTTP_OBJS)

         

C_DEPS = $(OBJS:.o=.d)



INCLUDE_PATHS=   -I./webserver \

            -I"$(FREERTOS_uIP_DIR)" \

            -I"$(FREERTOS_SOURCE_DIR)/include" \

            -I"include" \

            -I"$(COMMON_DEMO_SOURCE_DIR)/../include" \

            -I"$(PORT_SOURCE_DIR)" \

            -I./MCF5223x \

            -I.



CFLAGS=      $(INCLUDE_PATHS) \

         -D COLDFIRE_V2_GCC \

         -D PACK_STRUCT_END=__attribute\(\(packed\)\) \

         -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \

         -O$(OPTIM) \

         -D bktPRIMARY_PRIORITY=4 \

         -D bktSECONDARY_PRIORITY=3 \

         -fno-strict-aliasing \

         -g3 \

         -gdwarf-2 \

         -Wall \

         -Wextra \

         -c \

         -ffunction-sections \

         -fdata-sections \

         -fmessage-length=0 \

         -funsigned-char \

         -Wextra \

         -mcpu=$(CPU) \

         -MMD \

         -MP \

         -MF"$(@:%.o=%.d)" \

         -MT"$(@:%.o=%.d)"



ASFLAGS=    -m52235 \

         -g3 \

         --register-prefix-optional \

            --bitwise-or



LIBS=



# Add inputs and outputs from these tool invocations to the build variables



# All Target

all: $(OUTPUT_DIR)/$(SREC_FILENAME)



# Tool invocations

$(OUTPUT_DIR)/$(SREC_FILENAME): $(OUTPUT_DIR)/$(ELF_FILENAME)

   $(OBJCOPY) $(OUTPUT_DIR)/$(ELF_FILENAME) -O srec $(OUTPUT_DIR)/$(SREC_FILENAME)



$(OUTPUT_DIR)/$(ELF_FILENAME): $(OBJS)

   $(CC) -nostartfiles --gc-sections -Xlinker -Map=$(OUTPUT_DIR)/output.map -mcpu=$(CPU) -T $(LINKER_SCRIPT) -o"$(OUTPUT_DIR)/$(ELF_FILENAME)"  $(OBJS) $(USER_OBJS) $(LIBS)



$(OUTPUT_DIR)/%.o: %.c Makefile

   $(CC) $(CFLAGS)   -o"$@" "$<"



$(OUTPUT_DIR)/%.o: %.S

   $(AS) $(ASFLAGS) -o"$@" "$<"



# Other Targets

clean:

   -$(RM) $(OBJS) $(C_DEPS) $(EXECUTABLES) $(OUTPUT_DIR)/$(ELF_FILENAME) $(OUTPUT_DIR)/$(SREC_FILENAME)

   -@echo ' '



#

# The rule to create the target directory

#

$(OUTPUT_DIR):

   @mkdir $(OUTPUT_DIR)





.PHONY: all clean dependents

.SECONDARY: post-build



-include $(wildcard $(OUTPUT_DIR)/*.d) __dummy__


В споре рождается коллективное заблуждение, а истиной мы его называем для краткости
Аватара пользователя
kluchev
 
Сообщения: 995
Зарегистрирован: 04 апр 2008, 13:31
Откуда: SPb

Пред.

Вернуться в SDK 1.1

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron