summaryrefslogtreecommitdiffhomepage
path: root/digital/zigbit/bitcloud/stack/Components/HAL/avr/Makefile
blob: 450e054dc28da74c7990f296fbb2d96822d259c3 (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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
HAL_PATH = ..
include $(HAL_PATH)/Makerules

######
LIBDIR = $(STACK_LIB_PATH)
LIB = $(LIBDIR)/lib$(HAL_LIB).a

ifeq ($(HAL), ATMEGA1281)
  BUILDDIR = $(HAL_PATH)/avr/atmega1281
endif

ifeq ($(HAL), ATMEGA2561)
  BUILDDIR = $(HAL_PATH)/avr/atmega1281
endif

ifeq ($(HAL), ATMEGA1284)
  BUILDDIR = $(HAL_PATH)/avr/atmega1284
endif

ifeq ($(HAL), AT90USB1287)
  BUILDDIR = $(HAL_PATH)/avr/at90usb1287
endif

ifeq ($(HAL), ATMEGA128RFA1)
  BUILDDIR = $(HAL_PATH)/avr/atmega128rfa1
endif

#### DEFINES FLAGS #######
CFLAGS += -DHAL_USE_ADC
CFLAGS += -DHAL_USE_EE_READY
# CFLAGS += -DHAL_USE_TWI
CFLAGS += -DHAL_USE_TIMER4_COMPA
CFLAGS += -DHAL_USE_EXT_HANDLER
ifneq ($(HAL), AT90USB1287)
  CFLAGS += -DHAL_USE_SLEEP
  CFLAGS += -DHAL_USE_TIMER2_COMPA
  CFLAGS += -DHAL_USE_WAKEUP
endif
ifneq ($(HAL), ATMEGA1284)
  CFLAGS += -DHAL_USE_PWM
endif #ATMEGA1284
ifeq ($(HAL), AT90USB1287)
  CFLAGS += -DHAL_USE_USB
endif
ifeq ($(HAL), ATMEGA128RFA1)
  CFLAGS += -D_HAL_HW_AES_
  CFLAGS += -DHAL_USE_SPI
endif
CFLAGS += -DSLEEP_PRESCALER_1024
ifeq ($(HAL), ATMEGA1281)
  ifeq ($(HAL_TINY_UID), TRUE)
    CFLAGS += -D_HAL_TINY_UID_
  endif    
endif


##### DECLARES USART CHANNELS TO BE USED ##########
CFLAGS += -DHAL_USE_USART
ifneq ($(HAL), AT90USB1287)
  CFLAGS += -DNUM_USART_CHANNELS=2
else
  CFLAGS += -DNUM_USART_CHANNELS=1
endif # AT90USB1287

ifneq ($(HAL), AT90USB1287)
  CFLAGS += -DHAL_USE_USART_CHANNEL_0
endif # AT90USB1287

CFLAGS += -DHAL_USE_USART_CHANNEL_1

# Defines which USART uses hardware control pins - only one port at 
# the same time can be hardware controlled. If the macros is not declared - 
# hw control is not used.
ifeq (, $(findstring $(HAL), ATMEGA1284 AT90USB1287 ATMEGA128RFA1))
  #CFLAGS += -DHARDWARE_CONTROL_PINS_PORT_ASSIGNMENT=USART_CHANNEL_0
  CFLAGS += -DHW_CONTROL_PINS_PORT_ASSIGNMENT=USART_CHANNEL_1
endif

ifeq ($(SYSTEM_TIME_ON), SLEEP_TIMER)
  CFLAGS += -D_SYSTEM_TIME_ON_SLEEP_TIMER_
endif

##### PATHS FLAGS OF INCLUDES #########
CFLAGS += -I$(HAL_HWD_COMMON_PATH)/include
CFLAGS += -I$(HAL_MAC_API_PATH)/include  
CFLAGS += -I$(BUILDDIR)/../../include
CFLAGS += -I$(SE_PATH)/include

#### ASM DEFINES FLAGS #######
ASMFLAGS  = -I$(HAL_HWD_COMMON_PATH)/include
ifeq ($(COMPILER_TYPE), GCC)
  ASMFLAGS += -mmcu=$(CPU)
  ASM_FILE_EXT = s
endif
ifeq ($(COMPILER_TYPE), IAR)  
  ASMFLAGS += -s+ # Enables case sensitivity.
  ASMFLAGS += -w+ # Enables warnings.
  ASMFLAGS += -D$(HAL_FREQUENCY)
  ASMFLAGS += -M'<>'# Change asm.macro argument quote chars.
  ASMFLAGS += -L$(HAL_PATH)/avr/list  # Generate a list on: <path> /<source> <.lst>
  ASMFLAGS += -t8 # Set tab spacing.
  ASMFLAGS += -u_enhancedCore
  ASMFLAGS += -D__HAS_ENHANCED_CORE__=1
  ASMFLAGS += -D__HAS_MUL__=1
  ASMFLAGS += -D__MEMORY_MODEL__=2
  ifneq (, $(findstring $(HAL), ATMEGA1281 ATMEGA1284 AT90USB1287 ATMEGA128RFA1)) 
    ASMFLAGS += -v3 # Select processor option: Relative jumps do not wrap.
    ifeq ($(HAL), ATMEGA1281)
      ASMFLAGS += -D__ATmega1281__=1
    endif  
  endif
  ifneq (, $(findstring $(HAL), ATMEGA2561))
    ASMFLAGS += -v5 # Select processor option: Relative jumps do not wrap.
    ASMFLAGS += -D__ATmega2561__=1
  endif
  ASMFLAGS += -D__HAS_ELPM__=1 
  ASMFLAGS += -S 
  ASM_FILE_EXT = s90
endif

# Main clock of CPU in Hz.
ifeq ($(HAL_FREQUENCY), HAL_4MHz)
  F_CPU=4000000
endif
ifeq ($(HAL_FREQUENCY), HAL_8MHz)
  F_CPU=8000000
endif

###### LIB ##########
LIBS = $(LIB) $(LIBDIR)/$(WDT_INIT_OBJ)

ifneq ($(HAL), ATMEGA1284)
  common_hwd += halPwm
endif
ifneq ($(HAL), AT90USB1287)  
  common_hwd += halSleepTimerClock
endif
ifeq ($(HAL), AT90USB1287)  
  common_hwd += halUsb
endif
ifeq ($(HAL), ATMEGA128RFA1)
  common_hwd += halSecurityModule
  common_hwd += halDelay
endif
common_hwd +=  halAppClock
common_hwd +=  halClkCtrl
common_hwd +=  halUsart
common_hwd +=  halIrq
# common_hwd +=  i2c
common_hwd +=  halEeprom
common_hwd +=  wdt
common_hwd +=  halSleep
common_hwd +=  halAdc
common_hwd +=  halSpi
common_hwd +=  calibration
common_hwd +=  halInit

ifneq ($(HAL), ATMEGA128RFA1)
  personal_hwd += halRfSpi
endif

personal_hwd += halRfCtrl
personal_hwd += halUid
personal_hwd += halMacIsr

ifeq ($(HAL), ATMEGA1281)
  ifeq ($(HAL_TINY_UID), TRUE)
    personal_hwd += halAtmelUid
  endif    
endif

asm_hwd += halW1
asm_hwd += halCalibration
ifeq ($(COMPILER_TYPE), IAR)
  asm_hwd += cstartup
endif

ifneq ($(HAL), ATMEGA1284)
  hwi += pwm
endif
ifneq ($(HAL), AT90USB1287)
  hwi += sleepTimer
endif
ifeq ($(HAL), AT90USB1287)
  hwi += usb
endif
hwi += appTimer
hwi += halTaskManager
hwi += usart
hwi += w1
hwi += irq
hwi += resetReason
# hwi += i2cPacket
hwi += eeprom
hwi += timer
hwi += adc
hwi += spi
hwi += sleep

objects_hwd = $(addsuffix .o,$(addprefix $(HAL_HWD_COMMON_PATH)/objs/,$(common_hwd)))
objects_hwd += $(addsuffix .o,$(addprefix $(HAL_MAC_API_PATH)/objs/,$(personal_hwd)))
sources_hwd = $(addsuffix .c,$(addprefix $(HAL_HWD_COMMON_PATH)/src/,$(common_hwd)))
sources_hwd += $(addsuffix .c,$(addprefix $(HAL_MAC_API_PATH)/src/,$(personal_hwd)))
objects_asm_hwd = $(addsuffix .o,$(addprefix $(HAL_HWD_COMMON_PATH)/objs/,$(asm_hwd)))
sources_asm_hwd = $(addsuffix .$(ASM_FILE_EXT),$(addprefix $(HAL_HWD_COMMON_PATH)/src/,$(asm_hwd)))
objects_hwi = $(addsuffix .o,$(addprefix $(BUILDDIR)/../common/objs/,$(hwi)))
sources_hwi = $(addsuffix .c,$(addprefix $(BUILDDIR)/../common/src/,$(hwi)))

###### TARGETS ################
all: component_label WdtInit $(LIB)

component_label:
	@echo
	@echo ----------------------------------------------------
	@echo HAL library creation.
	@echo ----------------------------------------------------

################ common part ##############################
$(HAL_HWD_COMMON_PATH)/objs/%.o: $(HAL_HWD_COMMON_PATH)/src/%.c
	$(CC_MSG)
	$(Q)$(CC) $(CFLAGS) $^ -o $@
################ common part ##############################

################ personal part ##############################
$(HAL_MAC_API_PATH)/objs/%.o: $(HAL_MAC_API_PATH)/src/%.c
	$(CC_MSG)
	$(Q)$(CC) $(CFLAGS) $^ -o $@
################ personal part ##############################

################ common assembler part ######################
$(HAL_HWD_COMMON_PATH)/objs/%.o: $(HAL_HWD_COMMON_PATH)/src/%.$(ASM_FILE_EXT)
	$(AS_MSG)
	$(Q)$(AS) $(ASMFLAGS) -o $@ $^

ifeq ($(COMPILER_TYPE), IAR)
gen_fcpu_header:
	@echo "FCPU EQU $(F_CPU)" > $(HAL_HWD_COMMON_PATH)/include/halIarD.h
endif

ifeq ($(COMPILER_TYPE), GCC)
gen_fcpu_header:
	@echo ".equ FCPU, $(F_CPU)" > $(HAL_HWD_COMMON_PATH)/include/halGccD.h
endif
################ common assembler part ######################

################ hwi part ###################################
$(BUILDDIR)/../common/objs/%.o: $(BUILDDIR)/../common/src/%.c
	$(CC_MSG)
	$(Q)$(CC) $(CFLAGS) $^ -o $@
################ hwi part ###################################

################
WdtInit: $(HAL_HWD_COMMON_PATH)/src/halWdtInit.c
	$(CC_MSG)
	$(Q)$(CC) $(CFLAGS) $(HAL_HWD_COMMON_PATH)/src/halWdtInit.c -o $(LIBDIR)/$(WDT_INIT_OBJ)
################
$(LIB): $(objects_hwd) gen_fcpu_header $(objects_asm_hwd) $(objects_hwi)
	$(AR_MSG)
	$(Q)$(AR) $(AR_KEYS) $(LIB) $(objects_hwd) $(objects_asm_hwd) $(objects_hwi)
	$(SIZE_MSG)
	$(Q)$(SHOW_SIZE) -td $(LIBDIR)/$(WDT_INIT_OBJ)
	$(SIZE_MSG)
	$(Q)$(SHOW_SIZE) -td $(LIB)

#	$(foreach lib_iter,$(wildcard $(LIBDIR)/lib*$(STACK_LIB)*.a), $(shell $(AR) $(AR_KEYS) $(lib_iter) $(objects_hwd) $(objects_asm_hwd) $(objects_hwi)))
################
clean:
	@echo 
	@echo ----------------------------------------------------
	@echo HAL component cleaning.
	$(Q)rm -f $(objects_hwd) $(objects_hwi) $(LIBS) $(objects_asm_hwd)
	$(Q)rm -f $(HAL_PATH)/lib/*.a $(HAL_PATH)/lib/*.o $(HAL_PATH)/avr/list/*.*
	@echo HAL cleaning done!
	@echo ----------------------------------------------------