SlideShare a Scribd company logo
Drew Moseley
Technical Solutions Architect
Mender.io
A Million Ways to Provision Embedded Linux Devices
Session Overview
● 1,000,000 barely feels like an exaggeration
● Anatomy of an embedded Linux system
● Discuss storage and provisioning of:
⎻ Bootloader
⎻ Kernel/DTB
⎻ Root filesystem
● Describe specific boards using different models
Goal: Present an overview of all the
provisioning models you will encounter
About Me
Drew Moseley
○ 10 years in Embedded Linux/Yocto development.
○ Longer than that in general Embedded Software.
○ Project Lead and Solutions Architect.
drew.moseley@mender.io
https://twitter.com/drewmoseley
https://www.linkedin.com/in/drewmoseley/
https://twitter.com/mender_io
Mender.io
○ Over-the-air update manager for embedded Linux
○ Open source (Apache 2.0 License)
○ Remote deployment management (server)
○ Under active development
Challenges for Embedded Linux Developers
● No “one way” to get initial images onto boards.
● Mechanisms may vary between development,
manufacturing and CI/QA.
● Mechanisms vary widely between
⎻ Boards
⎻ Manufacturers
● Slow provisioning -> long development cycles
Anatomy of a System
Bootloader: system initialization code starting with
the reset vector.
● Initialize and scrub RAM
● Setup power rails and clocks
● Load the “rest” of the system
Bootloader
Kernel
Device Tree
Root filesystem
Kernel: core operating system functionality
● Resource management
● Process control
● Device drivers
Device Tree: hardware description
Root filesystem: all files, executables, data, etc for the
system
Storage Overview
Bootloader:
1. Separate flash/interface. ie SPI Boot Flash - Compulab CL-SOM-iMX6
2. MTD partition - Compulab CL-SOM-iMX7
3. Inter-partition space - Toradex Colibri i.MX6/eMMC
4. UBI partition - Toradex Colibri i.MX7/NAND
5. File in a partition - Beaglebone
Kernel/DTB:
1. Separate partition - Compulab, Toradex
2. Files in a separate partition - Beaglebone
3. Files in the root filesystem - Mender-enabled boards
4. Files retrieved over network - most boards
Root filesystem:
1. eMMC/SDCard - Beaglebone, Raspberrypi, etc
2. Raw NAND flash - Toradex Colibri
3. USB drive - Raspberrypi (not the default)
4. SATA/SSD - NUC, PC
5. NFS - most boards
Yocto + QEMU - setup
Simple setup for development (9 minute build time with SSTATE):
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib 
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect 
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev 
xterm
git clone git://git.yoctoproject.org/poky -b yocto-2.7.1
source poky/oe-init-build-env
cat >> conf/local.conf <<'EOF'
SSTATE_MIRRORS = "
file://.* http://sstate.yoctoproject.org/2.6/PATH;downloadfilename=PATH n 
"
EOF
MACHINE=qemux86 bitbake core-image-base
https://www.yoctoproject.org/docs/2.7.1/brief-yoctoprojectqs/brief-yoctoprojectqs.html
http://bit.ly/yocto-qemu-deploy
Yocto + QEMU - run
Standard Block Device:
$ runqemu qemux86 nographic
NFS mounted root filesystem1
:
$ sudo apt-get install rpcbind
$ echo 'OPTIONS="-i -w"' | sudo tee -a /etc/default/rpcbind
$ sudo service portmap restart
$ runqemu qemux86 nfs nographic
The runqemu script hides all the complication of setting this up.
Differences from typical board scenario:
1. No bootloader
2. No DTB
3. Kernel loaded directly from host filesystem
Excellent method for development of non-HW-specific bits.
1
Note that this has worked for me in the past but in my current setup, the system fails to boot.
The above was run on Ubuntu 18.04
Provisioning Model: SD Card
Platform used: Raspberry Pi 3
Proprietary bootloader in ROM
● Loads kernel or u-boot binary as a file from FAT
● DTB loaded as file from FAT
Root filesystem mounted from SD/MMC
Image file generated directly by Yocto
Provisioning done on build platform:
$ sudo dd if=<file>.rpi-sdimg of=/dev/sdb bs=8M
SDCard inserted in board and booted as-is
SDCard
Partition 1: FAT
/boot
├── bcm2710-rpi-cm3.dtb
├── boot.scr
├── kernel7.img
├── overlays
│ ├── i2c-rtc.dtbo
├── start.elf
└── uImage
Partition 1: ext4
/
├── bin
├── boot
├── dev
├── etc
├── home
├── ...
Provisioning Model: eMMC
Platform used: TechNexion PICO-PI-IMX7
Bootloader in unpartitioned space on eMMC
Root filesystem mounted from eMMC
Image file generated directly by Yocto
Load U-Boot image from build platform into RAM:
$ sudo imx_usb SPL
$ sudo imx_usb u-boot.img
From RAM-based U-Boot, install new images
Target board configured as USB gadget mode
usb start
ums 0 mmc 0
Provisioning done on build platform:
$ sudo dd if=<file>.rpi-sdimg of=/dev/sdb bs=8M
eMMC
Raw U-Boot binary
U-Boot environment
Partition 1: FAT
/boot
├── *.dtb
└── zImage
Partition 1: ext4
/
├── bin
├── boot
├── dev
├── etc
├── home
├── ...
Provisioning Model: SPI + eMMC
Platform used: Compulab IOT-GATE-iMX7
Jumper selection for bootloader location: SPI flash or SD
Bootloader configuration determines eMMC or SD for:
● Kernel
● DTB
● Root filesystem
Boot full SD-based image provided by Compulab
Copy Yocto-generated images to USB key
Provisioning done on target platform:
U-Boot:
# flash_erase /dev/mtd0 0 0
# dd if=/usbkey/cl-som-imx7-firmware of=/dev/mtd0
Root filesystem:
# dd if=/usbkey/<image>.sdcard of=/dev/mmcblk2 bs=8M
eMMC
Partition 1: FAT
/boot
├── imx7d-cl-som-imx7.dtb
└── zImage
Partition 1: ext4
/
├── bin
├── boot
├── dev
├── etc
├── home
├── ...
SPI Flash
Raw U-Boot image
Platform used: Toradex Colibri iMX7 + Aster baseboard
Copy Yocto-generated images to SD Card
Short test points to boot in recovery mode
Load U-Boot image from build platform into RAM:
$ sudo imx_usb u-boot-nand.imx
From RAM-based U-Boot, install new images
U-Boot:
nand erase.part u-boot1; nand erase.part u-boot2
load mmc 0:1 ${loadaddr} u-boot-nand.imx
nand write ${loadaddr} u-boot1 ${filesize}
nand write ${loadaddr} u-boot2 ${filesize}
nand erase.part u-boot-env
Root filesystem:
nand erase.part ubi
load mmc 0:1 ${loadaddr} <image>.ubi
nand write ${loadaddr} ubi ${filesize}
Provisioning Model: Raw NAND
UBI
Volume: u-boot1
Volume: u-boot2
Volume: u-boot-env
Volume: rootfs
/
├── bin
├── boot
├── dev
├── etc
├── home
├── ...
Platform used: Dragonboard 410c1
Switch on board to boot in fastboot mode
Load images to board directly from build platform
U-Boot:
$ sudo fastboot flash boot boot-dragonboard-410c.img
Root filesystem:
$ sudo fastboot flash rootfs IMAGE-dragonboard-410c.ext4
Provisioning Model: Android Tools
1
https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/build/open-embedded.md.html
Misc Provisioning Tools
Live Installers
● Toradex Easy Installer
● Compulab cl-deploy tool
● Compulab Auto Install System
● QtCreator
● Desktop Distro Install Disks
Imaging tools
● Balena Etcher
● Win32DiskImager
● ApplePi-Baker
● PiBakery
Protocols
● tftp/NFS
● Rockchip USB
● Imx_usb tool
● NVidia flash.sh
Other Considerations
Product Development:
● CI/CD integration
● Systems developers vs
Application developers
● Heterogenous targets
Manufacturing:
● Unattended installation
● Per-board data
● Registration with
infrastructure
● Burn-in test vs production
images
Thank You!
Q&A
@drewmoseley
drew.moseley@mender.io
@mender_io
https://mender.io
https://docs.mender.io/2.0/getting-started
https://hub.mender.io

More Related Content

PDF
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
PDF
Embedded linux build systems
PDF
Configuring wifi in open embedded builds
PDF
IoT: Contrasting Yocto/Buildroot to binary OSes
PDF
Mender: The open-source software update solution
PDF
Mender; the open-source software update solution
PDF
Mender.io | Develop embedded applications faster | Comparing C and Golang
PDF
The ultimate guide to software updates on embedded linux devices
Integrate IoT cloud analytics and over the-air (ota) updates with google and ...
Embedded linux build systems
Configuring wifi in open embedded builds
IoT: Contrasting Yocto/Buildroot to binary OSes
Mender: The open-source software update solution
Mender; the open-source software update solution
Mender.io | Develop embedded applications faster | Comparing C and Golang
The ultimate guide to software updates on embedded linux devices

What's hot (20)

PDF
Software update for embedded systems - elce2014
PDF
Build your own embedded linux distributions by yocto project
PDF
Userspace drivers-2016
PDF
Evolution of ota_update_in_the_io_t_world
PDF
Sw update elce2017
PPTX
Eclipse IDE Yocto Plugin
PDF
The Yocto Project
PDF
Yocto project and open embedded training
PDF
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...
PDF
Linux field-update-2015
PDF
Software update for IoT: the current state of play
PDF
libreCMC : The Libre Embedded GNU/Linux Distro
PDF
Embedded Linux Quick Start Guide v1.5
PDF
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
PDF
Automotive Grade Linux and systemd
PDF
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
PDF
Embedded Linux primer
PDF
Embedded Android: Android beyond the smartphone
PDF
Emanuele Faranda - Creating network overlays with IoT devices using N2N
PDF
Android Internals at Linaro Connect Asia 2013
Software update for embedded systems - elce2014
Build your own embedded linux distributions by yocto project
Userspace drivers-2016
Evolution of ota_update_in_the_io_t_world
Sw update elce2017
Eclipse IDE Yocto Plugin
The Yocto Project
Yocto project and open embedded training
Michele Dionisio & Pietro Lorefice - Developing and testing a device driver w...
Linux field-update-2015
Software update for IoT: the current state of play
libreCMC : The Libre Embedded GNU/Linux Distro
Embedded Linux Quick Start Guide v1.5
Claudio Scordino - Handling mixed criticality on embedded multi-core systems
Automotive Grade Linux and systemd
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Embedded Linux primer
Embedded Android: Android beyond the smartphone
Emanuele Faranda - Creating network overlays with IoT devices using N2N
Android Internals at Linaro Connect Asia 2013
Ad

Similar to A million ways to provision embedded linux devices (20)

PPTX
Building Embedded Linux UDOONEO
PDF
Building RT image with Yocto
PDF
Embedded Linux BSP Training (Intro)
PPTX
Build Your Own Android Tablet
PDF
Android for Embedded Linux Developers
PDF
An Introduction to the Yocto Embedded Framework 2018
 
PDF
Build and Run Android N Source Ccode on NXP SABRESD platform
PPTX
ChromePad - Chromium OS for ThinkPad
PPTX
ChromePad - Chromium OS ThinkPad X220
PPTX
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
PDF
Embedded Linux Build Systems - Texas Linux Fest 2018
PDF
Working with the AOSP - Linaro Connect Asia 2013
KEY
the NML project
PDF
Let Me Pick Your Brain - Remote Forensics in Hardened Environments
ODP
The Deck by Phil Polstra GrrCON2012
PDF
Getting started with LinuxBoot Firmware on AArch64 Server
PDF
Strategies for developing and deploying your embedded applications and images
PDF
Creating new Tizen profiles using the Yocto Project
PDF
BeagleBoard-xM Booting Process
PDF
How to create your own Linux distribution (embedded-gothenburg)
Building Embedded Linux UDOONEO
Building RT image with Yocto
Embedded Linux BSP Training (Intro)
Build Your Own Android Tablet
Android for Embedded Linux Developers
An Introduction to the Yocto Embedded Framework 2018
 
Build and Run Android N Source Ccode on NXP SABRESD platform
ChromePad - Chromium OS for ThinkPad
ChromePad - Chromium OS ThinkPad X220
Embedded Fest 2019. Игорь Опанюк. Das U-boot v2019: a look under the hood
Embedded Linux Build Systems - Texas Linux Fest 2018
Working with the AOSP - Linaro Connect Asia 2013
the NML project
Let Me Pick Your Brain - Remote Forensics in Hardened Environments
The Deck by Phil Polstra GrrCON2012
Getting started with LinuxBoot Firmware on AArch64 Server
Strategies for developing and deploying your embedded applications and images
Creating new Tizen profiles using the Yocto Project
BeagleBoard-xM Booting Process
How to create your own Linux distribution (embedded-gothenburg)
Ad

More from Mender.io (10)

PDF
IoT Prototyping using BBB and Debian
PDF
Why the yocto project for my io t project elc_edinburgh_2018
PDF
IoT Development from Prototype to Production
PDF
Software Updates for Connected Devices - OSCON 2018
PDF
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
PDF
Iot development from prototype to production
PDF
Linux IoT Botnet Wars - ESC Boston 2018
PDF
Securing the Connected Car - SCaLE 2018
PDF
Mender.io | Securing the Connected Car
PDF
Linux IoT Botnet Wars and the lack of basic security hardening
IoT Prototyping using BBB and Debian
Why the yocto project for my io t project elc_edinburgh_2018
IoT Development from Prototype to Production
Software Updates for Connected Devices - OSCON 2018
Linux IOT Botnet Wars and the Lack of Basic Security Hardening - OSCON 2018
Iot development from prototype to production
Linux IoT Botnet Wars - ESC Boston 2018
Securing the Connected Car - SCaLE 2018
Mender.io | Securing the Connected Car
Linux IoT Botnet Wars and the lack of basic security hardening

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Empathic Computing: Creating Shared Understanding
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Spectroscopy.pptx food analysis technology
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
Review of recent advances in non-invasive hemoglobin estimation
Empathic Computing: Creating Shared Understanding
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Programs and apps: productivity, graphics, security and other tools
Agricultural_Statistics_at_a_Glance_2022_0.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Unlocking AI with Model Context Protocol (MCP)
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
Mobile App Security Testing_ A Comprehensive Guide.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Spectroscopy.pptx food analysis technology
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Electronic commerce courselecture one. Pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars

A million ways to provision embedded linux devices

  • 1. Drew Moseley Technical Solutions Architect Mender.io A Million Ways to Provision Embedded Linux Devices
  • 2. Session Overview ● 1,000,000 barely feels like an exaggeration ● Anatomy of an embedded Linux system ● Discuss storage and provisioning of: ⎻ Bootloader ⎻ Kernel/DTB ⎻ Root filesystem ● Describe specific boards using different models Goal: Present an overview of all the provisioning models you will encounter
  • 3. About Me Drew Moseley ○ 10 years in Embedded Linux/Yocto development. ○ Longer than that in general Embedded Software. ○ Project Lead and Solutions Architect. drew.moseley@mender.io https://twitter.com/drewmoseley https://www.linkedin.com/in/drewmoseley/ https://twitter.com/mender_io Mender.io ○ Over-the-air update manager for embedded Linux ○ Open source (Apache 2.0 License) ○ Remote deployment management (server) ○ Under active development
  • 4. Challenges for Embedded Linux Developers ● No “one way” to get initial images onto boards. ● Mechanisms may vary between development, manufacturing and CI/QA. ● Mechanisms vary widely between ⎻ Boards ⎻ Manufacturers ● Slow provisioning -> long development cycles
  • 5. Anatomy of a System Bootloader: system initialization code starting with the reset vector. ● Initialize and scrub RAM ● Setup power rails and clocks ● Load the “rest” of the system Bootloader Kernel Device Tree Root filesystem Kernel: core operating system functionality ● Resource management ● Process control ● Device drivers Device Tree: hardware description Root filesystem: all files, executables, data, etc for the system
  • 6. Storage Overview Bootloader: 1. Separate flash/interface. ie SPI Boot Flash - Compulab CL-SOM-iMX6 2. MTD partition - Compulab CL-SOM-iMX7 3. Inter-partition space - Toradex Colibri i.MX6/eMMC 4. UBI partition - Toradex Colibri i.MX7/NAND 5. File in a partition - Beaglebone Kernel/DTB: 1. Separate partition - Compulab, Toradex 2. Files in a separate partition - Beaglebone 3. Files in the root filesystem - Mender-enabled boards 4. Files retrieved over network - most boards Root filesystem: 1. eMMC/SDCard - Beaglebone, Raspberrypi, etc 2. Raw NAND flash - Toradex Colibri 3. USB drive - Raspberrypi (not the default) 4. SATA/SSD - NUC, PC 5. NFS - most boards
  • 7. Yocto + QEMU - setup Simple setup for development (9 minute build time with SSTATE): sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm git clone git://git.yoctoproject.org/poky -b yocto-2.7.1 source poky/oe-init-build-env cat >> conf/local.conf <<'EOF' SSTATE_MIRRORS = " file://.* http://sstate.yoctoproject.org/2.6/PATH;downloadfilename=PATH n " EOF MACHINE=qemux86 bitbake core-image-base https://www.yoctoproject.org/docs/2.7.1/brief-yoctoprojectqs/brief-yoctoprojectqs.html http://bit.ly/yocto-qemu-deploy
  • 8. Yocto + QEMU - run Standard Block Device: $ runqemu qemux86 nographic NFS mounted root filesystem1 : $ sudo apt-get install rpcbind $ echo 'OPTIONS="-i -w"' | sudo tee -a /etc/default/rpcbind $ sudo service portmap restart $ runqemu qemux86 nfs nographic The runqemu script hides all the complication of setting this up. Differences from typical board scenario: 1. No bootloader 2. No DTB 3. Kernel loaded directly from host filesystem Excellent method for development of non-HW-specific bits. 1 Note that this has worked for me in the past but in my current setup, the system fails to boot. The above was run on Ubuntu 18.04
  • 9. Provisioning Model: SD Card Platform used: Raspberry Pi 3 Proprietary bootloader in ROM ● Loads kernel or u-boot binary as a file from FAT ● DTB loaded as file from FAT Root filesystem mounted from SD/MMC Image file generated directly by Yocto Provisioning done on build platform: $ sudo dd if=<file>.rpi-sdimg of=/dev/sdb bs=8M SDCard inserted in board and booted as-is SDCard Partition 1: FAT /boot ├── bcm2710-rpi-cm3.dtb ├── boot.scr ├── kernel7.img ├── overlays │ ├── i2c-rtc.dtbo ├── start.elf └── uImage Partition 1: ext4 / ├── bin ├── boot ├── dev ├── etc ├── home ├── ...
  • 10. Provisioning Model: eMMC Platform used: TechNexion PICO-PI-IMX7 Bootloader in unpartitioned space on eMMC Root filesystem mounted from eMMC Image file generated directly by Yocto Load U-Boot image from build platform into RAM: $ sudo imx_usb SPL $ sudo imx_usb u-boot.img From RAM-based U-Boot, install new images Target board configured as USB gadget mode usb start ums 0 mmc 0 Provisioning done on build platform: $ sudo dd if=<file>.rpi-sdimg of=/dev/sdb bs=8M eMMC Raw U-Boot binary U-Boot environment Partition 1: FAT /boot ├── *.dtb └── zImage Partition 1: ext4 / ├── bin ├── boot ├── dev ├── etc ├── home ├── ...
  • 11. Provisioning Model: SPI + eMMC Platform used: Compulab IOT-GATE-iMX7 Jumper selection for bootloader location: SPI flash or SD Bootloader configuration determines eMMC or SD for: ● Kernel ● DTB ● Root filesystem Boot full SD-based image provided by Compulab Copy Yocto-generated images to USB key Provisioning done on target platform: U-Boot: # flash_erase /dev/mtd0 0 0 # dd if=/usbkey/cl-som-imx7-firmware of=/dev/mtd0 Root filesystem: # dd if=/usbkey/<image>.sdcard of=/dev/mmcblk2 bs=8M eMMC Partition 1: FAT /boot ├── imx7d-cl-som-imx7.dtb └── zImage Partition 1: ext4 / ├── bin ├── boot ├── dev ├── etc ├── home ├── ... SPI Flash Raw U-Boot image
  • 12. Platform used: Toradex Colibri iMX7 + Aster baseboard Copy Yocto-generated images to SD Card Short test points to boot in recovery mode Load U-Boot image from build platform into RAM: $ sudo imx_usb u-boot-nand.imx From RAM-based U-Boot, install new images U-Boot: nand erase.part u-boot1; nand erase.part u-boot2 load mmc 0:1 ${loadaddr} u-boot-nand.imx nand write ${loadaddr} u-boot1 ${filesize} nand write ${loadaddr} u-boot2 ${filesize} nand erase.part u-boot-env Root filesystem: nand erase.part ubi load mmc 0:1 ${loadaddr} <image>.ubi nand write ${loadaddr} ubi ${filesize} Provisioning Model: Raw NAND UBI Volume: u-boot1 Volume: u-boot2 Volume: u-boot-env Volume: rootfs / ├── bin ├── boot ├── dev ├── etc ├── home ├── ...
  • 13. Platform used: Dragonboard 410c1 Switch on board to boot in fastboot mode Load images to board directly from build platform U-Boot: $ sudo fastboot flash boot boot-dragonboard-410c.img Root filesystem: $ sudo fastboot flash rootfs IMAGE-dragonboard-410c.ext4 Provisioning Model: Android Tools 1 https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/build/open-embedded.md.html
  • 14. Misc Provisioning Tools Live Installers ● Toradex Easy Installer ● Compulab cl-deploy tool ● Compulab Auto Install System ● QtCreator ● Desktop Distro Install Disks Imaging tools ● Balena Etcher ● Win32DiskImager ● ApplePi-Baker ● PiBakery Protocols ● tftp/NFS ● Rockchip USB ● Imx_usb tool ● NVidia flash.sh
  • 15. Other Considerations Product Development: ● CI/CD integration ● Systems developers vs Application developers ● Heterogenous targets Manufacturing: ● Unattended installation ● Per-board data ● Registration with infrastructure ● Burn-in test vs production images