(雑なメモ)githubにNios II用のFWを含んだQuartus PrimeのFPGAプロジェクトのrepoを作成する

"自己責任"、"「転んでも一人で起きる」"の意味がわからない方は、以下の記載の事柄は適用しないように、お願いいたします。
トライ&エラーで見つけた方法なので免責条項を書いておく。

基本はこちらと一緒で、不要なファイル・フォルダは削除し、それらを.gitignoreに登録すればよい。
ただNios II Software Build Tool for Eclipseは膨大な設定ファイルを生成するうえに、ビルドの度にプロジェクト関連のファイルを更新するので、純粋に差分を更新しようとするとあまり意味のないファイルまで更新されてしまう。
試行錯誤のすえに分かったのは、(1)ワークスペース内のプロジェクトフォルダ以外は保存しなくても元に戻す方法がある、(2)プロジェクトフォルダー内の設定ファイルとビルド中間ファイルは不要、ということであった。
具体的には、

  • ワークスペース内のプロジェクトフォルダ以外は.gitignoreに登録したうえで、初回に削除の上でコミットする
  • プロジェクトフォルダ内の".settings"フォルダも同様
  • プロジェクトフォルダ内のビルド中間ファイル、および"obj"フォルダも同様
  • BSPプロジェクト内の"HAL"、"drivers"ファイルも同様、これらはBSPを再生成すると作成される

残ったのはBSPプロジェクト内の"settings.bsp"ファイルだ。
このファイルの中には、フルパスの記述が一か所ある。

        <BspGeneratedLocation>(フルパスだよーん)\nios2_PIOLED_sw_bsp</BspGeneratedLocation>

このフルパスの部分はこのファイルからの相対パスでも大丈夫なことが分かったので、これを

        <BspGeneratedLocation>..\nios2_PIOLED_sw_bsp</BspGeneratedLocation>

と書き換える。

これでオリジナルの場所以外にcloneした場合でも、完全にビルド可能なファイルセットができた。
ここからビルドまでの方法は、

  • Nios II Software Build Tool for Eclipseを起動したら、ワークスペースを設定(FW、BSPプロジェクトの親フォルダを作り、これをワークスペースにすることを推奨)
  • 空のワークスペースが開くので、FWプロジェクト、BSPプロジェクトをインポート("File" -> "Import"メニューから、"Existing Projects into Workspace"を選び、それぞれのプロジェクトフォルダを選ぶ)
  • BSPプロジェクトを右クリックし"Nios II" -> "Generate BSP"を選択し、BSPを再生成
  • BSPプロジェクトを右クリックし"Clean Project"した後に、"Build Project"
  • FWプロジェクトを右クリックし"Build Project"

で出来上がりだ。
なお、この時に上記のBSPプロジェクト内の"settings.bsp"は更新されるので、add - commit - push前に

git restore software\(BSPプロジェクトフォルダ)\settings.bsp

とすればOK。

ちなみに.gitignoreはこんなだ。

#Quartus intermediate files
/db/
/incremental_db/
/output_files/
/simulation/
/c5_pin_model_dump.txt
/*.qws

#Platform Designer Intermadiate files
/*.sopcinfo
/.qsys_edit/
/nios2_PIOLED_qsys/

#Nios Software Builder tools intermedate files
/software/nios2_PIOLED_sw_bsp/.settings/
/software/nios2_PIOLED_sw_bsp/obj/
/software/nios2_PIOLED_sw_bsp/HAL/
/software/nios2_PIOLED_sw_bsp/drivers/
/software/nios2_PIOLED_sw_bsp/*.a
/software/nios2_PIOLED_sw_bsp/summary.html
/software/nios2_PIOLED_sw_bsp/Makefile
/software/nios2_PIOLED_sw_bsp/mem_init.mk
/software/nios2_PIOLED_sw_bsp/public.mk
/software/nios2_PIOLED_sw_bsp/system.h

/software/nios2_PIOLED_sw/.settings/
/software/nios2_PIOLED_sw/obj/
/software/nios2_PIOLED_sw/*.map
/software/nios2_PIOLED_sw/*.elf
/software/nios2_PIOLED_sw/*.objdump

/software/.metadata/
/software/RemoteSystemsTempFiles/

参考にこちらの(改訂版)DE0-CVでNios IIのrepoを作成した。
元にするプロジェクトはQuartus Prime 18.1で作成。
github.com