Ubuntu 18が出たので、やりかたを確かめつつまとめ
とりあえずARMで動かすUbuntu18をセットアップするためにLinuxが必要.
Ubuntu18をVMplayerにインストールする。
x86_64 Windows上のVMplayerに
Ubuntu18をインストールする
Ubuntu 18.04 LTS (Bionic Beaver)
VMplayer上のインストールはほとんど迷うことが無い。
インストールメディアにISOを指定すれば後はウィザードに従ってインストールされる。
Ubuntuの設定
日本語の設定が、前よりも簡単になっていた。
Ubuntuの設定から
言語メニューを選択
もう既に日本語化してしまったが、
「インストールされている言語の管理」→「言語のインストールと削除」
で日本語を追加する。
日本語を追加したら、
「メニューとウィンドウの言語」でそれを一番上に持ってくる。
あとは再起動すれば日本語になっている。
fishのインストール
shellにはzshよりもfishをおすすめしたい
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
u-bootのビルド
まずはu-bootをビルドするのに必要なものをインストールする。
fishなら以下をコピペするだけでOK
sudo apt-get -f install
sudo apt-get install fakeroot build-essential kexec-tools
sudo apt-get install kernel-wedge gcc-arm-linux-gnueabi
sudo apt-get install u-boot-tools libncurses5
sudo apt-get install libncurses5-dev libelf-dev
sudo apt-get install asciidoc binutils-dev git
sudo apt-get build-dep linux
sudo sudo apt-get install bc
まずarm gccがバージョン6以上であるかを確認する。
version 7.3.0であった。
ここでversion 6.x 以上出ないと、xilinxのリポジトリの最新のubootのビルドに失敗する。
つぎにxilinxのリポジトリからu-bootをクローンしてくる
git clone https://github.com/Xilinx/u-boot-xlnx
追加。
cd u-boot-xlnx
echo "CONFIG_OF_EMBED=y" >> configs/zynq_zybo_defconfig
これがないと
No valid device tree binary found
とエラーが出る。
ビルド
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zynq_zybo_config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
でu-bootというのができている。
これをu-boot.elfとリネームしてどこかに置いておく。
(そうしないとNo Execution Address JTAG handoffと出る。
Solved: ZC706 QSPI Boot: FSBL does not hand off to U-Boot - Community Forums)
kernelのビルド
git clone https://github.com/Xilinx/linux-xlnx
いま時点でmasterはkernel 4.x (≧4.9)
(新しいgccではkernel 3.xはビルドできない。)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- xilinx_zynq_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage
で\arch\arm\bootにuImageができている。
bitファイルをつくる
Zybo [Reference.Digilentinc]
の下の方にZybo Base Systemがある
おそらく初代Zyboがもう作られてないからdeprecatedである。
この中の、\zybo_base_system\source\vivado\hw\zybo_bsd
をVivado 2017.3で新しく保存し直した。
(このままBitstreamを作ろうとしたところ
BTNs_4Bitなどで原因不明のエラーが出たので、
一度AXI-GPIOをすべて消してからIO Plannningで割り当て直したら直った。)
Bitstreamを出す。
File→Export で include bitstreamにチェックを入れてOK
devicetree
引き続きVivadoから
File→Launch SDKを行う。
HDFが自動で読み込まれる。
zybo 割り込み② SDK, devicetree編 - e-tipsmemo
と同じ。
Devicetree generatorを入れる
SDKから
Xilinx→Repositoriesで
Newを押すとダイアログが出るので、クローンしたリポジトリを指定する。
OK
File→New→Board Support Packageで
Board Support Package OSから
device_treeを選択。
bootargsに
console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1
を入れる。
zynq-7000.dtsの
gem0をokayにする。
gem0: ethernet@e000b000 { compatible = "cdns,zynq-gem", "cdns,gem"; reg = <0xe000b000 0x1000>; status = "okay"; interrupts = <0 22 4>; clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>; clock-names = "pclk", "hclk", "tx_clk"; #address-cells = <1>; #size-cells = <0>; };
system-top.dtsに
mdio { compatible= "cdns,macb-mdio"; reg= <0xe000b000 0x1000>; clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>; clock-names = "pclk", "hclk", "tx_clk"; #address-cells = <1>; #size-cells = <0>; eth_phy0:phy@1 { compatible = "realtek,RTL8211E"; device_type = "ethernet-phy"; reg = <0x1>; }; };
を追加する。
ここと同じ。
zybo ethernet Ubuntu 17 ipv4 - e-tipsmemo
DTC入れる。
sudo apt-get install device-tree-compiler
dtc -I dts -O dtb -o devicetree.dtb system-top.dts
dtc -I dtb -O dts -o devicetree.dts devicetree.dtb
BOOT.binを作る。
から下のAdd→Browse..でu-boot.elfを選択する。
OK
uEnv.txt
ZYBO用U-Bootを、ブート時にuEnv.txtを読むようにして、かつBOOT.binから起動できるようにする - Qiita
uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000
Ubuntu18のRoot File Systemのインストール
必要
sudo apt-get install debootstrap
sudo apt-get install qemu-user-static
sudo mount -o loop /dev/sdX2 /mnt/sd
起動後
SDカードをzyboに挿して
ピンヘッダーをSDにしておけば起動するはず。
最初は一般ユーザーでしかログインできない。
そのあとsuでrootになる。
その後の設定は
zybo ethernet Ubuntu 17 ipv4 - e-tipsmemo
の後半
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
ip a
ipv4が降ってこない。
vi /etc/netplan/01-netcfg.yaml
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: yes
スペース4つでないと怒られる?
netplan --debug generate
netplan apply
Ubuntu systemd getty autologin via Serial Console - e-tipsmemo
ログイン周り。
systemctl edit --force serial-getty@ttyPS0
sudo apt-get install software-properties-common
sudo apt-get update
sudo add-apt-repository universe
でOKのはず。
apt-get install sl
sl