DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

24
アルファ・ワールド -PCIの双バス- えとみ なるあき @nullnilaki

description

2013/11/30にNBUGで発表した内容です。

Transcript of DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

Page 1: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

  アルファ・ワールド       -PCIの双バス-

えとみ なるあき@nullnilaki

Page 2: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

自己紹介

• 名古屋港の港湾運送会社に勤務• 現在は情報システム部に所属 (数年前は倉庫で荷物を数えてました)• 仕事ではCOBOLしか触った事が有りません (C言語?知らない子ですね…)• サーバの設定もベンダーさん任せなので UNIXを触るのはコンパイラのコマンドを叩くだけ (カーネル?知らない子ですね…)

Page 3: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

冬の名古屋港はキレイ!

ぞうを運んだりします。すごくくさい…

Page 4: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

DEC Alphaとは?

• DECが設計したCPU (僕が物心付いたときにはDECは既に… (´;ω;`) ウッ…)

• 64bit RISCプロセッサ• ちょうはやい• NetBSDでは仮想アドレス43bit(仮想アドレス空間8TB)

ちなみにTru64UNIXはライセンスを入力しないと使えません

Page 5: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

AlphaStation DS15(TITAN chipset)

黒くて…カコイイ

(;゚∀゚)=3ハァハァ

Page 6: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

NetBSDで動かなかったのでOpenBSDから移植(send-pr-48148)

Notice!:Do not use radeonfb because

Display blackout and panic.

Page 7: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

TITAN chipsetの特徴

• 独立したPCIバスが二つある!?

Page 8: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

BUSごとのBase addressさえ設定すれば大丈夫!(tsp_config構造体が一本のバスを管理)

P-01

Page 9: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(radeonfb編その1)

P-01

文字が出力されずradeonfb_putchar_wrapperで誤摩化してたら…

radeonfb.c,v 1.66で修正済み!

Page 10: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(radeonfb編その2)

radeonfb_set_backlightを実行すると画面が暗転Alphaはキーボードがささってないと、フレームバッファに出力されない…

シリアルコンソールに無理矢理出力させるという技を覚える!

radeonfb_set_backlightがうまく動かないのはAlphaだから?

Page 11: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(radeonfb編その3)

Page 12: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(cn_tab編1)

cn_tabはコンソールの出力定義この切り替え処理に失敗すると沈黙…

ファームウェアの文字出力からradeonfb_putcharに切り替え

Page 13: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(cn_tab編2)

P-01

ファームウェアが文字を出力しているところ

Page 14: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(cn_tab編3)

• どうしても構造体のアドレスの代入に失敗…

これだと、OK!

NAZEDA!!

Page 15: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

すったもんだの末に、radeonfbが使えるようになったものの…

Page 16: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(bus_space_mmap編1)

偉大なるソフトウェアmlterm-fbが使えない!!

Page 17: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(bus_space_mmap編2)

arakikenさんとあおやまさんがアドバイスくださった!!(´;ω;`)ウウウ

Page 18: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(bus_space_mmap編3)

radeonfbの中でフレームバッファのアドレスに直接書き込みすると反応はあった。

ユーザーランドからだと、画面に全く反応がない

Page 19: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(bus_space_mmap編4)

解決!!

Page 20: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

はまったところ(bus_space_mmap編5)

P-01

AlphaでXを動かす人はいない?

Page 21: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

そしてmlterm-fbが動き…

P-01

Page 22: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

Xのことで混乱するも…

oshimayaさんの超わかりやすい解説!!

Page 23: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

mikutter動いた。 完!

Page 24: DEC_6600,DEC_TITAN Implementation of NetBSD(仮)

謝辞

• 本当に尊敬してます つついさん• アドバイスいただけて、僕はメチャメチャ嬉しいです  arakikenさん、あおやまさん、oshimayaさん• 進捗あった日の翌朝にふぁぼって元気づけてくださる ebijunさん(僕の密かな楽しみ)• Compaq Professional workstaion XP1000を譲って下さった impreza_gf8さん• pkgsrcを教えて下さる ふじわらさん、おばたさん、おのでらさん• ほか、twitterでおもしろツィートをして、笑わせて下さる  フォロー、フォロワーの方々

参考文献つついさんのサイトBSDマガジン