(移植編第2回)シリアルを2本とも使う

2009/04/06

あなたは 人目のお客様です.

Interfaceの記事とかがいろいろと忙しくて更新が滞っていたのだけど, PowerPCへのGDBスタブ移植を見越して,シリアル周りをちょっと拡張してみた.

移植編第1回では,シリアルは1本のみの利用 だったのだけど,このターゲットボードは 写真 を見ればわかるように,シリアルインタフェースを2本持っている.

なので,シリアルを2本とも使えるように拡張してみた.

(2009/04/10 ライセンスに関する文書として,KL-01とLICENSEを追加. 詳しくは第43回を参照)

移植編第1回からの修正点は毎度どおり diff.txt に差分を取ってあるので, 細かい修正内容はそちらを参照してほしい.

まず,今回利用している PowerPCオプションCPUカード にはシリアルインタフェースが2本あるのだけど,これらはCPU(MPC5200)の PSC1,PSC2というコントローラが接続されている. で,従来は serial.c ではPSC1のみ決め打ちで利用するようになっていたのだけど, 各関数が index という引数を取って,PSC1とPSC2を選択して動作するように serial.c を修正した.

さらに extintr.c ではシリアル2本を管理するように修正. あとコマンドスレッドをPSC1,PSC2用に2本起動して, index を切替えて動作するように command.c を修正. あと command.c にはシリアルの index を表示するための,indexコマンドというのを 新たに追加してある.

あとついでに startup.s でコードがまとめられる部分があったのでまとめてみた. あとタイマ関連で不要な宣言とかが残っていたのをごっそり掃除.

では動かしてみよう. ボードに電源入れてファームウエアをインストールして起動する.

# bootm 80000
## Booting image at 00080000 ...
   Image Name:   smplimg
   Created:      2009-04-06  12:19:03 UTC
   Image Type:   PowerPC U-Boot Standalone Program (uncompressed)
   Data Size:    16744 Bytes = 16.4 kB
   Load Address: 00040000
   Entry Point:  00040000
OK
puts ok
printf ok
PVR = 80822014
MSR = 0000b002
MSR = 00003002
MBAR (from SPR)  = f0000000
MBAR (from MBAR) = 0000f000
MBAR (from bd)   = f0000000
IBPclock = 66000000
baudrate = 115200
MSR = 00003002
MSR_EE set OK
> 
OK
> echo aaa
 aaa
OK
> index
0
OK
>         ★★★ここでシリアルをPSC2側に挿し替え
OK
> index
1
OK
> threads
extintr
idle
command0
command1
OK
> index   ★★★ここでシリアルをPSC1側に挿し戻す
0
OK
> 
あっさり一発で動いた.とくに問題無し.

シリアルを抜き挿ししてコマンド実行. index コマンドで,はじめは0と出ているが挿し替え後は1と出て, 再度挿し戻した後は再び0と出ているのに注目.

これでシリアルが2本とも利用できるようになった.で,次はgdbスタブを 移植して,シリアルの片方はgdb用に利用するようにするつもり.


メールは kozos(アットマーク)kozos.jp まで