From 2c5d3ac76f0ef3c72aa0416aef8b775864b50eb1 Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 30 Jun 2012 13:26:09 +0900 Subject: [PATCH] Add Makefile.lufa to keyboard/hhkb and hbkb. --- common/bootloader.c | 1 + keyboard/hbkb/Makefile | 57 +---------- keyboard/hbkb/Makefile.lufa | 119 ++++++++++++++++++++++ keyboard/hbkb/Makefile.pjrc | 56 ++++++++++ keyboard/hbkb/config.h | 3 + keyboard/hhkb/Makefile.lufa | 119 ++++++++++++++++++++++ keyboard/hhkb/Makefile.pjrc | 7 +- keyboard/hhkb/{config_pjrc.h => config.h} | 5 +- keyboard/hhkb/matrix.c | 10 +- keyboard/macway/Makefile.lufa | 4 +- keyboard/macway/Makefile.pjrc | 3 +- protocol/pjrc.mk | 3 +- rules.mk | 6 +- 13 files changed, 322 insertions(+), 71 deletions(-) mode change 100644 => 120000 keyboard/hbkb/Makefile create mode 100644 keyboard/hbkb/Makefile.lufa create mode 100644 keyboard/hbkb/Makefile.pjrc create mode 100644 keyboard/hhkb/Makefile.lufa rename keyboard/hhkb/{config_pjrc.h => config.h} (97%) diff --git a/common/bootloader.c b/common/bootloader.c index cb971c70..e45295cd 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -9,6 +9,7 @@ * http://www.fourwalledcubicle.com/files/LUFA/Doc/120219/html/_page__software_bootloader_start.html */ +// TODO: support usbasp /* Boot Section Size in bytes * Teensy halfKay 512 * Atmel DFU loader 4096 diff --git a/keyboard/hbkb/Makefile b/keyboard/hbkb/Makefile deleted file mode 100644 index 26be322e..00000000 --- a/keyboard/hbkb/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -# Target file name (without extension). -TARGET = hbk - -# Directory common source filess exist -TOP_DIR = ../.. - -# Directory keyboard dependent files exist -TARGET_DIR = . - -# keyboard dependent files -SRC = main.c \ - keymap.c \ - matrix.c \ - led.c - -CONFIG_H = config.h - - -# MCU name, you MUST set this to match the board you are using -# type "make clean" after changing this, so all files will be rebuilt -#MCU = at90usb162 # Teensy 1.0 -MCU = atmega32u4 # Teensy 2.0 -#MCU = at90usb646 # Teensy++ 1.0 -#MCU = at90usb1286 # Teensy++ 2.0 - - -# Processor frequency. -# Normally the first thing your program should do is set the clock prescaler, -# so your program will run at the correct speed. You should also set this -# variable to same clock speed. The _delay_ms() macro uses this, and many -# examples use this variable to calculate timings. Do not add a "UL" here. -F_CPU = 16000000 - - -# Build Options -# comment out to disable the options. -# -MOUSEKEY_ENABLE = yes # Mouse keys -#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -EXTRAKEY_ENABLE = yes # Audio control and System control -#NKRO_ENABLE = yes # USB Nkey Rollover - - - -#---------------- Programming Options -------------------------- -#PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex -PROGRAM_CMD = /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) erase && \ - /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) flash $(TARGET).hex && \ - /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) start - - - -include $(TOP_DIR)/protocol/pjrc.mk -include $(TOP_DIR)/protocol.mk -include $(TOP_DIR)/common.mk -include $(TOP_DIR)/rules.mk diff --git a/keyboard/hbkb/Makefile b/keyboard/hbkb/Makefile new file mode 120000 index 00000000..f00d036d --- /dev/null +++ b/keyboard/hbkb/Makefile @@ -0,0 +1 @@ +Makefile.lufa \ No newline at end of file diff --git a/keyboard/hbkb/Makefile.lufa b/keyboard/hbkb/Makefile.lufa new file mode 100644 index 00000000..c73a0ca7 --- /dev/null +++ b/keyboard/hbkb/Makefile.lufa @@ -0,0 +1,119 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Target file name (without extension). +TARGET = hbkb_lufa + +# Directory common source filess exist +TOP_DIR = ../.. + +# Directory keyboard dependent files exist +TARGET_DIR = . + + +# List C source files here. (C dependencies are automatically generated.) +SRC += keymap.c \ + matrix.c \ + led.c + +CONFIG_H = config.h + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + + +# Build Options +# comment out to disable the options. +# +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +#NKRO_ENABLE = yes # USB Nkey Rollover +#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support + + +# Boot Section Size in bytes +# Teensy halfKay 512 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +OPT_DEFS += -DBOOT_SIZE=4096 + + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) + +include $(TOP_DIR)/protocol/lufa.mk +include $(TOP_DIR)/common.mk +include $(TOP_DIR)/rules.mk diff --git a/keyboard/hbkb/Makefile.pjrc b/keyboard/hbkb/Makefile.pjrc new file mode 100644 index 00000000..159f56b4 --- /dev/null +++ b/keyboard/hbkb/Makefile.pjrc @@ -0,0 +1,56 @@ +# Target file name (without extension). +TARGET = hbkb + +# Directory common source filess exist +TOP_DIR = ../.. + +# Directory keyboard dependent files exist +TARGET_DIR = . + +# keyboard dependent files +SRC = main.c \ + keymap.c \ + matrix.c \ + led.c + +CONFIG_H = config.h + + +# MCU name, you MUST set this to match the board you are using +# type "make clean" after changing this, so all files will be rebuilt +#MCU = at90usb162 # Teensy 1.0 +MCU = atmega32u4 # Teensy 2.0 +#MCU = at90usb646 # Teensy++ 1.0 +#MCU = at90usb1286 # Teensy++ 2.0 + + +# Processor frequency. +# Normally the first thing your program should do is set the clock prescaler, +# so your program will run at the correct speed. You should also set this +# variable to same clock speed. The _delay_ms() macro uses this, and many +# examples use this variable to calculate timings. Do not add a "UL" here. +F_CPU = 16000000 + + +# Build Options +# comment out to disable the options. +# +MOUSEKEY_ENABLE = yes # Mouse keys +#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support +EXTRAKEY_ENABLE = yes # Audio control and System control +#NKRO_ENABLE = yes # USB Nkey Rollover + + + +#---------------- Programming Options -------------------------- +#PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex +PROGRAM_CMD = /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) erase && \ + /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) flash $(TARGET).hex && \ + /opt/dfu-programmer-0.5.2/bin/dfu-programmer $(MCU) start + + + +include $(TOP_DIR)/protocol/pjrc.mk +include $(TOP_DIR)/protocol.mk +include $(TOP_DIR)/common.mk +include $(TOP_DIR)/rules.mk diff --git a/keyboard/hbkb/config.h b/keyboard/hbkb/config.h index 5262399d..deaabb24 100644 --- a/keyboard/hbkb/config.h +++ b/keyboard/hbkb/config.h @@ -24,7 +24,10 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0xBB00 #define MANUFACTURER t.m.k. +#define DEVICE_VER 0x0100 #define PRODUCT Happy Buckling Keyboard + + #define DESCRIPTION mod version of IBM Model M keyboard diff --git a/keyboard/hhkb/Makefile.lufa b/keyboard/hhkb/Makefile.lufa new file mode 100644 index 00000000..cdd68f40 --- /dev/null +++ b/keyboard/hhkb/Makefile.lufa @@ -0,0 +1,119 @@ +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device. +# Please customize your programmer settings(PROGRAM_CMD) +# +# make teensy = Download the hex file to the device, using teensy_loader_cli. +# (must have teensy_loader_cli installed). +# +# make dfu = Download the hex file to the device, using dfu-programmer (must +# have dfu-programmer installed). +# +# make flip = Download the hex file to the device, using Atmel FLIP (must +# have Atmel FLIP installed). +# +# make dfu-ee = Download the eeprom file to the device, using dfu-programmer +# (must have dfu-programmer installed). +# +# make flip-ee = Download the eeprom file to the device, using Atmel FLIP +# (must have Atmel FLIP installed). +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + +# Target file name (without extension). +TARGET = hhkb_lufa + +# Directory common source filess exist +TOP_DIR = ../.. + +# Directory keyboard dependent files exist +TARGET_DIR = . + + +# List C source files here. (C dependencies are automatically generated.) +SRC += keymap.c \ + matrix.c \ + led.c + +CONFIG_H = config.h + + +# MCU name +MCU = at90usb1286 +#MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + + +# Build Options +# comment out to disable the options. +# +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +#NKRO_ENABLE = yes # USB Nkey Rollover +#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support + + +# Boot Section Size in bytes +# Teensy halfKay 512 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +#OPT_DEFS += -DBOOT_SIZE=4096 + + +# Search Path +VPATH += $(TARGET_DIR) +VPATH += $(TOP_DIR) + +include $(TOP_DIR)/protocol/lufa.mk +include $(TOP_DIR)/common.mk +include $(TOP_DIR)/rules.mk diff --git a/keyboard/hhkb/Makefile.pjrc b/keyboard/hhkb/Makefile.pjrc index f6d133ea..f8836a2c 100644 --- a/keyboard/hhkb/Makefile.pjrc +++ b/keyboard/hhkb/Makefile.pjrc @@ -13,12 +13,11 @@ TOP_DIR = ../.. TARGET_DIR = . # keyboard dependent files -SRC = main.c \ - keymap.c \ +SRC = keymap.c \ matrix.c \ led.c -CONFIG_H = config_pjrc.h +CONFIG_H = config.h # MCU name, you MUST set this to match the board you are using @@ -53,8 +52,8 @@ PROGRAM_CMD = teensy_loader_cli -mmcu=$(MCU) -w -v $(TARGET).hex # Search Path VPATH = $(TARGET_DIR) +VPATH = $(TOP_DIR) include $(TOP_DIR)/protocol/pjrc.mk -include $(TOP_DIR)/protocol.mk include $(TOP_DIR)/common.mk include $(TOP_DIR)/rules.mk diff --git a/keyboard/hhkb/config_pjrc.h b/keyboard/hhkb/config.h similarity index 97% rename from keyboard/hhkb/config_pjrc.h rename to keyboard/hhkb/config.h index fffe3522..91446466 100644 --- a/keyboard/hhkb/config_pjrc.h +++ b/keyboard/hhkb/config.h @@ -21,11 +21,14 @@ along with this program. If not, see . /* controller configuration */ #include "controller_teensy.h" + #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xCAFE +#define PRODUCT_ID 0xCAFF #define DEVICE_VER 0x0101 #define MANUFACTURER t.m.k. #define PRODUCT HHKB mod + + #define DESCRIPTION t.m.k. keyboard firmware for HHKB mod diff --git a/keyboard/hhkb/matrix.c b/keyboard/hhkb/matrix.c index 350066b9..79d2d987 100644 --- a/keyboard/hhkb/matrix.c +++ b/keyboard/hhkb/matrix.c @@ -68,8 +68,8 @@ static bool matrix_has_ghost_in_row(uint8_t row); // key: on: 0/off: 1 // prev: unknown: output previous key state(negated)? -#ifdef HOST_PJRC -// Ports for Teensy +#if defined(__AVR_AT90USB1286__) +// Ports for Teensy++ // row: PB0-2 // col: PB3-5,6 // key: PE6(pull-uped) @@ -90,7 +90,8 @@ static bool matrix_has_ghost_in_row(uint8_t row); #define KEY_PREV_OFF() (PORTE &= ~(1<<7)) #define KEY_POWER_ON() #define KEY_POWER_OFF() -#else + +#elif defined(__AVR_ATmega328P__) // Ports for V-USB // key: PB0(pull-uped) // prev: PB1 @@ -126,6 +127,9 @@ static bool matrix_has_ghost_in_row(uint8_t row); DDRC &= ~0x0F; \ PORTC &= ~0x0F; \ } while (0) + +#else +# error "define code for matrix scan" #endif diff --git a/keyboard/macway/Makefile.lufa b/keyboard/macway/Makefile.lufa index 2f2b6401..9c9388ee 100644 --- a/keyboard/macway/Makefile.lufa +++ b/keyboard/macway/Makefile.lufa @@ -107,9 +107,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control # Teensy halfKay 512 # Atmel DFU loader 4096 # LUFA bootloader 4096 -#ifndef BOOT_SIZE -#define BOOT_SIZE 512 -#endif +#OPT_DEFS += -DBOOT_SIZE=4096 # Search Path diff --git a/keyboard/macway/Makefile.pjrc b/keyboard/macway/Makefile.pjrc index d2fb8ff2..ecc236e3 100644 --- a/keyboard/macway/Makefile.pjrc +++ b/keyboard/macway/Makefile.pjrc @@ -48,8 +48,7 @@ TOP_DIR = ../.. TARGET_DIR = . # keyboard dependent files -SRC = protocol/pjrc/main.c \ - keymap.c \ +SRC = keymap.c \ matrix.c \ led.c diff --git a/protocol/pjrc.mk b/protocol/pjrc.mk index 8aff6f28..cccdf620 100644 --- a/protocol/pjrc.mk +++ b/protocol/pjrc.mk @@ -2,7 +2,8 @@ PJRC_DIR = protocol/pjrc OPT_DEFS += -DHOST_PJRC -SRC += $(PJRC_DIR)/pjrc.c \ +SRC += $(PJRC_DIR)/main.c \ + $(PJRC_DIR)/pjrc.c \ $(PJRC_DIR)/usb_keyboard.c \ $(PJRC_DIR)/usb_debug.c \ $(PJRC_DIR)/usb.c diff --git a/rules.mk b/rules.mk index a58de2f1..e561eae6 100644 --- a/rules.mk +++ b/rules.mk @@ -416,6 +416,10 @@ dfu: $(TARGET).hex dfu-programmer $(MCU) erase dfu-programmer $(MCU) flash $(TARGET).hex dfu-programmer $(MCU) reset + +dfu-start: + dfu-programmer $(MCU) reset + dfu-programmer $(MCU) start flip-ee: $(TARGET).hex $(TARGET).eep $(COPY) $(TARGET).eep $(TARGET)eep.hex @@ -599,4 +603,4 @@ $(shell mkdir $(OBJDIR) 2>/dev/null) .PHONY : all begin finish end sizebefore sizeafter gccversion \ build elf hex eep lss sym coff extcoff \ clean clean_list debug gdb-config show_path \ -program teensy dfu flip dfu-ee flip-ee +program teensy dfu flip dfu-ee flip-ee dfu-start