diff --git a/ports/card10/Makefile b/ports/card10/Makefile
index 33b364014ec67c1c4781e1b3a4f35955638807ff..11ea51fd96e1c115162783fbe4b808cf21186d35 100644
--- a/ports/card10/Makefile
+++ b/ports/card10/Makefile
@@ -8,20 +8,35 @@ include $(TOP)/py/py.mk
 
 CROSS_COMPILE = arm-none-eabi-
 
+SDK_LOCATION ?= ../../../firmware/sdk
+
 INC += -I.
 INC += -I$(TOP)
 INC += -I$(BUILD)
+INC += -I$(SDK_LOCATION)/Libraries/MAX32665PeriphDriver/Include
+INC += -I$(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Include
+INC += -I$(SDK_LOCATION)/Libraries/CMSIS/Include
+INC += -I$(SDK_LOCATION)/Libraries/Boards/card10/Include
+INC += -I$(SDK_LOCATION)/Libraries/Boards/Include
+
+# CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
+# CFLAGS = $(INC) -Wall -Werror -std=c99 -nostdlib $(CFLAGS_CORTEX_M4) $(COPT)
+# LDFLAGS = -nostdlib -T stm32f405.ld -Map=$@.map --cref --gc-sections
+CFLAGS_MAX32665 = -mthumb -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16
+SDK_CFLAGS = -DTARGET=32665 -DTARGET_REV=0x4131 -DBOARD_CARD10=1 -Wa,-mimplicit-it=thumb
+CFLAGS = $(CFLAGS_MAX32665) -Wall -Wdouble-promotion -Wno-format -fno-isolate-erroneous-paths-dereference -fsingle-precision-constant -std=c99 $(SDK_CFLAGS) $(INC)
 
-CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
-CFLAGS = $(INC) -Wall -Werror -std=c99 -nostdlib $(CFLAGS_CORTEX_M4) $(COPT)
-LDFLAGS = -nostdlib -T stm32f405.ld -Map=$@.map --cref --gc-sections
+LDFLAGS = -T $(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Source/GCC/max32665.ld
+LDFLAGS += --entry Reset_Handler $(CFLAGS_MAX32665)
+LDFLAGS += -Xlinker --gc-sections -Xlinker -Map -Xlinker $(BUILD)/max32665.map
+LDFLAGS += -L$(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Source/GCC
 
 # Tune for Debugging or Optimization
 ifeq ($(DEBUG), 1)
-CFLAGS += -O0 -ggdb
+CFLAGS += -O0 -ggdb -DDEBUG -DMXC_ASSERT_ENABLE
 else
 CFLAGS += -Os -DNDEBUG
-CFLAGS += -fdata-sections -ffunction-sections
+CFLAGS += -fdata-sections -ffunction-sections -fsingle-precision-constant
 endif
 
 LIBS =
@@ -37,11 +52,71 @@ SRC_C = \
 
 OBJ = $(PY_CORE_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
 
-all: $(BUILD)/firmware.elf
+# SDK compilation hack
+
+# -----------------------------------------------------------------------------
+.PHONY: sdk
+sdk: $(BUILD)/sdk/PeriphDriver.a
+
+# Rules to build sdk sources
+SDK_SOURCES = $(wildcard $(SDK_LOCATION)/Libraries/MAX32665PeriphDriver/Source/*.c)
+SDK_OBJECTS = $(foreach src, $(SDK_SOURCES), \
+	$(patsubst $(SDK_LOCATION)/Libraries/MAX32665PeriphDriver/Source/%.c, $(BUILD)/sdk/%.o, $(src))\
+)
+
+$(BUILD)/sdk:
+	@mkdir -p $(BUILD)/sdk
+
+$(BUILD)/sdk/PeriphDriver.a: $(BUILD)/sdk $(SDK_OBJECTS)
+	$(ECHO) "AR $@"
+	$(Q)$(CROSS_COMPILE)ar -cr $@ $(SDK_OBJECTS)
+
+$(BUILD)/sdk/%.o: $(SDK_LOCATION)/Libraries/MAX32665PeriphDriver/Source/%.c
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+# -----------------------------------------------------------------------------
+
+# -----------------------------------------------------------------------------
+# Rules to build board.c and startup files
+SDK_BOARD_SRC = $(wildcard $(SDK_LOCATION)/Libraries/Boards/Source/*.c)
+SDK_BOARD_OBJ = $(foreach src, $(SDK_BOARD_SRC), \
+	$(patsubst $(SDK_LOCATION)/Libraries/Boards/Source/%.c, $(BUILD)/sdk/board/%.o, $(src))\
+)
+BOARD_ADDITIONAL = board.o startup_max32665.o heap.o system_max32665.o
+SDK_BOARD_OBJ += $(foreach obj, $(BOARD_ADDITIONAL), $(BUILD)/sdk/board/$(obj))
+
+.PHONY: board
+board: $(BUILD)/sdk/board $(SDK_BOARD_OBJ)
+
+$(BUILD)/sdk/board:
+	@mkdir -p $(BUILD)/sdk/board
+
+$(BUILD)/sdk/board/board.o: $(SDK_LOCATION)/Libraries/Boards/card10/Source/board.c
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+
+$(BUILD)/sdk/board/startup_max32665.o: $(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Source/GCC/startup_max32665.S
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+
+$(BUILD)/sdk/board/heap.o: $(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Source/heap.c
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+
+$(BUILD)/sdk/board/system_max32665.o: $(SDK_LOCATION)/Libraries/CMSIS/Device/Maxim/MAX32665/Source/system_max32665.c
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+
+$(BUILD)/sdk/board/%.o: $(SDK_LOCATION)/Libraries/Boards/Source/%.c
+	$(ECHO) "CC $<"
+	$(Q)$(CC) $(CFLAGS) -c -MD -o $@ $<
+# -----------------------------------------------------------------------------
+
+all: sdk board $(BUILD)/firmware.elf
 
-$(BUILD)/firmware.elf: $(OBJ)
+$(BUILD)/firmware.elf: $(OBJ) $(SDK_BOARD_OBJ)
 	$(ECHO) "LINK $@"
-	$(Q)$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
+	$(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) -Xlinker --start-group $(BUILD)/sdk/PeriphDriver.a -lc -lm -lnosys -Xlinker --end-group
 	$(Q)$(SIZE) $@
 
 # $(BUILD)/firmware.bin: $(BUILD)/firmware.elf