X(cross) Development System make AGL application development easier July 2017 Sébastien Douheret sebastien.douheret@iot.bzh
IoT.bzh ● Located in France - Brittany ( Vannes / Lorient / Rennes ) ● People background: – 40% coming from Tizen IVI (Intel+Samsung) – 40% coming from Wind River – 20% coming from industry ● Working on AGL since 2015 ● First technical contributor on AGL X(cross) Development System Sep. 2017 2
Key Focuses ● Cybersecurity ● Secure Application Framework (life cycle, MAC, Cynara, Systemd, Cgroups, Namespaces ...) ● Vehicle to Cloud, Identity management ● Securing key platform services (audio, signaling, graphics …) ● Development Tools ● Docker Platform development (AGL SDK) ● Apps development from IDE: XDS (Cross Development System) ● Platform Monitoring tools ● Integration ● Yocto recipes, Releases automation & Testing (CI) ● Renesas boards support ● Community Support ● Documentation (kickstart, developer samples, guides …) ● White Papers & Conferences (Genivi, AGL, Fosdem, ELC …) X(cross) Development System Sep. 2017 3
X(cross) Development System (XDS) ● Dedicated to Applications Developers enable apps developer without Yocto skills → ● Cross-platform build using AGL SDK toolchain ● Secure packaging ( .wgt files including signatures) ● Deploy on development boards (or Qemu image) ● Remote debugging from IDE ● Easy target access (console, SSH, …) ● Developer environment is a standard IDE ● Dashboard Web App to manage configuration and trigger actions ● Provide an XDS API ie CI workflows or specific environments → X(cross) Development System Sep. 2017 4
Key Features ● Multi-platform : no dependencies on developer host (Linux / Windows / MacOS) ● Easy to setup Near-zero install, no admin privileges required ● Application sources remain local Compatibility with existing IT policies (e.g. corporate backup, git, ...) ● Cross toolchain & tools embedded in a container : ● Local : run locally (local subsystem, virtual machine, docker container ...) ● On-premises : run on a local build server ● Cloud : SaaS ● Leverage specific OS capabilities where applicable (e.g. Linux for Windows Subsystem, docker) X(cross) Development System Sep. 2017 5
Targeted Use Cases Single Host mode Local Network mode Cloud mode Host: Windows Host: Linux Host: Linux ● ● ● IDE: Eclipse IDE: Visual Code IDE: Eclipse ● ● ● Container: Linux Container: Docker Container: Docker ● ● ● Subsystem running in the Cloud Sources: shared ● Sources: shared through docker volume Sources: shared ● ● through native access through sync tool Dev Host Windows Dev Host Linux Dev Host IDE IDE IDE Linux Subsystem XDS Server Local network daemon Local Cloud network USB or local network Build Host Target Docker Target Docker Target XDS Server XDS Server daemon daemon X(cross) Development System Sep. 2017 6
Architecture Development Host XDS Server Container Development Host XDS Server Container Linux / Windows / MacOS Local or remote Linux / Windows / MacOS Local or remote IDE UI Command Local network (Eclipse, Visual Studio Code, …) line or Cloud network XDS plugin xds-exec REST + WS XDS -server XDS-agent Cross Toolchain B Daemon Files Cross Toolchain A App sources File Sync File Sync Files App sources (duplicated) deployment Direct link (eg. USB <=> Ethernet) Target AGL repo Target These blocks may be bypassed when fjles can be shared over a local network (eg. NFS mount or docker volume) X(cross) Development System Sep. 2017 7
Architecture - debug Development Host XDS Server Container Development Host XDS Server Container Linux / Windows / MacOS Local or remote Linux / Windows / MacOS Local or remote Local network IDE UI or (Eclipse, Visual Studio Code, …) Cloud network Cross Toolchain B Cross Toolchain A XDS-gdb XDS -server REST + WS gdb (cross) App sources App sources (duplicated) gdbserver AGL repo Target Target X(cross) Development System Sep. 2017 8
XDS Implementation ● Written in GO (portable Linux/Windows/MacOS) ● Dashboard (webapp Angular2, TypeScript 2) to make development setup easier ● REST API + WebSocket (socket.io) ● File synchronization based on Syncthing [1] to support Cloud model ● XDS server integrated into AGL SDK docker image (see flavour xds [2] ) [1]: https://syncthing.net/ [2]: https://git.automotivelinux.org/AGL/docker-worker-generator/ X(cross) Development System Sep. 2017 9
XDS building blocks ● xds-server – Core of the system, running in container: ● Provide Dashboard as a webapp ● REST API interface over HTTP to config and trigger commands ● Websocket to get asynchronously data (commands output) or events (commands exit) ● Control file synchronizer (Syncthing) on server/ in container ● Manage (install, list, remove) AGL SDKs ● xds-agent (client) – Client side part, running on developer host. ● Control file synchronizer (Syncthing) on developer's machine ● Target terminal (work in progress) ● xds-exec – Command line tool to wrap standard exec command. ● xds-gdb – Command line tool to allow application debugging (based on gdb). X(cross) Development System Sep. 2017 10
Develop AGL app with XDS 1) Browse XDS dashboard: eg. http://localhost:8000 2) Download xds-agent, install and start-it on desktop 3) Add a new project 4) Cross build/compile your project using either : Dashboard build page ● IDE using xds-exec ● 5) Deploy app 6) Source debug from IDE (work in progress) X(cross) Development System Sep. 2017 11
Available as today ● Beta version – Pre-build docker image including XDS server https://github.com/iotbzh/xds-server#how-to-run – Multi-platform (Linux / Windows/ MacOS) host tools (xds-agent, xds-exec, xds-gdb) – Support Cloud mode (file sharing based on a synchronization tool) – IDE integration (manual setup) https://github.com/iotbzh/xds-exec#using-xds-exec-within-an-ide – Debugging proof of concept (based on gdb and AGL app-templates) ● Video showing development and debug https://vimeo.com/221493917 ● Binary packages available on openSuSE Build Service: https://build.opensuse.org/project/show/isv:LinuxAutomotive:app-Development ● Sources available on Github – xds-server : https://github.com/iotbzh/xds-server – xds-agent : https://github.com/iotbzh/xds-agent – xds-exec: https://github.com/iotbzh/xds-exec – xds-gdb: https://github.com/iotbzh/xds-gdb X(cross) Development System Sep. 2017 12
Next version Release Candidate 1 (AGL AMM – Fall’ 17) ● Complete packaging and server side upgrade ● Improve dashboard and error reporting ● Support multiple file sharing (simple path- mapping, NFS, synchting) ● AGL SDK management (add, remove) ● Target setup and target terminal integration in dashboard ● Better integration in IDE (templates) ● Improve/document debugging support ● Document REST API X(cross) Development System Sep. 2017 13
Roadmap ● AGL AMM Fall ’17: Release Candidate 1 ● EE/CES ’18: Release Candidate X(cross) Development System Sep. 2017 14
Contacts ● Sébastien Douheret <sebastien.douheret@iot.bzh> ● Stéphane Desneux <stephane.desneux@iot.bzh> X(cross) Development System Sep. 2017 15
Q&A Gulf of Morbihan, south of Brittany, France X(cross) Development System Sep. 2017 16
AGL - Linux + Docker + XDS - Develop, Build, Deploy LAN / @ external access external access Linux Host Target Board IDE IDE Browser Browser edit edit Binder Project XDS Container - Debian Jessie Sources deploy deploy shared volume SDK SDK build build t n e Network g A Bridge Binary/Widget X(cross) Development System Sep. 2017 17
AGL - Linux + Docker + XDS - Debug LAN / @ external access external access Linux Host Target Board DEBUG UI DEBUG UI SSH Binder Project XDS Container - Debian Jessie Sources shared volume gdbserver SDK SDK gdb (cross) b d Network g Bridge X(cross) Development System Sep. 2017 18
Recommend
More recommend