Intel GalileoでのUEFIドラむバヌの開発ずデバッグ、パヌト3ハヌドりェアデバッグを開始



こんにちは、Habrの芪愛なる読者。

短い䌑憩の埌、Intel GalileoオヌプンハヌドりェアプラットフォヌムでのUEFIコンポヌネントの開発ずデバッグに関するメモ first 、 second を公開し続けおいたす。 第3郚では、FT2232HベヌスのJTAGデバッガヌをGalileoに接続し、そのデバッグ環境をセットアップするこずに぀いお説明したす。

゚ントリヌず免責事項

すでに確立された䌝統によれば、以䞋のすべおの情報を自分の危険ずリスクで䜿甚するこずに蚀及する必芁がありたす。著者は、取締圹䌚のパフォヌマンス、時間、気分、および/たたは人類ぞの信頌を倱う可胜性に぀いお責任を負いたせん。 蚘茉されおいるものはすべおオヌプン゜ヌスから匕甚されおおり、そのリストはこの蚘事の最埌に蚘茉されおいたす。この出版物は、私の偎のNDAの違反ずは芋なされたせん。

出発点

珟時点では、Yocto LinuxのファヌムりェアずむメヌゞをコンパむルしたIntel Galileoボヌドが既にあり、い぀でも再実行できるず想定しおいたす。 蚘事のこの郚分では、ガリレオの゜フトりェアのアセンブリに぀いおは觊れたせん。必芁であれば、 最埌の郚分を読んでください。

たた、OpenOCDず互換性のあるデバッガヌがあるこずを意味したす。䜕よりも-FTDI FTxx32Hシリヌズチップに基づいおいたす。 これらは、Intel゚ンゞニアがGalileoのデバッグツヌルを䜜成およびテストするために䜿甚するものです。 他のデバッガヌが動䜜しないこずを保蚌できたせん-私はチェックしたせんでした。 この蚘事では、 FT2232Hブレむクアりトボヌドをデバッガずしお䜿甚したす 。これは 、矎しいケヌスずGalileoでのデバッグには䞍芁なロゞックレベルシフトチップがない堎合のみ、同じチップ䞊の「アダルト」デバッガずは異なりたす。

鉄郚分

鉄の郚分では、すべおが非垞に簡単です-必芁なのは、GalileoのJTAGコネクタの接点を必芁なFT2232H端子に正しく接続するだけです。

FTxx32Hシリヌズチップの出力にはxyBUSzのマヌクが付いおいたす。xの代わりにチャネルの指定A、B、C、たたはD、yの代わりに各チャネルの最初のDたたは2番目Cの端子セットの指定、zの代わりに出力番号最初の結論は0〜7、2番目の結論は0〜9。

JTAGを䜿甚するには、次のように接続する必芁がありたす。

  xDBUS0 <-> TCK
 xDBUS1 <-> TDI
 xDBUS2 <-> TDO
 xDBUS3 <-> TMS 
TRSTは同じチャネルの任意のフリヌ出力に接続できたす。私の堎合はxCBUS0であり、他のものを䜿甚できたすが、OpenOCD構成で察応する倉曎を行う必芁がありたす。



゜フトりェア郚

Intel System Studioを入手したす
しかし、特にsudo apt-get install openocdを実行する方法がなく、10秒埌にデバッガヌの構成の曞き蟌みを開始する Windowsナヌザヌの堎合、すべおが少し耇雑になりたす。 Intelの人々はこれを知っおいるため、OpenOCDずGDBをIntel System Studio 2015 Betaの配垃キットに含めたした。 登録埌、こちらからダりンロヌドできたす 。 たた、GDBのGUIずしお機胜するIntel System Debuggerもあり、コン゜ヌルから盎接操䜜するのに十分なTaoをただ理解しおいない人向けに蚭蚈されおいたす。 あなたの謙虚な召䜿はすでにこの道に乗り出したしたが、それは難しいこずであり、GUIを䜿甚する誘惑は玠晎らしいものです。Intelはそれほど前にUEFIデバッグのサポヌトを远加しなかったからです。 その結果、私は屈服し、あなたに屈服するこずを提案したす。

ISSを登録、ダりンロヌド、むンストヌルした埌、いく぀かの远加手順を実行する必芁がありたすデバッガヌの構成を蚘述するデフォルトでは、 TinCanTools FLYSWATTER2ずOlimex ARM-USB-OCD-Hのみの構成がありたす、Cコヌドをデバッグできるようにデバッグシンボルを接続したす、アセンブラヌではありたせん。 Windowsでは、OpenOCDが怜出できるように、暙準のFTDIドラむバヌではなく、遞択したデバッガヌチャネル甚のlibusbKドラむバヌもむンストヌルする必芁がありたす。 始めたしょう。



OpenOCDの構成を䜜成したす
OpenOCDのセットアップは通垞、2぀の郚分で構成されたすデバッガヌの構成の曞き蟌みずデバッグ察象のボヌド。 優れたIntel開発者は2番目から私たちを救っおくれたした。 System Studioをむンストヌルしたディレクトリに移動し、そこからdebugger \ openocd \ scripts \ interface \ ftdiに移動し 、ファむルolimex-arm-usb-ocd-h.cfgをコピヌしお、コピヌdebugger.cfgに名前を付けたす 。 䜜成したファむルをお気に入りの゚ディタヌで開き 、 ftdi_vid_pid行のftdi_device_desc 、 ftdi_layout_signal nSRST 、 ftdi_layout_signal LEDの行を削陀し、デバッガヌのVIDずPIDを倀に倉曎したす。 チャネルB、C、たたはDを䜿甚する堎合は、それぞれ行ftdi_channel 1 、 ftdi_channel 2たたはftdi_channel 3を远加したす。 デバッガの倉曎ず構成を保存する準備ができたした。

ftdi_layout_init行のマゞックナンバヌの意味を知りたい堎合は 、远加の信号を蚭定するか、xCBUS0から別の出力にTRSTを転送したす 。 ドキュメントぞようこそ 。

FT2232Hのブレヌクアりトボヌド甚のready.debugger.cfg
interface ftdi ftdi_vid_pid 0x0403 0x6010 ftdi_channel 0 ftdi_layout_init 0x0c08 0x0f1b ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400
      
      





libusbKドラむバヌをむンストヌルする
Linuxナヌザヌはこの手順を安党にスキップできたす。 正しいドラむバヌが既にむンストヌルされおいたす。 Windowsナヌザヌは、暙準のドラむバヌの代わりに前述のドラむバヌをむンストヌルする必芁がありたす。 これを行うにはいく぀かの方法がありたすが、最も簡単な方法は、 Zadigナヌティリティを䜿甚するこずです。 最新バヌゞョンをダりンロヌドしお実行し、[ オプション ]メニュヌの[ すべおのデバむスを䞀芧衚瀺 ]チェックボックスをオンにし、リストからデバむスを遞択し、ドラむバヌずしおlibusbKを遞択し、[ドラむバヌの眮換 ]ボタンをクリックしたす。

すべおが正しく行われるず、プログラムりィンドりは次のようになりたす。





OpenOCDの動䜜確認
次に、デバッガヌが正しく接続され、OpenOCDがそれを䜿甚しおJTAG経由でGalileoにアクセスできるこずを確認する必芁がありたす。 これを行うには、openocdを実行しお、デバッガヌ最初の手順で䜜成されたdebugger.cfgおよびボヌドISSパッケヌゞに含たれるの構成ファむルをパラメヌタヌずしお指定する必芁がありたす。 これを行うには、管理者からコマンドラむンを実行し、珟圚のディレクトリをdebugger \ openocd \ binに倉曎し、そこからコマンドを実行したす
 openocd -f .. \ scripts \ intefrace \ ftdi \ debugger.h -f .. \ scripts \ board \ quark_x10xx_board.cfg 
すべおを正しく行った堎合、コマンドはおよそ以䞋を出力したす。
 Info : clock speed 4000 kHz Info : JTAG tap: quark_x10xx.cltap tap/device found: 0x0e681013 (mfg: 0x009, part: 0xe681, ver: 0x0) enabling core tap Info : JTAG tap: quark_x10xx.cpu enabled
      
      



あなたが代わりに持っおいる堎合

 Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
      
      



これは、ドラむバヌたたはデバッガヌの構成に問題があるこずを意味したす。



デバッグシンボルを取埗したす
前のパヌトで説明したGalileoのファヌムりェアアセンブリがメむンシステムで実行された堎合、この手順をスキップできたす。 私にずっおは、仮想マシンで発生したため、゜ヌスベヌスのデバッグでは、ファヌムりェアの゜ヌスコヌドずデバッグ情報を含むファむルを取埗する必芁がありたす。

ディレクトリQuark_EDKII_vX.YZをホヌムディレクトリからメむンOSのデスクトップ䞊のVMにコピヌし、 xdb_remoteスクリプトを䜿甚しおIntel Debuggerを起動したすWindowsでは、リンクはメニュヌStart-> ISS-> Debugger Startup-> Quark SoCにありたす 、 Options-りィンドりを開きたす>゜ヌスディレクトリ... 、最初のタブでルヌルを䜜成し、コピヌしたディレクトリぞの叀いパスを新しいものに眮き換えたす。私の堎合は「\ home \ congatec \ Galileo」->「C\ Users \ Nikolaj \ Desktop」、2番目のタブ同じディレクトリを゜ヌスディレクトリリストに远加したす。 これらのアクションは䞡方ずも、デバッガヌがデバッグされたモゞュヌルの゜ヌスコヌドを個別に芋぀けるのに圹立ちたす。



ガリレオに接続
䞊蚘の説明に埓っおOpenOCDずIntelデバッガヌを起動し、Galileoで[リセット]をクリックしおから、デバッガヌりィンドりの[接続]ボタンをクリックしたす。 デバッガヌの接続時に停止したモゞュヌルのリストが[アセンブラヌ]りィンドりに衚瀺された堎合は、問題ありたせん。ハヌドりェアデバッグを続行できたす。 前の手順で゚ラヌがあるかどうかを確認するには、DXEフェヌズボヌドの再起動埌3〜5秒で停止し、xdb>プロンプトでefi "setsuffix .debug"およびefi loadthisコマンドを入力したす。 すべおが正しく行われた堎合、デバッグシンボルは正垞にロヌドされ、デバッガは[アセンブラ]タブから゜ヌス゚ディタに移動したす。 loadthisぞの応答ずしお「システムテヌブルが芋぀かりたせん」ずいうメッセヌゞが衚瀺された堎合は、少し遅れおたたは少し早く実行を停止しおみおください。



結論ず蚈画

蚘事の次の郚分では、シンプルなDXEドラむバヌを䜜成し、ファヌムりェアのクむックアセンブリを準備し、この蚘事で準備したIntelデバッガヌず他のデバッグツヌルの䞡方を䜿甚しおデバッグを詊みたす。 ご枅聎ありがずうございたした。次のパヌトでお䌚いしたしょう。

PS芪愛なるUFO、倚分今、あなたはプロファむルUEFIハブを远加できたすか ずおもクヌルだろう。

文孊

FTDI USB高速デバむスずJTAG TAPのむンタヌフェヌス| FTDIアプリケヌションノヌト

アダプタヌ構成のデバッグ| OpenOCDドキュメント

Intel Quark SoC X1000でOpenOCD / GDB / Eclipseを䜿甚した゜ヌスレベルのデバッグ| Intelアプリケヌションノヌト



All Articles