2018年9月20日木曜日

ARMクロスコンパイル用clang その4

久々に確認したらllvmがバージョン 7になっていた。
手持ちのARM clang クロスコンパイラはバージョン3.8ベース。
大分最新から古くなっているので再度作成することにする。

■作成対象
自作OSのビルドが目的なので
target-triple が arm-none-eabi のbaremetal ARMクロスコンパイラ

■インストール先
/opt/arm-none-eabi-clang

■ソースコード一式展開
Getting startedに従ってllvm本体とclang, lldそれぞれのソースコードを展開する。
libcxxはOSのライブラリ依存だが、独自OSにはそれがまだ無いのでこの時点では導入しない。
compiler-rtはLLVM/Clangのビルドとは別に独立して行うのでllvmソースツリー内に展開しない。

■ビルド
(clang+llvm)

cmake <llvm-7.0.0.src path> -DCMAKE_CROSSCOMPILING=True -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=ARM -DCMAKE_INSTALL_PREFIX=/opt/arm-none-eabi-clang -DLLVM_TARGET_ARCH=ARM -DLLVM_DEFAULT_TARGET_TRIPLE=arm-none-eabi -DCLANG_DEFAULT_LINKER=lld -DCLANG_DEFAULT_RTLIB=compiler-rt -DDEFAULT_SYSROOT=/opt/arm-none-eabi-clang

2018年3月27日火曜日

Zynqberry FPGA開発

開発環境構築からの続き

■参考サイト
ZynqBerryチュートリアル

■プロジェクトの作成
リファレンスデザインソースに生成されたvivado_create_project_guimode.cmdを実行する。いろいろとログが出力された後に下記のVivado開発環境が立ち上がる。

■IP編集
左メニューの[Flow Navigator]-[IP INTEGRATOR]-[Open Block Design]を選択する。
下記のように初期設定のブロック図が表示される。

自作IPの作成方針として理解したのは2通り。1つはAXI4対応IPとする方法、もう1つは汎用IPとして作成しAXI4-GPIOと接続する方法。
いずれにしてもAXI4と接続しないとARMのアドレス空間経由で操作できない。

①AXI4対応IP作成方法
上部メニューの[Tools]-[Create And Package New IP]を選択する。
下記ダイアログにおいて「Create a new AXI4 peripheral」を選択しNext。

Peripheral Detail画面が表示されるのでIPの名前や保存場所を指定する。

別ウィンドウでIPのサブプロジェクトが開けば成功

成功するとAXI I/Fドライバのひな型とC言語のドライバスタブが生成される。
Sourcesウィンドウの[Design Sources]-[IP名]を選択するとVHDLのコードが生成されているのがわかる。
エディタで開いて最下部に「Add user logic here」と記載されているところに自分のロジックを組み込めばOK。

②自作汎用IPの組み込み
[PROJECT MANAGER]-[Add Sources]し、ダイアログから[Add or create design sources]を選択する。





下部の[Create File]ボタンを押して作成するHDLソースファイルを指定する。
File TypeにHDLの種類(VHDL, Verilog, SystemVerilogなど)、File nameにソースファイル名を指定する。



次の画面で入出力ポートを設定すると自動でソースファイルのひな型が生成される。


■プロジェクト設定
自作IP毎のサブプロジェクト作成について
デフォルトでは編集時にサブプロジェクトを作成し、編集後に自動で削除されるようになっている。

毎回サブプロジェクトを作成、削除するのが手間であれば自動削除しないように設定できる。
左メニュー[Flow Navigator]-[PROJECT MANAGER]-[Setting]から[Project Setting]-[IP]-[Packager]を選択する。
設定画面の[Delete project after packaging]のチェックを外すと自動削除を無効にできる。

2018年3月19日月曜日

Zynqberry FPGA開発環境構築

■手順概要
  1. リファレンスデザインのダウンロード
  2. Xilinx Vivadoのインストール
  3. プロジェクトの作成

■リファレンスデザインのダウンロード
Trenz electronic Zynqberryダウンロードサイト
ここからリファレンスデザインをダウンロードする

2018/3時点で最新バージョンは2017.4
te0726-test_board-vivado_2017.4-build_06_20180216205357.zip

これを適当なフォルダに展開する。
空白を含まないフォルダパスが望ましい。

■Xilinx Vivadoのインストール
リファレンスデザインの対象バージョンが2017.4なのでVivadoも同じバージョンをダウンロード、インストールする。
バージョンが合っていないと論理合成できないことがある
またインストールするフォルダはデフォルトのC:\Xilinxが望ましい。
リファレンスデザインのプロジェクト作成batファイルがC:\Xilinxにインストールされているのを前提にしているため

■リファレンスデザインの展開
ダウンロードしたリファレンスデザインを解凍すると直下に_create_win_setup.cmdというスクリプトがある。
これをコマンドプロンプトから実行

-------------------------TE Reference Design---------------------------
--------------------------------------------------------------------
-- (c)  Go to CMD-File Generation (Manual setup)
-- (d)  Go to Documentation (Web Documentation)
-- (x)  Exit Batch (nothing is done!)
-- (0)  Create minimum setup of CMD-Files and exit Batch
-- (1)  Create maximum setup of CMD-Files and exit Batch
----
Select (ex.:'0' for min setup):

このような選択が表示されるので1を選択する。
するとプロジェクト作成に必要なスクリプト群が生成される。

■プロジェクト対象ボードの選択
生成されたスクリプト群にあるdesign_basic_setting.cmdを編集する。
(編集箇所)
@set PARTNUMBER=LAST_ID
   LAST_IDを手持ちのボードに合わせる。選択できるボードの種類はboard_filesディレクトリのTE0726_board_files.csvに記載されている。
 ここでは手元にあるte0726-03mを選択しておく。
 LAST_IDのままにしておくと自動的にte0726-03-07s-1cが選択されたことになる。

@set SWAPP=NA
 NAを作成するプロジェクト名に変える

■プロジェクトの作成
生成されたスクリプト群の中からvivado_create_project_guimode.cmdを実行する。
するとzynqberryのハード設定で初期化された状態でVivadoアプリケーションが立ち上がる。
立ち上がったらメニューのFile->Save Project Asで好きな場所に保存する。
以降はこのプロジェクトを編集して回路設計と合成を行う