この記事では、インテル® SoC FPGA の開発環境で発生する既知のエラーと、その対策方法を紹介します。
もくじ
はじめに
bsp-create-settings は、インテル® SoC FPGA エンベデッド開発スイート(以下、SoC EDS)v19.1std / v19.3pro 以降のブートローダーの生成フローで使用するツールとなっていますが、このツールが期待通りに動作せずエラーとなるケースがあります。
この記事では、bsp-create-settings で発生するエラーと対策について紹介します。
エラーの発生条件
該当のエラーは、SoC EDS v20.1std の Windows 版のみで確認されています。Linux 版は正常に動作するため影響は限定的です。
SoC EDS v19.1std / v19.3pro 以降の環境では、ブートローダーのビルド作業を Linux OS 環境下で行う必要があるため、ブートローダー生成に関わる作業すべてを Linux OS 環境下で行う場合は影響しません。Windows 10 の SoC EDS 環境で bsp-create-settings を実行し、ブートローダーのビルド作業のみを Windows Subsystem for Linux(以下、WSL)で行うケースでエラーに直面することになります。
ポイント:
SoC EDS v20.1std の Linux 版を使用することで回避可能ですが、WSL を使用する場合は デスクトップ GUI 環境ではなく CUI 環境となるため SoC EDS のインストーラーが実行できません。そのため、WSL 環境では SoC EDS の Linux 版をインストールする回避策が取れません。
エラーの内容
図 1 は、Embedded Command Shell 上で bsp-create-settings を実行した結果の画像です。
先に正常動作時のメッセージ画像を掲載します。
【図 1】bsp-create-settings 成功
正常に動作した場合は、青枠に記載のメッセージと共に bsp プロジェクト以下の generated フォルダに各種ヘッダーファイルが生成されます。
次の 図 2 は、エラー発生時のメッセージ画像です。
【図 2】bsp-create-settings 失敗(エラー発生)
赤枠の部分がエラーメッセージとなります。"ImportError: cannot import name 'expatbuilder' from 'xml.dom' ..." というメッセージとともに Python スクリプトの Call Trace のような情報が表示されます。各種ヘッダーファイルも生成されません。
以下にエラーメッセージ全文をテキスト形式でも添付しておきます。
INFO: Tcl message: "Traceback (most recent call last):"
INFO: Tcl message: " File "scripts/iswgen.py", line 62, in <module>"
INFO: Tcl message: " emif = emif.EMIFGrokker(inputDir, outputDir, 'emif.xml')"
INFO: Tcl message: " File "C:\intelFPGA\20.1\embedded\ip\altera\preloader\scripts\emif.py", line 33, in __init__"
INFO: Tcl message: " self.emifDom = xml.dom.minidom.parse(self.emifFileName)"
INFO: Tcl message: " File "C:\intelfpga\20.1\embedded\host_tools\python\lib\xml\dom\minidom.py", line 1958, in parse"
INFO: Tcl message: " from xml.dom import expatbuilder"
INFO: Tcl message: "ImportError: cannot import name 'expatbuilder' from 'xml.dom' (C:\intelfpga\20.1\embedded\host_tools\python\lib\xml\dom\__init__.py)"
WARNING: Tcl script "C:\intelfpga\20.1\embedded\ip\altera\preloader\spl_callbacks.tcl spl C:/lab/soc_lab/cv_soc_lab/software/spl_bsp" error: couldn't open "reset_config.h.template": no such file or directory
エラーの原因および対策
エラーの原因は、SoC EDS に付属の Python 環境に必要なライブラリーが不足している事にあるようです。この記事に添付の expatbuilder.py, expat.py を以下の場所に格納することで対策可能です。
- C:\intelFPGA\20.1\embedded\host_tools\python\Lib\xml\dom\expatbuilder.py
- C:\intelFPGA\20.1\embedded\host_tools\python\Lib\xml\parsers\expat.py
参考として 図 3 に、SoC EDS v20.1std の Windows 版と Linux 版の Python ライブラリーを比較した結果を掲載します。
【図 3】SoC EDS 付属の Python ライブラリー比較(Windows 版 × Linux 版)
正常動作する Linux 版には存在する expatbuilder.py と expat.py が Windows 版には存在しないことが確認できます。差分として見えている 2 つのファイルを Windows 版へ移植した結果、エラーが解消することが確認できました。
まとめ
今回紹介した方法によりエラーを回避することが可能なことは確認できておりますが、こちらは暫定の対策方法とお考え下さい。今後のツールバージョンで対策が行われる可能性もありますので、その場合は、新しいツールバージョンに適用された方法に合わせてご対応頂くことをお勧めいたします。
添付ファイル
以下のリンクより対策用のファイルをダウンロードしてご使用ください。
(※添付ファイルは https://github.com/python/cpython/tree/3.8/Lib/xml で公開されるファイルと同等のものです。ライセンス情報は Copyright and License Information を参照ください。)
コメント
0件のコメント
記事コメントは受け付けていません。