LoginSignup
2
1

More than 5 years have passed since last update.

DE0-Nano-SoC(Cyclone V SoC(FPGA))でベアメタルチャレンジ(環境構築編)

Last updated at Posted at 2017-06-17

はじめに

書いてる人のスペックは非常にポンコツなので恐らく完遂できないけど
完遂できるスペックの人たちがいると信じて書き残すだけのメモ

というか、ここに書いて有ることを日本語で劣化コピーしてるだけ。

概要

DE0-Nano-SoC(SoCFPGA)でベアメタルしたくない?
したいよね。

だから、やってみたことをメモしながら記録していく。

やること

YoctoプロジェクトのLinuxカーネルをブートできる環境を構築する。

ブートシーケンス
1. ROMからブートローダが読み込まれる
2. ブートローダがUbootを読み込む
3. Ubootがカーネルを読み込む
4. Linuxカーネルが起動して色々出来るようになる

このシーケンスの4番はベアメタルチャレンジしたいので、要らない。
というわけで、Ubootをビルドしてカーネルの代わりに自分の作ったプログラムが起動するようにする

開発環境の構築

Ubuntu16.04 LTS上に構築していく。

ディレクトリを作ってその中に入る

mkdir ~/crossFPGA
cd ~/crossFPGA

リポジトリのアップデートと多分必要なツールのインストール

sudo apt-get update
sudo apt-get install -y build-essential libffi-dev gcc-multilib lib32z1 
sudo apt-get install -y lib32ncurses5 lib32bz2-1.0 libssl-dev git socat
sudo apt-get install -y texinfo gawk chrpath gcc git 

bitbakeにパスを通す。

git clone -b jethro git://git.yoctoproject.org/poky.git
pushd poky
git clone -b jethro git://github.com/kraj/meta-altera.git
git clone -b jethro git://git.linaro.org/openembedded/meta-linaro.git
popd
PATH="$PATH:~/crossFPGA/poky/bitbake/bin/"

とりあえず初期化する

source poky/oe-init-build-env ./build

ディレクトリが一つ下がって、buildってディレクトリに入る
上のコマンド打ったら
~/crossFPGA/build/
がカレントディレクトリになる。
あと以下のようなメッセージが出る

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-toolchain-sdk
    adt-installer
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

コレが無事見れたら、CycloneV SoC用の初期値を設定してやる

vi conf/bblayers.conf

デフォルト値はこんな感じ

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  /home/segfo/crossFPGA/poky/meta-yocto-bsp \
  "
BBLAYERS_NON_REMOVABLE ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  "

meta-altera と
meta-linaro/meta-linaro-toolchain を書き足す

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  /home/segfo/crossFPGA/poky/meta-yocto-bsp \
  /home/segfo/crossFPGA/poky/meta-altera \
  /home/segfo/crossFPGA/poky/meta-linaro/meta-linaro-toolchain \
  "
BBLAYERS_NON_REMOVABLE ?= " \
  /home/segfo/crossFPGA/poky/meta \
  /home/segfo/crossFPGA/poky/meta-yocto \
  "

終わったら閉じて、保存。
更にlocal.confを編集
ここでCyclone V用にlinaroツールチェインの設定をする

vi conf/local.conf

こうする(追加するだけ。qemux86については特にいじらない)
image.png

コピペ用

MACHINE = "cyclone5"

ASSUME_PROVIDEDなんちゃらをコメントアウト
(自分の環境ではコメントアウト済みだったので何もしてない)

これを

ASSUME_PROVIDED += "libsdl-native"

こうする

#ASSUME_PROVIDED += "libsdl-native"

また、この記述も変更する(パッケージ化するときのエラー回避)

PACKAGE_CLASSES ?= "package_rpm"

rpmからipkへ変更

PACKAGE_CLASSES ?= "package_ipk"

以下をファイルの最後にペーストして終わり
(ここに書いてある通りにやった:https://github.com/kraj/meta-altera
カーネルとファイルシステムのビルドらしいけど、カーネル使わないしなんでもいい

PREFERRED_PROVIDER_virtual/kernel = "linux-altera"
PREFERRED_VERSION_linux-altera = "4.3%"
GCCVERSION = "linaro-5.2"
SDKGCCVERSION = "linaro-5.2"
DEFAULTTUNE = "cortexa9hf-neon"

コア数の2倍で並列ビルドする為の設定

BB_NUMBER_THREADS = '8'
PARALLEL_MAKE = '-j 8'

あとは、下記コマンドを叩いて終るまで待つ。長いので寝る前とかご飯食べる前とか。
ていうか今ここやっていて、終わってないからこの先のことはこれからやることになる
(2017/06/17 / 23:00 現在)

bitbake virtual/kernel

最後に

bitbake core-image-minimal

以上。何かあったら追記しようと思う。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1