Added configure and DFU support.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 14 Oct 2010 08:08:09 +0000 (17:08 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Sat, 16 Oct 2010 00:05:37 +0000 (09:05 +0900)
15 files changed:
ChangeLog
NEWS
README
THANKS
boards/OLIMEX_STM32_H103/board.c
boards/STM32_PRIMER2/board.c
boards/common/hwinit0.c [new file with mode: 0644]
boards/common/hwinit1.c [new file with mode: 0644]
src/Makefile [deleted file]
src/Makefile.in [new file with mode: 0644]
src/config.h [deleted file]
src/config.h.in [new file with mode: 0644]
src/configure [new file with mode: 0755]
src/gnuk.ld [deleted file]
src/gnuk.ld.in [new file with mode: 0644]

index 7858222..de1813f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2010-10-14  NIIBE Yutaka  <gniibe@fsij.org>
+
+       Adding 'configure' support.
+       * src/configure: New file.
+       * src/Makefile.in: Renamed from src/Makefile.
+       * src/config.h: Renamed from src/config.h.
+       * src/gnuk.ld: Renamed from src/gnuk.ld.
+
+       Adding DFU_SUPPORT.
+       * boards/common/hwinit0.c: New file adding DFU_SUPPORT.
+       * boards/common/hwinit1.c: New file.
+       * boards/OLIMEX_STM32_H103/board.c: Include config.h.
+       Use common/hwinit0.c and common/hwinit1.c.
+       * boards/STM32_PRIMER2/board.c: Likewise.
+
 2010-09-16  NIIBE Yutaka  <gniibe@fsij.org>
 
        * src/usb-icc.c (icc_error): New function.
diff --git a/NEWS b/NEWS
index 867886d..9fdc3fa 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,16 @@
 Gnuk NEWS - User visible changes
 
+* Major changes in Gnuk 0.3
+
+  Released 2010-10-XX, by NIIBE Yutaka
+
+** Now we have 'configure' script to select target.
+
+** Support system with DFU (Device Firmware Upgrade) downloader.
+
+** Improved USB-ICCD implementation.  Works fine with GPG's protocol stack.
+
+
 * Major changes in Gnuk 0.2
 
   Released 2010-09-13, by NIIBE Yutaka
diff --git a/README b/README
index c8dfdee..d898749 100644 (file)
--- a/README
+++ b/README
@@ -50,7 +50,7 @@ It is known not-working well:
 
        * Changing value of password status bytes (0x00C4).
 
-       * For some version of kernel and libccid, ENABLE_DEBUG=1 can't
+       * For some version of kernel and libccid, --enable-debug can't
           work well.  Please disable DEBUG option if it doesn't work well.
 
 
@@ -134,14 +134,13 @@ You need GNU toolchain and newlib for 'arm-none-eabi' target.
 See http://github.com/esden/summon-arm-toolchain/ for preparation of
 GNU Toolchain for 'arm-none-eabi' target.
 
+Change directory to `src':
+
   $ cd gnuk-VERSION/src
 
-Edit the Makefile.  Comment out the line:
-----------------
-ENABLE_DEBUG=1
-----------------
+Then, run `configure':
 
-if you don't want to debug Gnuk.
+  $ ./configure
 
 Type:
 
@@ -173,7 +172,7 @@ Then, with another terminal, type following to write "gnuk.elf" to Flash ROM:
   > exit
   $ 
 
-If you compiled with ENABLE_DEBUG=1, Gnuk has two interfaces
+If you compiled with --enable-debug option, Gnuk has two interfaces
 (one is CCID/ICCD device and another is virtual COM port).  Open
 virtual COM port by:
 
diff --git a/THANKS b/THANKS
index 6c7b619..42e1131 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -5,6 +5,7 @@ Gnuk was originally written by NIIBE Yutaka.  People contributed by
 encouraging the development, testing the implementation, suggesting
 improvements, or fixing bugs.  Here is a list of those people.
 
+Hironobu SUZUKI                hironobu@h2np.net
 Jan Sur                        jan@suhr.info
 Kaz Kojima             kkojima@rr.iij4u.or.jp
 NAGAMI Takeshi         nagami-takeshi@aist.go.jp
index ae47ec9..5f00d74 100644 (file)
@@ -24,6 +24,7 @@
     for full details of how and when the exception can be applied.
 */
 
+#include "config.h"
 #include "ch.h"
 #include "hal.h"
 
@@ -33,8 +34,7 @@
  * segments initialization.
  */
 void hwinit0(void) {
-
-  stm32_clock_init();
+#include "../common/hwinit0.c"
 }
 
 /*
@@ -43,14 +43,5 @@ void hwinit0(void) {
  * and before invoking the main() function.
  */
 void hwinit1(void) {
-
-  /*
-   * HAL initialization.
-   */
-  halInit();
-
-  /*
-   * ChibiOS/RT initialization.
-   */
-  chSysInit();
+#include "../common/hwinit1.c"
 }
index 2be0e93..56969d3 100644 (file)
@@ -24,6 +24,7 @@
     for full details of how and when the exception can be applied.
 */
 
+#include "config.h"
 #include "ch.h"
 #include "hal.h"
 
@@ -33,8 +34,7 @@
  * segments initialization.
  */
 void hwinit0(void) {
-
-  stm32_clock_init();
+#include "../common/hwinit0.c"
 }
 
 /*
@@ -43,16 +43,7 @@ void hwinit0(void) {
  * and before invoking the main() function.
  */
 void hwinit1(void) {
-
-  /*
-   * HAL initialization.
-   */
-  halInit();
-
-  /*
-   * ChibiOS/RT initialization.
-   */
-  chSysInit();
+#include "../common/hwinit1.c"
 
   /*
    * Clear LED and SHUTDOWN output.
diff --git a/boards/common/hwinit0.c b/boards/common/hwinit0.c
new file mode 100644 (file)
index 0000000..642019e
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * Common code for hwinit0
+ */
+
+#ifdef DFU_SUPPORT
+  SCB->VTOR = 0x08003000;
+#endif
+
+  stm32_clock_init();
diff --git a/boards/common/hwinit1.c b/boards/common/hwinit1.c
new file mode 100644 (file)
index 0000000..aae1029
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Common code for hwinit1
+ *
+ */
+
+  /*
+   * HAL initialization.
+   */
+  halInit();
+
+  /*
+   * ChibiOS/RT initialization.
+   */
+  chSysInit();
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644 (file)
index 8cec464..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-# Makefile for Gnuk
-
-#
-ENABLE_DEBUG=1
-
-ifneq ($(ENABLE_DEBUG),)
-ENABLE_VCOMPORT=1
-endif
-
-##############################################################################
-# Build global options
-# NOTE: Can be overridden externally.
-#
-
-# Compiler options here.
-ifeq ($(USE_OPT),)
-  USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
-endif
-
-# C++ specific options here (added to USE_OPT).
-ifeq ($(USE_CPPOPT),)
-  USE_CPPOPT = -fno-rtti
-endif
-
-# Enable this if you want the linker to remove unused code and data
-ifeq ($(USE_LINK_GC),)
-  USE_LINK_GC = yes
-endif
-
-# If enabled, this option allows to compile the application in THUMB mode.
-ifeq ($(USE_THUMB),)
-  USE_THUMB = yes
-endif
-
-# Enable register caching optimization (read documentation).
-ifeq ($(USE_CURRP_CACHING),)
-  USE_CURRP_CACHING = no
-endif
-
-#
-# Build global options
-##############################################################################
-
-##############################################################################
-# Architecture or project specific options
-#
-
-# Enable this if you really want to use the STM FWLib.
-ifeq ($(USE_FWLIB),)
-  USE_FWLIB = no
-endif
-
-#
-# Architecture or project specific options
-##############################################################################
-
-##############################################################################
-# Project, sources and paths
-#
-
-# Define project name here
-PROJECT = gnuk
-
-# Define linker script file here
-LDSCRIPT= gnuk.ld
-
-# Imported source files
-CHIBIOS = ../ChibiOS_2.0.2
-include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk
-include $(CHIBIOS)/os/hal/hal.mk
-include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/port.mk
-include $(CHIBIOS)/os/kernel/kernel.mk
-include stmusb.mk
-include vcomport.mk
-include crypt.mk
-include ../boards/OLIMEX_STM32_H103/board.mk
-
-# C sources that can be compiled in ARM or THUMB mode depending on the global
-# setting.
-CSRC = $(PORTSRC) \
-       $(KERNSRC) \
-       $(HALSRC) \
-       $(PLATFORMSRC) \
-       $(BOARDSRC) \
-       $(CHIBIOS)/os/various/evtimer.c \
-       $(CHIBIOS)/os/various/syscalls.c \
-       $(STMUSBSRC) \
-       $(VCOMSRC) \
-       $(CRYPTSRC) \
-       main.c usb_lld.c \
-       usb_desc.c usb_prop.c \
-       usb-icc.c openpgp.c ac.c openpgp-do.c flash.c hardclock.c \
-       random.c
-
-ifneq ($(ENABLE_DEBUG),)
-CSRC += debug.c
-endif
-
-# List ASM source files here
-ASMSRC = $(PORTASM) \
-         $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/vectors.s
-
-INCDIR = $(CRYPTINCDIR) $(STMUSBINCDIR) $(VCOMDIR) \
-        $(PORTINC) $(KERNINC) $(TESTINC) \
-         $(HALINC) $(PLATFORMINC) $(BOARDINC) \
-         $(CHIBIOS)/os/various
-
-#
-# Project, sources and paths
-##############################################################################
-
-##############################################################################
-# Compiler settings
-#
-
-MCU  = cortex-m3
-
-#TRGT = arm-elf-
-TRGT = arm-none-eabi-
-CC   = $(TRGT)gcc
-CPPC = $(TRGT)g++
-# Enable loading with g++ only if you need C++ runtime support.
-# NOTE: You can use C++ even without C++ support if you are careful. C++
-#       runtime support makes code size explode.
-LD   = $(TRGT)gcc
-#LD   = $(TRGT)g++
-CP   = $(TRGT)objcopy
-AS   = $(TRGT)gcc -x assembler-with-cpp
-OD   = $(TRGT)objdump
-HEX  = $(CP) -O ihex
-BIN  = $(CP) -O binary
-
-# ARM-specific options here
-AOPT =
-
-# THUMB-specific options here
-TOPT = -mthumb -DTHUMB
-
-# Define C warning options here
-CWARN = -Wall -Wextra -Wstrict-prototypes
-
-# Define C++ warning options here
-CPPWARN = -Wall -Wextra
-
-#
-# Compiler settings
-##############################################################################
-
-##############################################################################
-# Start of default section
-#
-
-# List all default C defines here, like -D_DEBUG=1
-ifeq ($(ENABLE_DEBUG),)
-DDEFS = -DCORTEX_USE_BASEPRI=TRUE
-else
-DDEFS = -DCORTEX_USE_BASEPRI=TRUE -DDEBUG
-endif
-
-# List all default ASM defines here, like -D_DEBUG=1
-DADEFS =
-
-# List all default directories to look for include files here
-DINCDIR =
-
-# List the default directory to look for the libraries here
-DLIBDIR =
-
-# List all default libraries here
-DLIBS =
-
-#
-# End of default section
-##############################################################################
-
-##############################################################################
-# Start of user section
-#
-
-# List all user C define here, like -D_DEBUG=1
-UDEFS =
-
-# Define ASM defines here
-UADEFS =
-
-# List all user directories here
-UINCDIR =
-
-# List the user directory to look for the libraries here
-ULIBDIR =
-
-# List all user libraries here
-ULIBS =
-
-#
-# End of user defines
-##############################################################################
-
-ifeq ($(USE_FWLIB),yes)
-  include $(CHIBIOS)/ext/stm32lib/stm32lib.mk
-  CSRC += $(STM32SRC)
-  INCDIR += $(STM32INC)
-  USE_OPT += -DUSE_STDPERIPH_DRIVER
-endif
-
-include $(CHIBIOS)/os/ports/GCC/ARM/rules.mk
-
-OBJS += random-data.o
-OUTFILES += random_bits
-
-random_bits:
-       dd if=/dev/random bs=1 of=random_bits count=1024
-
-random-data.o: random_bits
-       $(CP) -I binary $< -O elf32-littlearm -B arm \
-             --rename-section \
-               .data=.gnuk_random,alloc,load,readonly,data,contents \
-               $@
-
-$(PROJECT).elf: random-data.o
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644 (file)
index 0000000..22267fb
--- /dev/null
@@ -0,0 +1,217 @@
+# Makefile for Gnuk
+
+@DEBUG_MAKE_OPTION@
+ifneq ($(ENABLE_DEBUG),)
+ENABLE_VCOMPORT=1
+endif
+
+##############################################################################
+# Build global options
+# NOTE: Can be overridden externally.
+#
+
+# Compiler options here.
+ifeq ($(USE_OPT),)
+  USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
+endif
+
+# C++ specific options here (added to USE_OPT).
+ifeq ($(USE_CPPOPT),)
+  USE_CPPOPT = -fno-rtti
+endif
+
+# Enable this if you want the linker to remove unused code and data
+ifeq ($(USE_LINK_GC),)
+  USE_LINK_GC = yes
+endif
+
+# If enabled, this option allows to compile the application in THUMB mode.
+ifeq ($(USE_THUMB),)
+  USE_THUMB = yes
+endif
+
+# Enable register caching optimization (read documentation).
+ifeq ($(USE_CURRP_CACHING),)
+  USE_CURRP_CACHING = no
+endif
+
+#
+# Build global options
+##############################################################################
+
+##############################################################################
+# Architecture or project specific options
+#
+
+# Enable this if you really want to use the STM FWLib.
+ifeq ($(USE_FWLIB),)
+  USE_FWLIB = no
+endif
+
+#
+# Architecture or project specific options
+##############################################################################
+
+##############################################################################
+# Project, sources and paths
+#
+
+# Define project name here
+PROJECT = gnuk
+
+# Define linker script file here
+LDSCRIPT= gnuk.ld
+
+# Imported source files
+CHIBIOS = ../ChibiOS_2.0.2
+include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk
+include $(CHIBIOS)/os/hal/hal.mk
+include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/port.mk
+include $(CHIBIOS)/os/kernel/kernel.mk
+include stmusb.mk
+include vcomport.mk
+include crypt.mk
+include @BOARD_MAKEFILE@
+
+# C sources that can be compiled in ARM or THUMB mode depending on the global
+# setting.
+CSRC = $(PORTSRC) \
+       $(KERNSRC) \
+       $(HALSRC) \
+       $(PLATFORMSRC) \
+       $(BOARDSRC) \
+       $(CHIBIOS)/os/various/evtimer.c \
+       $(CHIBIOS)/os/various/syscalls.c \
+       $(STMUSBSRC) \
+       $(VCOMSRC) \
+       $(CRYPTSRC) \
+       main.c usb_lld.c \
+       usb_desc.c usb_prop.c \
+       usb-icc.c openpgp.c ac.c openpgp-do.c flash.c hardclock.c \
+       random.c
+
+ifneq ($(ENABLE_DEBUG),)
+CSRC += debug.c
+endif
+
+# List ASM source files here
+ASMSRC = $(PORTASM) \
+         $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/vectors.s
+
+INCDIR = $(CRYPTINCDIR) $(STMUSBINCDIR) $(VCOMDIR) \
+        $(PORTINC) $(KERNINC) $(TESTINC) \
+         $(HALINC) $(PLATFORMINC) $(BOARDINC) \
+         $(CHIBIOS)/os/various
+
+#
+# Project, sources and paths
+##############################################################################
+
+##############################################################################
+# Compiler settings
+#
+
+MCU  = cortex-m3
+
+#TRGT = arm-elf-
+TRGT = arm-none-eabi-
+CC   = $(TRGT)gcc
+CPPC = $(TRGT)g++
+# Enable loading with g++ only if you need C++ runtime support.
+# NOTE: You can use C++ even without C++ support if you are careful. C++
+#       runtime support makes code size explode.
+LD   = $(TRGT)gcc
+#LD   = $(TRGT)g++
+CP   = $(TRGT)objcopy
+AS   = $(TRGT)gcc -x assembler-with-cpp
+OD   = $(TRGT)objdump
+HEX  = $(CP) -O ihex
+BIN  = $(CP) -O binary
+
+# ARM-specific options here
+AOPT =
+
+# THUMB-specific options here
+TOPT = -mthumb -DTHUMB
+
+# Define C warning options here
+CWARN = -Wall -Wextra -Wstrict-prototypes
+
+# Define C++ warning options here
+CPPWARN = -Wall -Wextra
+
+#
+# Compiler settings
+##############################################################################
+
+##############################################################################
+# Start of default section
+#
+
+# List all default C defines here, like -D_DEBUG=1
+DDEFS = -DCORTEX_USE_BASEPRI=TRUE
+
+# List all default ASM defines here, like -D_DEBUG=1
+DADEFS =
+
+# List all default directories to look for include files here
+DINCDIR =
+
+# List the default directory to look for the libraries here
+DLIBDIR =
+
+# List all default libraries here
+DLIBS =
+
+#
+# End of default section
+##############################################################################
+
+##############################################################################
+# Start of user section
+#
+
+# List all user C define here, like -D_DEBUG=1
+UDEFS =
+
+# Define ASM defines here
+UADEFS =
+
+# List all user directories here
+UINCDIR =
+
+# List the user directory to look for the libraries here
+ULIBDIR =
+
+# List all user libraries here
+ULIBS =
+
+#
+# End of user defines
+##############################################################################
+
+ifeq ($(USE_FWLIB),yes)
+  include $(CHIBIOS)/ext/stm32lib/stm32lib.mk
+  CSRC += $(STM32SRC)
+  INCDIR += $(STM32INC)
+  USE_OPT += -DUSE_STDPERIPH_DRIVER
+endif
+
+include $(CHIBIOS)/os/ports/GCC/ARM/rules.mk
+
+OBJS += random-data.o
+OUTFILES += random_bits
+
+random_bits:
+       dd if=/dev/random bs=1 of=random_bits count=1024
+
+random-data.o: random_bits
+       $(CP) -I binary $< -O elf32-littlearm -B arm \
+             --rename-section \
+               .data=.gnuk_random,alloc,load,readonly,data,contents \
+               $@
+
+$(PROJECT).elf: random-data.o
+
+distclean: clean
+       -rm -f Makefile gnuk.ld config.h
diff --git a/src/config.h b/src/config.h
deleted file mode 100644 (file)
index 3dd0958..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifdef DEBUG
-#define ENABLE_VIRTUAL_COM_PORT 1
-#endif
-
-#if 0
-/* FSIJ */
-#define MANUFACTURER_IN_AID            0xf5, 0x17
-#else
-/* for random serial number*/
-#define MANUFACTURER_IN_AID            0xff, 0xfe
-#endif
-
-#define SERIAL_NUMBER_IN_AID  0x00, 0x00, 0x00, 0x01
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644 (file)
index 0000000..b3ae78b
--- /dev/null
@@ -0,0 +1,16 @@
+@DEBUG_DEFINE@
+#ifdef DEBUG
+#define ENABLE_VIRTUAL_COM_PORT 1
+#endif
+
+#if 0
+/* FSIJ */
+#define MANUFACTURER_IN_AID            0xf5, 0x17
+#else
+/* for random serial number*/
+#define MANUFACTURER_IN_AID            0xff, 0xfe
+#endif
+
+#define SERIAL_NUMBER_IN_AID  0x00, 0x00, 0x00, 0x01
+
+@DFU_DEFINE@
diff --git a/src/configure b/src/configure
new file mode 100755 (executable)
index 0000000..6f6da43
--- /dev/null
@@ -0,0 +1,113 @@
+#! /bin/sh
+
+#
+# This file is *NOT* generated by GNU Autoconf, but written by NIIBE Yutaka
+#
+# Copyright (C) 2010 Free Software Initiative of Japan
+#
+# This file is a part of Gnuk, a GnuPG USB Token implementation.
+# Gnuk is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Gnuk is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Default settings
+help=no
+target=OLIMEX_STM32_H103
+verbose=no
+with_dfu=no
+debug=no
+
+# Process each option
+for option; do
+  case $option in
+  *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
+  *)   optarg=yes ;;
+  esac
+
+  case $option in
+  -h | --help)
+    help=yes ;;
+  --target=*)
+    target=$optarg ;;
+  -v | --verbose)
+    verbose=yes ;;
+  --enable-debug)
+    debug=yes;;
+  --disable-debug)
+    debug=no;;
+  --with-dfu)
+    with_dfu=yes ;;
+  --without-dfu)
+    with_dfu=no ;;
+  *)
+    echo "Unrecognized option \`$option'" >&2
+    echo "Try \`$0 --help' for more information." >&2
+    exit 1
+    ;;
+  esac
+done
+
+if test "$help" = "yes"; then
+  cat <<EOF
+Usage: $0 [OPTION]...
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help           display this help and exit      [no]
+  --target=TARGET      specify target                  [OLIMEX_STM32_H103]
+                       supported targes are:
+                          OLIMEX_STM32_H103
+                          STM32_PRIMER2
+  --enable-debug       debug with virtual COM port     [no]
+  --with-dfu           build image for DFU             [no]
+EOF
+  exit 0
+fi
+
+BOARD_MAKEFILE=../boards/$target/board.mk
+if test -f $BOARD_MAKEFILE; then
+  echo "Configured for target: $target"
+else
+  echo "Unsupported target \`$target'" >&2
+  exit 1
+fi
+
+if test "$debug" = "yes"; then
+  DEBUG_MAKE_OPTION="ENABLE_DEBUG=1"
+  DEBUG_DEFINE="#define DEBUG 1"
+else
+  DEBUG_MAKE_OPTION="# ENABLE_DEBUG=1"
+  DEBUG_DEFINE="#undef DEBUG"
+fi
+
+if test "$with_dfu" = "yes"; then
+  echo "Configured for DFU"
+  ORIGIN=0x08003000
+  FLASH_SIZE=116k
+  DFU_DEFINE="#define DFU_SUPPORT 1"
+else
+  echo "Configured for bare system (no-DFU)"
+  ORIGIN=0x08000000
+  FLASH_SIZE=128k
+  DFU_DEFINE="#undef DFU_SUPPORT"
+fi
+
+sed -e "s%@BOARD_MAKEFILE@%$BOARD_MAKEFILE%" \
+    -e "s%@DEBUG_MAKE_OPTION@%$DEBUG_MAKE_OPTION%" \
+       < Makefile.in > Makefile
+sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
+       < gnuk.ld.in > gnuk.ld
+sed -e "s/@DEBUG_DEFINE@/$DEBUG_DEFINE/" \
+    -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
+       < config.h.in > config.h
+exit 0
diff --git a/src/gnuk.ld b/src/gnuk.ld
deleted file mode 100644 (file)
index c89ee1e..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
-    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
-
-    This file is part of ChibiOS/RT.
-
-    ChibiOS/RT is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License, or
-    (at your option) any later version.
-
-    ChibiOS/RT is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-                                      ---
-
-    A special exception to the GPL can be applied should you wish to distribute
-    a combined work that includes ChibiOS/RT, without being obliged to provide
-    the source code for any proprietary components. See the file exception.txt
-    for full details of how and when the exception can be applied.
-*/
-
-/*
- * ST32F103 memory setup.
- */
-__main_stack_size__     = 0x0400;
-__stacks_total_size__   = __main_stack_size__;
-
-MEMORY
-{
-    flash : org = 0x08000000, len = 128k
-    ram : org = 0x20000000, len = 20k
-}
-
-__ram_start__           = ORIGIN(ram);
-__ram_size__            = LENGTH(ram);
-__ram_end__             = __ram_start__ + __ram_size__;
-
-SECTIONS
-{
-    . = 0;
-
-    .text : ALIGN(16) SUBALIGN(16)
-    {
-        _text = .;
-        KEEP(*(vectors))
-        *(.text)
-        *(.text.*)
-        *(.rodata)
-        *(.rodata.*)
-        *(.glue_7t)
-        *(.glue_7)
-        *(.gcc*)
-    } > flash
-
-    .ctors :
-    {
-        PROVIDE(_ctors_start_ = .);
-        KEEP(*(SORT(.ctors.*)))
-        KEEP(*(.ctors))
-        PROVIDE(_ctors_end_ = .);
-    } > flash
-
-    .dtors :
-    {
-        PROVIDE(_dtors_start_ = .);
-        KEEP(*(SORT(.dtors.*)))
-        KEEP(*(.dtors))
-        PROVIDE(_dtors_end_ = .);
-    } > flash
-
-    .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
-
-    __exidx_start = .;
-    .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
-    __exidx_end = .;
-
-    .eh_frame_hdr : {*(.eh_frame_hdr)}
-
-    .eh_frame : ONLY_IF_RO {*(.eh_frame)}
-
-    . = ALIGN(4);
-    _etext = .;
-    _textdata = _etext;
-
-    .data :
-    {
-        _data = .;
-        *(.data)
-        . = ALIGN(4);
-        *(.data.*)
-        . = ALIGN(4);
-        *(.ramtext)
-        . = ALIGN(4);
-        _edata = .;
-    } > ram AT > flash
-
-    .bss :
-    {
-        _bss_start = .;
-        *(.bss)
-        . = ALIGN(4);
-        *(.bss.*)
-        . = ALIGN(4);
-        *(COMMON)
-        . = ALIGN(4);
-        _bss_end = .;
-    } > ram
-
-    PROVIDE(end = .);
-    _end            = .;
-
-    .gnuk_random : ALIGN (1024)
-    {
-       *(.gnuk_random)
-    } > flash
-
-    .gnuk_flash : ALIGN (1024)
-    {
-       _do_pool = .;
-       KEEP(*(.gnuk_data))
-       FILL(0xffffffff);
-       . = ALIGN(1024);
-       . += 1024*2;
-       _keystore_pool = .;
-       FILL(0xffffffff);
-       . += 1024*3;
-    } > flash
-}
-
-__heap_base__   = _end;
-__heap_end__    = __ram_end__ - __stacks_total_size__;
diff --git a/src/gnuk.ld.in b/src/gnuk.ld.in
new file mode 100644 (file)
index 0000000..c14c068
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+
+    This file is part of ChibiOS/RT.
+
+    ChibiOS/RT is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3 of the License, or
+    (at your option) any later version.
+
+    ChibiOS/RT is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+                                      ---
+
+    A special exception to the GPL can be applied should you wish to distribute
+    a combined work that includes ChibiOS/RT, without being obliged to provide
+    the source code for any proprietary components. See the file exception.txt
+    for full details of how and when the exception can be applied.
+*/
+
+/*
+ * ST32F103 memory setup.
+ */
+__main_stack_size__     = 0x0400;
+__stacks_total_size__   = __main_stack_size__;
+
+MEMORY
+{
+    flash : org = @ORIGIN@, len = @FLASH_SIZE@
+    ram : org = 0x20000000, len = 20k
+}
+
+__ram_start__           = ORIGIN(ram);
+__ram_size__            = LENGTH(ram);
+__ram_end__             = __ram_start__ + __ram_size__;
+
+SECTIONS
+{
+    . = 0;
+
+    .text : ALIGN(16) SUBALIGN(16)
+    {
+        _text = .;
+        KEEP(*(vectors))
+        *(.text)
+        *(.text.*)
+        *(.rodata)
+        *(.rodata.*)
+        *(.glue_7t)
+        *(.glue_7)
+        *(.gcc*)
+    } > flash
+
+    .ctors :
+    {
+        PROVIDE(_ctors_start_ = .);
+        KEEP(*(SORT(.ctors.*)))
+        KEEP(*(.ctors))
+        PROVIDE(_ctors_end_ = .);
+    } > flash
+
+    .dtors :
+    {
+        PROVIDE(_dtors_start_ = .);
+        KEEP(*(SORT(.dtors.*)))
+        KEEP(*(.dtors))
+        PROVIDE(_dtors_end_ = .);
+    } > flash
+
+    .ARM.extab : {*(.ARM.extab* .gnu.linkonce.armextab.*)}
+
+    __exidx_start = .;
+    .ARM.exidx : {*(.ARM.exidx* .gnu.linkonce.armexidx.*)} > flash
+    __exidx_end = .;
+
+    .eh_frame_hdr : {*(.eh_frame_hdr)}
+
+    .eh_frame : ONLY_IF_RO {*(.eh_frame)}
+
+    . = ALIGN(4);
+    _etext = .;
+    _textdata = _etext;
+
+    .data :
+    {
+        _data = .;
+        *(.data)
+        . = ALIGN(4);
+        *(.data.*)
+        . = ALIGN(4);
+        *(.ramtext)
+        . = ALIGN(4);
+        _edata = .;
+    } > ram AT > flash
+
+    .bss :
+    {
+        _bss_start = .;
+        *(.bss)
+        . = ALIGN(4);
+        *(.bss.*)
+        . = ALIGN(4);
+        *(COMMON)
+        . = ALIGN(4);
+        _bss_end = .;
+    } > ram
+
+    PROVIDE(end = .);
+    _end            = .;
+
+    .gnuk_random : ALIGN (1024)
+    {
+       *(.gnuk_random)
+    } > flash
+
+    .gnuk_flash : ALIGN (1024)
+    {
+       _do_pool = .;
+       KEEP(*(.gnuk_data))
+       FILL(0xffffffff);
+       . = ALIGN(1024);
+       . += 1024*2;
+       _keystore_pool = .;
+       FILL(0xffffffff);
+       . += 1024*3;
+    } > flash
+}
+
+__heap_base__   = _end;
+__heap_end__    = __ram_end__ - __stacks_total_size__;