Support GD32F103 and fix fraucheky.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 26 Apr 2018 06:48:21 +0000 (15:48 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Thu, 26 Apr 2018 06:48:21 +0000 (15:48 +0900)
ChangeLog
chopstx
fraucheky
src/configure
src/main.c

index 6616ac6..e4ef821 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-04-26  NIIBE Yutaka  <gniibe@fsij.org>
+
+       * src/main.c (main): Call chopstx_conf_idle at the start.
+       Call neug_init and led_blinker before fraucheky.
+       Fix a race of ENDP6 usb things with fraucheky_init before
+       the check of USB_DEVICE_STATE_CONFIGURED.
+
+       * src/configure (MHZ, def_mhz): New.
+
 2018-01-19  NIIBE Yutaka  <gniibe@fsij.org>
 
        * VERSION: 1.0.7.
diff --git a/chopstx b/chopstx
index aa63ac7..32d0b82 160000 (submodule)
--- a/chopstx
+++ b/chopstx
@@ -1 +1 @@
-Subproject commit aa63ac79bc331b7c60943d77ec3c1f82e8c353d9
+Subproject commit 32d0b8200d2d6eadc00ddfb1e1c2113e148d325a
index 1744b5b..ee157a5 160000 (submodule)
--- a/fraucheky
+++ b/fraucheky
@@ -1 +1 @@
-Subproject commit 1744b5bee027259c5ff0fb09975e46d4ad930e8e
+Subproject commit ee157a5c6627d4e9aec94e634f424837b2f8a75e
index 48e29c4..b1c0b17 100755 (executable)
@@ -173,6 +173,8 @@ BOARD_HEADER_FILE=board-$(echo $target | tr '_[:upper:]' '-[:lower:]').h
 echo "Header file is: $BOARD_HEADER_FILE"
 ln -sf "../chopstx/board/$BOARD_HEADER_FILE" board.h
 
+# Frequency
+MHZ=72
 # Flash page size in byte
 FLASH_PAGE_SIZE=1024
 # Flash memory size in KiB
@@ -201,6 +203,9 @@ STBEE)
 BLUE_PILL|STM8S_DISCOVERY)
   FLASH_SIZE=64
   ;;
+BLUE_PILL_G)
+  MHZ=96
+  ;;
 *)
   ;;
 esac
@@ -212,6 +217,7 @@ if test "$target" = "GNU_LINUX"; then
   cross=""
   mcu="none"
   def_emulation="-DGNU_LINUX_EMULATION"
+  def_mhz=""
   enable_hexoutput=""
   libs="-lpthread"
 else
@@ -221,6 +227,7 @@ else
   cross="arm-none-eabi-"
   mcu="cortex-m3"
   def_emulation=""
+  def_mhz="-DMHZ=$MHZ"
   enable_hexoutput=yes
   libs=""
 fi
@@ -397,7 +404,7 @@ fi
  echo "EMULATION=$emulation";
  echo "CROSS=$cross";
  echo "MCU=$mcu";
- echo "DEFS=$use_sys3 $flash_override $def_emulation";
+ echo "DEFS=$use_sys3 $def_emulation $def_mhz";
  echo "LDSCRIPT=$ldscript";
  echo "LIBS=$libs";
  echo "ENABLE_FRAUCHEKY=$enable_fraucheky";
index 2bd169f..7bf66c7 100644 (file)
@@ -211,6 +211,7 @@ static void neug_setup_endpoints_for_interface (struct usb_dev *dev,
 #ifdef FRAUCHEKY_SUPPORT
 #define MSC_MASS_STORAGE_RESET_COMMAND 0xFF
 extern int fraucheky_enabled (void);
+extern void fraucheky_init (void);
 extern void fraucheky_main (void);
 
 extern void fraucheky_setup_endpoints_for_interface (int stop);
@@ -1076,6 +1077,8 @@ main (int argc, char **argv)
   chopstx_t led_thread, usb_thd;
   unsigned int count;
 
+  chopstx_conf_idle (1);
+
 #ifdef GNU_LINUX_EMULATION
   if (argc >= 4 || (argc == 2 && !strcmp (argv[1], "--help")))
     {
@@ -1116,15 +1119,17 @@ main (int argc, char **argv)
 
   fill_serial_no_by_unique_id ();
 
-  chopstx_conf_idle (1);
-
   adc_init ();
+  neug_init (random_word, RANDOM_BYTES_LENGTH/sizeof (uint32_t));
 
   eventflag_init (&led_event);
 
   chopstx_mutex_init (&usb_mtx);
   chopstx_cond_init (&usb_cnd);
 
+  led_thread = chopstx_create (PRIO_LED, STACK_ADDR_LED, STACK_SIZE_LED,
+                              led_blinker, NULL);
+
 #ifdef FRAUCHEKY_SUPPORT
   if (fraucheky_enabled ())
     {
@@ -1132,6 +1137,7 @@ main (int argc, char **argv)
       bDeviceState = USB_DEVICE_STATE_UNCONNECTED;
       usb_thd = chopstx_create (PRIO_USB, STACK_ADDR_USB, STACK_SIZE_USB,
                                usb_main, NULL);
+      fraucheky_init ();
       while (bDeviceState != USB_DEVICE_STATE_CONFIGURED)
        chopstx_usec_wait (250*1000);
       set_led (1);
@@ -1143,12 +1149,8 @@ main (int argc, char **argv)
     }
 #endif
 
-  neug_init (random_word, RANDOM_BYTES_LENGTH/sizeof (uint32_t));
   running_neug = 1;
 
-  led_thread = chopstx_create (PRIO_LED, STACK_ADDR_LED, STACK_SIZE_LED,
-                              led_blinker, NULL);
-
   usb_thd = chopstx_create (PRIO_USB, STACK_ADDR_USB, STACK_SIZE_USB,
                            usb_main, NULL);