You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
5.3 KiB
137 lines
5.3 KiB
######################################################################
|
|
# Project.mk is used for creating new FreeRTOS projects. See the
|
|
# associated README.md file in this directory for usage info.
|
|
######################################################################
|
|
|
|
# Edit this variable if your release differs from what is shown here:
|
|
|
|
FREERTOS ?= FreeRTOSv10.0.1
|
|
|
|
######################################################################
|
|
# Internal variables
|
|
######################################################################
|
|
|
|
PROJECT ?= newproject
|
|
RTOSDIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
|
FREERTOSDIR := $(abspath $(RTOSDIR)/$(FREERTOS))
|
|
PROJRTOS = $(PROJECT)/rtos
|
|
|
|
.PHONY: rsrc all group1 group2 group3 group4 license setup
|
|
|
|
all: check rsrc group1 group2 group3 group4 license \
|
|
$(PROJECT)/stm32f103c8t6.ld setup \
|
|
$(PROJECT)/FreeRTOSConfig.h
|
|
@echo "****************************************************************"
|
|
@echo "Your project in subdirectory $(PROJECT) is now ready."
|
|
@echo
|
|
@echo "1. Edit FreeRTOSConfig.h per project requirements."
|
|
@echo "2. Edit Makefile SRCFILES as required. This also"
|
|
@echo " chooses which heap_*.c to use."
|
|
@echo "3. Edit stm32f103c8t6.ld if necessary."
|
|
@echo "4. make"
|
|
@echo "5. make flash"
|
|
@echo "6. make clean or make clobber as required"
|
|
@echo "****************************************************************"
|
|
|
|
check:
|
|
@if [ "$(PROJECT)" = "newproject" ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "Please supply PROJECT='<projectname>' on the" ; \
|
|
echo "make command line." ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2 ; \
|
|
fi
|
|
@if [ -d $(PROJECT) ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "Subdirectory $(PROJECT) already exists!" ; \
|
|
echo "Cowardly refusing to delete/update it." ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2 ; \
|
|
fi
|
|
|
|
setup:
|
|
cp $(RTOSDIR)/src/opencm3.c $(PROJRTOS)/.
|
|
cp $(RTOSDIR)/src/main.c $(PROJECT)/.
|
|
cp $(RTOSDIR)/src/Makefile $(PROJECT)/.
|
|
|
|
rsrc:
|
|
@if [ ! -d "$(FREERTOSDIR)" ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "FreeRTOS subdirectory $(FREERTOS) does not exist." ; \
|
|
echo "( $(FREERTOSDIR) )" ; \
|
|
echo ; \
|
|
echo "Download and unzip the FreeRTOS zip file here. It should" ; \
|
|
echo "produce a subdirectory like ./$(FREERTOS). If the downloaded" ; \
|
|
echo "release differs, then also edit the variable FREERTOS= at the top" ; \
|
|
echo "of this Makefile." ; \
|
|
echo ; \
|
|
echo "Then try again." ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2; \
|
|
fi
|
|
@if [ ! -d "$(FREERTOSDIR)/FreeRTOS" ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "FreeRTOS is improperly unzipped. There should be a" ; \
|
|
echo "subdirectory ./FreeRTOS under $(FREERTOSDIR)." ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2; \
|
|
fi
|
|
@if [ ! -d ../libopencm3 -o ! -f ../libopencm3/Makefile ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "Directory ../libopencm3 is missing or incomplete. Make sure that" ; \
|
|
echo "the git submodule is checked out and a make has been performed" ; \
|
|
echo "there." ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2; \
|
|
fi
|
|
@if [ ! -f ../libopencm3/lib/libopencm3_stm32f1.a ] ; then \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
echo "Directory ../libopencm3 exists but the library file " ; \
|
|
echo "../libopencm3/lib/libopencm3_stm32f1.a has not been created. " ; \
|
|
echo "Please change to the ./libopencm3 and type make to build that " ; \
|
|
echo "git submodule. " ; \
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ; \
|
|
exit 2; \
|
|
else \
|
|
mkdir -p "$(PROJRTOS)" ; \
|
|
fi
|
|
|
|
group1:
|
|
@for f in list.c queue.c tasks.c ; do \
|
|
echo "cp '$(FREERTOSDIR)/FreeRTOS/Source/$$f' '$(PROJRTOS)/.'" ; \
|
|
cp "$(FREERTOSDIR)/FreeRTOS/Source/$$f" "$(PROJRTOS)/." ; \
|
|
done
|
|
|
|
group2:
|
|
@for f in $(FREERTOSDIR)/FreeRTOS/Source/portable/MemMang/heap_*.c ; do \
|
|
echo "cp '$$f' '$(PROJRTOS)/.'" ; \
|
|
cp "$$f" "$(PROJRTOS)/." ; \
|
|
done
|
|
|
|
group3:
|
|
@for f in port.c portmacro.h ; do \
|
|
echo "cp '$(FREERTOSDIR)/FreeRTOS/Source/portable/GCC/ARM_CM3/$$f' '$(PROJRTOS)/.'" ; \
|
|
cp "$(FREERTOSDIR)/FreeRTOS/Source/portable/GCC/ARM_CM3/$$f" "$(PROJRTOS)/." ; \
|
|
done
|
|
|
|
group4:
|
|
@for f in FreeRTOS.h mpu_prototypes.h projdefs.h stdint.readme StackMacros.h event_groups.h mpu_wrappers.h queue.h task.h croutine.h list.h \
|
|
portable.h semphr.h timers.h deprecated_definitions.h stack_macros.h ; do \
|
|
cp $(FREERTOSDIR)/FreeRTOS/Source/include/$$f $(PROJRTOS)/. ; \
|
|
done
|
|
|
|
license:
|
|
cp $(FREERTOSDIR)/FreeRTOS/License/license.txt $(PROJRTOS)/LICENSE
|
|
|
|
# We don't use stm32f10x_lib.h because libopencm3 provides our device driver
|
|
# facilities. So we comment that line out of FreeRTOSConfig.h
|
|
#
|
|
$(PROJECT)/FreeRTOSConfig.h:
|
|
@echo "Editing $(PROJRTOS)/FreeRTOSConfig.h"
|
|
sed <$(FREERTOSDIR)/FreeRTOS/Demo/CORTEX_STM32F103_Primer_GCC/FreeRTOSConfig.h \
|
|
>$(PROJECT)/FreeRTOSConfig.h -f $(RTOSDIR)/src/alters.sed
|
|
|
|
$(PROJECT)/stm32f103c8t6.ld:
|
|
cp $(RTOSDIR)/src/stm32f103c8t6.ld $(PROJECT)/stm32f103c8t6.ld
|
|
|
|
# End
|
|
|