* Release 1.7.2 (次のリリースに含まれる予定の修正)
- - 「チケット #26384 checksumコマンドの対応」に対応 (2011/09/26 shintamainjp)
+
+ - 「チケット #26459 複数シリアルポートの同時使用対応」を実施。 (2010/10/04 shintamainjp)
+ - pdic/uart/uart.hの割り込みベクタ番号定義をSIO_BAUD_RATE_PORTxを参照して自動的に行うようにした。
+ - target/lpcxpresso1768_gcc/target_syssvc.hにおいて、SIOx_PORTIDを定義するようにした。
+ - target/lpcxpresso1768_gcc/target_syssvc.hにおいて、SIO_BAUD_RATE_DEFAULTの定義を削除した。
+ - target/lpcxpresso1768_gcc/target_syssvc.hにおいて、SIO_BAUD_RATE_PORTxの定義を追加した。
+ - target/lpcxpresso1768_gcc/target_config.cで、SIO_BAUD_RATE_PORTx定義の有無で自動的にピン設定とtarget_uart_initを実行するようにした。
+ - arch/arm_m_gcc/lpc1700_gcc/chip_serial.cfgで、SIO_BAUD_RATE_PORTx定義の有無で自動的に割り込みハンドラを登録するようにした。
+ - arch/arm_m_gcc/lpc1700_gcc/chip_serial.hに、INTPRI_SIOxとINTATR_SIOxの定義を追加した。
+
+ - 「チケット #26384 checksumコマンドの対応」に対応。 (2011/09/26 shintamainjp)
- asp/trunk/asp/target/lpcxpresso1768_gcc/Makefile.targetのhexファイル生成の実装を変更した。
- binファイルを生成し、チェックサム修正プログラムを実行してからhexファイルを生成するようにした。
- asp/trunk/asp/sample/Makefileのbinファイル生成の実装を変更した。
#include "target_serial.h"
ATT_INI({ TA_NULL, 0, sio_initialize });
-ATT_ISR({ TA_NULL, SIO_PORTID, INTNO_SIO, sio_isr, 1 });
-CFG_INT(INTNO_SIO, { TA_ENAINT|INTATR_SIO, INTPRI_SIO });
+
+#if defined(SIO_BAUD_RATE_PORT1)
+ATT_ISR({ TA_NULL, SIO1_PORTID, INTNO_SIO1, sio_isr, 1 });
+CFG_INT(INTNO_SIO1, { TA_ENAINT | INTATR_SIO1, INTPRI_SIO1 });
+#endif
+
+#if defined(SIO_BAUD_RATE_PORT2)
+ATT_ISR({ TA_NULL, SIO2_PORTID, INTNO_SIO2, sio_isr, 2 });
+CFG_INT(INTNO_SIO2, { TA_ENAINT | INTATR_SIO2, INTPRI_SIO2 });
+#endif
+
+#if defined(SIO_BAUD_RATE_PORT3)
+ATT_ISR({ TA_NULL, SIO3_PORTID, INTNO_SIO3, sio_isr, 3 });
+CFG_INT(INTNO_SIO3, { TA_ENAINT | INTATR_SIO3, INTPRI_SIO3 });
+#endif
+
+#if defined(SIO_BAUD_RATE_PORT4)
+ATT_ISR({ TA_NULL, SIO4_PORTID, INTNO_SIO4, sio_isr, 4 });
+CFG_INT(INTNO_SIO4, { TA_ENAINT | INTATR_SIO4, INTPRI_SIO4 });
+#endif
+
* 引数として使う。
*/
-#define INTPRI_SIO -3 /* 割込み優先度 */
+#define INTPRI_SIO1 (-3) /**< SIO1割込み優先度 */
+#define INTPRI_SIO2 (-3) /**< SIO2割込み優先度 */
+#define INTPRI_SIO3 (-3) /**< SIO3割込み優先度 */
+#define INTPRI_SIO4 (-3) /**< SIO4割込み優先度 */
/**
- * \brief å\89²è¾¼ã\81¿å\84ªå\85\88度
+ * \brief å\89²è¾¼ã\81¿å±\9eæ\80§
* \details
- * UART割込みハンドラ登録のための定数。コンフィギュレータが静的コンフィギュレーション時に、シリアルポート登録用
- * 引数として使う。この値は0でかまわない。
+ * UART割込みハンドラ登録のための定数。
+ * コンフィギュレータが静的コンフィギュレーション時に、
+ * シリアルポート登録用引数として使う。
+ * この値は0でかまわない。
*/
-#define INTATR_SIO 0 /* 割込み属性 */
+
+#define INTATR_SIO1 (0) /**< SIO1割込み属性 */
+#define INTATR_SIO2 (0) /**< SIO2割込み属性 */
+#define INTATR_SIO3 (0) /**< SIO3割込み属性 */
+#define INTATR_SIO4 (0) /**< SIO4割込み属性 */
#endif /* TOPPERS_CHIP_SERIAL_H */
/**
/*
* SIOの割込みベクタ番号
*/
-#if (SIO_PORTID == 1)
-#define INHNO_SIO INHNO_UART0
-#define INTNO_SIO INHNO_UART0
-#elif (SIO_PORTID == 2)
-#define INHNO_SIO INHNO_UART1
-#define INTNO_SIO INHNO_UART1
-#elif (SIO_PORTID == 3)
-#define INHNO_SIO INHNO_UART2
-#define INTNO_SIO INHNO_UART2
-#elif (SIO_PORTID == 4)
-#define INHNO_SIO INHNO_UART3
-#define INTNO_SIO INHNO_UART3
+#if defined (SIO_BAUD_RATE_PORT1)
+#define INHNO_SIO1 INHNO_UART0
+#define INTNO_SIO1 INHNO_UART0
#endif
+#if defined (SIO_BAUD_RATE_PORT2)
+#define INHNO_SIO2 INHNO_UART1
+#define INTNO_SIO2 INHNO_UART1
+#endif
+
+#if defined (SIO_BAUD_RATE_PORT3)
+#define INHNO_SIO3 INHNO_UART2
+#define INTNO_SIO3 INHNO_UART2
+#endif
+#if defined (SIO_BAUD_RATE_PORT4)
+#define INHNO_SIO4 INHNO_UART3
+#define INTNO_SIO4 INHNO_UART3
+#endif
/**
* \ingroup SIOAPI
*/
void target_initialize(void)
{
-
/*
* チップ依存部の初期化。この呼び出しは削除してはいけない。
*/
* 種類持っている。以下のコードはそれらのうちの一つに対応しているにすぎない。必要に応じて
* アプリケーション・プログラマが書き換えて使うこと。
*/
-#if (SIO_PORTID==1)
+
+#if defined (SIO_BAUD_RATE_PORT1)
/* Port0.2,3 ピンをUART0に割り当てる。*/
LPC_PINCON->PINSEL0 |= PINSEL_UART0_TX | PINSEL_UART0_RX;
-#elif (SIO_PORTID==2)
+ target_uart_init(SIO1_PORTID);
+#endif
+
+#if defined (SIO_BAUD_RATE_PORT2)
/* Port2.0,1 ピンをUART1に割り当てる。*/
LPC_PINCON->PINSEL4 |= PINSEL_UART1_TX | PINSEL_UART1_RX;
-#elif (SIO_PORTID==3)
+ target_uart_init(SIO2_PORTID);
+#endif
+
+#if defined (SIO_BAUD_RATE_PORT3)
/* Port0.10,11 ピンをUART2に割り当てる。*/
LPC_PINCON->PINSEL0 |= PINSEL_UART2_TX | PINSEL_UART2_RX;
/* UART2 の電源をオンにする */
LPC_SC->PCONP |= PCUART2;
-#elif (SIO_PORTID==4)
+ target_uart_init(SIO3_PORTID);
+#endif
+
+#if defined (SIO_BAUD_RATE_PORT4)
/* Port0.0,1 ピンをUART3に割り当てる。*/
LPC_PINCON->PINSEL0 |= PINSEL_UART3_TX | PINSEL_UART3_RX;
/* UART3 の電源をオンにする */
LPC_SC->PCONP |= PCUART3;
-#else
-#error "SIO_PORTID NOT Supported"
+ target_uart_init(SIO4_PORTID);
#endif
-
- /*
- * バナー出力用のシリアル初期化
- */
- target_uart_init(SIO_PORTID);
+ /*
+ * バナー出力用のシリアル初期化を実行する。
+ * 上記のシリアルポート初期化と重複するかもしれないが、
+ * ここではこれを許容する。
+ */
+ target_uart_init(SIO_PORTID);
}
#endif
/**
+ * \brief システムで使用可能なシリアルポート1に対するID番号。
+ * \details 対応するシリアルポートは実装の詳細で決まる。
+ */
+#define SIO1_PORTID (1)
+
+/**
+ * \brief システムで使用可能なシリアルポート2に対するID番号。
+ * \details 対応するシリアルポートは実装の詳細で決まる。
+ */
+#define SIO2_PORTID (2)
+
+/**
+ * \brief システムで使用可能なシリアルポート3に対するID番号。
+ * \details 対応するシリアルポートは実装の詳細で決まる。
+ */
+#define SIO3_PORTID (3)
+
+/**
+ * \brief システムで使用可能なシリアルポート4に対するID番号。
+ * \details 対応するシリアルポートは実装の詳細で決まる。
+ */
+#define SIO4_PORTID (4)
+
+/**
* \brief コンソールが使用するシリアルポートID
* \details
* UIF用コンソールに使用するポート番号である。ポート番号は1から始まる整数。
* LPCX1768では、PORT番号に応じて正しいUARTにピンを割り当て、必要に応じて電源を与えなければならない。
* これらは target_config.c の target_initialize() にまとめてある。ただし、target_initialize()が
* 対応するのは限定的な組み合わせである。詳しくは、 target_initialize() のコメントを参照。
+ *
+ * コンソール用シリアルポートにはSIO1_PORTIDで定義されたポートを使用する。
*/
-#define SIO_PORTID (1)
-
+#define SIO_PORTID (SIO1_PORTID)
/**
* \brief UARTドライバが管理する内蔵UARTの数
*/
#define TNUM_SIOP_UART (1)
+
/**
* \brief システムが管理するシリアル・ポートの総数
* \details
*/
#define TNUM_PORT TNUM_SIOP_UART /* システムが管理するシリアルポートの総数 */
-
/*
* SIOポートコンフィギュレーションの正当性確認
*
* \details
* logtaskで使用する。1オリジン。
*
- * ã\82·ã\82¹ã\83\86ã\83 ã\83ã\82°ç\94¨ã\81®ã\82·ã\83ªã\82¢ã\83«ã\83\9dã\83¼ã\83\88ã\81¯ã\80\81ã\82³ã\83³ã\82½ã\83¼ã\83«ç\94¨ã\81®ã\82·ã\83ªã\82¢ã\83«ã\83\9dã\83¼ã\83\88ã\81¨å¼·è¦\81することが多い。
+ * ã\82·ã\82¹ã\83\86ã\83 ã\83ã\82°ç\94¨ã\81®ã\82·ã\83ªã\82¢ã\83«ã\83\9dã\83¼ã\83\88ã\81¯ã\80\81ã\82³ã\83³ã\82½ã\83¼ã\83«ç\94¨ã\81®ã\82·ã\83ªã\82¢ã\83«ã\83\9dã\83¼ã\83\88ã\81¨å\85±ç\94¨することが多い。
*/
#define LOGTASK_PORTID SIO_PORTID
/**
- * \brief シリアルポートのデフォルトボーレート
+ * \brief シリアルポート1のボーレート
+ *
* \details
* TOPPERS/ASPのシリアルポート1に対するボーレート設定値である。
- * シリアルポートの番号は1オリジンになっている。特に設定しない限り、
- * 2番以降のシリアルポートに対しても同じ値が設定される。2番以降の
- * シリアルポートの速度を変えたければ、マクロSIOx_BAUD_RATEを宣言する。
+ * この宣言を有効にするとシリアルポートが活性化される。
+ * シリアルポートのピン設定はtarget_config.cに実装されている。
+ * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。
+ *
+ * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する
+ * UART数と一致させる事。
*/
-#define SIO_BAUD_RATE_DEFAULT (57600)
+#define SIO_BAUD_RATE_PORT1 (57600)
-//#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 シリアルポート2のボーレート
+ *
+ * \details
+ * TOPPERS/ASPのシリアルポート2に対するボーレート設定値である。
+ * この宣言を有効にするとシリアルポートが活性化される。
+ * シリアルポートのピン設定はtarget_config.cに実装されている。
+ * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。
+ *
+ * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する
+ * UART数と一致させる事。
+ */
+// #define SIO_BAUD_RATE_PORT2 (57600)
+
+/**
+ * \brief シリアルポート3のボーレート
+ *
+ * \details
+ * TOPPERS/ASPのシリアルポート3に対するボーレート設定値である。
+ * この宣言を有効にするとシリアルポートが活性化される。
+ * シリアルポートのピン設定はtarget_config.cに実装されている。
+ * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。
+ *
+ * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する
+ * UART数と一致させる事。
+ */
+// #define SIO_BAUD_RATE_PORT3 (57600)
+
+/**
+ * \brief シリアルポート4のボーレート
+ *
+ * \details
+ * TOPPERS/ASPのシリアルポート4に対するボーレート設定値である。
+ * この宣言を有効にするとシリアルポートが活性化される。
+ * シリアルポートのピン設定はtarget_config.cに実装されている。
+ * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。
+ *
+ * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する
+ * UART数と一致させる事。
+ */
+// #define SIO_BAUD_RATE_PORT4 (57600)
/**
* \brief システムログの低レベル出力のための文字出力
extern void target_fput_log(char_t c);
#endif /* TOPPERS_TARGET_SYSSVC_H */
+
/**
* \}
*/
+