Revision | 522 (tree) |
---|---|
Zeit | 2011-10-04 22:47:11 |
Autor | shintamainjp |
チケット #26459 : 複数シリアルポートの同時使用対応を実施。当然ながら既存のコードも問題なく動作する。
@@ -57,22 +57,26 @@ | ||
57 | 57 | /* |
58 | 58 | * SIOの割込みベクタ番号 |
59 | 59 | */ |
60 | -#if (SIO_PORTID == 1) | |
61 | -#define INHNO_SIO INHNO_UART0 | |
62 | -#define INTNO_SIO INHNO_UART0 | |
63 | -#elif (SIO_PORTID == 2) | |
64 | -#define INHNO_SIO INHNO_UART1 | |
65 | -#define INTNO_SIO INHNO_UART1 | |
66 | -#elif (SIO_PORTID == 3) | |
67 | -#define INHNO_SIO INHNO_UART2 | |
68 | -#define INTNO_SIO INHNO_UART2 | |
69 | -#elif (SIO_PORTID == 4) | |
70 | -#define INHNO_SIO INHNO_UART3 | |
71 | -#define INTNO_SIO INHNO_UART3 | |
60 | +#if defined (SIO_BAUD_RATE_PORT1) | |
61 | +#define INHNO_SIO1 INHNO_UART0 | |
62 | +#define INTNO_SIO1 INHNO_UART0 | |
72 | 63 | #endif |
73 | 64 | |
65 | +#if defined (SIO_BAUD_RATE_PORT2) | |
66 | +#define INHNO_SIO2 INHNO_UART1 | |
67 | +#define INTNO_SIO2 INHNO_UART1 | |
68 | +#endif | |
74 | 69 | |
70 | +#if defined (SIO_BAUD_RATE_PORT3) | |
71 | +#define INHNO_SIO3 INHNO_UART2 | |
72 | +#define INTNO_SIO3 INHNO_UART2 | |
73 | +#endif | |
75 | 74 | |
75 | +#if defined (SIO_BAUD_RATE_PORT4) | |
76 | +#define INHNO_SIO4 INHNO_UART3 | |
77 | +#define INTNO_SIO4 INHNO_UART3 | |
78 | +#endif | |
79 | + | |
76 | 80 | /** |
77 | 81 | * \ingroup SIOAPI |
78 | 82 | * \brief コールバックルーチンの識別番号 |
@@ -85,6 +85,30 @@ | ||
85 | 85 | #endif |
86 | 86 | |
87 | 87 | /** |
88 | + * \brief システムで使用可能なシリアルポート1に対するID番号。 | |
89 | + * \details 対応するシリアルポートは実装の詳細で決まる。 | |
90 | + */ | |
91 | +#define SIO1_PORTID (1) | |
92 | + | |
93 | +/** | |
94 | + * \brief システムで使用可能なシリアルポート2に対するID番号。 | |
95 | + * \details 対応するシリアルポートは実装の詳細で決まる。 | |
96 | + */ | |
97 | +#define SIO2_PORTID (2) | |
98 | + | |
99 | +/** | |
100 | + * \brief システムで使用可能なシリアルポート3に対するID番号。 | |
101 | + * \details 対応するシリアルポートは実装の詳細で決まる。 | |
102 | + */ | |
103 | +#define SIO3_PORTID (3) | |
104 | + | |
105 | +/** | |
106 | + * \brief システムで使用可能なシリアルポート4に対するID番号。 | |
107 | + * \details 対応するシリアルポートは実装の詳細で決まる。 | |
108 | + */ | |
109 | +#define SIO4_PORTID (4) | |
110 | + | |
111 | +/** | |
88 | 112 | * \brief コンソールが使用するシリアルポートID |
89 | 113 | * \details |
90 | 114 | * UIF用コンソールに使用するポート番号である。ポート番号は1から始まる整数。 |
@@ -92,14 +116,16 @@ | ||
92 | 116 | * LPCX1768では、PORT番号に応じて正しいUARTにピンを割り当て、必要に応じて電源を与えなければならない。 |
93 | 117 | * これらは target_config.c の target_initialize() にまとめてある。ただし、target_initialize()が |
94 | 118 | * 対応するのは限定的な組み合わせである。詳しくは、 target_initialize() のコメントを参照。 |
119 | + * | |
120 | + * コンソール用シリアルポートにはSIO1_PORTIDで定義されたポートを使用する。 | |
95 | 121 | */ |
96 | -#define SIO_PORTID (1) | |
122 | +#define SIO_PORTID (SIO1_PORTID) | |
97 | 123 | |
98 | - | |
99 | 124 | /** |
100 | 125 | * \brief UARTドライバが管理する内蔵UARTの数 |
101 | 126 | */ |
102 | 127 | #define TNUM_SIOP_UART (1) |
128 | + | |
103 | 129 | /** |
104 | 130 | * \brief システムが管理するシリアル・ポートの総数 |
105 | 131 | * \details |
@@ -107,7 +133,6 @@ | ||
107 | 133 | */ |
108 | 134 | #define TNUM_PORT TNUM_SIOP_UART /* システムが管理するシリアルポートの総数 */ |
109 | 135 | |
110 | - | |
111 | 136 | /* |
112 | 137 | * SIOポートコンフィギュレーションの正当性確認 |
113 | 138 | * |
@@ -123,26 +148,67 @@ | ||
123 | 148 | * \details |
124 | 149 | * logtaskで使用する。1オリジン。 |
125 | 150 | * |
126 | - * システムログ用のシリアルポートは、コンソール用のシリアルポートと強要することが多い。 | |
151 | + * システムログ用のシリアルポートは、コンソール用のシリアルポートと共用することが多い。 | |
127 | 152 | */ |
128 | 153 | #define LOGTASK_PORTID SIO_PORTID |
129 | 154 | |
130 | 155 | /** |
131 | - * \brief シリアルポートのデフォルトボーレート | |
156 | + * \brief シリアルポート1のボーレート | |
157 | + * | |
132 | 158 | * \details |
133 | 159 | * TOPPERS/ASPのシリアルポート1に対するボーレート設定値である。 |
134 | - * シリアルポートの番号は1オリジンになっている。特に設定しない限り、 | |
135 | - * 2番以降のシリアルポートに対しても同じ値が設定される。2番以降の | |
136 | - * シリアルポートの速度を変えたければ、マクロSIOx_BAUD_RATEを宣言する。 | |
160 | + * この宣言を有効にするとシリアルポートが活性化される。 | |
161 | + * シリアルポートのピン設定はtarget_config.cに実装されている。 | |
162 | + * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。 | |
163 | + * | |
164 | + * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する | |
165 | + * UART数と一致させる事。 | |
137 | 166 | */ |
138 | -#define SIO_BAUD_RATE_DEFAULT (57600) | |
167 | +#define SIO_BAUD_RATE_PORT1 (57600) | |
139 | 168 | |
140 | -//#define SIO_BAUD_RATE_PORT1 (57600) | |
141 | -//#define SIO_BAUD_RATE_PORT2 (57600) | |
142 | -//#define SIO_BAUD_RATE_PORT3 (57600) | |
143 | -//#define SIO_BAUD_RATE_PORT4 (57600) | |
169 | +/** | |
170 | + * \brief シリアルポート2のボーレート | |
171 | + * | |
172 | + * \details | |
173 | + * TOPPERS/ASPのシリアルポート2に対するボーレート設定値である。 | |
174 | + * この宣言を有効にするとシリアルポートが活性化される。 | |
175 | + * シリアルポートのピン設定はtarget_config.cに実装されている。 | |
176 | + * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。 | |
177 | + * | |
178 | + * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する | |
179 | + * UART数と一致させる事。 | |
180 | + */ | |
181 | +// #define SIO_BAUD_RATE_PORT2 (57600) | |
144 | 182 | |
145 | 183 | /** |
184 | + * \brief シリアルポート3のボーレート | |
185 | + * | |
186 | + * \details | |
187 | + * TOPPERS/ASPのシリアルポート3に対するボーレート設定値である。 | |
188 | + * この宣言を有効にするとシリアルポートが活性化される。 | |
189 | + * シリアルポートのピン設定はtarget_config.cに実装されている。 | |
190 | + * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。 | |
191 | + * | |
192 | + * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する | |
193 | + * UART数と一致させる事。 | |
194 | + */ | |
195 | +// #define SIO_BAUD_RATE_PORT3 (57600) | |
196 | + | |
197 | +/** | |
198 | + * \brief シリアルポート4のボーレート | |
199 | + * | |
200 | + * \details | |
201 | + * TOPPERS/ASPのシリアルポート4に対するボーレート設定値である。 | |
202 | + * この宣言を有効にするとシリアルポートが活性化される。 | |
203 | + * シリアルポートのピン設定はtarget_config.cに実装されている。 | |
204 | + * LPC1700では複数のピン設定があるため、実装の詳細を確認すること。 | |
205 | + * | |
206 | + * このファイルで定義されているTNUM_SIOP_UARTの定義数を実際に使用する | |
207 | + * UART数と一致させる事。 | |
208 | + */ | |
209 | +// #define SIO_BAUD_RATE_PORT4 (57600) | |
210 | + | |
211 | +/** | |
146 | 212 | * \brief システムログの低レベル出力のための文字出力 |
147 | 213 | * \details |
148 | 214 | * ターゲット依存の方法で,文字cを表示/出力/保存する. |
@@ -150,6 +216,8 @@ | ||
150 | 216 | extern void target_fput_log(char_t c); |
151 | 217 | |
152 | 218 | #endif /* TOPPERS_TARGET_SYSSVC_H */ |
219 | + | |
153 | 220 | /** |
154 | 221 | * \} |
155 | 222 | */ |
223 | + |
@@ -129,7 +129,6 @@ | ||
129 | 129 | */ |
130 | 130 | void target_initialize(void) |
131 | 131 | { |
132 | - | |
133 | 132 | /* |
134 | 133 | * チップ依存部の初期化。この呼び出しは削除してはいけない。 |
135 | 134 | */ |
@@ -159,31 +158,41 @@ | ||
159 | 158 | * 種類持っている。以下のコードはそれらのうちの一つに対応しているにすぎない。必要に応じて |
160 | 159 | * アプリケーション・プログラマが書き換えて使うこと。 |
161 | 160 | */ |
162 | -#if (SIO_PORTID==1) | |
161 | + | |
162 | +#if defined (SIO_BAUD_RATE_PORT1) | |
163 | 163 | /* Port0.2,3 ピンをUART0に割り当てる。*/ |
164 | 164 | LPC_PINCON->PINSEL0 |= PINSEL_UART0_TX | PINSEL_UART0_RX; |
165 | -#elif (SIO_PORTID==2) | |
165 | + target_uart_init(SIO1_PORTID); | |
166 | +#endif | |
167 | + | |
168 | +#if defined (SIO_BAUD_RATE_PORT2) | |
166 | 169 | /* Port2.0,1 ピンをUART1に割り当てる。*/ |
167 | 170 | LPC_PINCON->PINSEL4 |= PINSEL_UART1_TX | PINSEL_UART1_RX; |
168 | -#elif (SIO_PORTID==3) | |
171 | + target_uart_init(SIO2_PORTID); | |
172 | +#endif | |
173 | + | |
174 | +#if defined (SIO_BAUD_RATE_PORT3) | |
169 | 175 | /* Port0.10,11 ピンをUART2に割り当てる。*/ |
170 | 176 | LPC_PINCON->PINSEL0 |= PINSEL_UART2_TX | PINSEL_UART2_RX; |
171 | 177 | /* UART2 の電源をオンにする */ |
172 | 178 | LPC_SC->PCONP |= PCUART2; |
173 | -#elif (SIO_PORTID==4) | |
179 | + target_uart_init(SIO3_PORTID); | |
180 | +#endif | |
181 | + | |
182 | +#if defined (SIO_BAUD_RATE_PORT4) | |
174 | 183 | /* Port0.0,1 ピンをUART3に割り当てる。*/ |
175 | 184 | LPC_PINCON->PINSEL0 |= PINSEL_UART3_TX | PINSEL_UART3_RX; |
176 | 185 | /* UART3 の電源をオンにする */ |
177 | 186 | LPC_SC->PCONP |= PCUART3; |
178 | -#else | |
179 | -#error "SIO_PORTID NOT Supported" | |
187 | + target_uart_init(SIO4_PORTID); | |
180 | 188 | #endif |
181 | 189 | |
182 | - | |
183 | - /* | |
184 | - * バナー出力用のシリアル初期化 | |
185 | - */ | |
186 | - target_uart_init(SIO_PORTID); | |
190 | + /* | |
191 | + * バナー出力用のシリアル初期化を実行する。 | |
192 | + * 上記のシリアルポート初期化と重複するかもしれないが、 | |
193 | + * ここではこれを許容する。 | |
194 | + */ | |
195 | + target_uart_init(SIO_PORTID); | |
187 | 196 | } |
188 | 197 | |
189 | 198 |
@@ -65,16 +65,25 @@ | ||
65 | 65 | * 引数として使う。 |
66 | 66 | */ |
67 | 67 | |
68 | -#define INTPRI_SIO -3 /* 割込み優先度 */ | |
68 | +#define INTPRI_SIO1 (-3) /**< SIO1割込み優先度 */ | |
69 | +#define INTPRI_SIO2 (-3) /**< SIO2割込み優先度 */ | |
70 | +#define INTPRI_SIO3 (-3) /**< SIO3割込み優先度 */ | |
71 | +#define INTPRI_SIO4 (-3) /**< SIO4割込み優先度 */ | |
69 | 72 | |
70 | 73 | /** |
71 | - * \brief 割込み優先度 | |
74 | + * \brief 割込み属性 | |
72 | 75 | * \details |
73 | - * UART割込みハンドラ登録のための定数。コンフィギュレータが静的コンフィギュレーション時に、シリアルポート登録用 | |
74 | - * 引数として使う。この値は0でかまわない。 | |
76 | + * UART割込みハンドラ登録のための定数。 | |
77 | + * コンフィギュレータが静的コンフィギュレーション時に、 | |
78 | + * シリアルポート登録用引数として使う。 | |
79 | + * この値は0でかまわない。 | |
75 | 80 | */ |
76 | -#define INTATR_SIO 0 /* 割込み属性 */ | |
77 | 81 | |
82 | +#define INTATR_SIO1 (0) /**< SIO1割込み属性 */ | |
83 | +#define INTATR_SIO2 (0) /**< SIO2割込み属性 */ | |
84 | +#define INTATR_SIO3 (0) /**< SIO3割込み属性 */ | |
85 | +#define INTATR_SIO4 (0) /**< SIO4割込み属性 */ | |
86 | + | |
78 | 87 | #endif /* TOPPERS_CHIP_SERIAL_H */ |
79 | 88 | /** |
80 | 89 | * \} |