lufa_hid.mk 3.84 KB
Newer Older
1
2
3
4
5
6
7
8
9
#
#             LUFA Library
#     Copyright (C) Dean Camera, 2012.
#
#  dean [at] fourwalledcubicle [dot] com
#           www.lufa-lib.org
#

LUFA_BUILD_MODULES         += HID
10
LUFA_BUILD_TARGETS         += hid hid-ee teensy teensy-ee
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
LUFA_BUILD_MANDATORY_VARS  += MCU TARGET
LUFA_BUILD_OPTIONAL_VARS   += 
LUFA_BUILD_PROVIDED_VARS   += 
LUFA_BUILD_PROVIDED_MACROS += 

# -----------------------------------------------------------------------------
#               LUFA HID Bootloader Buildsystem Makefile Module.
# -----------------------------------------------------------------------------
# DESCRIPTION:
#   Provides a set of targets to re-program a device currently running a HID
#   class bootloader with a project's FLASH files.
# -----------------------------------------------------------------------------
# TARGETS:
#
#    hid                       - Program FLASH into target via
#                                hid_bootloader_cli
27
28
#    hid-ee                    - Program EEPROM into target via a temporary
#                                AVR application and hid_bootloader_cli
29
#    teensy                    - Program FLASH into target via
30
#                                teensy_loader_cli
31
#    teensy-ee                 - Program EEPROM into target via a temporary
32
#                                AVR application and teensy_loader_cli
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
#
# MANDATORY PARAMETERS:
#
#    MCU                       - Microcontroller device model name
#    TARGET                    - Application name
#
# OPTIONAL PARAMETERS:
#
#    (None)
#
# PROVIDED VARIABLES:
#
#    (None)
#
# PROVIDED MACROS:
#
#    (None)
#
# -----------------------------------------------------------------------------

ERROR_IF_UNSET   ?= $(if $(filter undefined, $(origin $(strip $(1)))), $(error Makefile $(strip $(1)) value not set))
ERROR_IF_EMPTY   ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $(1)) option cannot be blank))
ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N))

# Sanity-check values of mandatory user-supplied variables
$(foreach MANDATORY_VAR, $(LUFA_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR)))
$(call ERROR_IF_EMPTY, MCU)
$(call ERROR_IF_EMPTY, TARGET)

# Output Messages
MSG_HID_BOOTLOADER_CMD := ' [HID]     :'
64
65
MSG_OBJCPY_CMD         := ' [OBJCPY]  :'
MSG_MAKE_CMD           := ' [MAKE]    :'
66

67
# Programs in the target FLASH memory using the HID_BOOTLOADER_CLI tool
68
69
70
71
hid: $(TARGET).hex $(MAKEFILE_LIST)
	@echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with hid_bootloader_cli using \"$<\"
	hid_bootloader_cli -mmcu=$(MCU) -v $<

72
# Programs in the target EEPROM memory using the HID_BOOTLOADER_CLI tool (note: clears target FLASH memory)
73
74
75
76
hid-ee: $(TARGET).eep $(MAKEFILE_LIST)
	@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\"
	avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin
	@echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\"
77
	make -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) clean hid
78

79
# Programs in the target FLASH memory using the TEENSY_BOOTLOADER_CLI tool
80
teensy: $(TARGET).hex $(MAKEFILE_LIST)
81
82
83
	@echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\"
	teensy_loader_cli -mmcu=$(MCU) -v $<

84
# Programs in the target EEPROM memory using the TEENSY_BOOTLOADER_CLI tool (note: clears target FLASH memory)
85
teensy-ee: $(TARGET).hex $(MAKEFILE_LIST)
86
87
88
	@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\"
	avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin
	@echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\"
89
	make -s -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) clean hid-teensy
90
	
91
# Phony build targets for this module
92
.PHONY: hid hid-ee teensy teensy-ee