SlideShare une entreprise Scribd logo
1  sur  98
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Projectrossburton
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020Akihiro Suda
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux SystemJian-Hong Pan
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionGene Chang
 
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...Anne Nicolas
 
twlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsoViller Hsiao
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoMarco Cavallini
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelDivye Kapoor
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototypingYan Vugenfirer
 
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 driversHoucheng Lin
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded LinuxTushar B Kute
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driverVandana Salve
 

Tendances (20)

The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020[KubeCon NA 2020] containerd: Rootless Containers 2020
[KubeCon NA 2020] containerd: Rootless Containers 2020
 
Linux Internals - Part I
Linux Internals - Part ILinux Internals - Part I
Linux Internals - Part I
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux System
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
 
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
Kernel Recipes 2015: Linux Kernel IO subsystem - How it works and how can I s...
 
twlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdsotwlkh-linux-vsyscall-and-vdso
twlkh-linux-vsyscall-and-vdso
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
 
Qnx os
Qnx os Qnx os
Qnx os
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
linux device driver
linux device driverlinux device driver
linux device driver
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
 
Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
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
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded Linux
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 

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

Jagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchlinuxlab_conf
 
pcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunpcDuino Presentation at SparkFun
pcDuino Presentation at SparkFunJingfeng 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 pcDuinoJingfeng Liu
 
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_trainingvideos
 
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晓东 杜
 
Andresen 8 21 02
Andresen 8 21 02Andresen 8 21 02
Andresen 8 21 02FNian
 
图文详解安装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
 
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 QtFSCONS
 
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 CoreNagios
 
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
 

Similaire à 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.
 

Plus de 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 NetworksShinya 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
 
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
 

Plus de 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日)
 

Dernier

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

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