はじめに
書いてる人のスペックは非常にポンコツなので恐らく完遂できないけど
完遂できるスペックの人たちがいると信じて書き残すだけのメモ
というか、ここに書いて有ることを日本語で劣化コピーしてるだけ。
概要
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については特にいじらない)
コピペ用
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
以上。何かあったら追記しようと思う。