Intel GalileoでのUEFIドライバーの開発とデバッグ、パート1、入門





こんにちは、親愛なるhabrachitateli。



UEFIドライバーのコードとアプリケーションの開発とデバッグのトピックに興味がある人は多いかもしれません。UEFIドライバーのコードとアプリケーションは、ネットワークではまだ広く取り上げられていませんが、幸運にも直接的な関係がありました。



この点で、Intel Galileo Gen 1ハードウェアプラットフォームでのUEFIドライバーの開発とデバッグに関する一連の記事を書く予定です。 私の意見では、このプラットフォームは上記のタスクに最適な価格/品質比を持っています。



記事の最初の部分は入門部分です。その中で、UEFI規格、TianoCoreプロジェクトとその欠点、Intelの突然の決定とGalileoボード、この特定のハードウェアプラットフォームをベースとして選択する理由、および次の部分の計画について説明します。



統合拡張ファームウェアインターフェイス





既にご存知のように、UEFIは、さまざまなコンピューター機器のコンポーネントとファームウェアインターフェイスについて、MicrosoftおよびUEFIフォーラムの他のメンバーと共同でIntelが開発した標準です。 この規格では、ファームウェアファイルの構造、ファームウェアとOS(実際にはUEFIと呼ばれる)間のインターフェース、およびファームウェアのコンポーネント間の名前(より控えめな名前-PI )について説明しています。 UEFI作業の構造とメカニズムの優れた紹介は、標準の開発と実装の直接の参加者によって書かれたBeyond BIOSブックにありますが、とにかくそれ以上のことはお伝えできません。したがって、特にUEFIブートプロセスは、私の過去の記事 。 「 PEI phase」や「 DXE driver」などの用語がまだよくわからない場合は、読み直してください。



TianoCoreとその欠点





オープンスタンダードがある場合は、そのオープンな実装が必要です。そうでなければ、そのような「オープン」スタンダードは価値がありません(市民、行こう、残らないで、Office OpenXMLを見るものは何もありません)。 このような価格がUEFIを追い越さないようにするため、IntelはUEFIフォーラムの他のメンバーおよびコミュニティとともに、UEFI標準の「上位」部分のオープンな実装の開発を開始しまし 。 サポートされているすべてのシステムおよびプロセッサアーキテクチャに共通のDXEおよびBDSフェーズコード。 これは、最近バージョン2014 SR1に更新されたUEFI開発キットに基づいています。 ナイトリービルドとトランクからのコードのファンにはEDK2リポジトリが提供されます。EDK2リポジトリの「安定した」スライスはUDKのすべてのバージョンです。 標準の「下位」部分(つまり、ハードウェアに依存し、このハードウェア部分を初期化するSECおよびPEIフェーズ)は、x86アーキテクチャを備えたすべてのシステムに対して最近まで閉鎖され、BLOBとして(このように、現在、 Minnowboard V1およびIntel UEFI Development Kitのサーバーボードで作成されています)、 CRBNDA 、およびコード、IDE、デバッグツールの年間ライセンスが約30〜40ドルでIBV千との完全なソースコードの形式で、したがって、愛好家は実際に使用する以外に選択肢がありませんでした 汚いハッキングに従事したり、漏洩したソースコードと開発ツールなどを見つける - lzovatデバッグUEFI-ドライバ独自の仮想マシン(EDK2への定期的な方法の一つQEMUによるデバッグ)。



Intelが急いで救助







この困難な状況からの救いは予期せぬ側面からもたらされました-突然IntelはArduino互換のGalileoボードをリリースしました。そこでは、 SPIチップからスケッチを実行するためのArduinoエミュレーターでYocto Linuxを実行することに加えて、オープン実装はほぼ完全に(マイクロコードを除く)実装であることが判明しましたデバッグモードでの組立に適したUEFI BIOSは、それに(既にMinnowboard V1と他の評価ボード上で起こった)両方のUARTを介して独自の設計及びデバッグの成分を添加し、JTAGインタフェースを用いて低コストのデバッグを イカベースFT232HとユーティリティOpenOCDとGDB(ただし、この機能のユーザーのx86プロセッサは、最初に私の心に乗りました)。 現在、ファームウェアコードのハードウェアデバッグには、 Intel BlueBox (1個あたり約3,000ドル)もIntel System Studio (年間ライセンスあたり約2,000ドル)も必要なく、ほとんどのファームウェアコードはBSDライセンスの下で利用できます。



現在、第2世代のMinnowboardボードのリリース準備中です-MAX(予約注文はすでに利用可能です)、今年9月にはオープンUEFI実装の導入も約束しますが、現時点ではまだではなく、Galileoは唯一のオープンソースUEFI x86ボードです単なる人間。 ここでは、実験の基本プラットフォームとして使用します。



ガリレオ





Intelがこの論争の的となる製品をリリースしたとき、多くの人が「新しい」(実際に古いクリエイティブを思い出した)i586 +アーキテクチャ、GPUなし、オーディオなし、miniPCIe、USBホスト、JTAG- (独自のバージョンのArduino IDEを使用しているため)同時にArduinoとの互換性が限られているポート、UE​​FIおよびLinuxは、x86との互換性が限られています(「アダルト」Linuxディストリビューションがかなりのタンバリンと共にインストールされているため、発見取扱説明書のバグは、ロックさらに微調整するためのファイルのその横断を必要とします そして、ほとんどのプログラムは長いi686のために収集され、再構築することなくガリレオの作業ができなくなりますので、のように)、同じCPUラズベリーパイ失うパフォーマンスで、彼女と同じくらい少なくとも二倍であること。 その瞬間、私は彼らに当惑したと言わなければなりません。



Intelのメンバーはもちろん、モノのインターネットの明るい未来について語り、Quarkの売り上げが10倍になると予測しましたが、「同じお金でARMやMIPSよりも優れているのはなぜか」という単純な質問への回答を巧みに避けています。



そして今、ついに、この奇妙なボードの適用が発見され、そのための70ドルはもはや完全に不合理な無駄のようには見えません。



計画と調査





第2部では、 BSPのダウンロードとアセンブル、ボード上のISPコネクタへのプログラマーの接続、UEFIのデバッグバージョンのアセンブルとフラッシュを行うために、ボードが動作する準備をします。

第3部では、UARTを介したデバッグメッセージを使用したDXEドライバーコードのデバッグと、OpenOCD、GDB、および場合によってはIntel System Studioの試用版を使用したJTAGを介したデバッグをカバーする予定です。



しかし、続編を書く前に、私はあなたの意見に興味を持っています、親愛なるhabrachitateli。 投票してくれてありがとう。



All Articles