New ChibiOS 2.3.3
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 4 Oct 2011 06:16:33 +0000 (15:16 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 4 Oct 2011 06:16:33 +0000 (15:16 +0900)
ChangeLog
src/Makefile.in
src/chconf.h
src/configure
src/main.c
src/neug.ld.in
src/random.c

index 08f8fc4..73dd149 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2011-10-04  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * src/chconf.h (THREAD_CONTEXT_SWITCH_HOOK): New.
+
+       * src/Makefile.in: Follow the change of ChibiOS 2.3.3 (new
+       directory structure of platforms/STM32F1xx).
+
+       * src/main.c (vcom_configuration_descriptor_data, usb_event):
+       Follow the change of ChibiOS 2.3.3 (USB_CDC_*).
+       (vcom_string3): Version 0.01.
+
+       * src/configure (MEMORY_SIZE): New.
+
+       * src/neug.ld.in (@MEMORY_SIZE@): New (for HD device like STBEE).
+       (.stacks): New in newer ChibiOS (>= 2.3.3).
+
+       * src/random.c (adccb_err): New.
+       (adcgrpcfg): Add adccb_err.
+
+       * chibios: Updated to trunk of 2.3.3.
+
 2011-09-27  NIIBE Yutaka  <gniibe@fsij.org>
 
        * src/random.c (adcgrpcfg): Fix configuration value (had old
index bd830f9..4966225 100644 (file)
@@ -61,9 +61,9 @@ LDSCRIPT= neug.ld
 
 # Imported source files
 CHIBIOS = ../chibios
-include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk
+include $(CHIBIOS)/os/hal/platforms/STM32F1xx/platform.mk
 include $(CHIBIOS)/os/hal/hal.mk
-include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32/port.mk
+include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F1xx/port.mk
 include $(CHIBIOS)/os/kernel/kernel.mk
 
 # C sources that can be compiled in ARM or THUMB mode depending on the global
index f2be5cb..e26f7fc 100644 (file)
   /* Add threads initialization code here.*/                            \
 }
 
+#define THREAD_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
+  /* System halt code here.*/                                               \
+}
+
 #define THREAD_EXT_EXIT(tp) {                                           \
   /* Add threads finalization code here.*/                              \
 }
index 4ae9b4e..0afece6 100755 (executable)
@@ -82,8 +82,10 @@ fi
 
 # Flash page size in byte
 FLASH_PAGE_SIZE=1024
-# Flash memory size in KB
+# Flash memory size in KiB
 FLASH_SIZE=128
+# Memory size in KiB
+MEMORY_SIZE=20
 
 # Settings for TARGET
 case $target in
@@ -94,10 +96,12 @@ CQ_STARM|STBEE_MINI)
 STM32_PRIMER2)
   FLASH_PAGE_SIZE=2048
   FLASH_SIZE=512
+  MEMORY_SIZE=64
   ;;
 STBEE)
   FLASH_PAGE_SIZE=2048
   FLASH_SIZE=512
+  MEMORY_SIZE=64
   if test "$with_dfu" = "default"; then
     with_dfu=yes;
   fi  ;;
@@ -123,6 +127,7 @@ fi
 sed -e "s%@BOARD_DIR@%$BOARD_DIR%" \
        < Makefile.in > Makefile
 sed -e "s/@ORIGIN@/$ORIGIN/" -e "s/@FLASH_SIZE@/$FLASH_SIZE/" \
+    -e "s/@MEMORY_SIZE@/$MEMORY_SIZE/" \
     -e "s/@FLASH_PAGE_SIZE@/$FLASH_PAGE_SIZE/" \
        < neug.ld.in > neug.ld
 sed -e "s/@DFU_DEFINE@/$DFU_DEFINE/" \
index 0499e24..b68fa5f 100644 (file)
@@ -127,7 +127,7 @@ static const uint8_t vcom_configuration_descriptor_data[67] = {
   USB_DESC_BYTE         (0x01),         /* bSlaveInterface0 (Data Class
                                            Interface).                      */
   /* Endpoint 2 Descriptor.*/
-  USB_DESC_ENDPOINT     (INTERRUPT_REQUEST_EP|0x80, /* bEndpointAddress.    */
+  USB_DESC_ENDPOINT     (USB_CDC_INTERRUPT_REQUEST_EP|0x80, /* bEndpointAddress.    */
                          0x03,          /* bmAttributes (Interrupt).        */
                          0x0008,        /* wMaxPacketSize.                  */
                          0xFF),         /* bInterval.                       */
@@ -143,12 +143,12 @@ static const uint8_t vcom_configuration_descriptor_data[67] = {
                                            4.7).                            */
                          0x00),         /* iInterface.                      */
   /* Endpoint 3 Descriptor.*/
-  USB_DESC_ENDPOINT     (DATA_AVAILABLE_EP,         /* bEndpointAddress.    */
+  USB_DESC_ENDPOINT     (USB_CDC_DATA_AVAILABLE_EP,    /* bEndpointAddress. */
                          0x02,          /* bmAttributes (Bulk).             */
                          0x0040,        /* wMaxPacketSize.                  */
                          0x00),         /* bInterval.                       */
   /* Endpoint 1 Descriptor.*/
-  USB_DESC_ENDPOINT     (DATA_REQUEST_EP|0x80,      /* bEndpointAddress.    */
+  USB_DESC_ENDPOINT     (USB_CDC_DATA_REQUEST_EP|0x80, /* bEndpointAddress. */
                          0x02,          /* bmAttributes (Bulk).             */
                          0x0040,        /* wMaxPacketSize.                  */
                          0x00)          /* bInterval.                       */
@@ -202,7 +202,7 @@ static const uint8_t vcom_string2[] = {
 static uint8_t vcom_string3[] = {
   USB_DESC_BYTE(28),                    /* bLength.                         */
   USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType.                 */
-  '0', 0,  '.', 0,  '0', 0,  '0', 0,    /* Version number of NeuG.          */
+  '0', 0,  '.', 0,  '0', 0,  '1', 0,    /* Version number of NeuG.          */
   '-', 0,
   0, 0, 0, 0, 0, 0, 0, 0,              /* Filled by Unique device ID.      */
   0, 0, 0, 0, 0, 0, 0, 0,
@@ -298,9 +298,9 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
        Note, this callback is invoked from an ISR so I-Class functions
        must be used.*/
     chSysLockFromIsr();
-    usbInitEndpointI(usbp, DATA_REQUEST_EP, &ep1config);
-    usbInitEndpointI(usbp, INTERRUPT_REQUEST_EP, &ep2config);
-    usbInitEndpointI(usbp, DATA_AVAILABLE_EP, &ep3config);
+    usbInitEndpointI(usbp, USB_CDC_DATA_REQUEST_EP, &ep1config);
+    usbInitEndpointI(usbp, USB_CDC_INTERRUPT_REQUEST_EP, &ep2config);
+    usbInitEndpointI(usbp, USB_CDC_DATA_AVAILABLE_EP, &ep3config);
     chSysUnlockFromIsr();
     return;
   case USB_EVENT_SUSPEND:
index 7f61655..366f9cc 100644 (file)
@@ -1,5 +1,6 @@
 /*
-    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio.
+    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
+                 2011 Giovanni Di Sirio.
 
     This file is part of ChibiOS/RT.
 
  * ST32F103 memory setup.
  */
 __main_stack_size__     = 0x0400;
-__stacks_total_size__   = __main_stack_size__;
+__process_stack_size__  = 0x0400;
 
 MEMORY
 {
     flash : org = @ORIGIN@, len = @FLASH_SIZE@k
-    ram : org = 0x20000000, len = 20k
+    ram : org = 0x20000000, len = @MEMORY_SIZE@k
 }
 
 __ram_start__           = ORIGIN(ram);
@@ -95,6 +96,21 @@ SECTIONS
     _etext = .;
     _textdata = _etext;
 
+    .stacks :
+    {
+        . = ALIGN(8);
+        __main_stack_base__ = .;
+        . += __main_stack_size__;
+        . = ALIGN(8);
+        __main_stack_end__ = .;
+        __process_stack_base__ = .;
+        __main_thread_stack_base__ = .;
+        . += __process_stack_size__;
+        . = ALIGN(8);
+        __process_stack_end__ = .;
+        __main_thread_stack_end__ = .;
+    } > ram
+
     .data :
     {
         PROVIDE(_data = .);
@@ -129,4 +145,4 @@ PROVIDE(end = .);
 _end            = .;
 
 __heap_base__   = _end;
-__heap_end__    = __ram_end__ - __stacks_total_size__;
+__heap_end__    = __ram_end__;
index 3ac5148..77b45c4 100644 (file)
@@ -42,6 +42,7 @@ static Thread *rng_thread;
 static adcsample_t samp[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
  
 static void adccb (ADCDriver *adcp, adcsample_t *buffer, size_t n);
+static void adccb_err (ADCDriver *adcp, adcerror_t err);
 
 /*
  * ADC conversion group.
@@ -53,6 +54,7 @@ static const ADCConversionGroup adcgrpcfg = {
   FALSE,
   ADC_GRP1_NUM_CHANNELS,
   adccb,
+  adccb_err,
   0,
   ADC_CR2_TSVREFE,
   ADC_SMPR1_SMP_SENSOR(ADC_SAMPLE_1P5) | ADC_SMPR1_SMP_VREF(ADC_SAMPLE_1P5),
@@ -74,6 +76,12 @@ static void adccb (ADCDriver *adcp, adcsample_t *buffer, size_t n)
     chEvtSignalFlagsI (rng_thread, ADC_DATA_AVAILABLE);
   chSysUnlockFromIsr();
 }
+
+static void adccb_err (ADCDriver *adcp, adcerror_t err)
+{
+  (void)adcp;  (void)err;
+}
+
 \f
 /*
  * TinyMT routines.