From d37359e7b2bd26da4d04fc97a94967cf457558e9 Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Tue, 6 Aug 2019 19:50:59 -0400 Subject: [PATCH] icss_uart: add Makefile for building firmware Signed-off-by: Denys Dmytriyenko --- firmware/icss_uart/src/Makefile | 125 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 firmware/icss_uart/src/Makefile diff --git a/firmware/icss_uart/src/Makefile b/firmware/icss_uart/src/Makefile new file mode 100644 index 0000000..4764622 --- /dev/null +++ b/firmware/icss_uart/src/Makefile @@ -0,0 +1,125 @@ +# PRU_CGT environment variable must point to the TI PRU code gen tools directory. E.g.: +#(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y +#(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.x.y +#(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru +# +# *ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in +# order to use the same Makefile +#(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin + +ifndef PRU_CGT +define ERROR_BODY + +******************************************************************************* +PRU_CGT environment variable is not set. Examples given: +(Desktop Linux) export PRU_CGT=/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2 +(Windows) set PRU_CGT=C:/path/to/pru/code/gen/tools/ti-cgt-pru_2.1.2 +(ARM Linux*) export PRU_CGT=/usr/share/ti/cgt-pru + +*ARM Linux also needs to create a symbolic link to the /usr/bin/ directory in +order to use the same Makefile +(ARM Linux) ln -s /usr/bin/ /usr/share/ti/cgt-pru/bin +******************************************************************************* + +endef +$(error $(ERROR_BODY)) +endif + +# PRU_SSP environment variable must point to the PRU Software Support Package. E.g.: +#(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package +#(Windows) set PRU_SSP=C:/path/to/pru_software_support_package +#(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package + +ifndef PRU_SSP +define ERROR_BODY + +******************************************************************************* +PRU_SSP environment variable must point to the PRU Software Support Package. E.g.: +(Desktop Linux) export PRU_SSP=/path/to/pru_software_support_package +(Windows) set PRU_SSP=C:/path/to/pru_software_support_package +(ARM Linux*) export PRU_SSP=/path/to/pru_software_support_package +PRU_CGT environment variable is not set. Examples given: +******************************************************************************* + +endef +$(error $(ERROR_BODY)) +endif + +MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(notdir $(patsubst %/,%,$(dir $(MKFILE_PATH)))) +PROJ_NAME=$(CURRENT_DIR) +LINKER_COMMAND_FILE=./AM335x_PRU.cmd +LIBS=--library=$(PRU_SSP)/lib/rpmsg_lib.lib +INCLUDE=--include_path=$(PRU_SSP)/include --include_path=$(PRU_SSP)/include/am335x +STACK_SIZE=0x100 +HEAP_SIZE=0x100 +GEN_DIR=gen + +#Common compiler and linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide) +CFLAGS=-v3 -o2 --display_error_number --endian=little --hardware_mac=on --asm_directory=$(GEN_DIR) --obj_directory=$(GEN_DIR) --pp_directory=$(GEN_DIR) -ppd -ppa -DICSS_REV2 +#Linker flags (Defined in 'PRU Optimizing C/C++ Compiler User's Guide) +LFLAGS=--reread_libs --warn_sections --stack_size=$(STACK_SIZE) --heap_size=$(HEAP_SIZE) + +TARGET=$(GEN_DIR)/$(PROJ_NAME).out +MAP=$(GEN_DIR)/$(PROJ_NAME).map +OBJECTS=$(patsubst %.asm,$(GEN_DIR)/%.object,$(wildcard *.asm)) +OBJECTS+=$(patsubst %.c,$(GEN_DIR)/%.object,$(wildcard *.c)) + + +all: printStart $(TARGET) printEnd + +printStart: + @echo '' + @echo '************************************************************' + @echo 'Building project: $(PROJ_NAME)' + +printEnd: + @echo '' + @echo 'Output files can be found in the "$(GEN_DIR)" directory' + @echo '' + @echo 'Finished building project: $(PROJ_NAME)' + @echo '************************************************************' + @echo '' + +# Invokes the linker (-z flag) to make the .out file +$(TARGET): $(OBJECTS) $(LINKER_COMMAND_FILE) + @echo '' + @echo 'Building target: $@' + @echo 'Invoking: PRU Linker' + $(PRU_CGT)/bin/clpru $(CFLAGS) -z -i$(PRU_CGT)/lib -i$(PRU_CGT)/include $(LFLAGS) -o $(TARGET) $(OBJECTS) -m$(MAP) $(LINKER_COMMAND_FILE) --library=libc.a $(LIBS) + @echo 'Finished building target: $@' + +# Invokes the compiler on all assembly files in the directory to create the object files +$(GEN_DIR)/%.object: %.asm + @mkdir -p $(GEN_DIR) + @echo '' + @echo 'Building file: $<' + @echo 'Invoking: PRU Compiler' + $(PRU_CGT)/bin/clpru --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $< + +# Invokes the compiler on all c files in the directory to create the object files +$(GEN_DIR)/%.object: %.c + @mkdir -p $(GEN_DIR) + @echo '' + @echo 'Building file: $<' + @echo 'Invoking: PRU Compiler' + $(PRU_CGT)/bin/clpru -k --include_path=$(PRU_CGT)/include $(INCLUDE) $(CFLAGS) -fe $@ $< + +.PHONY: all clean + +# Remove the $(GEN_DIR) directory +clean: + @echo '' + @echo '************************************************************' + @echo 'Cleaning project: $(PROJ_NAME)' + @echo '' + @echo 'Removing files in the "$(GEN_DIR)" directory' + @rm -rf $(GEN_DIR) + @echo '' + @echo 'Finished cleaning project: $(PROJ_NAME)' + @echo '************************************************************' + @echo '' + +# Includes the dependencies that the compiler creates (-ppd and -ppa flags) +-include $(OBJECTS:%.object=%.pp) + -- 2.7.4