The document describes the process to set up Debian Linux on a Zynq FPGA board using a Zybo board as a reference platform. The key steps include:
1. Developing the hardware design in Vivado, including adding a CPU, GPIO for LEDs and switches, and generating a bitstream;
2. Compiling U-boot and the Linux kernel, as well as creating a device tree and root filesystem;
3. Setting up an SD card and booting the system from the SD card.
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
As the name would suggest, a Non-Maskable Interrupt (NMI) is an interrupt-like feature that is unaffected by the disabling of classic interrupts. In Linux, NMIs are involved in some features such as performance event monitoring, hard-lockup detector, on demand state dumping, etc… Their potential to fire when least expected can fill the most seasoned kernel hackers with dread.
AArch64 (aka arm64 in the Linux tree) does not provide architected NMIs, a consequence being that features benefiting from NMIs see their use limited on AArch64. However, the Arm Generic Interrupt Controller (GIC) supports interrupt prioritization and masking, which, among other things, provides a way to control whether or not a set of interrupts can be signaled to a CPU.
This talk will cover how, using the GIC interrupt priorities, we provide a way to configure some interrupts to behave in an NMI-like manner on AArch64. We’ll discuss the implementation, some of the complications that ensued and also some of the benefits obtained from it.
Julien Thierry
eBPF is an exciting new technology that is poised to transform Linux performance engineering. eBPF enables users to dynamically and programatically trace any kernel or user space code path, safely and efficiently. However, understanding eBPF is not so simple. The goal of this talk is to give audiences a fundamental understanding of eBPF, how it interconnects existing Linux tracing technologies, and provides a powerful aplatform to solve any Linux performance problem.
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
As the name would suggest, a Non-Maskable Interrupt (NMI) is an interrupt-like feature that is unaffected by the disabling of classic interrupts. In Linux, NMIs are involved in some features such as performance event monitoring, hard-lockup detector, on demand state dumping, etc… Their potential to fire when least expected can fill the most seasoned kernel hackers with dread.
AArch64 (aka arm64 in the Linux tree) does not provide architected NMIs, a consequence being that features benefiting from NMIs see their use limited on AArch64. However, the Arm Generic Interrupt Controller (GIC) supports interrupt prioritization and masking, which, among other things, provides a way to control whether or not a set of interrupts can be signaled to a CPU.
This talk will cover how, using the GIC interrupt priorities, we provide a way to configure some interrupts to behave in an NMI-like manner on AArch64. We’ll discuss the implementation, some of the complications that ensued and also some of the benefits obtained from it.
Julien Thierry
eBPF is an exciting new technology that is poised to transform Linux performance engineering. eBPF enables users to dynamically and programatically trace any kernel or user space code path, safely and efficiently. However, understanding eBPF is not so simple. The goal of this talk is to give audiences a fundamental understanding of eBPF, how it interconnects existing Linux tracing technologies, and provides a powerful aplatform to solve any Linux performance problem.
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareLinaro
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
---------------------------------------------------
Speaker: Jorge Ramirez-Ortiz
Date: February 13, 2015
---------------------------------------------------
★ Session Summary ★
[Note: this is a joint Security/Power Management session) Understand what use cases related to Power Management have to interact with Trusted Firmware via Secure calls. Walk through some key use cases like CPU Suspend and explain how PM Linux drivers interacts with Trusted Firmware / PSCI
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250855
Video: https://www.youtube.com/watch?v=hQ2ITjHZY4s
Etherpad: http://pad.linaro.org/p/hkg15-505
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
Netronome's half-day tutorial on host data plane acceleration at ACM SIGCOMM 2018 introduced attendees to models for host data plane acceleration and provided an in-depth understanding of SmartNIC deployment models at hyperscale cloud vendors and telecom service providers.
Presenter Bios
Jakub Kicinski is a long term Linux kernel contributor, who has been leading the kernel team at Netronome for the last two years. Jakub’s major contributions include the creation of BPF hardware offload mechanisms in the kernel and bpftool user space utility, as well as work on the Linux kernel side of OVS offload.
David Beckett is a Software Engineer at Netronome with a strong technical background of computer networks including academic research with DDoS. David has expertise in the areas of Linux architecture and computer programming. David has a Masters Degree in Electrical, Electronic Engineering at Queen’s University Belfast and continues as a PhD student studying Emerging Application Layer DDoS threats.
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
LAS16-111: Raspberry Pi3, OP-TEE and JTAG debugging
Speakers:
Date: September 26, 2016
★ Session Description ★
ARM TrustZone is a critical technology for securing IoT devices and systems. But awareness of TrustZone and its benefits lags within the maker community as well as among enterprises. The first step to solving this problem is lowering the cost of access. Sequitur Labs and Linaro have joined forces to address this problem by making a port of OP-TEE available on the Raspberry Pi 3. The presentation covers the value of TrustZone for securing IoT and how customers can learn more through this joint effort.
Embedded systems security remains a challenge for many developers. Awareness of mature, proven technologies such as ARM TrustZone is very low among the Maker community as well as among enterprises. As a result this foundational technology is largely being ignored as a security solution. Sequitur Labs and Linaro have taken an innovative approach combining an Open Source solution – OP-TEE with Raspberry Pi 3. The Raspberry Pi 3 is one of the world’s most popular platforms among device makers. Its value as an educational tool for learning about embedded systems development is proven.
Sequitur Labs have also enabled bare metal debugging via JTag on the Pi 3 enhancing the value of the Pi 3 as an educational tool for embedded systems development.
The presentation will focus on
ARM v8a architecture and instruction set
ARM Trusted Firmware
TrustZone and OP-TEE basics
JTAG and bare metal debugging the Raspberry Pi 3
★ Resources ★
Etherpad: pad.linaro.org/p/las16-111
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-111/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
- Show you how GoBGP can be used as a software router in conjunction with quagga
- (Tutorial) Walk through the setup of IXP connecting router using GoBGP
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
HKG15-505: Power Management interactions with OP-TEE and Trusted FirmwareLinaro
HKG15-505: Power Management interactions with OP-TEE and Trusted Firmware
---------------------------------------------------
Speaker: Jorge Ramirez-Ortiz
Date: February 13, 2015
---------------------------------------------------
★ Session Summary ★
[Note: this is a joint Security/Power Management session) Understand what use cases related to Power Management have to interact with Trusted Firmware via Secure calls. Walk through some key use cases like CPU Suspend and explain how PM Linux drivers interacts with Trusted Firmware / PSCI
--------------------------------------------------
★ Resources ★
Pathable: https://hkg15.pathable.com/meetings/250855
Video: https://www.youtube.com/watch?v=hQ2ITjHZY4s
Etherpad: http://pad.linaro.org/p/hkg15-505
---------------------------------------------------
★ Event Details ★
Linaro Connect Hong Kong 2015 - #HKG15
February 9-13th, 2015
Regal Airport Hotel Hong Kong Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
Netronome's half-day tutorial on host data plane acceleration at ACM SIGCOMM 2018 introduced attendees to models for host data plane acceleration and provided an in-depth understanding of SmartNIC deployment models at hyperscale cloud vendors and telecom service providers.
Presenter Bios
Jakub Kicinski is a long term Linux kernel contributor, who has been leading the kernel team at Netronome for the last two years. Jakub’s major contributions include the creation of BPF hardware offload mechanisms in the kernel and bpftool user space utility, as well as work on the Linux kernel side of OVS offload.
David Beckett is a Software Engineer at Netronome with a strong technical background of computer networks including academic research with DDoS. David has expertise in the areas of Linux architecture and computer programming. David has a Masters Degree in Electrical, Electronic Engineering at Queen’s University Belfast and continues as a PhD student studying Emerging Application Layer DDoS threats.
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
Introduce F9 microkernel, new open source implementation built from scratch, which deploys modern kernel techniques, derived from L4 microkernel designs, to deep embedded devices.
:: https://github.com/f9micro
Characteristics of F9 microkernel
– Efficiency: performance + power consumption
– Security: memory protection + isolated execution
– Flexible development environment
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
LAS16-111: Raspberry Pi3, OP-TEE and JTAG debugging
Speakers:
Date: September 26, 2016
★ Session Description ★
ARM TrustZone is a critical technology for securing IoT devices and systems. But awareness of TrustZone and its benefits lags within the maker community as well as among enterprises. The first step to solving this problem is lowering the cost of access. Sequitur Labs and Linaro have joined forces to address this problem by making a port of OP-TEE available on the Raspberry Pi 3. The presentation covers the value of TrustZone for securing IoT and how customers can learn more through this joint effort.
Embedded systems security remains a challenge for many developers. Awareness of mature, proven technologies such as ARM TrustZone is very low among the Maker community as well as among enterprises. As a result this foundational technology is largely being ignored as a security solution. Sequitur Labs and Linaro have taken an innovative approach combining an Open Source solution – OP-TEE with Raspberry Pi 3. The Raspberry Pi 3 is one of the world’s most popular platforms among device makers. Its value as an educational tool for learning about embedded systems development is proven.
Sequitur Labs have also enabled bare metal debugging via JTag on the Pi 3 enhancing the value of the Pi 3 as an educational tool for embedded systems development.
The presentation will focus on
ARM v8a architecture and instruction set
ARM Trusted Firmware
TrustZone and OP-TEE basics
JTAG and bare metal debugging the Raspberry Pi 3
★ Resources ★
Etherpad: pad.linaro.org/p/las16-111
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-111/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
- Show you how GoBGP can be used as a software router in conjunction with quagga
- (Tutorial) Walk through the setup of IXP connecting router using GoBGP
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
You have one of those fruity *Pi arm boards and cheep sensor from China? Some buttons and LEDs? Do I really need to learn whole new scripting language and few web technologies to read my temperature, blink a led or toggle a relay? No, because your Linux kernel already has drivers for them and all you need is device tree and cat.
NRPE - Nagios Remote Plugin Executor. NRPE plugin for Nagios Core 4 and others.Marc Trimble
Nrpe - Nagios Remote Plugin Executor.
NRPE gives users the option to execute Nagios plugins remotely on any of their Linux/Unix machines. This option enables users to oversee their machine metrics, remotely, giving insights into disk usage, CPU load, etc. NRPE also allows users to interact and communicate with Windows agent add-ons. These add-ons monitor metrics and execute scripts.
https://www.nagios.com/news/2015/09/nagios-named-top-it-monitoring-tool/
Similar to Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4) (20)
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
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
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 &
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
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
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"
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
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
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
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
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/
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
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
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