openembedded for medical devices
TRANSCRIPT
![Page 1: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/1.jpg)
OpenEmbedded
for medical devices
Silvio Laurenti<[email protected]>
Stefano Cotta Ramusino<[email protected]>
2013.07.08
![Page 2: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/2.jpg)
Norms for medical devices
Medical Devices Directive 93/42/EEC
any instrument, apparatus, appliance, material or other article
whether used alone or in combination
including the software necessary
for its proper application
EN 62304:2006 - Software Class B
![Page 3: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/3.jpg)
Norms for medical devices
1 - development planning
2 - requirements analysis
3 - architectural design
4 - detailed design
5 - unit implementation and verification
6 - integration and integration testing
7 - system testing
8 - release
![Page 4: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/4.jpg)
What is OpenEmbedded ?
FLOSS framework
to create custom embedded Linux distro
sets of metadata called recipes
build system based on BitBake
![Page 5: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/5.jpg)
Poky
open source platform build tool
complete software development environment
based on OpenEmbedded
focus on strict packages set
![Page 6: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/6.jpg)
not a Linux distribution
umbrella project covering a widely of embedded Linux technologies
key concepts are:
collaboration
customization
Yocto Project
![Page 7: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/7.jpg)
a Linux distribution based on OpenEmbedded
heavily through the Yocto Project
feeds of repository with binary packages
Ångström
![Page 8: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/8.jpg)
OE Platform supported
Beagle Board
Openmoko
Dreambox
Toradex – Colibri
Gumstix
Palm – webOS
MontaVista
KOAN - KaeilOS
![Page 9: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/9.jpg)
Nvidia Tegra 2
System-on-Chip
dual-core ARM Cortex-A9 CPU
Ultra Low Power GeForce GPU
lacking ARM's advanced SIMD extension (NEON)
![Page 10: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/10.jpg)
OpenEmbedded architecture
![Page 11: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/11.jpg)
heart building tool system of OpenEmbedded
parsing metadata (recipes)
generating tasks list
executing tasks
QA checks
written in Python
Bitbake
![Page 12: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/12.jpg)
Metadata (Recipes)
.bb files
contain info about software:
download source
apply patches
configure options
how to compile
how to package output files
package is recipes output from OE
.ipk files
![Page 13: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/13.jpg)
Metadata are organized, isolated and customized in layers
collection of recipes and configuration files
used on top of OE-Core to keep it modular
i.e. machine support and customization reside in
the Board Specific Package (BSP) Layer
OpenEmbedded layers
![Page 14: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/14.jpg)
OpenEmbedded layers
meta-multimedia
meta-networking
meta-oe
meta-systemd
meta-webserver
toolchain-layer
recipes-connectivity
recipes-core
recipes-devtools
recipes-graphics
recipes-kernel
recipes-multimedia
recipes-navigation
recipes-qt
![Page 15: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/15.jpg)
Generated items
Package Feeds
.ipk packages in different directories
corresponding to the target machine architecture
Images
rootfs - bootloader – kernel
Toolchain SDK
to cross develop on different hosts
![Page 16: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/16.jpg)
Making your distro
patched Linux kernel
hard-float
WiFi / Bluetooth / GSM
Systemd
Udev
D-Bus
ConnMan / NetworkManager
OpenGL-ES 2.0
Qt4
![Page 17: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/17.jpg)
Layer modularization
OpenEmbedded Layer (meta-oe)
Custom Layer (meta-btw)
Vendor Layer (meta-toradex)
Distro Layer (meta-angstrom)
![Page 18: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/18.jpg)
Creating your layer
meta-whateveryouwant
populate with your software/patches
add layer to bblayers.conf
init new build directory
oe-init-build
![Page 19: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/19.jpg)
Bootloader: U-Boot
access via serial console
init GPIO before kernel
contains kernel parameters
![Page 20: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/20.jpg)
Kernel: Linux
add full support to the custom board
initialize GPIO and pinmux
/sys/kernel/debug/gpio
write/port missing drivers
power saving optimization
custom boot logo
![Page 21: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/21.jpg)
System Manager: systemd
reduce shell overhead
journalctl --full
write service for your application
systemd-analyze blame/plot
![Page 22: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/22.jpg)
Graphic: FrameBuffer - X.Org
psplash
display image waiting X.Org
xinit
launch single graphical application
feh
display image waiting the main application
![Page 23: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/23.jpg)
Frontend: Qt Framework
add hardware acceleration support
-lEGL -lGLESv2
![Page 24: OpenEmbedded for medical devices](https://reader036.vdocuments.us/reader036/viewer/2022071601/613d4231736caf36b75b3365/html5/thumbnails/24.jpg)
Optimization
bootloader boot_delay=0
kernel drivers static
CONFIG_LEGACY_PTYS=n
remove useless systemd service
remove psplash
fbv -d 1 logo.bmp; cp /dev/fb0 logo.fb; lzop -9 logo.fb
lzop -dc logo.fb.lzo > /dev/fb0