Windows Mobile デベロッパー センター >
Windows Mobile 向けアプリケーション開発 フォーラム
>
Windows CE
>
OS(CE 6.0)が立ち上がるまでの黒い画面上にロゴを出したい
OS(CE 6.0)が立ち上がるまでの黒い画面上にロゴを出したい
- いつもお世話になっております、鏑木と申します。
CE6.0について詳しいお答えもらうのに、こちらのフォーラムが一番適している為、毎度の
質問で申し訳ございません。
今回お聞きしたいことは、OS(CE 6.0)が電源を投入してから立ち上がるまでに20秒程かかる
のですが、その間がずっと黒い画面(何も表示されていない)のままな為、正常に動いているのか
相手にわかりません。
そこで、その黒い画面時に、何も表示しないのではなく、ある画像(ロゴや文字)を表示させたい
と思っているのですが、その為にどの箇所を修正すれば良いのでしょうか?
私としては、BSPがあやしいのかなと思い、いろいろ見てはいるのですが修正箇所を未だ見つけれず
におりません。
どなたか、ご存じの方がいらっしゃいましたら、ご意見を頂ければと思っております。
開発環境は
Windows CE 6.0
使用しているBSPは
Geode LX
開発環境は
Visual Studio 2005 C++
です。
どうか、よろしくお願いいたします。
回答
- このようなロゴは普通ブートローダーで出していると思います。
GeodeLXであれば、BIOSを使ったBIOSローダーかBIOSと置き換わるROMローダーを使用すると思います。
x86 BIOS Boot Loader
http://msdn.microsoft.com/en-us/library/aa914786.aspx
x86 ROM Boot Loader
http://msdn.microsoft.com/en-us/library/aa914476.aspx
BIOSローダーの場合はそもそもBIOSが何らか画面の初期化をして、ひょっとすると画面にBIOSメーカのロゴが出るかと思いますが、そのようなことはありませんか?
また、BIOSローダーが動作するタイミングでは画面は初期化済みだったり、VESA BIOSで画面モードが変えたりできると思うので、あとはPCのプログラムと同じくフレームバッファに直に書き込めばよいと思います。
ROMローダーの場合であればローダー時点では画面が初期化されていない可能性があると思いますが、画面初期化のコードをローダー内に自分で組み込み、同様にフレームバッファに直にビットマップを書くことになると思います。
hnakayam- 回答としてマーク鏑木肆星 2009年10月23日 2:40
すべての返信
- このようなロゴは普通ブートローダーで出していると思います。
GeodeLXであれば、BIOSを使ったBIOSローダーかBIOSと置き換わるROMローダーを使用すると思います。
x86 BIOS Boot Loader
http://msdn.microsoft.com/en-us/library/aa914786.aspx
x86 ROM Boot Loader
http://msdn.microsoft.com/en-us/library/aa914476.aspx
BIOSローダーの場合はそもそもBIOSが何らか画面の初期化をして、ひょっとすると画面にBIOSメーカのロゴが出るかと思いますが、そのようなことはありませんか?
また、BIOSローダーが動作するタイミングでは画面は初期化済みだったり、VESA BIOSで画面モードが変えたりできると思うので、あとはPCのプログラムと同じくフレームバッファに直に書き込めばよいと思います。
ROMローダーの場合であればローダー時点では画面が初期化されていない可能性があると思いますが、画面初期化のコードをローダー内に自分で組み込み、同様にフレームバッファに直にビットマップを書くことになると思います。
hnakayam- 回答としてマーク鏑木肆星 2009年10月23日 2:40
- hnakayam様、かなり前の投稿なのにご回答ありがとうございます。
>GeodeLXであれば、BIOSを使ったBIOSローダーかBIOSと置き換わるROMローダーを使用すると思います。
私が現在使用している方法はBIOSローダだと思われます。
ですが、BIOSメーカーのロゴのようなものは表示されず、いきなりWindows CE のロゴが表示され、そのロゴの下のバーが動き、
バーが右端まで到達すると、画面がブラックアウトし、約40秒程経過して、OSが立ち上がります。
>また、BIOSローダーが動作するタイミングでは画面は初期化済みだったり、VESA BIOSで画面モードが変えたりできると思うので、あとはPCのプログラムと同じくフレームバッファに直に書き込めばよいと思います。
理解力が乏しく、申し訳ございません。PCのプログラムと同じくフレームバッファに直に書き込む、というのはどういうことなのでしょうか?bibファイルやregファイルを編集するということでしょうか?
なかなかOSについての知識を得る場がなく、なかなか進歩していないのですが、ご助力頂ければと思っております。よろしくお願いいたします。
鏑木 私が現在使用している方法はBIOSローダだと思われます。
ですが、BIOSメーカーのロゴのようなものは表示されず、いきなりWindows CE のロゴが表示され、そのロゴの下のバーが動き、
バーが右端まで到達すると、画面がブラックアウトし、約40秒程経過して、OSが立ち上がります。
このような状況だと、"Windows CE のロゴが表示され、そのロゴの下のバーが動き、バーが右端まで到達すると、画面がブラックアウトし"までがブートローダーの動作で、
"約40秒程経過して"以降がOS起動後、ディスプレイドライバが動作し最初のアプリケーションが画面描画するまでだと思われます。
で、この場合すでに「起動時のロゴ」は出ているのではないでしょうか? このローダーを改造するのが(可能であれば)いちばんまっとうだと思います。
>理解力が乏しく、申し訳ございません。PCのプログラムと同じくフレームバッファに直に書き込む、というのはどういうことなのでしょうか?
BIOSローダー内ではVESA BIOSで画面モードを設定し、そのフレームバッファの物理アドレスを取得することができます。(というかすでにそうなっているはずです)
こうやって取得したフレームバッファメモリに対して直接書き込みます。
たとえば256色モードであれば(パレット次第ではありますが)0x00をメモリアドレスに書けば白、0xffを書けば黒とか。
WIndows CEのアプリレベルの話ではありません。言ってみればDOS時代(あるいはDOS Extension時代)の画面描画の方法です。
昔あったFlight UnlimitedとかのゲームはProtect Mode DOSで画面描画をしていました。
hnakayam


