提案/電源管理


電源管理

Alphaさんの提案によりMonaOSからコンピューターの電源を落とすということをやろうとなった訳ですが。私が調べてみたことをここにまとめようと思います。

シャットダウン前処理

ユーザーからのインターフェースについて

リアルモードで取得する「関数のエントリポイントとコード、データセグメント」について

これはPDFを見てもらえればわかりますが、32bitコードセグメント、16bitコードセグメント、データセグメントの実アドレスモードにおいてのセグメント値とそれらの長さ、 APM BIOSのエントリポイントを返します。 又こららのセグメント値は、連続してGDTにいれられなければなりません。 APM BIOSを呼び出すには上の32bitコードセグメントとAPM BIOSのエントリポイントを用いて呼び出します。

電源切断の手順

とりあえず実装しようとしてみた。

secondbootにソースを追加しようとしてみたけど。一番大切なC#の部分からsecondboot32.asm、そしてカーネルへどうやって情報を渡すかがわからない。

という訳でカーネルに手に入れた情報を渡す方法がわからない。

おkわかった。早速実装。GDTをセットするとこまで。で、Mona上でCPL=0の状態でAPMの関数を呼びたいがどうしたらCPLが0の状態になれるのか・・・

よーし、一段落ついたから。起動中に電源切ってみるかってことでやってみた。qemuの画面は消えたがAbort Trapです。たぶんfar callの部分であれしてるんだろけど・・・

落ちる原因の究明

  1. GDTの設定が悪い。
  2. far callが悪い。
  3. セグメントレジスタの設定が悪い。
  4. APMのコードが(ry

    これらのどれか。

コメント

コメントはありません。 コメント/提案/電源管理?

お名前:

MENU

now: 1

リンク


最新の20件
2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 6021, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:03 (3829d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.071 sec.