OSDN Git Service

チケット #24777 に対する作業。SIO_PORTIDを変更した時の変更箇所を局所的なものにするための作業。
authorshintamainjp <shintamainjp@users.sourceforge.jp>
Tue, 5 Apr 2011 14:24:15 +0000 (14:24 +0000)
committershintamainjp <shintamainjp@users.sourceforge.jp>
Tue, 5 Apr 2011 14:24:15 +0000 (14:24 +0000)
asp/CHANGES.LPC
asp/pdic/uart/uart.c
asp/syssvc/logtask.h
asp/syssvc/serial.c
asp/syssvc/serial.cfg
asp/target/lpc1768_generic_gcc/target_syssvc.h
asp/target/lpcxpresso1768_gcc/target_syssvc.h

index 40c903a..d7089ab 100644 (file)
@@ -1,2 +1,17 @@
 * Release 1.6.2 2011/**/**
- - チケット#24676のバグを修正
\ No newline at end of file
+ - チケット#24676のバグを修正
+
+ - チケット#24777のバグを修正(2011/04/05:shintamainjp)
+   - pdic/uart/uart.c
+     - PORT1からPORT4までを平等に扱うようにした。
+     - SIO_BAUD_RATE_PORTxが定義されている時に、対象ポートのボーレートを変更するようにした。
+   - target/lpc1768_generic_gcc/target_syssvc.h
+     - SIO_BAUD_RATE_PORTxの定義を追加した。
+   - target/lpcxpresso1768_gcc/target_syssvc.h
+     - SIO_BAUD_RATE_PORTxの定義を追加した。
+   - syssvc/serial.c
+     - TNUM_PORT >= 4の時、送受信バッファを定義するようにした。
+   - syssvc/logtask.h
+     - LOGTASK_PORTIDを1からSIO_PORTIDに変更した。
+   - syssvc/serial.cfg
+     - TNUM_PORT >= 4の時、送受信処理用セマフォを定義するようにした。
index ab5ba7c..0a60344 100644 (file)
@@ -303,35 +303,48 @@ void target_uart_init(ID siopid)
 
        /* ボーレートの設定 */
        uart_write( reg, UART_LCR, LCR_DLAB );  /* ディバイザ設定モードに移行 */
-       uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
-       uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
 
-#if defined(SIO2_BAUD_RATE)
-       if ( siopid == 2 )
-       {
-               uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO2_BAUD_RATE/16)) );
-               uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO2_BAUD_RATE/16)) );
-       }
+        switch (siopid) {
+            case 1:
+#if defined(SIO_BAUD_RATE_PORT1)
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT1/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT1/16)) );
+#else
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
 #endif
-
-#if defined(SIO3_BAUD_RATE)
-       if ( siopid == 3 )
-       {
-               uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO3_BAUD_RATE/16)) );
-               uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO3_BAUD_RATE/16)) );
-       }
+                break;
+            case 2:
+#if defined(SIO_BAUD_RATE_PORT2)
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT2/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT2/16)) );
+#else
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
 #endif
-
-#if defined(SIO4_BAUD_RATE)
-       if ( siopid == 4 )
-       {
-               uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO4_BAUD_RATE/16)) );
-               uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO4_BAUD_RATE/16)) );
-       }
+                break;
+            case 3:
+#if defined(SIO_BAUD_RATE_PORT3)
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT3/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT3/16)) );
+#else
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
+#endif
+                break;
+            case 4:
+#if defined(SIO_BAUD_RATE_PORT4)
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT4/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_PORT4/16)) );
+#else
+                uart_write( reg, UART_DLL, DLL((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
+                uart_write( reg, UART_DLM, DLM((SIO_UART_CLOCK/SIO_BAUD_RATE_DEFAULT/16)) );
 #endif
+                break;
+        }
 
        /* デバイザ設定モードから、通常モードに戻す */
-       uart_write( reg, UART_LCR, 0 );                                 /* 通常モードに移行 */
+       uart_write( reg, UART_LCR, 0 );                         /* 通常モードに移行 */
 
        /* プロトコルを設定。8bit, 1stop bit, parityなし */
        uart_write( reg, UART_LCR, LCR_NP_8_1 );                /* 通常モードに移行 */
index 76b8e33..f5f5b5e 100755 (executable)
@@ -65,7 +65,7 @@ extern "C" {
 #endif /* LOGTASK_STACK_SIZE */
 
 #ifndef LOGTASK_PORTID
-#define LOGTASK_PORTID         1               /* システムログ用のシリアルポート番号 */
+#define LOGTASK_PORTID         SIO_PORTID      /* システムログ用のシリアルポート番号 */
 #endif /* LOGTASK_PORTID */
 
 #ifndef LOGTASK_INTERVAL
index 7ecf59e..460c1be 100755 (executable)
@@ -95,6 +95,21 @@ static char_t        snd_buffer3[SERIAL_SND_BUFSZ3];
 
 #endif /* TNUM_PORT >= 3 */
 
+#if TNUM_PORT >= 4                                             /* ポート4に関する定義 */
+
+#ifndef SERIAL_RCV_BUFSZ4
+#define        SERIAL_RCV_BUFSZ4       256                     /* ポート4の受信バッファサイズ */
+#endif /* SERIAL_RCV_BUFSZ4 */
+
+#ifndef SERIAL_SND_BUFSZ4
+#define        SERIAL_SND_BUFSZ4       256                     /* ポート4の送信バッファサイズ */
+#endif /* SERIAL_SND_BUFSZ4 */
+
+static char_t  rcv_buffer4[SERIAL_RCV_BUFSZ4];
+static char_t  snd_buffer4[SERIAL_SND_BUFSZ4];
+
+#endif /* TNUM_PORT >= 4 */
+
 /*
  *  フロー制御に関連する定数とマクロ
  */
index 410d8ce..4332236 100755 (executable)
@@ -22,3 +22,7 @@ CRE_SEM(SERIAL_SND_SEM2, { TA_TPRI, 1, 1 });
 CRE_SEM(SERIAL_RCV_SEM3, { TA_TPRI, 0, 1 });
 CRE_SEM(SERIAL_SND_SEM3, { TA_TPRI, 1, 1 });
 #endif /* TNUM_PORT >= 3 */
+#if TNUM_PORT >= 4
+CRE_SEM(SERIAL_RCV_SEM4, { TA_TPRI, 0, 1 });
+CRE_SEM(SERIAL_SND_SEM4, { TA_TPRI, 1, 1 });
+#endif /* TNUM_PORT >= 4 */
index e219b55..17bf772 100644 (file)
  * \brief シリアルポートのデフォルトボーレート
  * \details
  * TOPPERS/ASPのシリアルポート1に対するボーレート設定値である。
- * シリアルポートの番号は1オリジンになっている。特に設定しない限り、
- * 2番以降のシリアルポートに対しても同じ値が設定される。2番以降の
- * シリアルポートの速度を変えたければ、マクロSIOx_BAUD_RATEを宣言する。
+ * シリアルポートの番号は1オリジンになっている。
+ * 特に設定しない限り、シリアルポートにはデフォルトの値が適用される。
+ * シリアルポートの速度を変えたければ、マクロSIO_BAUD_RATE_PORTxを宣言する。
  */
 #define SIO_BAUD_RATE_DEFAULT          (57600)
-#if 0
-#define SIO2_BAUD_RATE                         115200
-#define SIO3_BAUD_RATE                         115200
-#define SIO4_BAUD_RATE                         115200
-#endif
 
+//#define SIO_BAUD_RATE_PORT1          (57600)
+//#define SIO_BAUD_RATE_PORT2          (57600)
+//#define SIO_BAUD_RATE_PORT3          (57600)
+//#define SIO_BAUD_RATE_PORT4          (57600)
 
 /**
  * \brief システムログの低レベル出力のための文字出力
index 53edeb3..b877f8c 100644 (file)
  * シリアルポートの速度を変えたければ、マクロSIOx_BAUD_RATEを宣言する。
  */
 #define SIO_BAUD_RATE_DEFAULT          (57600)
-#if 0
-#define SIO2_BAUD_RATE                         115200
-#define SIO3_BAUD_RATE                         115200
-#define SIO4_BAUD_RATE                         115200
-#endif
 
+//#define SIO_BAUD_RATE_PORT1          (57600)
+//#define SIO_BAUD_RATE_PORT2          (57600)
+//#define SIO_BAUD_RATE_PORT3          (57600)
+//#define SIO_BAUD_RATE_PORT4          (57600)
 
 /**
  * \brief システムログの低レベル出力のための文字出力