Introduction Me: Software Engineer at DENX, Gmbh U-Boot Custodian - - PowerPoint PPT Presentation

introduction
SMART_READER_LITE
LIVE PREVIEW

Introduction Me: Software Engineer at DENX, Gmbh U-Boot Custodian - - PowerPoint PPT Presentation

Software Update on Embedded Systems Do not brick your device Stefano Babic ELCE October 2014 Introduction Me: Software Engineer at DENX, Gmbh U-Boot Custodian for Freescale's i.MX Focus on Linux embedded with PowerPC and ARM


slide-1
SLIDE 1

Software Update on Embedded Systems Do not brick your device

Stefano Babic ELCE October 2014

slide-2
SLIDE 2

Introduction

  • Me:

– Software Engineer at DENX, Gmbh – U-Boot Custodian for Freescale's i.MX – Focus on Linux embedded with PowerPC and ARM

processors.

slide-3
SLIDE 3

Agenda

  • Why upgrade ?
  • Why is it different with a Linux-PC ?
  • Upgrading strategies
  • Swupdate
slide-4
SLIDE 4

Why do we need to update an embedded system ?

  • It is not only hardware
  • Bug fixes
  • New features can be added
  • Security issues : heartbleed, bad implementation...
slide-5
SLIDE 5

Why is ES different ?

  • Power failure
  • Bad firmware
  • Communication errors in

case of remote update

  • No access to target

Target must recover from errors !

slide-6
SLIDE 6

Which elements must be updated ?

  • Bootloader (dangerous !)
  • Kernel + DT
  • Root filesystem
  • Application data, other filesystems..
  • Customer data (migration )
  • Specific software (FPGA bitstream,...)
slide-7
SLIDE 7

Where is a new SW installed ?

NOR NAND

FPGA

AREF GND RESET 3V3 L TX RX USB EXT PWR SEL PWR ICSP TX RX 3 1 2 1 1 1 1 9 8 DIGITAL 7 6 5 4 3 2 1 0 1 5V Gnd POWER www.adruino.cc ANALOG IN Vin 0 1 2 3 4 5 d0 47 25V d0 47 25V ADRUINO
slide-8
SLIDE 8

Which interface ?

  • Local:

– Local storage (USB, SD,..) – Local peripheral (USB as device, UART,..)

  • Remote:

– HTTP / web based – FTP – Proprietary protocol – Many more...

slide-9
SLIDE 9

Who will update ?

X X

slide-10
SLIDE 10

No expertise required

+

slide-11
SLIDE 11

System upgrade solutions

  • Bootloader upgrade
  • Linux upgrade

– Package Manager – Rescue image or specific application – From the running application

slide-12
SLIDE 12

Bootloader

Limited access to peripherals (drivers, filesystems) Implementation in bootloader not in sync with Linux Limited network support (UDP, not TCP) Limited UI with an operator Update is simpler Smaller footprint

slide-13
SLIDE 13

Linux App

Footprint Availability of all drivers used by the product A lot of tools/libraries

slide-14
SLIDE 14

package manager as distro ?

Upgrade is not atomic Nightmare for test engineers/support New firmware partially written More places where things can go wrong Small update image

slide-15
SLIDE 15

Full update

Size, Time to transfer Atomic: it works or not Single image delivery

slide-16
SLIDE 16

Double copy strategy

BOOT LOADER Application Software Running copy Application Software Standby copy Databases, config, user data BOOT LOADER Application Software Standby copy Application Software Running copy Databases, config, user data
slide-17
SLIDE 17

Single copy (rescue)

BOOT LOADER SWUPDATE Kernel + initrd Application Software Databases, config, user data
slide-18
SLIDE 18

swupdate: FLOSS upgrade sw

  • Missing an open source upgrade software for ES
  • Take care of failure mechanism
  • Hardware / software compatibility
  • Proof correctness images to be installed (chksum,..)
  • Partitioning storage
  • Local or remote install
slide-19
SLIDE 19

Swupdate-2

  • Scriptable (LUA), pre- and postinstall scripts
  • Single image for multiple devices
  • Easy for users to perform update
  • Missing : signed images !
slide-20
SLIDE 20

Handling hardware differences

MENU ALARMS OVERVIEW Q UANTITY Brandon-Alvin ViewerPane K600

HMI Gateway Type A-1 Type A-2 Type A-3 Type A-4

slide-21
SLIDE 21

One release, multiple devices

Type A-1

MENU ALARMS OVERVIEW QUA NTITY Brandon-Alvin ViewerPane K600

HMI Software for A-1 Software for A-3 Software for HMI Release XX.YY for device family Type A-3

slide-22
SLIDE 22

Single image structure

CPIO Header sw-description Image 1 Image 2 Image 3 Image i Image n
slide-23
SLIDE 23

Swupdate architecture

Local Storage WebServer Custom protocol INSTALLER Default Parser (libconfig) Custom Parser (LUA) UBI MTD RAW U-Boot ENV Custom LUA Handler API Handler manager Notifier

slide-24
SLIDE 24

Handling HW differences

software = { version = "0.1.0"; target-1 target-1 = { images: ( { ... } ); }; target-2 = { images: ( { ... } ); }; }

slide-25
SLIDE 25

sw-description

software = { version = "0.1.0"; myboard = { hardware-compatibility: [ "1.2", "1.3", "18#010071"]; partitions: ( /* UBI Volumes */ { name = "rootfs"; device = "mtd10"; size = 104896512; /* in bytes */ }, { name = "kernel"; device = "mtd9"; size = 4194304; /* in bytes */ } );

slide-26
SLIDE 26

sw-description

images: ( { filename = "core-image-base-myboard.ubifs"; volume = "rootfs"; }, { filename = "uboot-env"; type = "uboot"; }, { filename = "uImage"; volume = "kernel"; }, { filename = "fpga.bin"; type = "fpga"; } );

slide-27
SLIDE 27

sw-description: scripts, u-boot

scripts: ( { filename = "test.lua"; type = "lua"; }, { filename = "sdcard.lua"; type = "lua"; }, { filename = "test_shell.sh"; type = "shellscript"; } ); uboot: ( { name = "vram"; value = "4M"; }

slide-28
SLIDE 28

Recovery from failures

U-Boot Swupdate Set update flag Update flag set ? Reset update flag run success Load kernel fail Kernel boots Application Reset bootcounter Bootcounter ? Panic, watchdog,..

slide-29
SLIDE 29

API for external client

Client swupdate

R E Q _ I N S T A L L R E Q _ I N S T A L L S t a t u s , N
  • t
i f i c a t i
  • n
S t a t u s , N
  • t
i f i c a t i
  • n
DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) DATA (IMAGE) G E T S T A T U S G E T S T A T U S A C K A C K S t a t u s , N
  • t
i f i c a t i
  • n
S t a t u s , N
  • t
i f i c a t i
  • n
G E T S T A T U S G E T S T A T U S
slide-30
SLIDE 30

Updating from browser

slide-31
SLIDE 31

Using with Yocto

  • Meta-swupdate
  • It generates a ramdisk suitable for u-boot (.uboot.gz)
  • “dora” and “daisy” branches
  • Footprint RAMDISK (gzipped) : 2.6 – 7 MB

– Typical: ~4MB

slide-32
SLIDE 32

Handler in LUA

require ("swupdate") fpga_handler = function(image) print("Install FPGA Software ") for k,l in pairs(image) do print("image[" .. tostring(k) .. "] = " .. tostring(l) ) swupdate.notify(swupdate.RECOVERY_STATUS.RUN,0, "image[" .. tostring(k) .. "] = " .. tostring(l)) end return 0 end swupdate.register_handler("fpga",fpga_handler)

slide-33
SLIDE 33

swupdate todo list

  • Create a community around the project
  • Security: add support for signed images !
  • Low resources: support for full streamable image
  • New handlers
slide-34
SLIDE 34

Links

  • Swupdate sources at

https://github.com/sbabic/swupdate

  • Documentation at http://sbabic.github.io/swupdate
  • Mailing list: swupdate@googlegroups.com
  • http://www.denx.de/
slide-35
SLIDE 35

Questions ...

  • It's your turn now...