root / tidsense / Makefile @ 166:1a6a85e8d2e7
History | View | Annotate | Download (4.5 kB)
1 | # Tidmarsh Sensor Node Source Code |
---|---|
2 | # Brian Mayton <bmayton@media.mit.edu> |
3 | # Responsive Environments Group |
4 | # (c) 2012-2014 Massachusetts Institute of Technology |
5 | |
6 | -include config.mk |
7 | |
8 | # Build tools; set TOOLCHAIN to the path to the Atmel GCC toolchain you |
9 | # unzipped, or leave blank if the tools are installed in your $PATH |
10 | |
11 | TOOLCHAIN ?= ~/avr8-gnu-toolchain-linux_x86_64/bin/ |
12 | |
13 | PROGRAMMER ?= jtag2pdi |
14 | CC = $(TOOLCHAIN)avr-gcc |
15 | OBJCOPY = $(TOOLCHAIN)avr-objcopy |
16 | AR = $(TOOLCHAIN)avr-ar |
17 | AVR_SIZE = $(TOOLCHAIN)avr-size |
18 | AVRDUDE ?= avrdude |
19 | |
20 | |
21 | # Application configuration |
22 | |
23 | APP = tidsense |
24 | APP_OBJECTS = \ |
25 | tidsense.o \ |
26 | debug.o \ |
27 | power.o \ |
28 | sysclock.o \ |
29 | dma.o \ |
30 | led.o \ |
31 | nv.o \ |
32 | sensors.o \ |
33 | adc.o \ |
34 | analog.o \ |
35 | i2cmaster.o \ |
36 | spi.o \ |
37 | vs1063.o \ |
38 | vs1063_encpatches.o \ |
39 | network.o \ |
40 | command.o \ |
41 | ota.o \ |
42 | version.o \ |
43 | scheduler.o \ |
44 | assoc.o \ |
45 | uart.o \ |
46 | event.o \ |
47 | report.o \ |
48 | audio_power.o \ |
49 | |
50 | SENSOR_OBJECTS_V2 = \ |
51 | board_v2.o \ |
52 | sht21.o \ |
53 | isl29023.o \ |
54 | bmp180.o \ |
55 | lt3652.o \ |
56 | adxl362.o \ |
57 | vwc.o \ |
58 | tx22u.o |
59 | |
60 | # Atmel Lightweight Mesh framework |
61 | |
62 | LWM_HAL = atxmegaA4 |
63 | LWM_PHY = at86rf231 |
64 | |
65 | LWM_INCLUDE_DIRS = \ |
66 | lwm/hal/$(LWM_HAL)/inc \ |
67 | lwm/hal/drivers/$(LWM_HAL) \ |
68 | lwm/phy/$(LWM_PHY)/inc \ |
69 | lwm/sys/inc \ |
70 | lwm/nwk/inc |
71 | |
72 | LWM_HAL_OBJECTS = \ |
73 | lwm/hal/$(LWM_HAL)/src/hal.o \ |
74 | lwm/hal/$(LWM_HAL)/src/halPhy.o \ |
75 | lwm/hal/drivers/$(LWM_HAL)/halSleep.o \ |
76 | lwm/hal/$(LWM_HAL)/src/halTimer.o \ |
77 | lwm/hal/drivers/$(LWM_HAL)/halUart.o |
78 | |
79 | LWM_PHY_OBJECTS = \ |
80 | lwm/phy/$(LWM_PHY)/src/phy.o |
81 | |
82 | LWM_SYS_OBJECTS = \ |
83 | lwm/sys/src/sys.o \ |
84 | lwm/sys/src/sysEncrypt.o \ |
85 | lwm/sys/src/sysTimer.o |
86 | |
87 | LWM_NWK_OBJECTS = \ |
88 | lwm/nwk/src/nwk.o \ |
89 | lwm/nwk/src/nwkRouteDiscovery.o \ |
90 | lwm/nwk/src/nwkRoute.o \ |
91 | lwm/nwk/src/nwkRx.o \ |
92 | lwm/nwk/src/nwkDataReq.o \ |
93 | lwm/nwk/src/nwkFrame.o \ |
94 | lwm/nwk/src/nwkGroup.o \ |
95 | lwm/nwk/src/nwkSecurity.o \ |
96 | lwm/nwk/src/nwkTx.o |
97 | |
98 | LWM_OBJECTS = \ |
99 | $(LWM_HAL_OBJECTS) \ |
100 | $(LWM_PHY_OBJECTS) \ |
101 | $(LWM_SYS_OBJECTS) \ |
102 | $(LWM_NWK_OBJECTS) |
103 | |
104 | OBJECTS = $(APP_OBJECTS) $(LWM_OBJECTS) |
105 | |
106 | |
107 | # Board-specific code (sensor set, etc.) differs between two PCB revs |
108 | |
109 | ADDR ?= 0x811F |
110 | VERSION ?= 2 |
111 | |
112 | ifeq ($(VERSION),2) |
113 | MCU = atxmega128a4u |
114 | OBJECTS += $(SENSOR_OBJECTS_V2) |
115 | CFLAGS += -DBOARD_V2 |
116 | APPTABLE_START = 0x1E000 |
117 | endif |
118 | |
119 | GENERATED_HEADERS = |
120 | |
121 | # Build tool configuration |
122 | |
123 | INCLUDE_FLAGS = $(patsubst %,-I%,$(LWM_INCLUDE_DIRS)) |
124 | CFLAGS += -mmcu=$(MCU) -Wall -I. -funsigned-char -funsigned-bitfields \ |
125 | -fpack-struct -fshort-enums -fno-strict-aliasing -Os -DXMEGA -DAVR -std=gnu99 \ |
126 | $(INCLUDE_FLAGS) -DAPP_ADDR=$(ADDR) |
127 | |
128 | |
129 | LDFLAGS=-mmcu=$(MCU) -Wl,-section-start=.apptable=$(APPTABLE_START) |
130 | |
131 | # miscellaneous Makefile options |
132 | |
133 | SHELL:=/bin/bash |
134 | export SHELLOPTS:=pipefail |
135 | .PHONY: clean app all fuses |
136 | export |
137 | |
138 | # targets |
139 | |
140 | all: app |
141 | |
142 | # Rules for building the application |
143 | |
144 | app: lwm $(APP).hex $(APP).eep |
145 | |
146 | %.hex: %.elf |
147 | $(OBJCOPY) -j .text -j .data -j .apptable -O ihex $< $@ |
148 | |
149 | %.eep: %.elf |
150 | $(OBJCOPY) -j .eeprom -O binary $< $@ |
151 | |
152 | %.tbl: %.elf |
153 | $(OBJCOPY) -j .apptable -O ihex $< $@ |
154 | |
155 | $(APP).elf: $(OBJECTS) |
156 | $(CC) $(LDFLAGS) -o $@ $^ -lm 2>&1 | util/hl |
157 | $(AVR_SIZE) -C --mcu=$(MCU) $@ |
158 | $(AVR_SIZE) --mcu=$(MCU) $@ |
159 | |
160 | $(APP).bin: $(APP).elf |
161 | $(OBJCOPY) -j .text -j .data -j .apptable -O binary $< $@ |
162 | |
163 | .PHONY: image |
164 | image: $(APP).img |
165 | |
166 | $(APP).img: $(APP).bin version.bin |
167 | util/make_image version.bin $< $@ |
168 | |
169 | %.o: %.c $(GENERATED_HEADERS) |
170 | $(CC) $(CFLAGS) -c $< -o $@ 2>&1 | util/hl |
171 | |
172 | version.o: version.c version.h .FORCE |
173 | $(CC) $(CFLAGS) -DREVISION=$(shell hg id -n | sed s/+//) \ |
174 | -DHASH="\"$(shell hg id -i)\"" -c $< -o $@ |
175 | |
176 | version.bin: version.o |
177 | $(OBJCOPY) -O binary $< $@ |
178 | hexdump -C $@ |
179 | |
180 | install: $(APP).hex $(APP).tbl |
181 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb -B 0.5 -U application:w:$< |
182 | |
183 | tblinstall: $(APP).tbl |
184 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb -U flash:w:$(APP).tbl |
185 | |
186 | nvinstall: $(APP).eep |
187 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb -U eeprom:w:$<:r |
188 | |
189 | .PHONY: usersig |
190 | usersig: |
191 | $(CC) $(CFLAGS) -c -o usersig.o usersig.c \ |
192 | 2>&1 | util/hl |
193 | $(OBJCOPY) -j .usersig -O binary usersig.o usersig.bin |
194 | hexdump -C usersig.bin |
195 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb \ |
196 | -U user:w:usersig.bin:r |
197 | |
198 | fullinstall: $(APP).hex $(APP).eep |
199 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb -e \ |
200 | -U flash:w:$(APP).hex \ |
201 | -U eeprom:w:$(APP).eep:r |
202 | |
203 | lwm: |
204 | hg clone http://simonetti.media.mit.edu/hg/lwm |
205 | |
206 | .PHONY: reset |
207 | reset: |
208 | $(AVRDUDE) -p $(MCU) -c $(PROGRAMMER) -P usb |
209 | |
210 | .PHONY: doxygen |
211 | doxygen: |
212 | doxygen |
213 | |
214 | .PHONY: .FORCE |
215 | .FORCE: |
216 | |
217 | clean: |
218 | rm -f *.o |
219 | rm -f lwm/hal/$(LWM_HAL)/src/*.o |
220 | rm -f lwm/hal/drivers/$(LWM_HAL)/*.o |
221 | rm -f lwm/phy/$(LWM_PHY)/src/*.o |
222 | rm -f lwm/sys/src/*.o |
223 | rm -f lwm/nwk/src/*.o |
224 | rm -f $(APP).{hex,elf,eep,tbl,bin,img} |
225 | rm -rf doxygen/xml |