SlideShare a Scribd company logo
Debian Linux on Zynq
Setup Flow
(Version March 2016 for Vivado 2015.4)
Shinya Takamaeda-Yamazaki
Nara Institute of Science and Technology (NAIST)
E-mail: shinya_at_is.naist.jp
Goal of this tutorial
n Constructing Zynq system with GPIO I/F and Debian Linux
l GPIO devices (LED and SW) are accessed from software on CPU
l (User IP can be added on PL part, if needed)
Shinya T-Y, NAIST 2
ARM
Core
L1
L2
DRAM
I/F
ARM
Core
L1
PS
PL
GPIO User IP
LED SW
FPGA
DRAM
GP
ACP HP
Setup flow for Debian Linux on Zynq
n Download and setup of FPGA board file (for Zybo)
n Hardware development on Vivado
n U-boot SPL and U-boot (only once)
n Linux kernel (only once) and device tree (only once)
n Debian root file system (only once)
n Setup SD card (only once)
n Boot from SD card
n CMA (Continuous memory allocator) driver (only once)
n Run test applications
n How to replace the bitstream
Shinya T-Y, NAIST 3
Reference platform
n FPGA board: Digilent Zybo (Zynq XC7Z010)
l Almost same flow can be applied to ZedBoard and ZC706
n FPGA tool: Xilinx Vivado 2015.4
l License is "Web Pack"
n Target OS: Debian 8.0 (Jessie)
n Host OS: Ubuntu 14.04
Shinya T-Y, NAIST 4
Download and setup FPGA board
file
Shinya T-Y, NAIST 5
FPGA board file for Zybo
n Zybo's board setting (I/O pins, …) is not included in Vivado.
Download and install it from Digilent web page
l https://reference.digilentinc.com/vivado:boardfiles/
l Follow the procedure on the web page
Shinya T-Y, NAIST 6
Install board file into Vivado system
n Unzip the download file and copy it into Vivado system
Shinya T-Y, NAIST 7
cp -a vivado-boardfiles-master/new/boardfiles/* ¥
/opt/Xilinx/Vivado/2015.4/data/boards/board_files/
Hardware development on
Vivado
Shinya T-Y, NAIST 8
Hardware development on Vivado
n Setup PATH
l If you use bash (default) or zsh
l If you use tcsh
n Create a working directory and launch Vivado
Shinya T-Y, NAIST 9
source /opt/Xilinx/Vivado/2015.4/settings64.sh
source /opt/Xilinx/Vivado/2015.4/settings64.csh
cd ~/
mkdir zybo_debian
mkdir zybo_debian/hw
cd zybo_debian/hw
vivado &
Create a new project
Shinya T-Y, NAIST 10
Shinya T-Y, NAIST 11
Shinya T-Y, NAIST 12
Shinya T-Y, NAIST 13
Shinya T-Y, NAIST 14
Shinya T-Y, NAIST 15
Shinya T-Y, NAIST 16
Shinya T-Y, NAIST 17
Select your board
Shinya T-Y, NAIST 18
Add a block design
Shinya T-Y, NAIST 19
Shinya T-Y, NAIST 20
Add IP
Shinya T-Y, NAIST 21
Add CPU
Shinya T-Y, NAIST 22
Add GPIO for LED and switch
Shinya T-Y, NAIST 23
Customize CPU
Shinya T-Y, NAIST 24
Double click
Connect to DRAM
Shinya T-Y, NAIST 25
Customize GPIO
Shinya T-Y, NAIST 26
Double click
Connect to LED and switches
Shinya T-Y, NAIST 27
Connect CPU and GPIO
Shinya T-Y, NAIST 28
Connect S_AXI and GPIO by auto
Shinya T-Y, NAIST 29
Connect LED and GPIO
Shinya T-Y, NAIST 30
Connect switches and GPIO2
Shinya T-Y, NAIST 31
Complete HW block design
Shinya T-Y, NAIST 32
Modify address value
Shinya T-Y, NAIST 33
0x43c0_0000 is recommended
Validate design
Shinya T-Y, NAIST 34
Create HDL wrapper
Shinya T-Y, NAIST 35
Then right click the block design,
and select "Create HDL Wrapper"
Shinya T-Y, NAIST 36
Generate Bitstream
Shinya T-Y, NAIST 37
Click "Generate Bitstream"
Bitstream has been Generated
Shinya T-Y, NAIST 38
Export Hardware with Bitstream (only once)
n This step is required only once for U-boot compilation
Shinya T-Y, NAIST 39
File -> Export -> Export Hardware
Export Hardware with Bitstream (only once)
Shinya T-Y, NAIST 40
Prepare "ps7_init_gpl.{c,h}" by using "hsi"
(only once, for Zybo)
n Go to the SDK directory
n Launch "hsi"
n Open HW design
n Generate application files
l Type this command in 1 line!
n Complete!
Shinya T-Y, NAIST 41
cd ~/zybo_debian/hw/zybo/zybo.sdk
hsi
open_hw_design zybo_wrapper.hdf
generate_app -hw zybo_wrapper -os standalone -proc
ps7_cortex9_0 -app zynq_fsbl -sw fsbl -dir zynq_fsbl
quit
Prepare "ps7_init_gpl.{c,h}" by using "hsi"
(only once, for Zybo)
n Example in PNG
n If you use Zybo or other special boards unlike ZedBoard
and ZC706, you must create ps7_init_gpl.*
l ps7_init_gpl.* for ZedBoard and ZC706 are already included in U-
boot as default
n Generated "ps7_init_gpl.{c,h}" files are used later for
building U-boot
Shinya T-Y, NAIST 42
Hardware development completed
n Your bitstream can be found at
zynq_debian/hw/zybo/zybo.runs/impl_1/zybo_wrapper.bit
n Copy the bitstream to somewhere (BOOT)
Shinya T-Y, NAIST 43
mkdir ~/zybo_debian/BOOT
cp ~/zybo_debian/hw/zybo/zybo.runs/impl_1/zybo_wrapper.bit ~/zybo_debian/BOOT
U-boot SPL and U-boot
Shinya T-Y, NAIST 44
Download U-boot and modify it
n Create a new working directory for software
n Clone from GitHub
n Checkout the tagged version for Vivado 2015.4
n Edit "zynq-common.h"
Shinya T-Y, NAIST 45
mkdir ~/zybo_debian/sw
cd ~/zybo_debian/sw
git clone https://github.com/Xilinx/u-boot-xlnx.git
emacs include/configs/zynq-common.h
cd u-boot-xlnx
git checkout xilinx-v2015.4
Edit "CONFIG_EXTRA_ENV_SETTINGS"
and "CONFIG_BOOTCOMMAND"
n CONFIG_EXTRA_ENV_SETTINGS
n CONFIG_BOOTCOMMAND
Shinya T-Y, NAIST 46
/* Default environment */
#define CONFIG_EXTRA_ENV_SETTINGS ¥
"fpgaload=load mmc 0 0x1000000 zynq.bit¥0 " ¥
"fpgaboot=fpga loadb 0 0x1000000 $filesize¥0 " ¥
"bootimage=uImage¥0" ¥
"fdtaddr=0x00000100¥0" ¥
"fdtimage=devicetree.dtb¥0" ¥
"loadaddr=0x8000¥0" ¥
"mmcloadcmd=fatload¥0" ¥
"mmcloadpart=1¥0" ¥
"mmcroot=/dev/mmcblk0p2¥0" ¥
"mmcload=mmc rescan; fatload mmc 0:1 ${loadaddr} ${bootimage}; fatload mmc 0:1 ${fdtaddr} ${fdtimage}¥0" ¥
"mmcboot=setenv bootargs console=ttyPS0,115200 root=${mmcroot} rw rootwait uio_pdrv_genirq.of_id=dmem-uio; bootm ${loadaddr} - ${fdtaddr}¥0" ¥
DFU_ALT_INFO
/* default boot is according to the bootmode switch settings */
#define CONFIG_BOOTCOMMAND "run fpgaload; run fpgaboot; run mmcload; run mmcboot"
Edit "CONFIG_EXTRA_ENV_SETTINGS"
and "CONFIG_BOOTCOMMAND"
n Example in PNG (Check carefully!)
Shinya T-Y, NAIST 47
Build U-boot
n Setup PATH
l If you use bash (default) or zsh
l If you use tcsh
n Setup some parameters
l If you use bash or zsh
l If you use tcsh
Shinya T-Y, NAIST 48
source /opt/Xilinx/Vivado/2015.4/settings64.sh
source /opt/Xilinx/Vivado/2015.4/settings64.csh
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export ARCH=arm
setenv CROSS_COMPILE arm-xilinx-linux-gnueabi-
setenv ARCH arm
Build U-boot
n If you use Zybo (or an other board that its fsbl software
source code is NOT included in "u-boot-xlnx/board/zynq/"),
copy "ps7_init_gpl.{c,h}" from SDK directory to "u-boot-
xlnx/board/xilinx/zynq/custom_hw_platform"
l Files for ZedBoard and ZC706 are included as default
You can find these files, such like
"u-boot-xlnx/board/xilinx/zynq/zed_hw_platform"
n At "u-boot-xlnx"
Shinya T-Y, NAIST 49
cp ~/zybo_debian/hw/zybo/zybo.sdk/ps7_init_gpl.* ¥
board/xilinx/zynq/custom_hw_platform
Build U-boot
n At u-boot-xlnx
l If you youse other boards, such as ZedBoard, please find its
corresponding config command at u-boo-xlnx/configs, such as
"configs/zynq_zed_defconfig"
n Then, make
Shinya T-Y, NAIST 50
make zynq_zybo_defconfig
make
Build U-boot
n Example in PNG
n "u-boot.img" and "boot.bin" have been generated
at u-boot-xlnx
Shinya T-Y, NAIST 51
U-boot has been successfully generated
n Copy two files into somewhere
n Boot order is
(1) U-boot SPL -> (2) U-boot -> (3) Linux Kernel
n Even if you want to change the hardware design, no build
of U-boot is required anymore
Shinya T-Y, NAIST 52
cp u-boot.img ~/zybo_debian/BOOT/
cp boot.bin ~/zybo_debian/BOOT/
Linux kernel
Shinya T-Y, NAIST 53
Download Linux kernel
n Move to the software directory
n Clone from GitHub
n Checkout the tagged version for Vivado 2015.4
Shinya T-Y, NAIST 54
cd ~/zybo_debian/sw
git clone https://github.com/Xilinx/linux-xlnx.git
cd linux-xlnx
git checkout xilinx-v2015.4.01
Edit device tree file
n Edit "zynz-zybo.dts"
l if you use other device, please find the
corresponding device tree file
in "linux-xlnx/arch/arm/boot/dts/"
n Edit it to add
UIO
(user-space I/O)
interfaces
Shinya T-Y, NAIST 55
emacs arch/arm/boot/dts/zynq-zybo.dts
axis0 {
compatible = "dmem-uio";
reg = < 0x43c00000 0x010000 >; // (address, size)
};
axis1 {
compatible = "dmem-uio";
reg = < 0x43c10000 0x010000 >; // (address, size)
};
axis2 {
compatible = "dmem-uio";
reg = < 0x43c20000 0x010000 >; // (address, size)
};
axis3 {
compatible = "dmem-uio";
reg = < 0x43c30000 0x010000 >; // (address, size)
};
axis4 {
compatible = "dmem-uio";
reg = < 0x43c40000 0x010000 >; // (address, size)
};
axis5 {
compatible = "dmem-uio";
reg = < 0x43c50000 0x010000 >; // (address, size)
};
axis6 {
compatible = "dmem-uio";
reg = < 0x43c60000 0x010000 >; // (address, size)
};
axis7 {
compatible = "dmem-uio";
reg = < 0x43c70000 0x010000 >; // (address, size)
};
Insert these lines
Configure the kernel options
n At linux-xlnx, load the default options
n Configure the kernel options by menuconfig
Shinya T-Y, NAIST 56
make xilinx_zynq_defconfig
make menuconfig
Device Drivers->
Shinya T-Y, NAIST 57
Device Drivers->Userspace I/O drivers
Shinya T-Y, NAIST 58
Enable UIO
Shinya T-Y, NAIST 59
Device Drivers->Generic Driver Options
Shinya T-Y, NAIST 60
Edit Size in Mega Bytes of CMA
Shinya T-Y, NAIST 61
Set 256
(Option) File systems->Network File
Systems
Shinya T-Y, NAIST 62
Check "linux-xlnx/.config"
n At linux-xlnx
n Especially, check the size of
CMA
Shinya T-Y, NAIST 63
less .config
Build Linux kernel and device tree
n Setup PATH
l If you use bash (default) or zsh
l If you use tcsh
n Build the kernel image and device tree
Shinya T-Y, NAIST 64
export PATH=~/zybo_debian/sw/u-boot-xlnx/tools:$PATH
make uImage LOADADDR=0x00008000
setenv PATH ~/zybo_debian/sw/u-boot-xlnx/tools:$PATH
Build Linux kernel and device tree
n Example in PNG
Shinya T-Y, NAIST 65
Linux kernel and device tree have been
successfully generated
n Copy uImage and zynq-zybo.dtb to somewhere
n Even if you want to change the hardware design, no build
of Linux kernel is required anymore
l Device tree should be modified, if you change different address
mapping
Shinya T-Y, NAIST 66
cp arch/arm/boot/uImage ~/zybo_debian/BOOT
cp arch/arm/boot/dts/zynq-zybo.dtb ~/zybo_debian/BOOT
Debian root file sytem
Shinya T-Y, NAIST 67
Setup environment
n Setup parameters (on bash)
n Build the root file system in $targetdir (= rootfs)
Shinya T-Y, NAIST 68
cd ~/zybo_debian
sudo apt-get install qemu-user-static debootstrap binfmt-support
export targetdir=rootfs
export distro=jessie
mkdir $targetdir
sudo debootstrap --arch=armhf --foreign $distro $targetdir
sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin
sudo cp /etc/resolv.conf $targetdir/etc
sudo chroot $targetdir
Build rootfs with QEMU
n Setup APT
Shinya T-Y, NAIST 69
distro=jessie
export LANG=C
/debootstrap/debootstrap --second-stage
cat <<EOT > /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian $distro main contrib non-free
deb-src http://ftp.jp.debian.org/debian $distro main contrib non-free
deb http://ftp.debian.org/debian $distro-updates main contrib non-free
deb-src http://ftp.debian.org/debian $distro-updates main contrib non-free
deb http://security.debian.org/debian-security $distro/updates main contrib non-free
deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free
EOT
cat << EOT > /etc/apt/apt.conf.d/71-no-recommends
APT::Install-Recommends "0";
APT::Install-Suggests "0";
EOT
Build rootfs with QEMU
n Install applications and setup root password
n IP address
Shinya T-Y, NAIST 70
apt-get update
apt-get install locales dialog
dpkg-reconfigure locales
apt-get install openssh-server ntpdate resolvconf sudo less hwinfo ntp tcsh zsh
passwd
echo <<EOT >> /etc/network/interfaces
auto eth0
iface eth0 inet static
hwaddress ether 00:0a:35:00:02:00
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
EOT
Build rootfs with QEMU
n resolve.conf
n sshd_config
l “PasswordAuthentication yes”
Shinya T-Y, NAIST 71
echo <<EOT >> /etc/resolv.conf
nameserver 192.168.0.1
EOT
vi /etc/ssh/sshd_config
Build rootfs with QEMU
n Add a new admin user
l Enter, enter, …
n Edit sudo user
l Edit like below
Shinya T-Y, NAIST 72
adduser username
editor=vi visudo
# User privilege specification
root ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) ALL
Build rootfs with QEMU
n ntp.conf
n Insert a new server (in my case "ntp.nict.jp")
Shinya T-Y, NAIST 73
vi /etc/ntp.conf
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
server ntp.nict.jp
Build rootfs with QEMU
n rc.local
n Insert 3 lines for NTP setup
Shinya T-Y, NAIST 74
vi /etc/rc.local
service ntp stop
ntpdate ntp.nict.jp
service ntp start
exit 0
Build rootfs with QEMU
n fstab
n Insert 1 line (to mount 1st partition of SD card)
n Create a new directory for 1st partition of SD card
Shinya T-Y, NAIST 75
vi /etc/fstab
/dev/mmcblk0p1 /sdcard auto defaults 0 0
mkdir sdcard
Build rootfs with QEMU
n Permission rule of /dev/uio (Userspace I/O)
n Permission rule of /dev/xdevconfig (Configuration port)
Shinya T-Y, NAIST 76
echo KERNEL=="uio*", MODE="0666",OWNER="root",GROUP="root" >> /etc/udev/rules.d/50-uio.rules
echo KERNEL=="xdevcfg", MODE="0666",OWNER="root",GROUP="root" >> /etc/udev/rules.d/50-xdevcfg.rules
Build rootfs with QEMU
n Hostname, etc.
n Install applications (if you need)
n Finish
Shinya T-Y, NAIST 77
echo debian-zynq > /etc/hostname
echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt1000 >> /etc/inittab
echo 127.0.0.1 debian-zynq >> /etc/hosts
apt-get install build-essential
apt-get install screen bash-completion time
apt-get install python python-pip python3 python3-pip
apt-get install nis nfs-common
exit
sudo rm -f $targetdir/usr/bin/qemu-arm-static
Setup SD card
Shinya T-Y, NAIST 78
Format SD card
n Prepare SD card (> 8GB)
n Install and launch gparted
n Setup 2 partitions
l BOOT (64MB, FAT32, with "bootable" flag)
ü 4MB empty space ahead
l rootfs (rest all, ext4)
Shinya T-Y, NAIST 79
sudo apt-get install gparted -y
sudo gparted &
empty
(4MB)
BOOT
(64MB, FAT32, bootable)
rootfs
(rest, ext4)
Copy the created files into the SD card
n Mount the formatted SD card
l /media/yourname/BOOT and /media/yourname/rootfs
n Copy bitstream, U-boot, Linux kernel, and device tree
n Copy rootfs
n Unmount BOOT and rootfs
Shinya T-Y, NAIST 80
cp ~/zybo_debian/BOOT/boot.bin /media/yourname/BOOT/
cp ~/zybo_debian/BOOT/u-boot.img /media/yourname/BOOT/
cp ~/zybo_debian/BOOT/zybo_wrapper.bit /media/yourname/BOOT/zynq.bit
cp ~/zybo_debian/BOOT/uImage /media/yourname/BOOT/
cp ~/zybo_debian/BOOT/zynq-zybo.dtb /media/yourname/BOOT/devicetree.dtb
sudo cp -a ~/zybo_debian/rootfs/* /media/yourname/rootfs/
Boot from SD card
Shinya T-Y, NAIST 81
Jumper pin (Zybo): Set SD boot
Shinya T-Y, NAIST 82
Jumper pin (ZedBoard)
Shinya T-Y, NAIST 83
Boot system from SD card
n Connect Zybo to network
l Or connect UART port to the host PC
n Insert SD card and power-on
n Login via SSH (type password)
n Or login via UART: type username and password
Shinya T-Y, NAIST 84
ssh username192.168.0.100
Time zone and locale
n Change the time zone
l In my case, Asia -> Tokyo
n Change the locale
l Select "en_US.UTF-8", "ja_JP.UTF-8", and "ja_JP.EUC-JP"
l Then select "en_US.UTF-8" as default
n Reboot
Shinya T-Y, NAIST 85
(on zynq) sudo dpkg-reconfigure tzdata
(on zynq) sudo dpkg-reconfigure locales
(on zynq) sudo reboot
CMA (Continuous memory
allocator) driver
Shinya T-Y, NAIST 86
Copy linux-xlnx into the SD card
n Mount the formatted SD card
l /media/yourname/BOOT and /media/yourname/rootfs
n Copy linux-xlnx into rootfs
n Create symbolic link to "linux"
n Download "udmabuf" from GitHub
n Remove SD card and boot again from SD card
Shinya T-Y, NAIST 87
sudo cp -a ~/zybo_debian/sw/linux-xlnx /media/yourname/rootfs/usr/src/linux
sudo ln -s /media/yourname/rootfs/usr/src/linux /media/yourname/rootfs/usr/src/kernel
git clone https://github.com/shtaxxx/udmabuf.git
sudo mkdir /media/yourname/rootfs/drivers
sudo cp -a udmabuf /media/yourname/rootfs/drivers/
Build CMA driver
n Login
n Compile kernel modules
n Compile CMA driver
Shinya T-Y, NAIST 88
(on zynq) cd /usr/src/kernel
(on zynq) sudo make modules_prepare
(on zynq) cd /drivers/udmabuf
(on zynq) sudo make
(on zynq) sudo cp udmabuf.ko /drivers/
(on zynq) sudo cp settings/setup_udmabuf.sh /drivers/
Modify /etc/rc.local for CMA driver
n Edit /etc/rc.local
n Insert 1 line before "exit 0"
n Reboot
Shinya T-Y, NAIST 89
sh /drivers/setup_udmabuf.sh
exit 0
(on zynq) sudo vi /etc/rc.local
(on zynq) sudo reboot
Run test applications
Shinya T-Y, NAIST 90
Download applications and library
n Download "zynq-linux" from GitHub
n Copy zynq-linux to Zynq system
l Type password
n Login on Zynq and go to zynq-linux/sample
Shinya T-Y, NAIST 91
(on zynq) cd zynq-linux/sample
git clone https://github.com/PyHDI/zynq-linux.git
scp -r zynq-linux username@192.168.0.100
Run GPIO test
n Compile "axis_test.c" and run it
l LED pattern is changed
l The value of switches is read
Shinya T-Y, NAIST 92
(on zynq) gcc -O2 -I ../lib/ -o axis.out axis_test.c
(on zynq) ./axis.out 15
write: 15
read: 1
Run CMA test
n Compile "cma_test.c" and run it
n RUN MODE 0: No CMA
n RUN MODE 1-3: CMA
l 1: Cache Enabled
l 2: Cache Disabled
l 3: Cache Disabled, Write-merged
Shinya T-Y, NAIST 93
(on zynq) gcc -O2 -I ../lib/ -o cma.out cma_test.c
(on zynq) ./cma.out 10000000 0
(on zynq) ./cma.out 10000000 1
(on zynq) ./cma.out 10000000 2
(on zynq) ./cma.out 10000000 3
How to replace the bitstream
Shinya T-Y, NAIST 94
Method1: Replace zynq.bit in /sdcard/
n The bitstream on SD card can be replaced on host PC
n Since 1st partition of SD card is mounted on /sdcard/, the
bistream can be replaced directly by Zynq software
n No modifications of U-boot and Linux kernel are required
n If you don't chage the address mapping for GPIO, no
modification of device tree is required
Shinya T-Y, NAIST 95
(on zynq) sudo cp new_zynq.bit /sdcard/zynq.bit
(on zynq) sudo reboot
Method2: Reconfigure via /dev/xdevcfg
n Logic part (PL) can be dynamically changed from SW
n If you change the CPU settings, such as frequency, port
configuration, etc., this flow is not perfect.
Replace "zynq.bit" on SD card and reboot, instead of this
flow
Shinya T-Y, NAIST 96
(on zynq) cat new_zynq.bit > /dev/xdevcfg
Reference
Shinya T-Y, NAIST 97
Reference
n Yet Another Guide to Running Linaro Ubuntu Linux Desktop
on Xilinx Zynq on the ZedBoard
l https://fpgacpu.wordpress.com/2013/05/24/yet-another-guide-to-
running-linaro-ubuntu-desktop-on-xilinx-zynq-on-the-zedboard/
n Building a pure Debian armhf rootfs
l https://blog.night-shade.org.uk/2013/12/building-a-pure-debian-
armhf-rootfs/
n FPGA Magazine (No.12, March 2016)
l http://www.kumikomi.net/fpga/contents/0012.php
Shinya T-Y, NAIST 98

More Related Content

What's hot

Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Emertxe Information Technologies Pvt Ltd
 
Understanding iptables
Understanding iptablesUnderstanding iptables
Understanding iptables
Denys Haryachyy
 
Revisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIORevisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIO
Hisaki Ohara
 
Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4
Zach Pfeffer
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
Mr. Vengineer
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
Linaro
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
narusugimoto
 
Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image艾鍗科技
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
Netronome
 
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
Mr. Vengineer
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
SUSE Labs Taipei
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
National Cheng Kung University
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
heut2008
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
Linaro
 
2018 Genivi Xen Overview Nov Update
2018 Genivi Xen Overview Nov Update2018 Genivi Xen Overview Nov Update
2018 Genivi Xen Overview Nov Update
The Linux Foundation
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 

What's hot (20)

Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Understanding iptables
Understanding iptablesUnderstanding iptables
Understanding iptables
 
Revisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIORevisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIO
 
Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareHKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Zynq + Vivado HLS入門
Zynq + Vivado HLS入門Zynq + Vivado HLS入門
Zynq + Vivado HLS入門
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
 
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zunEnable DPDK and SR-IOV for containerized virtual network functions with zun
Enable DPDK and SR-IOV for containerized virtual network functions with zun
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
2018 Genivi Xen Overview Nov Update
2018 Genivi Xen Overview Nov Update2018 Genivi Xen Overview Nov Update
2018 Genivi Xen Overview Nov Update
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 

Similar to Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)

Basic Linux kernel
Basic Linux kernelBasic Linux kernel
Basic Linux kernel
Morteza Nourelahi Alamdari
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
linuxlab_conf
 
pcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunpcDuino Presentation at SparkFun
pcDuino Presentation at SparkFun
Jingfeng Liu
 
Nix: What even is it though?
Nix: What even is it though?Nix: What even is it though?
Nix: What even is it though?
Burke Libbey
 
Introduction to pcDuino
Introduction to pcDuinoIntroduction to pcDuino
Introduction to pcDuino
Jingfeng Liu
 
Linux
LinuxLinux
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
videos
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoCMacpaul Lin
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
晓东 杜
 
Debug generic process
Debug generic processDebug generic process
Debug generic process
Vipin Varghese
 
Andresen 8 21 02
Andresen 8 21 02Andresen 8 21 02
Andresen 8 21 02
FNian
 
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库maclean liu
 
Introduction to Diskless Remote Boot in Linux
Introduction to Diskless Remote Boot in LinuxIntroduction to Diskless Remote Boot in Linux
Introduction to Diskless Remote Boot in LinuxJazz Yao-Tsung Wang
 
Utft
UtftUtft
Utft
Joc LM
 
NetBSD workshop
NetBSD workshopNetBSD workshop
NetBSD workshop
Jun Ebihara
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
Dobrica Pavlinušić
 
Embedding Qt
Embedding QtEmbedding Qt
Embedding Qt
FSCONS
 
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios CoreNrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nagios
 
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
Marc Trimble
 

Similar to Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4) (20)

Basic Linux kernel
Basic Linux kernelBasic Linux kernel
Basic Linux kernel
 
Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
 
pcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunpcDuino Presentation at SparkFun
pcDuino Presentation at SparkFun
 
Nix: What even is it though?
Nix: What even is it though?Nix: What even is it though?
Nix: What even is it though?
 
Introduction to pcDuino
Introduction to pcDuinoIntroduction to pcDuino
Introduction to pcDuino
 
Linux
LinuxLinux
Linux
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
 
Embedded Android
Embedded AndroidEmbedded Android
Embedded Android
 
Debug generic process
Debug generic processDebug generic process
Debug generic process
 
Andresen 8 21 02
Andresen 8 21 02Andresen 8 21 02
Andresen 8 21 02
 
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
图文详解安装Net backup 6.5备份恢复oracle 10g rac 数据库
 
Introduction to Diskless Remote Boot in Linux
Introduction to Diskless Remote Boot in LinuxIntroduction to Diskless Remote Boot in Linux
Introduction to Diskless Remote Boot in Linux
 
Utft
UtftUtft
Utft
 
NetBSD workshop
NetBSD workshopNetBSD workshop
NetBSD workshop
 
unix-rosetta
unix-rosettaunix-rosetta
unix-rosetta
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
 
Embedding Qt
Embedding QtEmbedding Qt
Embedding Qt
 
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios CoreNrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
Nrpe - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core
 
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.
 

More from Shinya Takamaeda-Y

オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
Shinya Takamaeda-Y
 
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモDNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
Shinya Takamaeda-Y
 
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
Shinya Takamaeda-Y
 
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Shinya Takamaeda-Y
 
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Shinya Takamaeda-Y
 
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Shinya Takamaeda-Y
 
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
Shinya Takamaeda-Y
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
Shinya Takamaeda-Y
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミング
Shinya Takamaeda-Y
 
マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討
Shinya Takamaeda-Y
 
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Shinya Takamaeda-Y
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
 
A CGRA-based Approach for Accelerating Convolutional Neural Networks
A CGRA-based Approachfor Accelerating Convolutional Neural NetworksA CGRA-based Approachfor Accelerating Convolutional Neural Networks
A CGRA-based Approach for Accelerating Convolutional Neural Networks
Shinya Takamaeda-Y
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
Shinya Takamaeda-Y
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Shinya Takamaeda-Y
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
Shinya Takamaeda-Y
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
Shinya Takamaeda-Y
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
Shinya Takamaeda-Y
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
Shinya Takamaeda-Y
 

More from Shinya Takamaeda-Y (20)

オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモDNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
DNNのモデル特化ハードウェアを生成するオープンソースコンパイラNNgenのデモ
 
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
ディープニューラルネットワーク向け拡張可能な高位合成コンパイラの開発
 
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
Veriloggen.Stream: データフローからハードウェアを作る(2018年3月3日 高位合成友の会 第5回 @東京工業大学)
 
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
Veriloggen.Thread & Stream: 最高性能FPGAコンピューティングを 目指したミックスドパラダイム型高位合成 (FPGAX 201...
 
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
Pythonによるカスタム可能な高位設計技術 (Design Solution Forum 2016@新横浜)
 
ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)ゆるふわコンピュータ (IPSJ-ONE2017)
ゆるふわコンピュータ (IPSJ-ONE2017)
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
PythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミングPythonとVeriloggenを用いたRTL設計メタプログラミング
PythonとVeriloggenを用いたRTL設計メタプログラミング
 
マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討マルチパラダイム型高水準ハードウェア設計環境の検討
マルチパラダイム型高水準ハードウェア設計環境の検討
 
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
Veriloggen: Pythonによるハードウェアメタプログラミング(第3回 高位合成友の会 @ドワンゴ)
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
A CGRA-based Approach for Accelerating Convolutional Neural Networks
A CGRA-based Approachfor Accelerating Convolutional Neural NetworksA CGRA-based Approachfor Accelerating Convolutional Neural Networks
A CGRA-based Approach for Accelerating Convolutional Neural Networks
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
 
Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門Zynq+PyCoRAM(+Debian)入門
Zynq+PyCoRAM(+Debian)入門
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
 
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
PyCoRAM (高位合成友の会@ドワンゴ, 2015年1月16日)
 

Recently uploaded

Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 

Recently uploaded (20)

Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 

Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)

  • 1. Debian Linux on Zynq Setup Flow (Version March 2016 for Vivado 2015.4) Shinya Takamaeda-Yamazaki Nara Institute of Science and Technology (NAIST) E-mail: shinya_at_is.naist.jp
  • 2. Goal of this tutorial n Constructing Zynq system with GPIO I/F and Debian Linux l GPIO devices (LED and SW) are accessed from software on CPU l (User IP can be added on PL part, if needed) Shinya T-Y, NAIST 2 ARM Core L1 L2 DRAM I/F ARM Core L1 PS PL GPIO User IP LED SW FPGA DRAM GP ACP HP
  • 3. Setup flow for Debian Linux on Zynq n Download and setup of FPGA board file (for Zybo) n Hardware development on Vivado n U-boot SPL and U-boot (only once) n Linux kernel (only once) and device tree (only once) n Debian root file system (only once) n Setup SD card (only once) n Boot from SD card n CMA (Continuous memory allocator) driver (only once) n Run test applications n How to replace the bitstream Shinya T-Y, NAIST 3
  • 4. Reference platform n FPGA board: Digilent Zybo (Zynq XC7Z010) l Almost same flow can be applied to ZedBoard and ZC706 n FPGA tool: Xilinx Vivado 2015.4 l License is "Web Pack" n Target OS: Debian 8.0 (Jessie) n Host OS: Ubuntu 14.04 Shinya T-Y, NAIST 4
  • 5. Download and setup FPGA board file Shinya T-Y, NAIST 5
  • 6. FPGA board file for Zybo n Zybo's board setting (I/O pins, …) is not included in Vivado. Download and install it from Digilent web page l https://reference.digilentinc.com/vivado:boardfiles/ l Follow the procedure on the web page Shinya T-Y, NAIST 6
  • 7. Install board file into Vivado system n Unzip the download file and copy it into Vivado system Shinya T-Y, NAIST 7 cp -a vivado-boardfiles-master/new/boardfiles/* ¥ /opt/Xilinx/Vivado/2015.4/data/boards/board_files/
  • 9. Hardware development on Vivado n Setup PATH l If you use bash (default) or zsh l If you use tcsh n Create a working directory and launch Vivado Shinya T-Y, NAIST 9 source /opt/Xilinx/Vivado/2015.4/settings64.sh source /opt/Xilinx/Vivado/2015.4/settings64.csh cd ~/ mkdir zybo_debian mkdir zybo_debian/hw cd zybo_debian/hw vivado &
  • 10. Create a new project Shinya T-Y, NAIST 10
  • 17. Shinya T-Y, NAIST 17 Select your board
  • 19. Add a block design Shinya T-Y, NAIST 19
  • 21. Add IP Shinya T-Y, NAIST 21
  • 23. Add GPIO for LED and switch Shinya T-Y, NAIST 23
  • 24. Customize CPU Shinya T-Y, NAIST 24 Double click
  • 25. Connect to DRAM Shinya T-Y, NAIST 25
  • 26. Customize GPIO Shinya T-Y, NAIST 26 Double click
  • 27. Connect to LED and switches Shinya T-Y, NAIST 27
  • 28. Connect CPU and GPIO Shinya T-Y, NAIST 28
  • 29. Connect S_AXI and GPIO by auto Shinya T-Y, NAIST 29
  • 30. Connect LED and GPIO Shinya T-Y, NAIST 30
  • 31. Connect switches and GPIO2 Shinya T-Y, NAIST 31
  • 32. Complete HW block design Shinya T-Y, NAIST 32
  • 33. Modify address value Shinya T-Y, NAIST 33 0x43c0_0000 is recommended
  • 35. Create HDL wrapper Shinya T-Y, NAIST 35 Then right click the block design, and select "Create HDL Wrapper"
  • 37. Generate Bitstream Shinya T-Y, NAIST 37 Click "Generate Bitstream"
  • 38. Bitstream has been Generated Shinya T-Y, NAIST 38
  • 39. Export Hardware with Bitstream (only once) n This step is required only once for U-boot compilation Shinya T-Y, NAIST 39 File -> Export -> Export Hardware
  • 40. Export Hardware with Bitstream (only once) Shinya T-Y, NAIST 40
  • 41. Prepare "ps7_init_gpl.{c,h}" by using "hsi" (only once, for Zybo) n Go to the SDK directory n Launch "hsi" n Open HW design n Generate application files l Type this command in 1 line! n Complete! Shinya T-Y, NAIST 41 cd ~/zybo_debian/hw/zybo/zybo.sdk hsi open_hw_design zybo_wrapper.hdf generate_app -hw zybo_wrapper -os standalone -proc ps7_cortex9_0 -app zynq_fsbl -sw fsbl -dir zynq_fsbl quit
  • 42. Prepare "ps7_init_gpl.{c,h}" by using "hsi" (only once, for Zybo) n Example in PNG n If you use Zybo or other special boards unlike ZedBoard and ZC706, you must create ps7_init_gpl.* l ps7_init_gpl.* for ZedBoard and ZC706 are already included in U- boot as default n Generated "ps7_init_gpl.{c,h}" files are used later for building U-boot Shinya T-Y, NAIST 42
  • 43. Hardware development completed n Your bitstream can be found at zynq_debian/hw/zybo/zybo.runs/impl_1/zybo_wrapper.bit n Copy the bitstream to somewhere (BOOT) Shinya T-Y, NAIST 43 mkdir ~/zybo_debian/BOOT cp ~/zybo_debian/hw/zybo/zybo.runs/impl_1/zybo_wrapper.bit ~/zybo_debian/BOOT
  • 44. U-boot SPL and U-boot Shinya T-Y, NAIST 44
  • 45. Download U-boot and modify it n Create a new working directory for software n Clone from GitHub n Checkout the tagged version for Vivado 2015.4 n Edit "zynq-common.h" Shinya T-Y, NAIST 45 mkdir ~/zybo_debian/sw cd ~/zybo_debian/sw git clone https://github.com/Xilinx/u-boot-xlnx.git emacs include/configs/zynq-common.h cd u-boot-xlnx git checkout xilinx-v2015.4
  • 46. Edit "CONFIG_EXTRA_ENV_SETTINGS" and "CONFIG_BOOTCOMMAND" n CONFIG_EXTRA_ENV_SETTINGS n CONFIG_BOOTCOMMAND Shinya T-Y, NAIST 46 /* Default environment */ #define CONFIG_EXTRA_ENV_SETTINGS ¥ "fpgaload=load mmc 0 0x1000000 zynq.bit¥0 " ¥ "fpgaboot=fpga loadb 0 0x1000000 $filesize¥0 " ¥ "bootimage=uImage¥0" ¥ "fdtaddr=0x00000100¥0" ¥ "fdtimage=devicetree.dtb¥0" ¥ "loadaddr=0x8000¥0" ¥ "mmcloadcmd=fatload¥0" ¥ "mmcloadpart=1¥0" ¥ "mmcroot=/dev/mmcblk0p2¥0" ¥ "mmcload=mmc rescan; fatload mmc 0:1 ${loadaddr} ${bootimage}; fatload mmc 0:1 ${fdtaddr} ${fdtimage}¥0" ¥ "mmcboot=setenv bootargs console=ttyPS0,115200 root=${mmcroot} rw rootwait uio_pdrv_genirq.of_id=dmem-uio; bootm ${loadaddr} - ${fdtaddr}¥0" ¥ DFU_ALT_INFO /* default boot is according to the bootmode switch settings */ #define CONFIG_BOOTCOMMAND "run fpgaload; run fpgaboot; run mmcload; run mmcboot"
  • 47. Edit "CONFIG_EXTRA_ENV_SETTINGS" and "CONFIG_BOOTCOMMAND" n Example in PNG (Check carefully!) Shinya T-Y, NAIST 47
  • 48. Build U-boot n Setup PATH l If you use bash (default) or zsh l If you use tcsh n Setup some parameters l If you use bash or zsh l If you use tcsh Shinya T-Y, NAIST 48 source /opt/Xilinx/Vivado/2015.4/settings64.sh source /opt/Xilinx/Vivado/2015.4/settings64.csh export CROSS_COMPILE=arm-xilinx-linux-gnueabi- export ARCH=arm setenv CROSS_COMPILE arm-xilinx-linux-gnueabi- setenv ARCH arm
  • 49. Build U-boot n If you use Zybo (or an other board that its fsbl software source code is NOT included in "u-boot-xlnx/board/zynq/"), copy "ps7_init_gpl.{c,h}" from SDK directory to "u-boot- xlnx/board/xilinx/zynq/custom_hw_platform" l Files for ZedBoard and ZC706 are included as default You can find these files, such like "u-boot-xlnx/board/xilinx/zynq/zed_hw_platform" n At "u-boot-xlnx" Shinya T-Y, NAIST 49 cp ~/zybo_debian/hw/zybo/zybo.sdk/ps7_init_gpl.* ¥ board/xilinx/zynq/custom_hw_platform
  • 50. Build U-boot n At u-boot-xlnx l If you youse other boards, such as ZedBoard, please find its corresponding config command at u-boo-xlnx/configs, such as "configs/zynq_zed_defconfig" n Then, make Shinya T-Y, NAIST 50 make zynq_zybo_defconfig make
  • 51. Build U-boot n Example in PNG n "u-boot.img" and "boot.bin" have been generated at u-boot-xlnx Shinya T-Y, NAIST 51
  • 52. U-boot has been successfully generated n Copy two files into somewhere n Boot order is (1) U-boot SPL -> (2) U-boot -> (3) Linux Kernel n Even if you want to change the hardware design, no build of U-boot is required anymore Shinya T-Y, NAIST 52 cp u-boot.img ~/zybo_debian/BOOT/ cp boot.bin ~/zybo_debian/BOOT/
  • 54. Download Linux kernel n Move to the software directory n Clone from GitHub n Checkout the tagged version for Vivado 2015.4 Shinya T-Y, NAIST 54 cd ~/zybo_debian/sw git clone https://github.com/Xilinx/linux-xlnx.git cd linux-xlnx git checkout xilinx-v2015.4.01
  • 55. Edit device tree file n Edit "zynz-zybo.dts" l if you use other device, please find the corresponding device tree file in "linux-xlnx/arch/arm/boot/dts/" n Edit it to add UIO (user-space I/O) interfaces Shinya T-Y, NAIST 55 emacs arch/arm/boot/dts/zynq-zybo.dts axis0 { compatible = "dmem-uio"; reg = < 0x43c00000 0x010000 >; // (address, size) }; axis1 { compatible = "dmem-uio"; reg = < 0x43c10000 0x010000 >; // (address, size) }; axis2 { compatible = "dmem-uio"; reg = < 0x43c20000 0x010000 >; // (address, size) }; axis3 { compatible = "dmem-uio"; reg = < 0x43c30000 0x010000 >; // (address, size) }; axis4 { compatible = "dmem-uio"; reg = < 0x43c40000 0x010000 >; // (address, size) }; axis5 { compatible = "dmem-uio"; reg = < 0x43c50000 0x010000 >; // (address, size) }; axis6 { compatible = "dmem-uio"; reg = < 0x43c60000 0x010000 >; // (address, size) }; axis7 { compatible = "dmem-uio"; reg = < 0x43c70000 0x010000 >; // (address, size) }; Insert these lines
  • 56. Configure the kernel options n At linux-xlnx, load the default options n Configure the kernel options by menuconfig Shinya T-Y, NAIST 56 make xilinx_zynq_defconfig make menuconfig
  • 58. Device Drivers->Userspace I/O drivers Shinya T-Y, NAIST 58
  • 60. Device Drivers->Generic Driver Options Shinya T-Y, NAIST 60
  • 61. Edit Size in Mega Bytes of CMA Shinya T-Y, NAIST 61 Set 256
  • 62. (Option) File systems->Network File Systems Shinya T-Y, NAIST 62
  • 63. Check "linux-xlnx/.config" n At linux-xlnx n Especially, check the size of CMA Shinya T-Y, NAIST 63 less .config
  • 64. Build Linux kernel and device tree n Setup PATH l If you use bash (default) or zsh l If you use tcsh n Build the kernel image and device tree Shinya T-Y, NAIST 64 export PATH=~/zybo_debian/sw/u-boot-xlnx/tools:$PATH make uImage LOADADDR=0x00008000 setenv PATH ~/zybo_debian/sw/u-boot-xlnx/tools:$PATH
  • 65. Build Linux kernel and device tree n Example in PNG Shinya T-Y, NAIST 65
  • 66. Linux kernel and device tree have been successfully generated n Copy uImage and zynq-zybo.dtb to somewhere n Even if you want to change the hardware design, no build of Linux kernel is required anymore l Device tree should be modified, if you change different address mapping Shinya T-Y, NAIST 66 cp arch/arm/boot/uImage ~/zybo_debian/BOOT cp arch/arm/boot/dts/zynq-zybo.dtb ~/zybo_debian/BOOT
  • 67. Debian root file sytem Shinya T-Y, NAIST 67
  • 68. Setup environment n Setup parameters (on bash) n Build the root file system in $targetdir (= rootfs) Shinya T-Y, NAIST 68 cd ~/zybo_debian sudo apt-get install qemu-user-static debootstrap binfmt-support export targetdir=rootfs export distro=jessie mkdir $targetdir sudo debootstrap --arch=armhf --foreign $distro $targetdir sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin sudo cp /etc/resolv.conf $targetdir/etc sudo chroot $targetdir
  • 69. Build rootfs with QEMU n Setup APT Shinya T-Y, NAIST 69 distro=jessie export LANG=C /debootstrap/debootstrap --second-stage cat <<EOT > /etc/apt/sources.list deb http://ftp.jp.debian.org/debian $distro main contrib non-free deb-src http://ftp.jp.debian.org/debian $distro main contrib non-free deb http://ftp.debian.org/debian $distro-updates main contrib non-free deb-src http://ftp.debian.org/debian $distro-updates main contrib non-free deb http://security.debian.org/debian-security $distro/updates main contrib non-free deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free EOT cat << EOT > /etc/apt/apt.conf.d/71-no-recommends APT::Install-Recommends "0"; APT::Install-Suggests "0"; EOT
  • 70. Build rootfs with QEMU n Install applications and setup root password n IP address Shinya T-Y, NAIST 70 apt-get update apt-get install locales dialog dpkg-reconfigure locales apt-get install openssh-server ntpdate resolvconf sudo less hwinfo ntp tcsh zsh passwd echo <<EOT >> /etc/network/interfaces auto eth0 iface eth0 inet static hwaddress ether 00:0a:35:00:02:00 address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 dns-nameservers 192.168.0.1 EOT
  • 71. Build rootfs with QEMU n resolve.conf n sshd_config l “PasswordAuthentication yes” Shinya T-Y, NAIST 71 echo <<EOT >> /etc/resolv.conf nameserver 192.168.0.1 EOT vi /etc/ssh/sshd_config
  • 72. Build rootfs with QEMU n Add a new admin user l Enter, enter, … n Edit sudo user l Edit like below Shinya T-Y, NAIST 72 adduser username editor=vi visudo # User privilege specification root ALL=(ALL:ALL) ALL username ALL=(ALL:ALL) ALL
  • 73. Build rootfs with QEMU n ntp.conf n Insert a new server (in my case "ntp.nict.jp") Shinya T-Y, NAIST 73 vi /etc/ntp.conf #server 0.debian.pool.ntp.org iburst #server 1.debian.pool.ntp.org iburst #server 2.debian.pool.ntp.org iburst #server 3.debian.pool.ntp.org iburst server ntp.nict.jp
  • 74. Build rootfs with QEMU n rc.local n Insert 3 lines for NTP setup Shinya T-Y, NAIST 74 vi /etc/rc.local service ntp stop ntpdate ntp.nict.jp service ntp start exit 0
  • 75. Build rootfs with QEMU n fstab n Insert 1 line (to mount 1st partition of SD card) n Create a new directory for 1st partition of SD card Shinya T-Y, NAIST 75 vi /etc/fstab /dev/mmcblk0p1 /sdcard auto defaults 0 0 mkdir sdcard
  • 76. Build rootfs with QEMU n Permission rule of /dev/uio (Userspace I/O) n Permission rule of /dev/xdevconfig (Configuration port) Shinya T-Y, NAIST 76 echo KERNEL=="uio*", MODE="0666",OWNER="root",GROUP="root" >> /etc/udev/rules.d/50-uio.rules echo KERNEL=="xdevcfg", MODE="0666",OWNER="root",GROUP="root" >> /etc/udev/rules.d/50-xdevcfg.rules
  • 77. Build rootfs with QEMU n Hostname, etc. n Install applications (if you need) n Finish Shinya T-Y, NAIST 77 echo debian-zynq > /etc/hostname echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt1000 >> /etc/inittab echo 127.0.0.1 debian-zynq >> /etc/hosts apt-get install build-essential apt-get install screen bash-completion time apt-get install python python-pip python3 python3-pip apt-get install nis nfs-common exit sudo rm -f $targetdir/usr/bin/qemu-arm-static
  • 78. Setup SD card Shinya T-Y, NAIST 78
  • 79. Format SD card n Prepare SD card (> 8GB) n Install and launch gparted n Setup 2 partitions l BOOT (64MB, FAT32, with "bootable" flag) ü 4MB empty space ahead l rootfs (rest all, ext4) Shinya T-Y, NAIST 79 sudo apt-get install gparted -y sudo gparted & empty (4MB) BOOT (64MB, FAT32, bootable) rootfs (rest, ext4)
  • 80. Copy the created files into the SD card n Mount the formatted SD card l /media/yourname/BOOT and /media/yourname/rootfs n Copy bitstream, U-boot, Linux kernel, and device tree n Copy rootfs n Unmount BOOT and rootfs Shinya T-Y, NAIST 80 cp ~/zybo_debian/BOOT/boot.bin /media/yourname/BOOT/ cp ~/zybo_debian/BOOT/u-boot.img /media/yourname/BOOT/ cp ~/zybo_debian/BOOT/zybo_wrapper.bit /media/yourname/BOOT/zynq.bit cp ~/zybo_debian/BOOT/uImage /media/yourname/BOOT/ cp ~/zybo_debian/BOOT/zynq-zybo.dtb /media/yourname/BOOT/devicetree.dtb sudo cp -a ~/zybo_debian/rootfs/* /media/yourname/rootfs/
  • 81. Boot from SD card Shinya T-Y, NAIST 81
  • 82. Jumper pin (Zybo): Set SD boot Shinya T-Y, NAIST 82
  • 84. Boot system from SD card n Connect Zybo to network l Or connect UART port to the host PC n Insert SD card and power-on n Login via SSH (type password) n Or login via UART: type username and password Shinya T-Y, NAIST 84 ssh username192.168.0.100
  • 85. Time zone and locale n Change the time zone l In my case, Asia -> Tokyo n Change the locale l Select "en_US.UTF-8", "ja_JP.UTF-8", and "ja_JP.EUC-JP" l Then select "en_US.UTF-8" as default n Reboot Shinya T-Y, NAIST 85 (on zynq) sudo dpkg-reconfigure tzdata (on zynq) sudo dpkg-reconfigure locales (on zynq) sudo reboot
  • 86. CMA (Continuous memory allocator) driver Shinya T-Y, NAIST 86
  • 87. Copy linux-xlnx into the SD card n Mount the formatted SD card l /media/yourname/BOOT and /media/yourname/rootfs n Copy linux-xlnx into rootfs n Create symbolic link to "linux" n Download "udmabuf" from GitHub n Remove SD card and boot again from SD card Shinya T-Y, NAIST 87 sudo cp -a ~/zybo_debian/sw/linux-xlnx /media/yourname/rootfs/usr/src/linux sudo ln -s /media/yourname/rootfs/usr/src/linux /media/yourname/rootfs/usr/src/kernel git clone https://github.com/shtaxxx/udmabuf.git sudo mkdir /media/yourname/rootfs/drivers sudo cp -a udmabuf /media/yourname/rootfs/drivers/
  • 88. Build CMA driver n Login n Compile kernel modules n Compile CMA driver Shinya T-Y, NAIST 88 (on zynq) cd /usr/src/kernel (on zynq) sudo make modules_prepare (on zynq) cd /drivers/udmabuf (on zynq) sudo make (on zynq) sudo cp udmabuf.ko /drivers/ (on zynq) sudo cp settings/setup_udmabuf.sh /drivers/
  • 89. Modify /etc/rc.local for CMA driver n Edit /etc/rc.local n Insert 1 line before "exit 0" n Reboot Shinya T-Y, NAIST 89 sh /drivers/setup_udmabuf.sh exit 0 (on zynq) sudo vi /etc/rc.local (on zynq) sudo reboot
  • 91. Download applications and library n Download "zynq-linux" from GitHub n Copy zynq-linux to Zynq system l Type password n Login on Zynq and go to zynq-linux/sample Shinya T-Y, NAIST 91 (on zynq) cd zynq-linux/sample git clone https://github.com/PyHDI/zynq-linux.git scp -r zynq-linux username@192.168.0.100
  • 92. Run GPIO test n Compile "axis_test.c" and run it l LED pattern is changed l The value of switches is read Shinya T-Y, NAIST 92 (on zynq) gcc -O2 -I ../lib/ -o axis.out axis_test.c (on zynq) ./axis.out 15 write: 15 read: 1
  • 93. Run CMA test n Compile "cma_test.c" and run it n RUN MODE 0: No CMA n RUN MODE 1-3: CMA l 1: Cache Enabled l 2: Cache Disabled l 3: Cache Disabled, Write-merged Shinya T-Y, NAIST 93 (on zynq) gcc -O2 -I ../lib/ -o cma.out cma_test.c (on zynq) ./cma.out 10000000 0 (on zynq) ./cma.out 10000000 1 (on zynq) ./cma.out 10000000 2 (on zynq) ./cma.out 10000000 3
  • 94. How to replace the bitstream Shinya T-Y, NAIST 94
  • 95. Method1: Replace zynq.bit in /sdcard/ n The bitstream on SD card can be replaced on host PC n Since 1st partition of SD card is mounted on /sdcard/, the bistream can be replaced directly by Zynq software n No modifications of U-boot and Linux kernel are required n If you don't chage the address mapping for GPIO, no modification of device tree is required Shinya T-Y, NAIST 95 (on zynq) sudo cp new_zynq.bit /sdcard/zynq.bit (on zynq) sudo reboot
  • 96. Method2: Reconfigure via /dev/xdevcfg n Logic part (PL) can be dynamically changed from SW n If you change the CPU settings, such as frequency, port configuration, etc., this flow is not perfect. Replace "zynq.bit" on SD card and reboot, instead of this flow Shinya T-Y, NAIST 96 (on zynq) cat new_zynq.bit > /dev/xdevcfg
  • 98. Reference n Yet Another Guide to Running Linaro Ubuntu Linux Desktop on Xilinx Zynq on the ZedBoard l https://fpgacpu.wordpress.com/2013/05/24/yet-another-guide-to- running-linaro-ubuntu-desktop-on-xilinx-zynq-on-the-zedboard/ n Building a pure Debian armhf rootfs l https://blog.night-shade.org.uk/2013/12/building-a-pure-debian- armhf-rootfs/ n FPGA Magazine (No.12, March 2016) l http://www.kumikomi.net/fpga/contents/0012.php Shinya T-Y, NAIST 98