10/17/2011

TX-50開発キットで遊ぶ その7

じゃあ、今日はグラフィックを出すであります。

前回は、起動してるっぽいところまで行きましたが、やっぱりグラフィック出んと、面白くないよね。
というわけで、なんでグラフィック出ないのかを考えてみました。BLDKのドキュメント類をみてると
LVDSのみのサポートかも。LVDSの出力にはグラフィック出てるかもしれませんね。LVDSの液晶あればなー。といっても始まらないので、アナログVGAに出せる方法を考えて見ます。で、なぜ、出ないのかなー。可能性としては、恐らくEFIのグラフィックドライバがアナログVGAに対応していないんではなかろうか。
というか、TX-50の仕様書をみると、これsDVOの出力をCH7317Bというチップでアナログに変換しているようですね。

うーん。そうなるとグラフィックドライバをいじる必要があるかもです。で、BLDKのソースでグラフィック関係のソースを探してみたところ、そのあたりはバイナリ提供のようで、ソースコードないっぽ。
これは困ったちゃんです。なんか手が無いかとインテルのサイトを漁ってたら、いいものみっけました。

Intel EMGDというやつです。↓
http://www.intel.com/p/ja_JP/embedded/hwsw/software/emgd
(注:日本語版のダウンロードページは、なんだかバグってます。サイトの右上で英語に切り替えたらダウンロードできました。)

よく調べてみると、これ、組み込み向けのグラフィックドライバなわけですが、なんと、いろいろパラメータを調整してドライバを生成できるみたいっす。組み込みだと、固定の液晶ディスプレイだったり、変な解像度だったりするからですかね。そして、EFIのドライバやVBIOSを生成する機能もあるようです。Intelさん粋なブツをありがとー。

で、Atom E6xx向けのWindows用のブツをダウンロードしてインストールしてみました。すると、EMGD Configuration Editorなるアプリケーションが使えるようになりまして、GUIでパラメータをウィザード形式で設定していくとドライバが生成できるようになってます。よっしゃUserGuideをななめ読みしながらやってみます。まず、エディタを起動します。インストールされた「emgd-ced.exe」を起動すると以下のようなやつが起動します。


右のペインにコンフィグレーションやパッケージというフォルダがありますね。プリセットで設定例がいろいろ含まれているようです。で、手順としては、コンフィグレーションファイルをまず作って、そのコンフィグレーションを使用してパッケージを作って、そのパッケージのインストレーションを生成することで最終的なドライバが生成されるようです。いろいろ設定できるパラメータがあるようですが、まずは余計なことせず、無難な設定で画面が出ることだけを目指します。
まず、メニューから「New Configuration」をクリックします。すると以下のような画面が出ます。



「Configuration FIle Name」は「tx-50」としました。これは好きな名前つければよさそうです。「Display Configuration Mode」は「SIngle」にしました。デュアルとかもできるっぽいです。「Platform Chipset」は「Intel(R) Atom(TM) Processor E6xx」を選択します。「Port Devices」は「sDVO」を選択して左の「Port Order」へ移動させます。LVDSの併用もできるようですが、いまんとこsDVOのみでやってみます。「Next >」をクリックします。


次の画面です。「Readable Port Name」は「VGA」としました。好きにつけてよさそうです。「Select sDVO Device」では「Chrontel* CH7317 VGA」にチェックします。tx-50ではこの変換チップを使ってるのです。項目にあってラッキーです。その他の設定はとりあえず、デフォルトのままでよさげです。「Next >」をクリックします。



次の画面も今回はデフォルトのままで進めます。スプラッシュスクリーンとか指定できるっぽいので、今度やってみます。「Next >」をクリックします。


次の画面で、「Primary Display Mode」を「0x12 - 640x480x4bpp@60Hz」を選択します。いろいろ設定を試したんですが、どうも、うちのディスプレイはUse Defaultや70Hz系の設定だと画面がぐちゃぐちゃになります。この辺は使用するディスプレイによるかもしれません。で「Finish」です。
すると左のペインに今作った設定が「tx-50.cnfg」という形で保存されます。これをダブルクリックで設定を変更できるっす。
次にメニューから「New Package」をクリックしますと、以下の画面になります。




「Package File Name」は「tx-50」としました。好きな名前を付ければよさそうです。「Configurations」は先ほど作成した「tx-50.cnfg」を選択します。「Target OS」は「EFI」を選択します。それ以外はデフォルトのまま「Next >」をクリックです。



なんだか、「General」と「Fastboot Atom_E6xx」とあります。今回はとりあえずGeneralを使ってみます。「General」の枠の中の「Generate EFI」と「tx-50.cnfg」をチェックします。で、「Finish」です。

よし、そして、左のペインの「pakage」フォルダに今作った、「tx-50.pkg」ができてるので、これを選択して、メニューの「Generate Instaallation」をクリックします。すると、ごにょにょビルドされました。バイナリは「C:\IEMGD\IEMGD_1_8\workspace\installation\TX-50.pkg_installation\IEMGD_HEAD_EFI\Compiled_EFI\efi」にできてます。
ほんで、できた「iegd.efi」というのがEFIのグラフィックドライバちゅうわけですな。したらば、これをBLDKに組み込みます。「C:\bldk\CrownBayPlatformPkg\GopBinary」に同じファイル名のやつがいるので、これをおもむろに入れ替えてみます。そして、BLDKをビルドします。で、例の「70S01905D.EXE」改造作戦でBIOSを書き込みました。

そして起動しします。おお、見事グラフィックでましたであります。




うーん。ちょっと感動ですね。そして、もしやと思い、以前あきらめた「SpiUpdate.efi」でBIOS書き込みを試してみたところ、うまく書き込めました。これで、「70S01905D.EXE」改造作戦で動作中にBIOSチップをホットスワップしなくてもBIOS焼けるっす。

よし、今週はここまでにします。次はシリアルなんとかしたいっすー。

0 件のコメント:

コメントを投稿