Upgrade Chopstx, change stack size
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 15 Sep 2015 03:44:03 +0000 (12:44 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 15 Sep 2015 03:44:03 +0000 (12:44 +0900)
ChangeLog
NEWS
chopstx
src/main.c
src/neug.ld.in
src/usb_stm32f103.c

index 6efbd21..f0801a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2015-09-15  Niibe Yutaka  <gniibe@fsij.org>
+
+       * src/neug.ld.in (__main_stack_size__): Decrease stack size of
+       exception handlers.
+       (__process0_stack_size__): Decrease stack size of main.
+       (__process1_stack_size__): Decrease stack size of led.
+       (__process2_stack_size__): Increase stack size of rng.
+
+       * src/main.c (usb_cb_device_reset): Stop the interface.
+
+       * chopstx: Update to 0.10.
+
+       * src/usb_stm32f103.c: Update from Gnuk.
+
 2015-09-11  Niibe Yutaka  <gniibe@fsij.org>
 
        * tool/neug_upgrade.py (main): Loop until finding reGNUal device.
diff --git a/NEWS b/NEWS
index f0a6106..3bf3f80 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,7 @@ NeuG NEWS - User visible changes
   Released 2015-09-??, by NIIBE Yutaka
 
 ** Upgrade of Chopstx
-We use Chopstx 0.09, which supports Nitrokey-Start.
+We use Chopstx 0.10, which supports Nitrokey-Start.
 
 ** USB reset handling
 Now, USB reset lets NeuG device restart correctly.
diff --git a/chopstx b/chopstx
index 4705e2f..a30a069 160000 (submodule)
--- a/chopstx
+++ b/chopstx
@@ -1 +1 @@
-Subproject commit 4705e2fb15ae58cc47a3df100949b07931d53526
+Subproject commit a30a069ed8e75f14b520b407b07a3f137b87ef1c
index cc2b698..edf2871 100644 (file)
@@ -182,6 +182,7 @@ static const uint8_t vcom_string0[4] = {
 
 #include "usb-strings.c.inc"
 
+static void neug_setup_endpoints_for_interface (uint16_t interface, int stop);
 #ifdef FRAUCHEKY_SUPPORT
 extern int fraucheky_enabled (void);
 extern void fraucheky_main (void);
@@ -199,6 +200,8 @@ extern int fraucheky_get_descriptor (uint8_t rcp, uint8_t desc_type,
 void
 usb_cb_device_reset (void)
 {
+  int i;
+
   /* Set DEVICE as not configured.  */
   usb_lld_set_configuration (0);
 
@@ -210,6 +213,10 @@ usb_cb_device_reset (void)
   /* Initialize Endpoint 0.  */
   usb_lld_setup_endpoint (ENDP0, EP_CONTROL, 0, ENDP0_RXADDR, ENDP0_TXADDR, 64);
 
+  /* Stop the interface */
+  for (i = 0; i < NUM_INTERFACES; i++)
+    neug_setup_endpoints_for_interface (i, 1);
+
   /* Notify upper layer.  */
   chopstx_mutex_lock (&usb_mtx);
   bDeviceState = ATTACHED;
index 5212ff9..03bc471 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * ST32F103 memory setup.
  */
-__main_stack_size__      = 0x0100;      /* Exception handlers     */
-__process0_stack_size__  = 0x0200;      /* main */
-__process1_stack_size__  = 0x0100;      /* led */
-__process2_stack_size__  = 0x0180;      /* rng */
+__main_stack_size__      = 0x0080;      /* Exception handlers     */
+__process0_stack_size__  = 0x0140;      /* main */
+__process1_stack_size__  = 0x00c0;      /* led */
+__process2_stack_size__  = 0x01a0;      /* rng */
 __process3_stack_size__  = 0x0100;      /* intr: usb */
 
 MEMORY
index c213d6a..ac96dda 100644 (file)
@@ -727,7 +727,7 @@ static int std_set_interface (uint8_t req, struct control_info *detail)
 
   if ((req & REQUEST_DIR) == 1 || rcp != INTERFACE_RECIPIENT
       || detail->len != 0 || (detail->index >> 8) != 0
-      || (detail->value >> 8) != 0 || dev_p->current_configuration != 0)
+      || (detail->value >> 8) != 0 || dev_p->current_configuration == 0)
     return USB_UNSUPPORT;
 
   return usb_cb_interface (USB_SET_INTERFACE, detail);