Ticket #24777

SIO_PORTIDを4まで使えるようにしたい

Eröffnet am: 2011-04-05 22:31 Letztes Update: 2011-06-26 21:37

Auswertung:
Verantwortlicher:
Status:
Geschlossen
Komponente:
Meilenstein:
(Keine)
Priorität:
3
Schweregrad:
3
Lösung:
Later
Datei:
Keine

Details

2011/May/22 今後、このチケットは「SIO_PORTIDを4まで使えるようにしたい」という、機能リクエストの意味だけを持たせることにする。変更の単純化はチケット #25227 に移動する。


以下、オリジナルのチケット。

現状、事実上1以外の指定はソースをあちこち見なければならないが、これを修正しSIO_PORTIDを柔軟に変更できるようにしたい。

  • kernel/syssvc/serial.cでTNUM_PORT>=3までしか対応していない。(LPC1768にはUART0からUART3までの4つのUARTがある。)
  • UARTに関連するコードが複数箇所に散っている。pdic/uartだけで設定がクローズせず、target_config.cでポート設定しているなど。
  • PCONの設定などもUARTに関連するレジスタはuartモジュール内部でクローズさせたい。

Ticket-Verlauf (3/7 Historien)

2011-04-05 22:31 Aktualisiert von: shintamainjp
  • New Ticket "SIO_PORTIDを柔軟に変更できるようにしたい。(現状、事実上1以外の指定はソースをあちこち見なければならない。)" created
2011-04-05 23:45 Aktualisiert von: shintamainjp
Kommentar

残作業はtarget_config.cにあるポート設定をpdic/uartモジュール側に隠蔽すること。 但し、この変更には原作者の了承が必要と思う。

2011-04-09 01:28 Aktualisiert von: suikan
Kommentar

このチケットは三つに分割すべきだと思われる。

  1. syssvc/serial.c には、TNUM_PORT>=4 を受け付けない制限を解除したいという機能リクエスト
  2. (UARTに関する問題なのか、PORT設定に関する問題なのか分からない)
  3. PCONによるピン設定をUARTに遮蔽したいという機能リクエスト

1. に関しては、緊急ならば修正には反対しない。しかし、ターゲット非依存部をバージョンアップすると確実にデグレードする。修正するしないにかかわらず、問題だと考えるならTOPPERSのMLで問題提起して、公式コードを変更してもらうべき。

3. これについては反対。ピン設定のバリエーションは多すぎる。たとえば、UART3の送受信ピンの配置バリエーションは9通りある(送信3, 受信3)。LPC1700だけでこれだけバリエーションを作り、それをuart.cに吸収させると、複数アーキテクチャで強要したときに、爆発的に複雑になる可能性が高い。SIO_PORTIDの宣言箇所に「target_config.cのtarget_initialize()内部でピン設定を行え」と、コメントを付加すれば十分だと思われる。

2011-04-09 08:35 Aktualisiert von: shintamainjp
Kommentar

「syssvc/serial.cとsyssvc/serial.cfgでポート4を扱えるようにする」に関してはTOPPERSのメーリングリストに問題提起した。

疑問1:  「UARTを使いたい」という要求にPORT設定は含まれないのだろうか?  どちらが正しいというものではない。どちらがカーネルユーザにとって自然かということ。

疑問2:  ドライバ(UARTのドライブ)と支援ライブラリ(ポートの設定)という2層構造での実現が考えられないだろうか?

2011-04-09 19:43 Aktualisiert von: suikan
Kommentar

UARTのピン設定のバリエーションは(TXとRXを無理に分離しなければ)以下のようになっている。

  • UART0 : 1
  • UART1 : 2
  • UART2 : 2
  • UART3 : 3

これらの設定をユーザーに整理された形でライブラリ関数として提供できるならば支援関数によるポート設定はアリだと思う。

もう一つのあまりきれいではない方法として、以下のようなUARTの全部の組み合わせをtarget_config.c の target_initialize()に用意しておくことが考えられる。

#if 1
/* P0.2, P0.3ピンをTXD0,RXD0に割り当てる。*/
  LPC_PINCON->PINSEL0 &= ~0x3 << 4;
  LPC_PINCON->PINSEL0 |=  0x1 << 4;
  LPC_PINCON->PINSEL0 &= ~0x3 << 6;
  LPC_PINCON->PINSEL0 |=  0x1 << 6;
#endif
#if 0
/* P0.15, P0.16ピンをTXD1,RXD1に割り当てる。*/
  LPC_PINCON->PINSEL0 &= ~0x3 << 30;
  LPC_PINCON->PINSEL0 |=  0x1 << 30;
  LPC_PINCON->PINSEL1 &= ~0x3 <<  0;
  LPC_PINCON->PINSEL1 |=  0x1 <<  0;
#endif

2011-05-22 13:40 Aktualisiert von: suikan
  • Priorität Update from 5 - Mittel to 3
  • Lösung Update from Keine to Later
  • Schweregrad Update from 5 - Mittel to 3
  • Typ Update from Fehler to Funktionsanfragen
  • Details Updated
Kommentar

このチケットは

  • SIO_PORTIDを4まで許したい
  • SIO_PORTIDの変更を単純化したい

の、二つからなっている。そこで、本チケットを前者の意味だけに限定し、後者をチケット #25227 に移すことにする。

2011-06-26 21:37 Aktualisiert von: shintamainjp
  • Ticket Close date is changed to 2011-06-26 21:37
  • Summary Updated
  • Status Update from Offen to Geschlossen
Kommentar

以下の理由により本チケットをクローズする。

  • 本チケットは非依存部の1.6系に対する要求であるから、本プロジェクトの直接の問題として扱わない。
  • TOPPERSプロジェクトに提案したところ、非依存部の1.7系からSIO_PORTIDを4まで対応できるようになった。
  • 非依存部を1.7に更新する時点でSIO_PORTIDは4まで扱えるようになる。(これは別チケットで対応する予定である。)

なお、本チケットのタイトルを

  • 「SIO_PORTIDを柔軟に変更できるようにしたい。(現状、事実上1以外の指定はソースをあちこち見なければならない。)」

から

  • 「SIO_PORTIDを4まで使えるようにしたい」

に変更した。

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden