summaryrefslogtreecommitdiffstats
path: root/recipes-bsp/pru/pru-swuart-fw/0001-icss_uart-add-Makefile-for-building-firmware.patch
blob: 8414d945126155256aaad37587c22e40515678eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
From d37359e7b2bd26da4d04fc97a94967cf457558e9 Mon Sep 17 00:00:00 2001
From: Denys Dmytriyenko <denys@ti.com>
Date: Tue, 6 Aug 2019 19:50:59 -0400
Subject: [PATCH] icss_uart: add Makefile for building firmware

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
---
 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