System Software
Integrator for embedded
success
Continuous Integration for BSP
2
CI starter KIT for BSP
• An automated build process
• An automated test suite
• A source code repository
• A continuous Integration Server
• A farm of boards (for performing test on target)
3
Hybrid
SaaS vs Hybrid vs Home-made
+ Infrastructure cost
Quick infrastructure bootstrap
Data locality
Time to flash our device from
cloud & NSA-eyes
Home Made
Flexible solution
Customizable for your own needs
Infrastructure cost (maintenance cost)
Time to bootstrap the infrastructure
+
4
Home made solution
• CI Server : Jenkins (open-source, most used, flexible with its
plugins mechanism)
• Infrastructure as a Code : Use JobDSL or Pipelines plugins
(allow scripting of Job configuration)
• Multi Environnement : Docker Custom Build Environement
Plugins
• Multi Machine (HA and/or In house SaaS platform) : Mesos
+ Jenkins plugins
5
OpenSource solution developed by Linaro to manage
build farm.
LAVA
To manage build farm
+ OpenSource solution
Working at Linaro
Not flexible
Complex set up
6
• Need Firmware Upgrade BSP (depends on your product, android OTA/fastboot, double bank …)
• If not Firwamre Update , sdcard mux
• Power Supply Unit with remote feature
How to perform test on Embedded device
7
LTP :
• For testing the linux kernel
• Focus on scheduler, syscall, mutex, RCU
LTP-DDT (fork made by TI )
• For TI boards
• More BSP focus ( i2c, spi, nand …)
Linux Test Suite and LTP-DDT
Linux Test Suitte and it’s fork made by TI
https://linux-test-project.github.io/ & http://processors.wiki.ti.com/index.php/LTP-DDT
8
• From sharness project (git shell Unit test),
• Simple collection of shell file to run on the target
• Product Test Anything Protocol output (TAP). Simple asci output, readable by human and
machine (tap-jenkins-plugins)
Witekio In house Test suite : Libtest-Sharness
9
• Collection of Shell test into folder tools/testing/selftests of linux kernel source tree.
“The purpose of kselftest is to provide kernel developers and end-users a quick method of running
tests against the Linux kernel. As of this writing, Samsung developer Shuah Khan is the project
leader.”
Kernel Self Test
https://kselftest.wiki.kernel.org/
10
• « Static analyser code » used by linux kernel (also by systemd)
“Coccinelle is a program matching and transformation engine which provides the language SmPL
(Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle
was initially targeted towards performing collateral evolutions in Linux.”
Cocinelle
http://coccinelle.lip6.fr/
11
• Static analyzer embedded into the LLVM compiler
• Compile linux kernel with LLVM is not fully mainlained , need patch
from the LLVM project
Clang Static Analyzer
http://clang-analyzer.llvm.org/
12
• Fuzzing the kernel throught syscall, ioctl.
• Not fully random, use code coverage to improve fuzzing
Fuzzer
American fuzzer loop : http://lcamtuf.coredump.cx/afl/
Trinity : http://codemonkey.org.uk/projects/trinity/
13
Proprietary tools
Headquarter
4, chemin du ruisseau
69134, Ecully France
Phone : + 33 4 26 25 39
Fax : + 33 4 72 18 08 41
sales.emea@witekio.com
Witekio USA
3150 Richards Roads Suite 210 Bellevue,
WA, 98005, USA
Phone : + 1 425 749 4335
Fax : + 1 425 818 1911
sales.amer@witekio.com
Witekio Germany
Am Wartfeld- 61169
Friedberg, Germany
Phone : + 49 6031 693 7070
Fax : + 49 6031 693 707 29
sales.dach@witekio.com
Witekio Asia
C/O 14F-3, No. 57, Fuxing Nth Rd,
Songshan District,
Taipei, 10595, Taiwan
Phone : +886 2 2740 0394
sales.asia@witekio.com
©2016 Witekio & Subsidiaries. All Rights Reserved.
This document and the information it contains is confidential and remains the property of our company. It may not be copied or communicated to a third party or used for any purpose other than that for which it is supplied without the prior written consent of our company.
Thanks

Continuous Integration for BSP

  • 1.
    System Software Integrator forembedded success Continuous Integration for BSP
  • 2.
    2 CI starter KITfor BSP • An automated build process • An automated test suite • A source code repository • A continuous Integration Server • A farm of boards (for performing test on target)
  • 3.
    3 Hybrid SaaS vs Hybridvs Home-made + Infrastructure cost Quick infrastructure bootstrap Data locality Time to flash our device from cloud & NSA-eyes Home Made Flexible solution Customizable for your own needs Infrastructure cost (maintenance cost) Time to bootstrap the infrastructure +
  • 4.
    4 Home made solution •CI Server : Jenkins (open-source, most used, flexible with its plugins mechanism) • Infrastructure as a Code : Use JobDSL or Pipelines plugins (allow scripting of Job configuration) • Multi Environnement : Docker Custom Build Environement Plugins • Multi Machine (HA and/or In house SaaS platform) : Mesos + Jenkins plugins
  • 5.
    5 OpenSource solution developedby Linaro to manage build farm. LAVA To manage build farm + OpenSource solution Working at Linaro Not flexible Complex set up
  • 6.
    6 • Need FirmwareUpgrade BSP (depends on your product, android OTA/fastboot, double bank …) • If not Firwamre Update , sdcard mux • Power Supply Unit with remote feature How to perform test on Embedded device
  • 7.
    7 LTP : • Fortesting the linux kernel • Focus on scheduler, syscall, mutex, RCU LTP-DDT (fork made by TI ) • For TI boards • More BSP focus ( i2c, spi, nand …) Linux Test Suite and LTP-DDT Linux Test Suitte and it’s fork made by TI https://linux-test-project.github.io/ & http://processors.wiki.ti.com/index.php/LTP-DDT
  • 8.
    8 • From sharnessproject (git shell Unit test), • Simple collection of shell file to run on the target • Product Test Anything Protocol output (TAP). Simple asci output, readable by human and machine (tap-jenkins-plugins) Witekio In house Test suite : Libtest-Sharness
  • 9.
    9 • Collection ofShell test into folder tools/testing/selftests of linux kernel source tree. “The purpose of kselftest is to provide kernel developers and end-users a quick method of running tests against the Linux kernel. As of this writing, Samsung developer Shuah Khan is the project leader.” Kernel Self Test https://kselftest.wiki.kernel.org/
  • 10.
    10 • « Staticanalyser code » used by linux kernel (also by systemd) “Coccinelle is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle was initially targeted towards performing collateral evolutions in Linux.” Cocinelle http://coccinelle.lip6.fr/
  • 11.
    11 • Static analyzerembedded into the LLVM compiler • Compile linux kernel with LLVM is not fully mainlained , need patch from the LLVM project Clang Static Analyzer http://clang-analyzer.llvm.org/
  • 12.
    12 • Fuzzing thekernel throught syscall, ioctl. • Not fully random, use code coverage to improve fuzzing Fuzzer American fuzzer loop : http://lcamtuf.coredump.cx/afl/ Trinity : http://codemonkey.org.uk/projects/trinity/
  • 13.
  • 14.
    Headquarter 4, chemin duruisseau 69134, Ecully France Phone : + 33 4 26 25 39 Fax : + 33 4 72 18 08 41 sales.emea@witekio.com Witekio USA 3150 Richards Roads Suite 210 Bellevue, WA, 98005, USA Phone : + 1 425 749 4335 Fax : + 1 425 818 1911 sales.amer@witekio.com Witekio Germany Am Wartfeld- 61169 Friedberg, Germany Phone : + 49 6031 693 7070 Fax : + 49 6031 693 707 29 sales.dach@witekio.com Witekio Asia C/O 14F-3, No. 57, Fuxing Nth Rd, Songshan District, Taipei, 10595, Taiwan Phone : +886 2 2740 0394 sales.asia@witekio.com ©2016 Witekio & Subsidiaries. All Rights Reserved. This document and the information it contains is confidential and remains the property of our company. It may not be copied or communicated to a third party or used for any purpose other than that for which it is supplied without the prior written consent of our company.
  • 15.

Editor's Notes

  • #3 Petit intro sur les problèmes recurrents en informatique que la CI peut facilement corriger.
  • #4 Full SaaS is not possible as embedded board where test will run can not be hosted on the cloud.
  • #6 Not recomended by me (tangi), but solution exist. Not flexible, difficult to set up, complex configuration …