SlideShare a Scribd company logo
1 of 42
Download to read offline
Presented by
Date
Event
BKK16-312: Integrating and
controlling embedded
devices in LAVA
Bill Fletcher
Linaro Field Engineering
Linaro Connect BKK16
Bill Fletcher
BKK16-312 March 9, 2016
v2.0
Overview
● Practical desk-top LAVA configuration
● Embedded 32 and 64-bit targets
● Power control
● Boot test automation example for real-world devices
● Starting point to leverage the awesomeness of LAVA
More about this session
● The slide deck has a lot of detail
● I don’t propose to go line-by-line through
configuration files here
● Kind of a meta-tutorial in the session
● It’s a big invitation to have a go with LAVA and
physical devices
Invitations to interrupt
● Any LAVA folks feel free to pitch in on new
dispatcher, supported versions, ...
● Any 96Boards folks feel free to pitch in on U-Boot
status on Hikey and other boards
● Questions & comments welcome
All the configs & images
● All material is at: http://people.linaro.org/~bill.
fletcher/
● LAVA configuration files
● Sample drivers and scripts for power control
● Boot images for Hikey and BB
Preamble - Brief Intro To LAVA
● The Linaro Automated Validation
Architecture (LAVA wiki link)
● An automation system for deploying kernel,
dtb and rootfs onto physical and virtual
hardware for running tests.
● A collection of participating components
● Very scalable
LAVA is ...
YAML test
definition
Basic Elements of LAVA
LAVA Dispatcher
● Executes the test job
● Contains target platform
configuration files
● Locally intelligent and tries to 'do
the right thing'
● Manages communication to the
target device
● Collects and evaluates the job
results
LAVA Server
● Handles job submission& scheduling
● Handles instances of target platforms
● Invokes the dispatcher
● Consolidates the results into bundle
stream
Device
configuration
.conf
JSON job
definition
Dashboard/Admin
● Accepts jobs, shows device status,
job queues etc
● Manages object creation and
permissions
● Reports results
Target
Device
Pre-parsed
results
scheduling
single instance
YAML test
definition
Focus for this Session
LAVA Dispatcher
● Executes the test job
● Contains target platform
configuration files
● Locally intelligent and tries to 'do
the right thing'
● Manages communication to the
target device
● Collects and evaluates the job
results
LAVA Server
● Handles job submission& scheduling
● Handles instances of target platforms
● Invokes the dispatcher
● Consolidates the results into bundle
stream
Device
configuration
.conf
JSON job
definition
Dashboard/Admin
● Accepts jobs, shows device status,
job queues etc
● Manages object creation and
permissions
● Reports results
Target
Device
Pre-parsed
results
scheduling
single instance
i.e. interfacing the dispatcher to the target
Start now - be aware that LAVA
is evolving ...
● The pipeline will be the new model for the dispatcher
code:
● Submitted jobs converted to a pipeline of discrete
actions
● The entire pipeline is validated before the job starts.
● The model integrates concepts like fail-early, error
identification, avoid defaults, fail and diagnose later
COMING SOON
● LAVA is a Debian package
● Work with supported versions (more info here):
● apt-get install lava
○ Everything you need for a single instance
● Installs latest packaged release
● Find it under /usr/lib/python2.7
Getting Started - Installing
1. Finish configuring the installation
2. Configure a virtual test device (KVM, qemu)
3. Acquire a bootable test image
4. Write a basic json boot test job definition
5. Submit a test job
See these virtual target tutorials:
https://youtu.be/T8jFzXRrFh8
https://youtu.be/0FlfRMxwC00
http://people.linaro.org/~bill.fletcher/SFO15-TR8_Getting_Started_With_LAVA_supporting_material/
After Installing
Adding Embedded Devices in
LAVA
(i) Mainly about the hardware
Embedded Devices
● 2 worked examples - Beaglebone and Hikey
● Both boot with U-Boot
● Each has a console, network, boots Linux
● Note: a bootloader device is a specific type of target
in LAVA i.e. client_type = bootloader
Embedded devices in LAVA
Requirements:
1. An uninterrupted serial console connection
2. A way to put the system in a known state
and reboot
3. TFTP assumed
i.e. serial, network and power control ...
Serial Console and Network for TFTP
You need console and network connections:
● ser2net package is a dependency of lava-dispatcher, so will be
installed automatically. In /etc/ser2net.conf add something like:
2000:telnet:0:/dev/tty.beaglebone:115200
8DATABITS NONE 1STOPBIT banner
● The dispatcher relies on TFTP downloads to all be made from
/var/lib/lava/dispatcher/tmp. After installing tftp-hpa, the
configuration file for tftpd-hpa needs to be modified to use the
LAVA directory instead of the default
Beaglebone
Comparison vs previously stated requirements:
An uninterrupted serial connection
- BB(W) has FTDI serial via USB peripheral connector that also
supplies power to the board
A way to put the system in a known state and reboot the board
- Removing USB power kills the FTDI serial connection
- Removing 5V power - the device switches to using the USB power
- :(
A bootloader with tftp
- Very mature U-Boot with TFTP via onboard RJ45
Where there’s a will there’s a way ...
(hard-wiring the reset line to
a jack for relay control)
Hikey
Comparison vs previously stated requirements:
An uninterrupted serial connection
- FTDI serial (a couple of options)
A way to put the system in a known state and reboot the board
- Power cycle 12V input
A bootloader with tftp
- Support in U-Boot upstream
- TFTP Support using KY88772 USB ethernet dongles
Rebooting the board:
An Introduction to
PDUs
● PDU = Power Distribution Unit
● “A way to put the system in a known state and reboot the board”
● Power cycle the board under software control
● PDUs tend to be shared between targets (potential access conflicts)
● pdudaemon is a framework that LAVA provides to manage multiple
accesses to PDUs
● LAVA device config file: hard_reset_command =
PDU Daemon - elements
pduclient - command line utility to send a command as a TCP request to
the daemon
e.g. pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 --
command=reboot
pdusocket listener server - TCP request handler. Puts a request into the
request database.
pdurunner - one runner process for each PDU - loops looking for jobs in
the database for a given pdu.
pdu drivers - class-based drivers to interact with PDUs and now some
other measurement/control hardware, mainly over ethernet. Many PDUs
have an interface via Web, SNMP, and Telnet.
Reboot requests
LAVA Dispatcher
PDUclient
listener server
PDU
queue
SQL
adapter
PDUrunner
PDUdriver
PDUdriver
PDUdrivers
TCP
request
handler
PDU
process
insert request
PDU
queuePDU
queues
read next
job
PDU
processPDU
processes
reboot Requests database
PDUdriverPDUdriverPDU
hardware
reboot
Trivial Desktop PDU Example
● Arduino with a relay shield
for low-voltage or reset line
switching
● USB control of up to 4
targets
● Access managed via
pdudaemon localcmdline
driver class
{
"daemon": {
"hostname": "0.0.0.0",
"port": 16421,
"dbhost": "127.0.0.1",
"dbuser": "pdudaemon",
"dbpass": "pdudaemon",
"dbname": "lavapdu",
"retries": 5,
"logging_level": "INFO"
},
"pdus": {
"127.0.0.1": {
"driver": "localcmdline"
},
"192.168.10.3": {
"driver": "apc7952",
"telnetport": 5023
}
Configuring pdudaemon
● /etc/lavapdu/lavapdu.conf ->
● Example
○ Local daemon
○ 2 local pdus
○ one networked APC (via telnet)
and one localcmdline
Adding Embedded Devices in
LAVA
(ii) Mainly about the configuration
● Inform the dispatcher about the devices
● What are the sequences of commands
that the bootloaders should execute
/etc/lava-dispatcher/devices/beaglebone_001.conf
Basic device information in the device configuration file:
device_type = beaglebone (predefined type)
hostname = beaglebone_001 (arbitrary)
connection_command = telnet localhost 2000 (see ser2net)
hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 --command=reboot
(see previous pdu_daemon slide)
...
Boot stanzas
● Boot command stanzas are
predefined Boot Commands which
are included in the device
configuration
● ‘boot_cmds_ramdisk’ is the default
boot stanza for bootloader clients
● This default defined in /python2.
7/dist-
packages/lava_dispatcher/device/
bootloader.py
● The Boot stanza is executed as if
typed at the u-boot command line
● Leverages target’s command line
functionality
● {Filenames} supplied from the job
boot_cmds_ramdisk =
setenv autoload no,
setenv label "'Hikey LAVA U-Boot Tutorial'",
setenv fdt_high "'0xffffffffffffffff'",
setenv kernel_addr_r "'0x00000000'",
setenv initrd_addr_r "'0x02000000'",
setenv fdt_addr_r "'0x01f00000'",
setenv loadkernel "'tftp ${kernel_addr_r}{KERNEL}'",
setenv loadinitrd "'tftp ${initrd_addr_r}{RAMDISK};
setenv initrd_size ${filesize}'",
setenv loadfdt "'tftp ${fdt_addr_r}{DTB}'",
setenv bootargs "'console=ttyAMA3,115200 debug
root=/dev/sda0 rootwait ip=none'",
setenv bootcmd "'usb start; setenv ipaddr 192.168.1.210;
setenv serverip {SERVER_IP}; run loadkernel; run loadinitrd;
run loadfdt; booti ${kernel_addr_r} ${initrd_addr_r}
${fdt_addr_r}'",
boot
/etc/lava-dispatcher/devices/beaglebone_001.conf
device_type = beaglebone (predefined type)
hostname = beaglebone_001 (arbitrary)
connection_command = telnet localhost 2000(see ser2net)
hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 --command=reboot
(see previous pdu_daemon slide)
boot_cmds_ramdisk = (boot stanza - see previous slide)
setenv autoload no,
setenv label "'Beaglebone LAVA U-Boot Tutorial'",
setenv fdt_high "'0xffffffff'",
setenv kernel_addr_r "'{KERNEL_ADDR}'",
setenv initrd_addr_r "'{RAMDISK_ADDR}'",
setenv fdt_addr_r "'{DTB_ADDR}'",
setenv loadkernel "'tftp ${kernel_addr_r} {KERNEL}'",
setenv loadinitrd "'tftp ${initrd_addr_r} {RAMDISK}; setenv initrd_size ${filesize}'",
setenv loadfdt "'tftp ${fdt_addr_r} {DTB}'",
setenv bootargs "'console=ttyO0,115200n8 root=/dev/ram0 ip=none'",
setenv bootcmd "'setenv ipaddr 192.168.1.200; setenv serverip {SERVER_IP}; run loadkernel; run
loadinitrd; run loadfdt; {BOOTX}'",
boot
(DEVICE CONFIGURATION FILE)
/etc/lava-dispatcher/devices/hikey_002.conf
device_type = hikey
hostname = hikey_002
connection_command = telnet localhost 2099
hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=3 --command=reboot
boot_cmds_ramdisk =
setenv autoload no,
setenv label "'Hikey LAVA U-Boot Tutorial'",
setenv fdt_high "'0xffffffffffffffff'",
setenv kernel_addr_r "'0x00000000'",
setenv initrd_addr_r "'0x02000000'",
setenv fdt_addr_r "'0x01f00000'",
setenv loadkernel "'tftp ${kernel_addr_r} {KERNEL}'",
setenv loadinitrd "'tftp ${initrd_addr_r} {RAMDISK}; setenv initrd_size ${filesize}'",
setenv loadfdt "'tftp ${fdt_addr_r} {DTB}'",
setenv bootargs "'console=ttyAMA3,115200 debug root=/dev/sda0 rootwait ip=none'",
setenv bootcmd "'usb start; setenv ipaddr 192.168.1.210; setenv serverip {SERVER_IP}; run loadkernel;
run loadinitrd; run loadfdt; booti ${kernel_addr_r} ${initrd_addr_r} ${fdt_addr_r}'",
boot
(DEVICE CONFIGURATION FILE)
Adding Embedded Devices in
LAVA
(iii) Putting it all together
Submitting the job file - 2 ways
1.Web Interface 2.lava-tool
● Rather than paste our json job files into the web interface,
we can submit test jobs to LAVA via the command line
using lava-tool.
● Generate an authentication token via the web interface.
lava-tool auth-add http://bill@localhost
● (note that you need to generate the authentication token
logged in to the local web interface as yourself)
● Submit: lava-tool submit-job http:
//bill@localhost
/home/bill/development/lava/boot_bb.json
json job file - Beaglebone
{
"actions": [
{
"command": "deploy_linaro_kernel",
"parameters":
{
"dtb": "file:/home/bill/development/lava/images/am335x-bone.dtb",
"kernel": "file:/home/bill/development/lava/images/uImage-bone",
"ramdisk": "file:/home/bill/development/lava/images/rootfs-bone.cpio.gz"
}
},
{
"command": "boot_linaro_image"
}],
"job_name": "boot-bb",
"target": "beaglebone_001",
"timeout": 18000
}
json job file - Hikey
{
"actions": [
{
"command": "deploy_linaro_kernel",
"parameters":
{
"dtb": "file:/home/bill/development/lava/images/hi6220-hikey-0202B.dtb",
"kernel": "file:/home/bill/development/lava/images/Image-0202A",
"ramdisk": "file:/home/bill/development/lava/images/rootfs-aarch64-2up-2000000.uboot",
"login_prompt": "aarch64_test login:",
"username": "root"
}
},
{
"command": "boot_linaro_image"
}],
"job_name": "boot-hi-318-0202",
"target": "hikey_002",
"timeout": 18000
Adding Embedded Devices in
LAVA
(iv) A quick demo
● All the referenced configuration files are
available at http://people.linaro.org/~bill.
fletcher/bkk16_lava
● Support via mail and IRC. Details at https:
//validation.linaro.org/static/docs/support.html
● Have a go!
Wrap Up
Thanks for
listening
Any questions?
Screenshot - PDU reboot
Screenshot - boot command (BB)
Screenshot - boot command (Hikey)
lava stores images in /var/lib/lava/dispatcher/tmp
pdudaemon logs stored in /var/log/lavapdu*
Under the hood
Dispatcher Device conf files
Inherent defaults for client_type = bootloader configuration in
/usr/lib/python2.7/dist-
packages/lava_dispatcher/default-config/lava-
dispatcher/device-defaults.conf
Default configurations exists in: /usr/lib/python2.7/dist-
packages/lava_dispatcher/default-config/lava-
dispatcher/device-types/device.conf
Local device types can be defined in /etc/lava-
dispatcher/device-types
Specific device configs can be created in /etc/lava-
dispatcher/devices

More Related Content

What's hot

Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driverVandana Salve
 
Introduction To Linux Kernel Modules
Introduction To Linux Kernel ModulesIntroduction To Linux Kernel Modules
Introduction To Linux Kernel Modulesdibyajyotig
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421Linaro
 
Compartir Archivos Entre Dos Maquinas Virtuales
Compartir Archivos Entre Dos Maquinas VirtualesCompartir Archivos Entre Dos Maquinas Virtuales
Compartir Archivos Entre Dos Maquinas Virtualescarlos andres
 
CI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and TutumCI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and TutumSreenivas Makam
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New HardwareRuggedBoardGroup
 
Operating systems linux
Operating systems linuxOperating systems linux
Operating systems linuxwilliam_morg
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debuggingHao-Ran Liu
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsManav Prasad
 

What's hot (20)

Linux crontab
Linux crontabLinux crontab
Linux crontab
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 
Introduction To Linux Kernel Modules
Introduction To Linux Kernel ModulesIntroduction To Linux Kernel Modules
Introduction To Linux Kernel Modules
 
Linux Internals - Part I
Linux Internals - Part ILinux Internals - Part I
Linux Internals - Part I
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
Compartir Archivos Entre Dos Maquinas Virtuales
Compartir Archivos Entre Dos Maquinas VirtualesCompartir Archivos Entre Dos Maquinas Virtuales
Compartir Archivos Entre Dos Maquinas Virtuales
 
CI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and TutumCI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and Tutum
 
Cscope and ctags
Cscope and ctagsCscope and ctags
Cscope and ctags
 
Introduction to Makefile
Introduction to MakefileIntroduction to Makefile
Introduction to Makefile
 
U-Boot Porting on New Hardware
U-Boot Porting on New HardwareU-Boot Porting on New Hardware
U-Boot Porting on New Hardware
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Operating systems linux
Operating systems linuxOperating systems linux
Operating systems linux
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Linux IO
Linux IOLinux IO
Linux IO
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Linux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell ScriptingLinux systems - Linux Commands and Shell Scripting
Linux systems - Linux Commands and Shell Scripting
 

Viewers also liked

BKK16-405 LNG Future Directions
BKK16-405 LNG Future DirectionsBKK16-405 LNG Future Directions
BKK16-405 LNG Future DirectionsLinaro
 
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...Linaro
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationLinaro
 
BKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPABKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPALinaro
 
BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience Linaro
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLinaro
 

Viewers also liked (6)

BKK16-405 LNG Future Directions
BKK16-405 LNG Future DirectionsBKK16-405 LNG Future Directions
BKK16-405 LNG Future Directions
 
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...
BKK16-503 Undefined Behavior and Compiler Optimizations – Why Your Program St...
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
 
BKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPABKK16-317 How to generate power models for EAS and IPA
BKK16-317 How to generate power models for EAS and IPA
 
BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
 

Similar to BKK16-312 Integrating and controlling embedded devices in LAVA

HKG18-TR12 - LAVA for LITE Platforms and Tests
HKG18-TR12 - LAVA for LITE Platforms and TestsHKG18-TR12 - LAVA for LITE Platforms and Tests
HKG18-TR12 - LAVA for LITE Platforms and TestsLinaro
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...Linaro
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLinaro
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeDocker, Inc.
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrCumulus Networks
 
LISA15: systemd, the Next-Generation Linux System Manager
LISA15: systemd, the Next-Generation Linux System Manager LISA15: systemd, the Next-Generation Linux System Manager
LISA15: systemd, the Next-Generation Linux System Manager Alison Chaiken
 
Provisioning on Libvirt with Foreman
Provisioning on Libvirt with ForemanProvisioning on Libvirt with Foreman
Provisioning on Libvirt with ForemanNikhil Kathole
 
Banog meetup August 30th, network device property as code
Banog meetup August 30th, network device property as codeBanog meetup August 30th, network device property as code
Banog meetup August 30th, network device property as codeDamien Garros
 
Oracle Drivers configuration for High Availability, is it a developer's job?
Oracle Drivers configuration for High Availability, is it a developer's job?Oracle Drivers configuration for High Availability, is it a developer's job?
Oracle Drivers configuration for High Availability, is it a developer's job?Ludovico Caldara
 
Network Automation (Bay Area Juniper Networks Meetup)
Network Automation (Bay Area Juniper Networks Meetup)Network Automation (Bay Area Juniper Networks Meetup)
Network Automation (Bay Area Juniper Networks Meetup)Alejandro Salinas
 
“Automation Testing for Embedded Systems”
“Automation Testing for Embedded Systems” “Automation Testing for Embedded Systems”
“Automation Testing for Embedded Systems” GlobalLogic Ukraine
 
TechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard UniverityTechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard UniverityOpenNebula Project
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV FeaturesRaul Leite
 
Dockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and NovaDockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and Novaclayton_oneill
 
Network Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyNetwork Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyHiroshi Ota
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Peter Martin
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practiceDocker, Inc.
 
OSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchOSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchChun Ming Ou
 
operating and configuring cisco a cisco IOS device
operating and configuring cisco a cisco IOS deviceoperating and configuring cisco a cisco IOS device
operating and configuring cisco a cisco IOS devicescooby_doo
 
The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014Puppet
 

Similar to BKK16-312 Integrating and controlling embedded devices in LAVA (20)

HKG18-TR12 - LAVA for LITE Platforms and Tests
HKG18-TR12 - LAVA for LITE Platforms and TestsHKG18-TR12 - LAVA for LITE Platforms and Tests
HKG18-TR12 - LAVA for LITE Platforms and Tests
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
 
LCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at LinaroLCE13: Test and Validation Summit: The future of testing at Linaro
LCE13: Test and Validation Summit: The future of testing at Linaro
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to Practice
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie Carr
 
LISA15: systemd, the Next-Generation Linux System Manager
LISA15: systemd, the Next-Generation Linux System Manager LISA15: systemd, the Next-Generation Linux System Manager
LISA15: systemd, the Next-Generation Linux System Manager
 
Provisioning on Libvirt with Foreman
Provisioning on Libvirt with ForemanProvisioning on Libvirt with Foreman
Provisioning on Libvirt with Foreman
 
Banog meetup August 30th, network device property as code
Banog meetup August 30th, network device property as codeBanog meetup August 30th, network device property as code
Banog meetup August 30th, network device property as code
 
Oracle Drivers configuration for High Availability, is it a developer's job?
Oracle Drivers configuration for High Availability, is it a developer's job?Oracle Drivers configuration for High Availability, is it a developer's job?
Oracle Drivers configuration for High Availability, is it a developer's job?
 
Network Automation (Bay Area Juniper Networks Meetup)
Network Automation (Bay Area Juniper Networks Meetup)Network Automation (Bay Area Juniper Networks Meetup)
Network Automation (Bay Area Juniper Networks Meetup)
 
“Automation Testing for Embedded Systems”
“Automation Testing for Embedded Systems” “Automation Testing for Embedded Systems”
“Automation Testing for Embedded Systems”
 
TechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard UniverityTechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
TechDay - Cambridge 2016 - OpenNebula at Harvard Univerity
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV Features
 
Dockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and NovaDockerizing the Hard Services: Neutron and Nova
Dockerizing the Hard Services: Neutron and Nova
 
Network Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyNetwork Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudy
 
Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)Basis Linux (aan de hand van LPIC-1)
Basis Linux (aan de hand van LPIC-1)
 
Container orchestration from theory to practice
Container orchestration from theory to practiceContainer orchestration from theory to practice
Container orchestration from theory to practice
 
OSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchOSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable Switch
 
operating and configuring cisco a cisco IOS device
operating and configuring cisco a cisco IOS deviceoperating and configuring cisco a cisco IOS device
operating and configuring cisco a cisco IOS device
 
The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014
 

More from Linaro

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloLinaro
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaLinaro
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraLinaro
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaLinaro
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018Linaro
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018Linaro
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...Linaro
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Linaro
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Linaro
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Linaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteLinaro
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineLinaro
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allLinaro
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorLinaro
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMULinaro
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MLinaro
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation Linaro
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootLinaro
 

More from Linaro (20)

Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea GalloDeep Learning Neural Network Acceleration at the Edge - Andrea Gallo
Deep Learning Neural Network Acceleration at the Edge - Andrea Gallo
 
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta VekariaArm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
Arm Architecture HPC Workshop Santa Clara 2018 - Kanta Vekaria
 
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua MoraHuawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
Huawei’s requirements for the ARM based HPC solution readiness - Joshua Mora
 
Bud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qaBud17 113: distribution ci using qemu and open qa
Bud17 113: distribution ci using qemu and open qa
 
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
OpenHPC Automation with Ansible - Renato Golin - Linaro Arm HPC Workshop 2018
 
HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018HPC network stack on ARM - Linaro HPC Workshop 2018
HPC network stack on ARM - Linaro HPC Workshop 2018
 
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
It just keeps getting better - SUSE enablement for Arm - Linaro HPC Workshop ...
 
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
Intelligent Interconnect Architecture to Enable Next Generation HPC - Linaro ...
 
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
Yutaka Ishikawa - Post-K and Arm HPC Ecosystem - Linaro Arm HPC Workshop Sant...
 
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
Andrew J Younge - Vanguard Astra - Petascale Arm Platform for U.S. DOE/ASC Su...
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening KeynoteHKG18-100K1 - George Grey: Opening Keynote
HKG18-100K1 - George Grey: Opening Keynote
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainlineHKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
HKG18-501 - EAS on Common Kernel 4.14 and getting (much) closer to mainline
 
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and allHKG18-315 - Why the ecosystem is a wonderful thing, warts and all
HKG18-315 - Why the ecosystem is a wonderful thing, warts and all
 
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse HypervisorHKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
HKG18- 115 - Partitioning ARM Systems with the Jailhouse Hypervisor
 
HKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMUHKG18-TR08 - Upstreaming SVE in QEMU
HKG18-TR08 - Upstreaming SVE in QEMU
 
HKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8MHKG18-113- Secure Data Path work with i.MX8M
HKG18-113- Secure Data Path work with i.MX8M
 
HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation HKG18-120 - Devicetree Schema Documentation and Validation
HKG18-120 - Devicetree Schema Documentation and Validation
 
HKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted bootHKG18-223 - Trusted FirmwareM: Trusted boot
HKG18-223 - Trusted FirmwareM: Trusted boot
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

BKK16-312 Integrating and controlling embedded devices in LAVA

  • 1. Presented by Date Event BKK16-312: Integrating and controlling embedded devices in LAVA Bill Fletcher Linaro Field Engineering Linaro Connect BKK16 Bill Fletcher BKK16-312 March 9, 2016 v2.0
  • 2. Overview ● Practical desk-top LAVA configuration ● Embedded 32 and 64-bit targets ● Power control ● Boot test automation example for real-world devices ● Starting point to leverage the awesomeness of LAVA
  • 3. More about this session ● The slide deck has a lot of detail ● I don’t propose to go line-by-line through configuration files here ● Kind of a meta-tutorial in the session ● It’s a big invitation to have a go with LAVA and physical devices
  • 4. Invitations to interrupt ● Any LAVA folks feel free to pitch in on new dispatcher, supported versions, ... ● Any 96Boards folks feel free to pitch in on U-Boot status on Hikey and other boards ● Questions & comments welcome
  • 5. All the configs & images ● All material is at: http://people.linaro.org/~bill. fletcher/ ● LAVA configuration files ● Sample drivers and scripts for power control ● Boot images for Hikey and BB
  • 6. Preamble - Brief Intro To LAVA
  • 7. ● The Linaro Automated Validation Architecture (LAVA wiki link) ● An automation system for deploying kernel, dtb and rootfs onto physical and virtual hardware for running tests. ● A collection of participating components ● Very scalable LAVA is ...
  • 8. YAML test definition Basic Elements of LAVA LAVA Dispatcher ● Executes the test job ● Contains target platform configuration files ● Locally intelligent and tries to 'do the right thing' ● Manages communication to the target device ● Collects and evaluates the job results LAVA Server ● Handles job submission& scheduling ● Handles instances of target platforms ● Invokes the dispatcher ● Consolidates the results into bundle stream Device configuration .conf JSON job definition Dashboard/Admin ● Accepts jobs, shows device status, job queues etc ● Manages object creation and permissions ● Reports results Target Device Pre-parsed results scheduling single instance
  • 9. YAML test definition Focus for this Session LAVA Dispatcher ● Executes the test job ● Contains target platform configuration files ● Locally intelligent and tries to 'do the right thing' ● Manages communication to the target device ● Collects and evaluates the job results LAVA Server ● Handles job submission& scheduling ● Handles instances of target platforms ● Invokes the dispatcher ● Consolidates the results into bundle stream Device configuration .conf JSON job definition Dashboard/Admin ● Accepts jobs, shows device status, job queues etc ● Manages object creation and permissions ● Reports results Target Device Pre-parsed results scheduling single instance i.e. interfacing the dispatcher to the target
  • 10. Start now - be aware that LAVA is evolving ... ● The pipeline will be the new model for the dispatcher code: ● Submitted jobs converted to a pipeline of discrete actions ● The entire pipeline is validated before the job starts. ● The model integrates concepts like fail-early, error identification, avoid defaults, fail and diagnose later COMING SOON
  • 11. ● LAVA is a Debian package ● Work with supported versions (more info here): ● apt-get install lava ○ Everything you need for a single instance ● Installs latest packaged release ● Find it under /usr/lib/python2.7 Getting Started - Installing
  • 12. 1. Finish configuring the installation 2. Configure a virtual test device (KVM, qemu) 3. Acquire a bootable test image 4. Write a basic json boot test job definition 5. Submit a test job See these virtual target tutorials: https://youtu.be/T8jFzXRrFh8 https://youtu.be/0FlfRMxwC00 http://people.linaro.org/~bill.fletcher/SFO15-TR8_Getting_Started_With_LAVA_supporting_material/ After Installing
  • 13. Adding Embedded Devices in LAVA (i) Mainly about the hardware
  • 14. Embedded Devices ● 2 worked examples - Beaglebone and Hikey ● Both boot with U-Boot ● Each has a console, network, boots Linux ● Note: a bootloader device is a specific type of target in LAVA i.e. client_type = bootloader
  • 15. Embedded devices in LAVA Requirements: 1. An uninterrupted serial console connection 2. A way to put the system in a known state and reboot 3. TFTP assumed i.e. serial, network and power control ...
  • 16. Serial Console and Network for TFTP You need console and network connections: ● ser2net package is a dependency of lava-dispatcher, so will be installed automatically. In /etc/ser2net.conf add something like: 2000:telnet:0:/dev/tty.beaglebone:115200 8DATABITS NONE 1STOPBIT banner ● The dispatcher relies on TFTP downloads to all be made from /var/lib/lava/dispatcher/tmp. After installing tftp-hpa, the configuration file for tftpd-hpa needs to be modified to use the LAVA directory instead of the default
  • 17. Beaglebone Comparison vs previously stated requirements: An uninterrupted serial connection - BB(W) has FTDI serial via USB peripheral connector that also supplies power to the board A way to put the system in a known state and reboot the board - Removing USB power kills the FTDI serial connection - Removing 5V power - the device switches to using the USB power - :( A bootloader with tftp - Very mature U-Boot with TFTP via onboard RJ45
  • 18. Where there’s a will there’s a way ... (hard-wiring the reset line to a jack for relay control)
  • 19. Hikey Comparison vs previously stated requirements: An uninterrupted serial connection - FTDI serial (a couple of options) A way to put the system in a known state and reboot the board - Power cycle 12V input A bootloader with tftp - Support in U-Boot upstream - TFTP Support using KY88772 USB ethernet dongles
  • 20. Rebooting the board: An Introduction to PDUs ● PDU = Power Distribution Unit ● “A way to put the system in a known state and reboot the board” ● Power cycle the board under software control ● PDUs tend to be shared between targets (potential access conflicts) ● pdudaemon is a framework that LAVA provides to manage multiple accesses to PDUs ● LAVA device config file: hard_reset_command =
  • 21. PDU Daemon - elements pduclient - command line utility to send a command as a TCP request to the daemon e.g. pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 -- command=reboot pdusocket listener server - TCP request handler. Puts a request into the request database. pdurunner - one runner process for each PDU - loops looking for jobs in the database for a given pdu. pdu drivers - class-based drivers to interact with PDUs and now some other measurement/control hardware, mainly over ethernet. Many PDUs have an interface via Web, SNMP, and Telnet.
  • 22. Reboot requests LAVA Dispatcher PDUclient listener server PDU queue SQL adapter PDUrunner PDUdriver PDUdriver PDUdrivers TCP request handler PDU process insert request PDU queuePDU queues read next job PDU processPDU processes reboot Requests database PDUdriverPDUdriverPDU hardware reboot
  • 23. Trivial Desktop PDU Example ● Arduino with a relay shield for low-voltage or reset line switching ● USB control of up to 4 targets ● Access managed via pdudaemon localcmdline driver class
  • 24. { "daemon": { "hostname": "0.0.0.0", "port": 16421, "dbhost": "127.0.0.1", "dbuser": "pdudaemon", "dbpass": "pdudaemon", "dbname": "lavapdu", "retries": 5, "logging_level": "INFO" }, "pdus": { "127.0.0.1": { "driver": "localcmdline" }, "192.168.10.3": { "driver": "apc7952", "telnetport": 5023 } Configuring pdudaemon ● /etc/lavapdu/lavapdu.conf -> ● Example ○ Local daemon ○ 2 local pdus ○ one networked APC (via telnet) and one localcmdline
  • 25. Adding Embedded Devices in LAVA (ii) Mainly about the configuration ● Inform the dispatcher about the devices ● What are the sequences of commands that the bootloaders should execute
  • 26. /etc/lava-dispatcher/devices/beaglebone_001.conf Basic device information in the device configuration file: device_type = beaglebone (predefined type) hostname = beaglebone_001 (arbitrary) connection_command = telnet localhost 2000 (see ser2net) hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 --command=reboot (see previous pdu_daemon slide) ...
  • 27. Boot stanzas ● Boot command stanzas are predefined Boot Commands which are included in the device configuration ● ‘boot_cmds_ramdisk’ is the default boot stanza for bootloader clients ● This default defined in /python2. 7/dist- packages/lava_dispatcher/device/ bootloader.py ● The Boot stanza is executed as if typed at the u-boot command line ● Leverages target’s command line functionality ● {Filenames} supplied from the job boot_cmds_ramdisk = setenv autoload no, setenv label "'Hikey LAVA U-Boot Tutorial'", setenv fdt_high "'0xffffffffffffffff'", setenv kernel_addr_r "'0x00000000'", setenv initrd_addr_r "'0x02000000'", setenv fdt_addr_r "'0x01f00000'", setenv loadkernel "'tftp ${kernel_addr_r}{KERNEL}'", setenv loadinitrd "'tftp ${initrd_addr_r}{RAMDISK}; setenv initrd_size ${filesize}'", setenv loadfdt "'tftp ${fdt_addr_r}{DTB}'", setenv bootargs "'console=ttyAMA3,115200 debug root=/dev/sda0 rootwait ip=none'", setenv bootcmd "'usb start; setenv ipaddr 192.168.1.210; setenv serverip {SERVER_IP}; run loadkernel; run loadinitrd; run loadfdt; booti ${kernel_addr_r} ${initrd_addr_r} ${fdt_addr_r}'", boot
  • 28. /etc/lava-dispatcher/devices/beaglebone_001.conf device_type = beaglebone (predefined type) hostname = beaglebone_001 (arbitrary) connection_command = telnet localhost 2000(see ser2net) hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=4 --command=reboot (see previous pdu_daemon slide) boot_cmds_ramdisk = (boot stanza - see previous slide) setenv autoload no, setenv label "'Beaglebone LAVA U-Boot Tutorial'", setenv fdt_high "'0xffffffff'", setenv kernel_addr_r "'{KERNEL_ADDR}'", setenv initrd_addr_r "'{RAMDISK_ADDR}'", setenv fdt_addr_r "'{DTB_ADDR}'", setenv loadkernel "'tftp ${kernel_addr_r} {KERNEL}'", setenv loadinitrd "'tftp ${initrd_addr_r} {RAMDISK}; setenv initrd_size ${filesize}'", setenv loadfdt "'tftp ${fdt_addr_r} {DTB}'", setenv bootargs "'console=ttyO0,115200n8 root=/dev/ram0 ip=none'", setenv bootcmd "'setenv ipaddr 192.168.1.200; setenv serverip {SERVER_IP}; run loadkernel; run loadinitrd; run loadfdt; {BOOTX}'", boot (DEVICE CONFIGURATION FILE)
  • 29. /etc/lava-dispatcher/devices/hikey_002.conf device_type = hikey hostname = hikey_002 connection_command = telnet localhost 2099 hard_reset_command = pduclient --daemon=localhost --hostname=127.0.0.1 --port=3 --command=reboot boot_cmds_ramdisk = setenv autoload no, setenv label "'Hikey LAVA U-Boot Tutorial'", setenv fdt_high "'0xffffffffffffffff'", setenv kernel_addr_r "'0x00000000'", setenv initrd_addr_r "'0x02000000'", setenv fdt_addr_r "'0x01f00000'", setenv loadkernel "'tftp ${kernel_addr_r} {KERNEL}'", setenv loadinitrd "'tftp ${initrd_addr_r} {RAMDISK}; setenv initrd_size ${filesize}'", setenv loadfdt "'tftp ${fdt_addr_r} {DTB}'", setenv bootargs "'console=ttyAMA3,115200 debug root=/dev/sda0 rootwait ip=none'", setenv bootcmd "'usb start; setenv ipaddr 192.168.1.210; setenv serverip {SERVER_IP}; run loadkernel; run loadinitrd; run loadfdt; booti ${kernel_addr_r} ${initrd_addr_r} ${fdt_addr_r}'", boot (DEVICE CONFIGURATION FILE)
  • 30. Adding Embedded Devices in LAVA (iii) Putting it all together
  • 31.
  • 32. Submitting the job file - 2 ways 1.Web Interface 2.lava-tool ● Rather than paste our json job files into the web interface, we can submit test jobs to LAVA via the command line using lava-tool. ● Generate an authentication token via the web interface. lava-tool auth-add http://bill@localhost ● (note that you need to generate the authentication token logged in to the local web interface as yourself) ● Submit: lava-tool submit-job http: //bill@localhost /home/bill/development/lava/boot_bb.json
  • 33. json job file - Beaglebone { "actions": [ { "command": "deploy_linaro_kernel", "parameters": { "dtb": "file:/home/bill/development/lava/images/am335x-bone.dtb", "kernel": "file:/home/bill/development/lava/images/uImage-bone", "ramdisk": "file:/home/bill/development/lava/images/rootfs-bone.cpio.gz" } }, { "command": "boot_linaro_image" }], "job_name": "boot-bb", "target": "beaglebone_001", "timeout": 18000 }
  • 34. json job file - Hikey { "actions": [ { "command": "deploy_linaro_kernel", "parameters": { "dtb": "file:/home/bill/development/lava/images/hi6220-hikey-0202B.dtb", "kernel": "file:/home/bill/development/lava/images/Image-0202A", "ramdisk": "file:/home/bill/development/lava/images/rootfs-aarch64-2up-2000000.uboot", "login_prompt": "aarch64_test login:", "username": "root" } }, { "command": "boot_linaro_image" }], "job_name": "boot-hi-318-0202", "target": "hikey_002", "timeout": 18000
  • 35. Adding Embedded Devices in LAVA (iv) A quick demo
  • 36. ● All the referenced configuration files are available at http://people.linaro.org/~bill. fletcher/bkk16_lava ● Support via mail and IRC. Details at https: //validation.linaro.org/static/docs/support.html ● Have a go! Wrap Up
  • 39. Screenshot - boot command (BB)
  • 40. Screenshot - boot command (Hikey)
  • 41. lava stores images in /var/lib/lava/dispatcher/tmp pdudaemon logs stored in /var/log/lavapdu* Under the hood
  • 42. Dispatcher Device conf files Inherent defaults for client_type = bootloader configuration in /usr/lib/python2.7/dist- packages/lava_dispatcher/default-config/lava- dispatcher/device-defaults.conf Default configurations exists in: /usr/lib/python2.7/dist- packages/lava_dispatcher/default-config/lava- dispatcher/device-types/device.conf Local device types can be defined in /etc/lava- dispatcher/device-types Specific device configs can be created in /etc/lava- dispatcher/devices