(toppers-users 3712) Re: [ASP] pdic/sh/ のシリアルドライバについて

今井和彦 imai-ka648 @ pref.miyagi.jp
2011年 12月 27日 (火) 14:04:36 JST


もなかさん

sh12a_gcc担当の今井です。

> 現時点の SuperH 系の ASP ターゲットは,シリアルポートとし
> てルネサスのSCIFを使うことを前提としています.
> しかしながら,現存するMPUだけ見ても,SCIFしか存在しない型
> 番は稀です.大抵はSCIとSCIFが混在しています.
> さらにカーネルにとって都合の悪いことに,SCIFが0で始まらな
> いMPUも稀ではありません.
> (具体例として, SH7214/7216系があります.SCIは0から2の3つ,
> SCIF は 3 の1つだけ存在します.)

PDIC内のポート番号と実デバイスのポート番号が一致しない場合の
取り扱いですね。

> arch や target では,SCIF の数の文を,TNUM_SCIF_SIOP で定
> 義します.また,存在する SCIFx に対応するSH_SCIFx_BASE を
> 定義します.既述の SH7214系では, SH_SCIF_SIOP は 1,また 
> SH_SCIF3_BASE のみ定義されます.

ただ単にポート番号の対応関係の問題であれば、
(違う意図であれば、ご指摘ください。)
ターゲット依存部で

#define TNUM_SIOP  1 /* ポートは1つ使用 */
#define SH_SCIF1_BASE  TARGET_SH_SCIF3_BASE
    /*  PDICのポート1は、ターゲットのポート3  */

と定義するのはいかがでしょうか?
ターゲット固有の事情はターゲット依存部に閉じ込めつつ、
sh_scif.cは現状のままで済みます。
(マクロ名はもう少しふさわしいものに
 見直した方がいいですが。
例えば、
#define PDIC_SH_SCIF1_BASE  TARGET_SH_SCIF3_BASE
)

頂いたパッチの条件式がやや複雑に見えました。

+#if (defined(TNUM_SCIF_SIOP) && SH_SCIF1_BASE) || (!dedined(TNUM_SCIF_SIOP) &&
(TNUM_SIOP > 1))


void sio_cls_por(SIOPCB *siopcb)のように、
非依存部とのインターフェースがSIOPCB構造体へのポインタに
なっているので、SCI/SCIFが混在する場合は、
SIOPCB構造体でSCI/SCIFいずれの情報も格納できるようにする
必要があります。
(あるいは、SCI/SCIFの共通項を各デバイス毎の構造体の先頭に
配置し、その共通項をSIOPCB構造体とする。)


------------------------
宮城県産業技術総合センター
機械電子情報技術部 情報技術開発班
今井和彦
〒981-3206 宮城県仙台市泉区明通2丁目2
TEL 022-377-8700
FAX 022-377-8712
E-mail:imai-ka648 @ pref.miyagi.jp
URL:http://www.mit.pref.miyagi.jp/

兼務
宮城県震災復興・企画部
情報産業振興室
〒980-8570 仙台市青葉区本町3丁目8-1
TEL:022-211-2479
FAX:022-211-2496
E-mail:imai-ka648 @ pref.miyagi.jp
(産技センターと共通です。)
URL:http://www.pref.miyagi.jp/jyoho-i/


(2011/10/30 21:07), Masaki Muranaka wrote:
> TOPPERS users ML のみなさま:
> こんばんは.
> ASPの pdic/sh/ に依存したお話です.
> 
> 現時点の SuperH 系の ASP ターゲットは,シリアルポートとしてルネサスのSCIFを使うことを前提としています.
> しかしながら,現存するMPUだけ見ても,SCIFしか存在しない型番は稀です.大抵はSCIとSCIFが混在しています.
> さらにカーネルにとって都合の悪いことに,SCIFが0で始まらないMPUも稀ではありません.
> (具体例として, SH7214/7216系があります.SCIは0から2の3つ,SCIF は 3 の1つだけ存在します.)
> 
> pdic は個々のMPUの事情に深く関与すべきではないと思いますが,現時点の sh_scif.c のコードは,
> SuperH 系の現状を反映するのは難しい状態にあると思います.
> どのポート番号がSCI/SCIFのいずれなのかは,arch が頑張ることとして,それが判別できた後の処理を
> pdic が支援できるように,添付の patch のような改変を提案します.
> 
> arch や target では,SCIF の数の文を,TNUM_SCIF_SIOP で定義します.また,存在する SCIFx に対応する
> SH_SCIFx_BASE を定義します.既述の SH7214系では, SH_SCIF_SIOP は 1,また SH_SCIF3_BASE のみ
> 定義されます.
> 
> パッチでは,TNUM_SCIF_SIOP が定義されない場合は,従来のコードと互換性があるようにしてあります.
> (…つもりです.ケアレスミスはあるかも)
> 
> このパッチと並行して,sh_sci.[ch] が新規に書かれるべきですが,今回は含めていません.
> 
> パッチの方針につきましてご意見頂ければ幸いです.
> 
> --
> from もなか