aboutsummaryrefslogtreecommitdiff
path: root/tool/mbed
diff options
context:
space:
mode:
Diffstat (limited to 'tool/mbed')
-rw-r--r--tool/mbed/common.mk79
-rw-r--r--tool/mbed/gcc.mk80
-rw-r--r--tool/mbed/lpc-vector-checksum.c99
-rw-r--r--tool/mbed/mbed.mk99
4 files changed, 357 insertions, 0 deletions
diff --git a/tool/mbed/common.mk b/tool/mbed/common.mk
new file mode 100644
index 000000000..93a927a3e
--- /dev/null
+++ b/tool/mbed/common.mk
@@ -0,0 +1,79 @@
1OBJECTS += \
2 $(OBJDIR)/common/action.o \
3 $(OBJDIR)/common/action_tapping.o \
4 $(OBJDIR)/common/action_macro.o \
5 $(OBJDIR)/common/action_layer.o \
6 $(OBJDIR)/common/action_util.o \
7 $(OBJDIR)/common/host.o \
8 $(OBJDIR)/common/keymap.o \
9 $(OBJDIR)/common/keyboard.o \
10 $(OBJDIR)/common/util.o \
11 $(OBJDIR)/common/mbed/suspend.o \
12 $(OBJDIR)/common/mbed/timer.o \
13 $(OBJDIR)/common/mbed/xprintf.o \
14 $(OBJDIR)/common/mbed/bootloader.o \
15
16INCLUDE_PATHS += \
17 -I$(TMK_DIR)/common \
18 -I$(TMK_DIR)/protocol
19
20CC_FLAGS += -include $(CONFIG_H)
21
22
23
24# Option modules
25ifdef BOOTMAGIC_ENABLE
26 $(error Not Supported)
27 OBJECTS += $(OBJDIR)/common/bootmagic.o
28 OBJECTS += $(OBJDIR)/common/mbed/eeprom.o
29 OPT_DEFS += -DBOOTMAGIC_ENABLE
30endif
31
32ifdef MOUSEKEY_ENABLE
33 OBJECTS += $(OBJDIR)/common/mousekey.o
34 OPT_DEFS += -DMOUSEKEY_ENABLE
35 OPT_DEFS += -DMOUSE_ENABLE
36endif
37
38ifdef EXTRAKEY_ENABLE
39 $(error Not Supported)
40 OPT_DEFS += -DEXTRAKEY_ENABLE
41endif
42
43ifdef CONSOLE_ENABLE
44 $(error Not Supported)
45 OPT_DEFS += -DCONSOLE_ENABLE
46else
47 OPT_DEFS += -DNO_PRINT
48 OPT_DEFS += -DNO_DEBUG
49endif
50
51ifdef COMMAND_ENABLE
52 $(error Not Supported)
53 SRC += common/command.c
54 OPT_DEFS += -DCOMMAND_ENABLE
55endif
56
57ifdef NKRO_ENABLE
58 $(error Not Supported)
59 OPT_DEFS += -DNKRO_ENABLE
60endif
61
62ifdef SLEEP_LED_ENABLE
63 $(error Not Supported)
64 SRC += common/sleep_led.c
65 OPT_DEFS += -DSLEEP_LED_ENABLE
66 OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
67endif
68
69ifdef BACKLIGHT_ENABLE
70 $(error Not Supported)
71 SRC += common/backlight.c
72 OPT_DEFS += -DBACKLIGHT_ENABLE
73endif
74
75ifdef KEYMAP_SECTION_ENABLE
76 $(error Not Supported)
77 OPT_DEFS += -DKEYMAP_SECTION_ENABLE
78 EXTRALDFLAGS = -Wl,-L$(TOP_DIR),-Tldscript_keymap_avr5.x
79endif
diff --git a/tool/mbed/gcc.mk b/tool/mbed/gcc.mk
new file mode 100644
index 000000000..032f7c6ca
--- /dev/null
+++ b/tool/mbed/gcc.mk
@@ -0,0 +1,80 @@
1###############################################################################
2GCC_BIN =
3AS = $(GCC_BIN)arm-none-eabi-as
4CC = $(GCC_BIN)arm-none-eabi-gcc
5CPP = $(GCC_BIN)arm-none-eabi-g++
6LD = $(GCC_BIN)arm-none-eabi-gcc
7OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
8OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
9SIZE = $(GCC_BIN)arm-none-eabi-size
10CHKSUM = $(TMK_DIR)/tool/mbed/lpc-vector-checksum
11
12CPU = -mcpu=cortex-m0 -mthumb
13
14CC_FLAGS += $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections
15CC_FLAGS += -MMD -MP
16CC_SYMBOLS = -DTARGET_LPC11U35_401 -DTARGET_M0 -DTARGET_NXP -DTARGET_LPC11UXX -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M0 -DARM_MATH_CM0 -DMBED_BUILD_TIMESTAMP=1399108688.49 -D__MBED__=1
17
18LD_FLAGS = -mcpu=cortex-m0 -mthumb -Wl,--gc-sections --specs=nano.specs
19LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref
20LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
21
22ifeq ($(DEBUG), 1)
23 CC_FLAGS += -DDEBUG -O0
24else
25 CC_FLAGS += -DNDEBUG -Os
26endif
27
28all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex size
29
30clean:
31 rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS)
32 rm -fr $(OBJDIR)
33
34$(OBJDIR)/%.o: %.s
35 mkdir -p $(@D)
36 $(AS) $(CPU) -o $@ $<
37
38$(OBJDIR)/%.o: %.c
39 mkdir -p $(@D)
40 $(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $<
41
42$(OBJDIR)/%.o: %.cpp
43 mkdir -p $(@D)
44 $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 $(INCLUDE_PATHS) -o $@ $<
45
46
47$(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
48 $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
49 @echo ""
50 @echo "*****"
51 @echo "***** You must modify vector checksum value in *.bin and *.hex files."
52 @echo "*****"
53 @echo ""
54
55$(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf
56 @$(OBJCOPY) -O binary $< $@
57 @echo "Writing vector checksum value into $@ ..."
58 @$(CHKSUM) $@
59 @echo
60
61$(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf
62 @$(OBJCOPY) -O ihex $< $@
63
64$(OBJDIR)/$(PROJECT).lst: $(OBJDIR)/$(PROJECT).elf
65 @$(OBJDUMP) -Sdh $< > $@
66
67lst: $(OBJDIR)/$(PROJECT).lst
68
69size:
70 $(SIZE) $(OBJDIR)/$(PROJECT).elf
71
72prog: $(OBJDIR)/$(PROJECT).bin
73 @echo "Program..."
74ifneq ($(shell mount | grep 'CRP DISABLD'),)
75 umount /dev/nxpisp >/dev/null 2>&1
76endif
77 dd if=$< of=/dev/nxpisp seek=4
78
79DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
80-include $(DEPS)
diff --git a/tool/mbed/lpc-vector-checksum.c b/tool/mbed/lpc-vector-checksum.c
new file mode 100644
index 000000000..316a1253a
--- /dev/null
+++ b/tool/mbed/lpc-vector-checksum.c
@@ -0,0 +1,99 @@
1/***************************************************************************
2* https://github.com/dhylands/projects/blob/master/lpc/lpc-vector-checksum/lpc-vector-checksum.c
3*
4* Copyright (c) 2012 by Dave Hylands
5* All Rights Reserved
6*
7* Permission is granted to any individual or institution to use, copy,
8* modify, or redistribute this file so long as it is not sold for profit,
9* and that this copyright notice is retained.
10*
11***************************************************************************
12*
13* This program calculates the vector checksum used in LPC17xx binary
14* images.
15*
16* Usage: lpc-vector-checksum file
17*
18***************************************************************************/
19
20#include <stdio.h>
21#include <stdlib.h>
22#include <stdint.h>
23#include <errno.h>
24#include <string.h>
25
26/***************************************************************************/
27/**
28* update_vector_checksum
29*
30* The algorithim is to write the checksum such that the checksum of the
31* first 8 words is equal to zero.
32*
33* The LPC1768 uses little-endian, and this particular routine assumes
34* that it's running on a little-endian architecture.
35*/
36static int update_vector_checksum( const char *filename )
37{
38 uint32_t sum;
39 uint32_t header[8];
40 FILE *fs;
41 int i;
42
43 if (( fs = fopen( filename, "r+b" )) == NULL )
44 {
45 fprintf( stderr, "Unable to open '%s' for reading/writing (%d): %s\n",
46 filename, errno, strerror( errno ));
47 return 0;
48 }
49
50 if ( fread( header, sizeof( header ), 1, fs ) != 1 )
51 {
52 fprintf( stderr, "Failed to read header from '%s' (perhaps the file is too small?)",
53 filename );
54 fclose( fs );
55 return 0;
56 }
57
58 sum = 0;
59 for ( i = 0; i < 7; i++ )
60 {
61 sum += header[i];
62 }
63 printf( "sum = 0x%08x, value to write = 0x%08x\n", sum, -sum );
64
65 /* write back the checksum to location 7
66 * http://sigalrm.blogspot.jp/2011/10/cortex-m3-exception-vector-checksum.html
67 */
68 fseek(fs, 0x1c, SEEK_SET);
69 sum = -sum;
70 fwrite(&sum, 4, 1, fs);
71
72 fclose( fs );
73
74 return 1;
75}
76
77/***************************************************************************/
78/**
79* main
80*/
81int main( int argc, char **argv )
82{
83 int arg;
84
85 if ( argc < 2)
86 {
87 fprintf( stderr, "Usage: lpc-vector-checksum file ...\n" );
88 exit( 1 );
89 }
90
91 for ( arg = 1; arg < argc; arg++ )
92 {
93 update_vector_checksum( argv[ arg ]);
94 }
95
96 exit( 0 );
97 return 0;
98}
99
diff --git a/tool/mbed/mbed.mk b/tool/mbed/mbed.mk
new file mode 100644
index 000000000..0f12ee2af
--- /dev/null
+++ b/tool/mbed/mbed.mk
@@ -0,0 +1,99 @@
1OBJECTS += \
2 $(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/startup_LPC11xx.o \
3 $(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/cmsis_nvic.o \
4 $(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/system_LPC11Uxx.o \
5 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/port_api.o \
6 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/spi_api.o \
7 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/analogin_api.o \
8 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.o \
9 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_irq_api.o \
10 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.o \
11 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/i2c_api.o \
12 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pwmout_api.o \
13 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/sleep.o \
14 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.o \
15 $(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/us_ticker.o \
16 $(OBJDIR)/libraries/mbed/common/board.o \
17 $(OBJDIR)/libraries/mbed/common/mbed_interface.o \
18 $(OBJDIR)/libraries/mbed/common/exit.o \
19 $(OBJDIR)/libraries/mbed/common/rtc_time.o \
20 $(OBJDIR)/libraries/mbed/common/us_ticker_api.o \
21 $(OBJDIR)/libraries/mbed/common/pinmap_common.o \
22 $(OBJDIR)/libraries/mbed/common/error.o \
23 $(OBJDIR)/libraries/mbed/common/gpio.o \
24 $(OBJDIR)/libraries/mbed/common/semihost_api.o \
25 $(OBJDIR)/libraries/mbed/common/wait_api.o \
26 $(OBJDIR)/libraries/mbed/common/RawSerial.o \
27 $(OBJDIR)/libraries/mbed/common/Ticker.o \
28 $(OBJDIR)/libraries/mbed/common/FilePath.o \
29 $(OBJDIR)/libraries/mbed/common/I2C.o \
30 $(OBJDIR)/libraries/mbed/common/FileBase.o \
31 $(OBJDIR)/libraries/mbed/common/retarget.o \
32 $(OBJDIR)/libraries/mbed/common/Serial.o \
33 $(OBJDIR)/libraries/mbed/common/Stream.o \
34 $(OBJDIR)/libraries/mbed/common/FileSystemLike.o \
35 $(OBJDIR)/libraries/mbed/common/CallChain.o \
36 $(OBJDIR)/libraries/mbed/common/InterruptManager.o \
37 $(OBJDIR)/libraries/mbed/common/SerialBase.o \
38 $(OBJDIR)/libraries/mbed/common/BusInOut.o \
39 $(OBJDIR)/libraries/mbed/common/SPISlave.o \
40 $(OBJDIR)/libraries/mbed/common/I2CSlave.o \
41 $(OBJDIR)/libraries/mbed/common/FunctionPointer.o \
42 $(OBJDIR)/libraries/mbed/common/Timer.o \
43 $(OBJDIR)/libraries/mbed/common/SPI.o \
44 $(OBJDIR)/libraries/mbed/common/Timeout.o \
45 $(OBJDIR)/libraries/mbed/common/Ethernet.o \
46 $(OBJDIR)/libraries/mbed/common/TimerEvent.o \
47 $(OBJDIR)/libraries/mbed/common/CAN.o \
48 $(OBJDIR)/libraries/mbed/common/BusOut.o \
49 $(OBJDIR)/libraries/mbed/common/FileLike.o \
50 $(OBJDIR)/libraries/mbed/common/BusIn.o \
51 $(OBJDIR)/libraries/mbed/common/InterruptIn.o \
52 $(OBJDIR)/libraries/mbed/common/LocalFileSystem.o \
53 $(OBJDIR)/libraries/USBDevice/USBHID/USBMouse.o \
54 $(OBJDIR)/libraries/USBDevice/USBHID/USBHID.o \
55 $(OBJDIR)/libraries/USBDevice/USBHID/USBMouseKeyboard.o \
56 $(OBJDIR)/libraries/USBDevice/USBHID/USBKeyboard.o \
57 $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_KL25Z.o \
58 $(OBJDIR)/libraries/USBDevice/USBDevice/USBDevice.o \
59 $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC17.o \
60 $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC40.o \
61 $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC11U.o \
62 $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_STM32F4.o \
63 $(OBJDIR)/libraries/USBDevice/USBAudio/USBAudio.o \
64 $(OBJDIR)/libraries/USBDevice/USBSerial/USBSerial.o \
65 $(OBJDIR)/libraries/USBDevice/USBSerial/USBCDC.o \
66 $(OBJDIR)/libraries/USBDevice/USBMSD/USBMSD.o \
67 $(OBJDIR)/libraries/USBDevice/USBMIDI/USBMIDI.o
68
69INCLUDE_PATHS += \
70 -I$(MBED_DIR)/libraries/mbed/targets \
71 -I$(MBED_DIR)/libraries/mbed/targets/hal \
72 -I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP \
73 -I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX \
74 -I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401 \
75 -I$(MBED_DIR)/libraries/mbed/targets/cmsis \
76 -I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP \
77 -I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX \
78 -I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM \
79 -I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_401 \
80 -I$(MBED_DIR)/libraries/mbed \
81 -I$(MBED_DIR)/libraries/mbed/hal \
82 -I$(MBED_DIR)/libraries/mbed/api \
83 -I$(MBED_DIR)/libraries/mbed/common \
84 -I$(MBED_DIR)/libraries/USBDevice \
85 -I$(MBED_DIR)/libraries/USBDevice/USBHID \
86 -I$(MBED_DIR)/libraries/USBDevice/USBDevice \
87 -I$(MBED_DIR)/libraries/USBDevice/USBAudio \
88 -I$(MBED_DIR)/libraries/USBDevice/USBSerial \
89 -I$(MBED_DIR)/libraries/USBDevice/USBMSD \
90 -I$(MBED_DIR)/libraries/USBDevice/USBMIDI
91
92OBJECTS += \
93 $(OBJDIR)/protocol/mbed/mbed_driver.o \
94 $(OBJDIR)/protocol/mbed/HIDKeyboard.o \
95
96INCLUDE_PATHS += \
97 -I$(TMK_DIR)/protocol/mbed
98
99LINKER_SCRIPT = $(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_401/LPC11U35.ld