熱燗がおいしい季節になりました。最近、なにかと忙しくてあまりTX-50弄る時間が取れなかったんですが、久しぶりに投稿します。シリアルドライバはちょっと行き詰まりぎみなので、保留ぎみで。年末休みとかで、がっつり時間とれるときに腰を据えてやろうかな。
そうそう、久々にIntelのサイトを覗いたらBLDKがアップデートされてました。CrownBay向けのパッケージは現在CB-EDKII-PostGold-2.3.6.7というのが最新です。しかもなんと、Linux向けのパッケージがリリースされてるじゃないですか。素敵です。Linuxだとgccでビルドできるっぽいです。しかし、デバッガとかどうなるんですかねえ、WinDbgベースのIntel UDK Debuggerは使えないでしょうし。今度、試してみます。
http://www.intel.com/p/ja_JP/embedded/hwsw/software/bldk?iid=subhdr-JP+hwsw_bldk#download
というわけで、ソースもいい感じでぐちゃぐちゃになって来たところなので、最新版で仕切りなおしました。動作上目立つところといえば、EfiShellが2.0になってますね。
ああ、あと、今までやったことを適用しても画面映らなかったっす。色々、思考錯誤した結果、CrownBayPlatformPkg.dscの中のgCrownBayPlatformTokenSpaceGuid.PcdGopBltEnable | 0x239A | FALSE というパラメータが原因のようです。これをTRUEにすることでVGAから画面出力でました。
それから、ちょっと開発手法を変えました。以前にVisualStudioでバッチファイルを使ってビルドする方法を紹介しましたが(TX-50開発キットで遊ぶ その3
)、あれ、どうやら問題がありまして、Intel BLDK Development Applicationで変更したパラメータはバッチファイルでビルドしたときに反映されないことが判りました。
どうやらIntel BLDK Development Applicationでパラメータ変更してアプリからビルドすることで、ソースを変更せずに、ビルド時にパラメータを適用しているようです。このパラメータってのは、すなわちCrownBayPlatformPkg.dscに記述されているPCDという仕組みで定義されているパラメータたちです。先述のgCrownBayPlatformTokenSpaceGuid.PcdGopBltEnable もそのひとつです。
ということは逆に、Intel BLDK Development Applicationを使わずに、CrownBayPlatformPkg.dscを直接編集すればバッチファイルからビルドしても設定値が反映されるというわけです。そもそもIntel BLDK Development Applicationは設定項目限られてるし、使いづらいし、TX-50の構成に完全に合致しているわけでもないので、使わないことにしました。
そして、ビルドシステムの仕組みが概ね、解ってきて、CrownBayPlatformPkgというのはそもそも、CrownBay特有のドライバ等のソースの集合体でして、汎用ドライバとかの、それ以外のモジュールはその他のパッケージからもってきて、ファームウェアを構成しています。それをコントロールしているのがCrownBayPlatformPkg.dscというわけです。で、BLDKはEDKII(http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2)がベースとなっているんですが、EDKIIのソースを見ると、たとえば、ArmPkgや、Omap35xxPkg等、プラットフォームを構成するパッケージが見受けられます。で、ビルドしたいパッケージの.dscファイルを指定することで、ベースパッケージとか汎用ドライバを共有しつつ、そのプラットフォームのファームウェアや、モジュール単体をビルドできるようになってます。
つまり、今回Tx-50というプラットフォームへの移植を行うにあったって、Tx50Pkgというパッケージを作って、そんで、Tx50Pkg.dscを作るという手があるわけです。そうすることで、CrownBayPlatformPkg内のソースを一切変更することなく、必要なモジュールだけTx50Pkg.dscに記述してもってくればスマートです。そしてTx-50特有の部分だけパッケージ内にコピーして編集するなり、新規作成するなりして、Tx50Pkg.dscでそのモジュールを指定すればコントロールもしやすいし、完全に他のパッケージと分離された形で開発できて、いい感じなのです。ただし、この方法を使うとIntel BLDK Development ApplicationはCrownBayPlatformPkg内でしかビルドできないっぽいので、使おうと思っても完全に使えなくなります。まあ、未練はあんまりないんだけどね。あと、Tx50PkgのみをBldkに追加するだけでよくなるので、再配布もし易くなりますね。(需要があるかは解りませんが・・)
ちゅうことで、現在は、ソースのトップレベルにTx50Pkgディレクトリを作ってCrownBayPlatformPkgから.dec、.dsc、.fdfファイルをコピーしてTx50向けに直接編集しちゃいました。そんでカスタムiegd.efiを格納したGopBinaryモジュールと現在コーディング中のPciSerialDxeを追加して、ビルド用のバッチファイルをTx50Pkgをビルドするように編集しちゃって、VisualStudioでプロジェクト作って、VisualStuidoからビルドするという開発スタイルにしました。うーん。なかなか快適です。
C:\BLDKTX50\TX50PKG
│ features.txt
│ Tx50Pkg.dec
│ Tx50Pkg.dsc
│ Tx50Pkg.fdf
│
├─GopBinary
│ iegd.efi
│
└─PciSerialDxe
ComponentName.c
PciSerialDxe.inf
Serial.c
Serial.h
ああ、今日は文章ばっかりになっちゃいました。よし、とりあえず、シリアルドライバはほったらかして、来週は、ぼちぼちOS起動に挑戦しようかなー。
12/12/2011
11/14/2011
TX-50開発キットで遊ぶ その11
うーん。シリアル手ごわいっす。今日もちょっと弄ってみたが、進捗は芳しくないです。ICEでもあればいいんですが、シリアルドライバのデバッグにシリアル文字出しを使うという矛盾。ふんにゃかです。
でもまあ初期化はぼちぼち出来てそうです。多分気づいてみれば些細なミスなんじゃないかと気楽な感じでもうちょっとがんばります。
とはいえ、なんにも進捗が無いのは切ないので、気晴らしも兼ねて、EMGDのスプラッシュスクリーンを試してみました。(PCの電源を入れて真っ先にメーカーのロゴとかが出るあれです。)
これはとても簡単でした。EMGDのコンフィグレーションをちょっと弄るだけです。(TX-50開発キットで遊ぶ その7 参照)
まずはConfiturationのほうを弄ります。3ページ目のSplash Screenにチェックを入れます。そうすると左下のグレーアウトされていたところが設定できるようになるので、設定値を入れます。どうやらバックグラウンドカラーのRGBの割合とスプラッシュスクリーンの画像座標が設定できるっぽいですが、今回はお試しなのでオール0でやってみます。その他の設定は以前のままです。
そして、このConfigを使用してパッケージを作ります。パッケージ作成画面の1ページ目でAdd Splash Screenにチェックを入れ、実際の画像を選択します。画像形式は.bmpと.pngが使用できるようです。設定はこれだけです。
今回はペイントで適当に書いた以下の絵を.pngで保存して使ってみます。↓
そして、パッケージをビルドして出来たiegd.efiをbldkに突っ込んでビルドしてみました。んで起動です。
みごとスプラッシュスクリーン出てくれました。もうちょっとかっこよくしてみたいですねー。
今日はここまでです。来週こそはシリアルコンソール出すですよ。
でもまあ初期化はぼちぼち出来てそうです。多分気づいてみれば些細なミスなんじゃないかと気楽な感じでもうちょっとがんばります。
とはいえ、なんにも進捗が無いのは切ないので、気晴らしも兼ねて、EMGDのスプラッシュスクリーンを試してみました。(PCの電源を入れて真っ先にメーカーのロゴとかが出るあれです。)
これはとても簡単でした。EMGDのコンフィグレーションをちょっと弄るだけです。(TX-50開発キットで遊ぶ その7 参照)
まずはConfiturationのほうを弄ります。3ページ目のSplash Screenにチェックを入れます。そうすると左下のグレーアウトされていたところが設定できるようになるので、設定値を入れます。どうやらバックグラウンドカラーのRGBの割合とスプラッシュスクリーンの画像座標が設定できるっぽいですが、今回はお試しなのでオール0でやってみます。その他の設定は以前のままです。
そして、このConfigを使用してパッケージを作ります。パッケージ作成画面の1ページ目でAdd Splash Screenにチェックを入れ、実際の画像を選択します。画像形式は.bmpと.pngが使用できるようです。設定はこれだけです。
今回はペイントで適当に書いた以下の絵を.pngで保存して使ってみます。↓

みごとスプラッシュスクリーン出てくれました。もうちょっとかっこよくしてみたいですねー。
今日はここまでです。来週こそはシリアルコンソール出すですよ。
11/07/2011
TX-50開発キットで遊ぶ その10
本日はシリアルドライバを作り始めます。ターミナルでシリアルコンソールを動かす目論みです。
実はBLDKには元々レガシーのシリアルドライバが含まれています。(IntelFrameworkModulePkg\Bus\Isa\IsaSerialDxe)
SIOとかのシリアルならこれで動くのですが、残念ながらPCIシリアルだと動かないのです。Tx-50にはSIOが乗ってなくてPCIシリアルしかないので、このIsaSerialDxeドライバを元にPCIシリアルドライバを作る方向でいっちょやってみます。
というわけで、おもむろにIsaSerialDxeをディレクトリごとCrownBayPlatformPkgディレクトリにPciSerialDxeという名前でコピーしてしまいます。そしてファイル中のIsaSerialと名のつくものは片っ端からPciSerialに置き換えまして、EFI_ISA_IO_PROTOCOLというプロトコルを使ってるやつもEFI_PCI_IO_PROTOCOLに置き換えます。
そして、SerialControllerDriverSupported()関数はこのままじゃちょっとまずそうです。他のPCI系のドライバソースを参考に、HIDの0x501のチェックをコメントアウトして、PCIコンフィグレーション空間のクラスコードとサブクラスコードが16550互換のシリアルデバイスかどうかチェックする処理を加えました。あと、このままだと、Tx-50の4つのPCIシリアルポートが4つともドライバ当たってしまって話がややこしくなるので、PCIのベンダーIDとデバイスIDもチェックしてRS232Cのコネクタがついてるポート(bus:2/dev:0a/func:1)だけにドライバが当たるように処理を追加しました。と、あとコマンドレジスタのI/O Space Enableもこの段階で有効にしてしまうことにしました。
ほんで、SerialControllerDriverStart()関数もちょっといじる必要がありそうです。BaseAddrssを取得するところをACPIのリソースリストから取得しているところを、PCIコンフィグレーション空間のベースアドレスレジスタから取得するように変更です。
で、CrownBayPlatformPkg.dscとCrownBayPlatformPkg.fdfの適当なところにCrownBayPlatformPkg/PciSerialDxe/PciSerialDxe.inf と書いとけば、ビルドされます。ビルドエラーがちょこまかと出ますが、姑息なつじつま合わせを駆使しつつ、どうにかビルドを通しました。
うーん。こんな力づくでいいんだろうか。まあスタート地点としては良しとしよう。こまいところは今後仕上げていくとして、動かす目処を立てることを優先します。
で、電源入れてみたけど、まあ動きません。とはいえ、ちまちま思考錯誤を繰り返し、一応ドライバが当たるところまでは行きました。
EfiShellのdevicesコマンドとdriversコマンドの出力です。
Shell> drivers
T D
D Y C I
R P F A
V VERSION E G G #D #C DRIVER NAME IMAGE NAME
== ======== = = = == == =================================== ===================
5C 0000000A B - - 1 35 PCI Bus Driver PciBusDxe
5D 0000000A B - - 1 1 PCI Serial Driver PciSerialDxe
5E 00000030 D - - 2 - Usb Ehci Driver EhciDxe
5F 00000010 D - - 6 - Usb Ohci Driver OhciDxe
60 0000000A B - - 8 3 Usb Bus Driver UsbBusDxe
61 0000000A D - - 1 - Usb Keyboard Driver UsbKbDxe
62 0000000A D - - 1 - Usb Mouse Driver UsbMouseDxe
63 00000011 D - - 1 - Usb Mass Storage Driver UsbMassStorageDxe
64 00000020 D - - 2 - EFI SD Host Controller Driver SDController
65 00000020 D - - 2 - UEFI MMC/SD Media Device Driver SDMediaDevice
66 0000000A D - - 1 - Generic Disk I/O Driver DiskIoDxe
67 0000000A ? - - - - Partition Driver(MBR/GPT/El Torito) PartitionDxe
68 00000010 D - - 1 - SATA Controller Init Driver AhciDxe
69 0000000A D - - 1 - AHCI Bus Driver AhciDxe
6A 00000001 ? - - - - <UNKNOWN> Lpc47m17x
6B 0000000A B - - 1 3 ISA Bus Driver IsaBusDxe
6C 0000000A ? - - - - ISA Serial Driver IsaSerialDxe
6D 0000000A ? - - - - PS/2 Keyboard Driver Ps2KeyboardDxe
6E 0000000A ? - - - - PS/2 Mouse Driver Ps2MouseDxe
6F 0000000A D - - 1 - Platform Console Management Driver ConPlatformDxe
70 0000000A D - - 1 - Platform Console Management Driver ConPlatformDxe
71 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
72 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
73 0000000A ? - - - - Console Splitter Driver ConSplitterDxe
74 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
75 0000000A ? - - - - Console Splitter Driver ConSplitterDxe
78 0000000A D - - 1 - UGA Console Driver GraphicsConsoleDxe
79 0000000A B - - 1 1 Serial Terminal Driver TerminalDxe
7C 01082032 B X - 1 1 IEGD GOP Driver FvFile(FF0C8745-32
7D 0000000A D - - 1 - FAT File System Driver FvFile(961578FE-B6
Shell> devices
C T D
T Y C I
R P F A
L E G G #P #D #C Device Name
== = = = == == == =============================================================
47 R - - - 1 35 PciRoot(0x0)
76 D - - 2 - - Primary Console Input Device
77 D - - 1 - - Primary Console Output Device
81 D - - 1 - - PciRoot(0x0)/Pci(0x0,0x0)
82 D - - 1 - - PciRoot(0x0)/Pci(0x1,0x0)
83 B X - 1 1 1 IEGD Graphics Controller
84 D - - 1 - - PciRoot(0x0)/Pci(0x3,0x0)
85 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)
86 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)
87 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
88 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x1)
89 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x2)
8A D - - 1 2 - Usb Universal Host Controller
8B D - - 1 2 - Usb Universal Host Controller
8C D - - 1 2 - Usb Universal Host Controller
8D B - - 1 2 1 Enhanced Host Controller (USB 2.0)
8E D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x2,0x4)
8F D - - 1 2 - SD Host Controller
90 D - - 1 2 - SD Host Controller
91 D - - 1 2 - IOH Serial ATA Controller
92 D - - 1 2 - Usb Universal Host Controller
93 B - - 1 2 2 Usb Universal Host Controller
94 D - - 1 2 - Usb Universal Host Controller
95 D - - 1 2 - Enhanced Host Controller (USB 2.0)
96 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x0)
97 B - - 1 1 1 PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x1)
98 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x2)
99 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x3)
9A D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x4)
9B D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x0)
9C D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x1)
9D D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x2)
9E D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x3)
9F D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x4)
A0 D - - 1 - - PciRoot(0x0)/Pci(0x18,0x0)
A1 D - - 1 - - PciRoot(0x0)/Pci(0x18,0x0)/Pci(0x0,0x0)
A2 D - - 1 - - PciRoot(0x0)/Pci(0x1B,0x0)
A3 B - - 1 1 3 PciRoot(0x0)/Pci(0x1F,0x0)
A4 B X - 1 3 1 IEGD Graphics Controller Display Device #0
A5 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Serial(0x0)
A6 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0303,0x0)
A7 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0F03,0x0)
A9 D - - 1 3 - FAT File System
AA B - - 1 1 1 PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x1)/Uart
(115200,8,N,1)
AB D - - 1 - - PC-ANSI Serial ConsoleAC B - - 1 3 1 Generic Usb Keyboard
AD B - - 1 2 1 Generic Usb Mouse
ちなみに、TerminalDxeというやつがシリアルコンソールのドライバでBLDKに最初から含まれています。なのでシリアルドライバがうまく動けばシリアルコンソールも動く手筈です。ドライバはちゃんと当たってPC-ANSI Serial Consoleも正常に認識してそうです。
ターミナルエミュレータはTeraTermを使ってますが、起動中に一瞬反応して画面クリアかなんかが入ります。細かいところを見て直していけば、もうちょっとで動きそうな予感です。
今日はもう力尽きたので、また来週がんばります。ソースは綺麗に書き直したら載せる(かも)。
実はBLDKには元々レガシーのシリアルドライバが含まれています。(IntelFrameworkModulePkg\Bus\Isa\IsaSerialDxe)
SIOとかのシリアルならこれで動くのですが、残念ながらPCIシリアルだと動かないのです。Tx-50にはSIOが乗ってなくてPCIシリアルしかないので、このIsaSerialDxeドライバを元にPCIシリアルドライバを作る方向でいっちょやってみます。
というわけで、おもむろにIsaSerialDxeをディレクトリごとCrownBayPlatformPkgディレクトリにPciSerialDxeという名前でコピーしてしまいます。そしてファイル中のIsaSerialと名のつくものは片っ端からPciSerialに置き換えまして、EFI_ISA_IO_PROTOCOLというプロトコルを使ってるやつもEFI_PCI_IO_PROTOCOLに置き換えます。
そして、SerialControllerDriverSupported()関数はこのままじゃちょっとまずそうです。他のPCI系のドライバソースを参考に、HIDの0x501のチェックをコメントアウトして、PCIコンフィグレーション空間のクラスコードとサブクラスコードが16550互換のシリアルデバイスかどうかチェックする処理を加えました。あと、このままだと、Tx-50の4つのPCIシリアルポートが4つともドライバ当たってしまって話がややこしくなるので、PCIのベンダーIDとデバイスIDもチェックしてRS232Cのコネクタがついてるポート(bus:2/dev:0a/func:1)だけにドライバが当たるように処理を追加しました。と、あとコマンドレジスタのI/O Space Enableもこの段階で有効にしてしまうことにしました。
ほんで、SerialControllerDriverStart()関数もちょっといじる必要がありそうです。BaseAddrssを取得するところをACPIのリソースリストから取得しているところを、PCIコンフィグレーション空間のベースアドレスレジスタから取得するように変更です。
で、CrownBayPlatformPkg.dscとCrownBayPlatformPkg.fdfの適当なところにCrownBayPlatformPkg/PciSerialDxe/PciSerialDxe.inf と書いとけば、ビルドされます。ビルドエラーがちょこまかと出ますが、姑息なつじつま合わせを駆使しつつ、どうにかビルドを通しました。
うーん。こんな力づくでいいんだろうか。まあスタート地点としては良しとしよう。こまいところは今後仕上げていくとして、動かす目処を立てることを優先します。
で、電源入れてみたけど、まあ動きません。とはいえ、ちまちま思考錯誤を繰り返し、一応ドライバが当たるところまでは行きました。
EfiShellのdevicesコマンドとdriversコマンドの出力です。
Shell> drivers
T D
D Y C I
R P F A
V VERSION E G G #D #C DRIVER NAME IMAGE NAME
== ======== = = = == == =================================== ===================
5C 0000000A B - - 1 35 PCI Bus Driver PciBusDxe
5D 0000000A B - - 1 1 PCI Serial Driver PciSerialDxe
5E 00000030 D - - 2 - Usb Ehci Driver EhciDxe
5F 00000010 D - - 6 - Usb Ohci Driver OhciDxe
60 0000000A B - - 8 3 Usb Bus Driver UsbBusDxe
61 0000000A D - - 1 - Usb Keyboard Driver UsbKbDxe
62 0000000A D - - 1 - Usb Mouse Driver UsbMouseDxe
63 00000011 D - - 1 - Usb Mass Storage Driver UsbMassStorageDxe
64 00000020 D - - 2 - EFI SD Host Controller Driver SDController
65 00000020 D - - 2 - UEFI MMC/SD Media Device Driver SDMediaDevice
66 0000000A D - - 1 - Generic Disk I/O Driver DiskIoDxe
67 0000000A ? - - - - Partition Driver(MBR/GPT/El Torito) PartitionDxe
68 00000010 D - - 1 - SATA Controller Init Driver AhciDxe
69 0000000A D - - 1 - AHCI Bus Driver AhciDxe
6A 00000001 ? - - - - <UNKNOWN> Lpc47m17x
6B 0000000A B - - 1 3 ISA Bus Driver IsaBusDxe
6C 0000000A ? - - - - ISA Serial Driver IsaSerialDxe
6D 0000000A ? - - - - PS/2 Keyboard Driver Ps2KeyboardDxe
6E 0000000A ? - - - - PS/2 Mouse Driver Ps2MouseDxe
6F 0000000A D - - 1 - Platform Console Management Driver ConPlatformDxe
70 0000000A D - - 1 - Platform Console Management Driver ConPlatformDxe
71 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
72 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
73 0000000A ? - - - - Console Splitter Driver ConSplitterDxe
74 0000000A B - - 1 1 Console Splitter Driver ConSplitterDxe
75 0000000A ? - - - - Console Splitter Driver ConSplitterDxe
78 0000000A D - - 1 - UGA Console Driver GraphicsConsoleDxe
79 0000000A B - - 1 1 Serial Terminal Driver TerminalDxe
7C 01082032 B X - 1 1 IEGD GOP Driver FvFile(FF0C8745-32
7D 0000000A D - - 1 - FAT File System Driver FvFile(961578FE-B6
Shell> devices
C T D
T Y C I
R P F A
L E G G #P #D #C Device Name
== = = = == == == =============================================================
47 R - - - 1 35 PciRoot(0x0)
76 D - - 2 - - Primary Console Input Device
77 D - - 1 - - Primary Console Output Device
81 D - - 1 - - PciRoot(0x0)/Pci(0x0,0x0)
82 D - - 1 - - PciRoot(0x0)/Pci(0x1,0x0)
83 B X - 1 1 1 IEGD Graphics Controller
84 D - - 1 - - PciRoot(0x0)/Pci(0x3,0x0)
85 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)
86 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)
87 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
88 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x1)
89 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x0,0x2)
8A D - - 1 2 - Usb Universal Host Controller
8B D - - 1 2 - Usb Universal Host Controller
8C D - - 1 2 - Usb Universal Host Controller
8D B - - 1 2 1 Enhanced Host Controller (USB 2.0)
8E D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0x2,0x4)
8F D - - 1 2 - SD Host Controller
90 D - - 1 2 - SD Host Controller
91 D - - 1 2 - IOH Serial ATA Controller
92 D - - 1 2 - Usb Universal Host Controller
93 B - - 1 2 2 Usb Universal Host Controller
94 D - - 1 2 - Usb Universal Host Controller
95 D - - 1 2 - Enhanced Host Controller (USB 2.0)
96 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x0)
97 B - - 1 1 1 PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x1)
98 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x2)
99 D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x3)
9A D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x4)
9B D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x0)
9C D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x1)
9D D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x2)
9E D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x3)
9F D - - 1 - - PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xC,0x4)
A0 D - - 1 - - PciRoot(0x0)/Pci(0x18,0x0)
A1 D - - 1 - - PciRoot(0x0)/Pci(0x18,0x0)/Pci(0x0,0x0)
A2 D - - 1 - - PciRoot(0x0)/Pci(0x1B,0x0)
A3 B - - 1 1 3 PciRoot(0x0)/Pci(0x1F,0x0)
A4 B X - 1 3 1 IEGD Graphics Controller Display Device #0
A5 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Serial(0x0)
A6 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0303,0x0)
A7 D - - 1 - - PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0F03,0x0)
A9 D - - 1 3 - FAT File System
AA B - - 1 1 1 PciRoot(0x0)/Pci(0x17,0x0)/Pci(0x0,0x0)/Pci(0xA,0x1)/Uart
(115200,8,N,1)
AB D - - 1 - - PC-ANSI Serial ConsoleAC B - - 1 3 1 Generic Usb Keyboard
AD B - - 1 2 1 Generic Usb Mouse
ちなみに、TerminalDxeというやつがシリアルコンソールのドライバでBLDKに最初から含まれています。なのでシリアルドライバがうまく動けばシリアルコンソールも動く手筈です。ドライバはちゃんと当たってPC-ANSI Serial Consoleも正常に認識してそうです。
ターミナルエミュレータはTeraTermを使ってますが、起動中に一瞬反応して画面クリアかなんかが入ります。細かいところを見て直していけば、もうちょっとで動きそうな予感です。
今日はもう力尽きたので、また来週がんばります。ソースは綺麗に書き直したら載せる(かも)。
登録:
投稿 (Atom)