Skip to content

Commit

Permalink
Merge branch 'build-v0.4.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
ikwzm committed Sep 20, 2017
2 parents 00f3c0c + 7a0862b commit e93cdf3
Show file tree
Hide file tree
Showing 113 changed files with 3,969 additions and 4,787 deletions.
9 changes: 5 additions & 4 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,23 @@ This Repository provides a Linux Boot Image(U-boot, Kernel, Root-fs) for FPGA-So
+ Build for ZYBO, PYNQ-Z1 and DE0-Nano-SoC
+ Customized boot by uEnv.txt
+ Customized boot by boot.scr
* Linux Kernel Version v4.8.17
* Linux Kernel Version v4.12.13
+ Available in both Xilinx-Zynq-7000 and Altera-SoC in a single image
+ Enable Device Tree Overlay
+ Enable FPGA Manager
+ Enable FPGA Bridge
+ Enable FPGA Reagion
* Debian8(jessie) Root File System
+ Installed build-essential
+ Installed device-tree-compiler
+ Installed ruby ruby-msgpack ruby-serialport
+ Installed python python3 msgpack-rpc-python
+ Installed u-boot-tools
* FPGA Device Drivers and Services
+ [dtbocfg (Device Tree Blob Overlay Configuration File System)](https://github.com/ikwzm/dtbocfg)
+ [fpgacfg (FPGA Configuration Interface for Linux FPGA Manager Framework)](https://github.com/ikwzm/fpgacfg)
+ [fclkcfg (FPGA Clock Configuration Device Driver)](https://github.com/ikwzm/fclkcfg)
+ [udmabuf (User space mappable DMA Buffer)](https://github.com/ikwzm/udmabuf)
+ [zptty (Pseudo TeleTYpewriter for FPGA Device)](https://github.com/ikwzm/PTTY_AXI4)
+ fpga-bridge (FPGA to/from HPS Bridge Driver for Altera SoCFPGA Devices)

Install
------------------------------------------------------------------------------------
Expand All @@ -58,7 +59,7 @@ Build
* [Build U-boot for ZYBO](doc/build/u-boot-zynq-zybo.md)
* [Build U-boot for PYNQ-Z1](doc/build/u-boot-zynq-pynqz1.md)
* [Build U-boot for DE0-Nano-SoC](doc/build/u-boot-de0-nano-soc.md)
* [Build Linux Kernel](doc/build/linux-kernel-4.8.17.md)
* [Build Linux Kernel](doc/build/linux-kernel-4.12.13.md)
* [Build Debian8 RootFS](doc/build/debian8-rootfs.md)
* [Build Device Drivers and Services Package](doc/build/device-drivers.md)

4 changes: 2 additions & 2 deletions debian8-rootfs-vanilla.tgz
Git LFS file not shown
53 changes: 42 additions & 11 deletions doc/build/debian8-rootfs.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ shell$ export distro=jessie

```
shell$ mkdir $targetdir
shell$ sudo debootstrap --arch=armhf --foreign $distro $targetdir
shell$ sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin
shell$ sudo cp /etc/resolv.conf $targetdir/etc
shell$ sudo cp scripts/build-debian8-rootfs-with-qemu.sh $targetdir
shell$ sudo cp linux-image-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb $targetdir
shell$ sudo cp linux-headers-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb $targetdir
shell$ sudo debootstrap --arch=armhf --foreign $distro $targetdir
shell$ sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin
shell$ sudo cp /etc/resolv.conf $targetdir/etc
shell$ sudo cp scripts/build-debian8-rootfs-with-qemu.sh $targetdir
shell$ sudo cp linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb $targetdir
shell$ sudo cp linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb $targetdir
````

#### Build debian8-rootfs with QEMU
Expand Down Expand Up @@ -69,6 +69,7 @@ debian8-rootfs# apt-get update
debian8-rootfs# apt-get install -y locales dialog
debian8-rootfs# dpkg-reconfigure locales
debian8-rootfs# apt-get install -y openssh-server ntpdate resolvconf sudo less hwinfo ntp tcsh zsh
debian8-rootfs# apt-get install -y avahi-daemon
```

##### Setup hostname
Expand Down Expand Up @@ -144,23 +145,53 @@ iface eth0 inet dhcp
EOT
````

##### Setup /lib/firmware

debian8-rootfs# mkdir /lib/firmware

##### Install Development applications

```
debian8-rootfs# apt-get install -y build-essential
debian8-rootfs# apt-get install -y device-tree-compiler
debian8-rootfs# apt-get install -y git
debian8-rootfs# apt-get install -y u-boot-tools
debian8-rootfs# apt-get install -y socat
debian8-rootfs# apt-get install -y ruby ruby-msgpack ruby-serialport
debian8-rootfs# gem install rake
debian8-rootfs# apt-get install -y python python-dev python-pip
debian8-rootfs# apt-get install -y python3 python3-dev python3-pip
debian8-rootfs# pip3 install msgpack-rpc-python
debian8-rootfs# pip3 install jupyter
```

##### Install Device Tree Compiler (supported symbol version)

```
debian8-rootfs# apt-get install -y flex bison
debian8-rootfs# cd root
debian8-rootfs# mkdir src
debian8-rootfs# cd src
debian8-rootfs# git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git dtc
debian8-rootfs# cd dtc
debian8-rootfs# make
debian8-rootfs# make HOME=/usr/local install-bin
debian8-rootfs# cd /
```

##### Install Other applications

```
debian8-rootfs# apt-get install -y samba
debian8-rootfs# apt-get install -y avahi-daemon
```

##### Install Linux Header and Modules

```
debian8-rootfs# mv boot boot.org
debian8-rootfs# mkdir boot
debian8-rootfs# dpkg -i linux-image-4.4.7-armv7-fpga_4.4.7-armv7-fpga-1_armhf.deb
debian8-rootfs# dpkg -i linux-headers-4.4.7-armv7-fpga_4.4.7-armv7-fpga-1_armhf.deb
debian8-rootfs# dpkg -i linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
debian8-rootfs# dpkg -i linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
debian8-rootfs# rm boot/*
debian8-rootfs# rmdir boot
debian8-rootfs# mv boot.org boot
Expand All @@ -172,8 +203,8 @@ debian8-rootfs# mv boot.org boot
debian8-rootfs# exit
shell$ sudo rm -f $targetdir/usr/bin/qemu-arm-static
shell$ sudo rm -f $targetdir/build-debian8-rootfs-with-qemu.sh
shell$ sudo rm -f $targetdir/linux-image-4.4.7-armv7-fpga_4.4.7-armv7-fpga-1_armhf.deb
shell$ sudo rm -f $targetdir/linux-headers-4.4.7-armv7-fpga_4.4.7-armv7-fpga-1_armhf.deb
shell$ sudo rm -f $targetdir/linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
shell$ sudo rm -f $targetdir/linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
```

#### Build debian8-rootfs-vanilla.tgz
Expand Down
2 changes: 0 additions & 2 deletions doc/build/device-drivers.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ There are two ways

```
shell$ git clone https://github.com/ikwzm/dtbocfg
shell$ git clone https://github.com/ikwzm/fpgacfg
shell$ git clone https://github.com/ikwzm/fclkcfg
shell$ git clone https://github.com/ikwzm/udmabuf
shell$ git clone https://github.com/ikwzm/PTTY_AXI4
Expand All @@ -19,7 +18,6 @@ shell$ git clone https://github.com/ikwzm/PTTY_AXI4

```
shell$ git archive --remote dtbocfg --prefix=dtbocfg/ --format=tar v0.0.3 | tar xf - -C drivers
shell$ git archive --remote fpgacfg --prefix=fpgacfg/ --format=tar v0.0.1 | tar xf - -C drivers
shell$ git archive --remote fclkcfg --prefix=fclkcfg/ --format=tar v0.0.1 | tar xf - -C drivers
shell$ git archive --remote udmabuf --prefix=udmabuf/ --format=tar v0.6.0 | tar xf - -C drivers
shell$ cd PTTY_AXI4; git checkout v1.0.0; cp -r src/drivers/zptty ../drivers; cd ..
Expand Down
76 changes: 76 additions & 0 deletions doc/build/linux-kernel-4.12.13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
### Build Linux Kernel

There are two ways

1. run scripts/build-linux-kernel.sh (easy)
2. run this chapter step-by-step (annoying)

#### Download Linux Kernel Source

##### Clone from linux-stable.git

```
shell$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.12.13-armv7-fpga
```

##### Checkout v4.12.13

```
shell$ cd linux-4.12.13-armv7-fpga
shell$ git checkout -b linux-4.12.13-armv7-fpga refs/tags/v4.12.13
```

#### Patch for armv7-fpga

```
shell$ patch -p0 < ../files/linux-4.12.13-armv7-fpga.diff
shell$ git add --update
shell$ git add arch/arm/configs/armv7_fpga_defconfig
shell$ git add arch/arm/boot/dts/zynq-pynqz1.dts
shell$ git commit -m "patch for armv7-fpga"
shell$ git tag -a v4.12.13-armv7-fpga -m "relase v4.12.13-armv7-fpga"
```

#### Setup for Build

````
shell$ cd linux-4.12.13-armv7-fpga
shell$ export ARCH=arm
shell$ export CROSS_COMPILE=arm-linux-gnueabihf-
shell$ make armv7_fpga_defconfig
````

#### Build Linux Kernel and device tree

````
shell$ export DTC_FLAGS=--symbols
shell$ make deb-pkg
shell$ make zynq-zybo.dtb
shell$ make zynq-pynqz1.dtb
shell$ make socfpga_cyclone5_de0_sockit.dtb
````

#### Copy zImage and devicetree to target/zybo-zynq/boot/

```
shell$ cp arch/arm/boot/zImage ../target/zynq-zybo/boot/zImage-4.12.13-armv7-fpga
shell$ cp arch/arm/boot/dts/zynq-zybo.dtb ../target/zynq-zybo/boot/devicetree-4.12.13-zynq-zybo.dtb
shell$ dtc -I dtb -O dts -o ../target/zynq-zybo/boot/devicetree-4.12.13-zynq-zybo.dts arch/arm/boot/dts/zynq-zybo.dtb
```

#### Copy zImage and devicetree to target/zybo-pynqz1/boot/

```
shell$ cp arch/arm/boot/zImage ../target/zynq-pynqz1/boot/zImage-4.12.13-armv7-fpga
shell$ cp arch/arm/boot/dts/zynq-pynqz1.dtb ../target/zynq-pynqz1/boot/devicetree-4.12.13-zynq-pynqz1.dtb
shell$ dtc -I dtb -O dts -o ../target/zynq-pynqz1/boot/devicetree-4.12.13-zynq-pynqz1.dts arch/arm/boot/dts/zynq-pynqz1.dtb
```

#### Copy zImage and devicetree to target/de0-nano-soc/boot/

```
shell$ cp arch/arm/boot/zImage ../target/de0-nano-soc/boot/zImage-4.12.13-armv7-fpga
shell$ cp arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dtb ../target/de0-nano-soc/boot/devicetree-4.12.13-socfpga.dtb
shell$ dtc -I dtb -O dts -o ../target/de0-nano-soc/boot/devicetree-4.12.13-socfpga.dts arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dtb
```

39 changes: 21 additions & 18 deletions doc/install/de0-nano-soc.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,28 @@
```
shell$ git clone git://github.com/ikwzm/FPGA-SoC-Linux
shell$ cd FPGA-SoC-Linux
shell$ git lfs pull origin master
shell$ git checkout v0.4.0
shell$ git lfs pull
```

#### File Description

* target/de0-nano-soc/
+ boot/
- DE0_NANO_SOC.rbf : FPGA configuration file (Raw Binary Format)
- uEnv.txt : U-Boot environment variables for linux boot
- zImage-4.8.17-armv7-fpga : Linux Kernel Image
- devicetree-4.8.17-socfpga.dtb : Linux Device Tree Blob
- devicetree-4.8.17-socfpga.dts : Linux Device Tree Source
- DE0_NANO_SOC.rbf : FPGA configuration file (Raw Binary Format)
- uEnv.txt : U-Boot environment variables for linux boot
- zImage-4.12.13-armv7-fpga : Linux Kernel Image (use Git LFS)
- devicetree-4.12.13-socfpga.dtb : Linux Device Tree Blob
- devicetree-4.12.13-socfpga.dts : Linux Device Tree Source
+ u-boot/
- u-boot-spl.sfp : Stage 1 Boot Loader(U-boot-spl)
- u-boot.img : Stage 2 Boot Loader(U-boot)
* debian8-rootfs-vanilla.tgz : Debian8 Root File System (use Git LFS)
* linux-image-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb : Linux Image Package (use Git LFS)
* linux-headers-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb : Linux Headers Package (use Git LFS)
* fpga-soc-linux-drivers-4.8.17-armv7-fpga_0.0.5-1_armhf.deb : Device Drivers Package (use Git LFS)
* fpga-soc-linux-services_0.0.5-1_armhf.deb : Device Services Package (use Git LFS)
- u-boot-spl.sfp : Stage 1 Boot Loader(U-boot-spl)
- u-boot.img : Stage 2 Boot Loader(U-boot)
+ examples/ : Example Programs
* debian8-rootfs-vanilla.tgz : Debian8 Root File System (use Git LFS)
* linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb : Linux Image Package (use Git LFS)
* linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb : Linux Headers Package (use Git LFS)
* fpga-soc-linux-drivers-4.12.13-armv7-fpga_0.0.7-1_armhf.deb : Device Drivers Package (use Git LFS)
* fpga-soc-linux-services_0.0.7-1_armhf.deb : Device Services Package (use Git LFS)

#### Format SD-Card

Expand All @@ -45,11 +47,12 @@ shell# mount /dev/sdc2 /mnt/usb2
shell# cp target/de0-nano-soc/boot/* /mnt/usb1
shell# dd if=target/de0-nano-soc/u-boot/u-boot-spl.sfp of=/dev/sdc3 bs=64k seek=0
shell# dd if=target/de0-nano-soc/u-boot/u-boot.img of=/dev/sdc3 bs=64k seek=4
shell# tar xfz debian8-rootfs-vanilla.tgz -C /mnt/usb2
shell# cp linux-image-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb /mnt/usb2/home/fpga
shell# cp linux-headers-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb /mnt/usb2/home/fpga
shell# cp fpga-soc-linux-drivers-4.8.17-armv7-fpga_0.0.5-1_armhf.deb /mnt/usb2/home/fpga
shell# cp fpga-soc-linux-services_0.0.5-1_armhf.deb /mnt/usb2/home/fpga
shell# tar xfz debian8-rootfs-vanilla.tgz -C /mnt/usb2
shell# cp linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb /mnt/usb2/home/fpga
shell# cp linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb /mnt/usb2/home/fpga
shell# cp fpga-soc-linux-drivers-4.12.13-armv7-fpga_0.0.7-1_armhf.deb /mnt/usb2/home/fpga
shell# cp fpga-soc-linux-services_0.0.7-1_armhf.deb /mnt/usb2/home/fpga
shell$ cp -r target/de0-nano-soc/examples /mnt/usb2/home/fpga
shell# umount mnt/usb1
shell# umount mnt/usb2
````
Expand Down
37 changes: 11 additions & 26 deletions doc/install/device-drivers.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### Install Device Drivers
### Install Device Drivers and Services

#### Boot ZYBO or DE0-Nano-SoC and login fpga or root user

Expand All @@ -21,30 +21,29 @@ root@debian-fpga:~#
#### Install Linux Headers Package

```
fpga@debian-fpga:~$ sudo dpkg -i linux-image-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb
fpga@debian-fpga:~$ sudo dpkg -i linux-headers-4.8.17-armv7-fpga_4.8.17-armv7-fpga-1_armhf.deb
fpga@debian-fpga:~$ sudo dpkg -i linux-image-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
fpga@debian-fpga:~$ sudo dpkg -i linux-headers-4.12.13-armv7-fpga_4.12.13-armv7-fpga-1_armhf.deb
```

#### Install Device Drivers and Services Package

```
fpga@debian-fpga:~$ sudo dpkg -i fpga-soc-linux-drivers-4.8.17-armv7-fpga_0.0.5-1_armhf.deb
Selecting previously unselected package fpga-soc-linux-drivers-4.8.17-armv7-fpga.
fpga@debian-fpga:~$ sudo dpkg -i fpga-soc-linux-drivers-4.12.13-armv7-fpga_0.0.7-1_armhf.deb
Selecting previously unselected package fpga-soc-linux-drivers-4.12.13-armv7-fpga.
(Reading database ... 39197 files and directories currently installed.)
Preparing to unpack fpga-soc-linux-drivers-4.8.17-armv7-fpga_0.0.5-1_armhf.deb ...
Unpacking fpga-soc-linux-drivers-4.8.17-armv7-fpga (0.0.5-1) ...
Setting up fpga-soc-linux-drivers-4.8.17-armv7-fpga (0.0.5-1) ...
Preparing to unpack fpga-soc-linux-drivers-4.12.13-armv7-fpga_0.0.7-1_armhf.deb ...
Unpacking fpga-soc-linux-drivers-4.12.13-armv7-fpga (0.0.7-1) ...
Setting up fpga-soc-linux-drivers-4.12.13-armv7-fpga (0.0.7-1) ...
```

```
fpga@debian-fpga:~$ sudo dpkg -i fpga-soc-linux-services_0.0.5-1_armhf.deb
fpga@debian-fpga:~$ sudo dpkg -i fpga-soc-linux-services_0.0.7-1_armhf.deb
Selecting previously unselected package fpga-soc-linux-services.
(Reading database ... 39210 files and directories currently installed.)
Preparing to unpack fpga-soc-linux-services_0.0.5-1_armhf.deb ...
Unpacking fpga-soc-linux-services (0.0.5-1) ...
Setting up fpga-soc-linux-services (0.0.5-1) ...
Unpacking fpga-soc-linux-services (0.0.7-1) ...
Setting up fpga-soc-linux-services (0.0.7-1) ...
Created symlink from /etc/systemd/system/multi-user.target.wants/device-tree-overlay.service to /etc/systemd/system/device-tree-overlay.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/fpga-manager.service to /etc/systemd/system/fpga-manager.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/udmabuf.service to /etc/systemd/system/udmabuf.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zptty.service to /etc/systemd/system/zptty.service.
```
Expand All @@ -56,7 +55,6 @@ fpga@debian-fpga:~$ sudo lsmod
Module Size Used by
zptty 8529 0
udmabuf 10177 0
fpgacfg 12287 0
dtbocfg 3200 2
```

Expand All @@ -72,19 +70,6 @@ fpga@debian-fpga:~$ sudo systemctl status device-tree-overlay.service
Feb 21 23:03:05 debian-fpga systemd[1]: Started Device Tree Overlay Service..
```

```
fpga@debian-fpga:~$ sudo systemctl status fpga-manager.service
● fpga-manager.service - FPGA Manager Service.
Loaded: loaded (/etc/systemd/system/fpga-manager.service; enabled)
Active: active (exited) since Tue 2017-02-21 23:03:06 JST; 3min 44s ago
Process: 1674 ExecStartPost=/usr/bin/fpgacfg-service.rb --install (code=exited, status=0/SUCCESS)
Process: 1671 ExecStart=/sbin/modprobe fpgacfg (code=exited, status=0/SUCCESS)
Main PID: 1671 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/fpga-manager.service
Feb 21 23:03:06 debian-fpga systemd[1]: Started FPGA Manager Service..
```

```
fpga@debian-fpga:~$ sudo systemctl status udmabuf.service
● udmabuf.service - User space mappable DMA Buffer Service.
Expand Down
Loading

0 comments on commit e93cdf3

Please sign in to comment.