blob: 74ed088fb4a39fad259bf46d1f426b9308736875 [file] [log] [blame]
Mustafa Ozcelikorsd8f8a732017-07-17 14:02:35 +02001Description:
2 A4MCAR Project - Readme File
3
4Author:
5 M. Ozcelikors <mozcelikors@gmail.com>, Fachhochschule Dortmund
6
7Supervision & Mentoring:
8 Robert Hoettger
9
10Disclaimer:
11 Copyright (c) 2017 FH Dortmund and others
12 All rights reserved. This program and the accompanying materials are made available under the
13 terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
14 http://www.eclipse.org/legal/epl-v10.html
15
16 This project has been granted during the Google Summer of Code 2017.
17
18Scope:
19 In this readme file, the project descriptions and objectives are given. This readme file also
20 introduces the file system of all the applications developed for XMOS xCORE-200 eXplorerKIT,
21 Raspberry Pi 3, and Android phones, as well its shows where created models and scripts are
22 located.
23
24Project Abstract:
25 Distributing software effectively to multi core, many core, and distributed systems has been
26 studied for decades but still advances successively driven by domain specific constraints.
27 Programming vehicle ECUs is one of the most constrained domains that recently approached the need
28 for concurrency due to advanced driver assistant systems or autonomous driving approaches.
29 To answer the needs of automotive industry in this manner with an open-source approach, recent
30 studies have been made such as the Eclipse-based APP4MC platform. Although APP4MC provides
31 sufficient tooling in parallel computing for automotive domain, the demonstration and evaluation
32 of its results would improve its performance and allow to investigate the optimization of goals
33 such as resource usage and energy consumption. With the project, software distribution challenges
34 for such automotive systems should be analyzed upon instruction precise modeling, affinity
35 constrained distribution, and reducing task response times achieved by advanced software
36 parallelization. Advanced software parallelization will be achieved on a remote controlled
37 demonstrator car that will have a distributed and parallel architecture.
38
39 A4MCAR is a demonstrator car which features not only low level functionalities such
40 as sensor and motor driving but also high level features such as image processing,
41 camera streaming, server-based wireless driving via Web, bluetooth connectivity
42 via Android application, system core monitoring and analysis features and touchscreen UI.
43 Our experiments along the multi-task heterogeneous demonstrator A4MCAR show that using APP4MC
44 results instead of OS-based or sequential implementations on a distributed heterogeneous
45 system significantly improves its responsiveness in order to potentially reduce energy
46 consumption and replaces error prone manual constraint considerations for mixed-critical
47 applications.
48
49Project Objectives:
50 - Development of a distributed multi-core demonstrator for the APP4MC platform that involves
51 features with the emphasis of automotive applications.
52 - General study on parallelization, scheduling, and popular trends (such as POSIX threads,
53 RTOS paralellization etc.)
54 - Researching techniques to retrieve information (number of instructions, communication costs)
55 and system trace from platforms such as xCORE and Linux to achieve precise modelling with APP4MC.
56 - In order to achieve optimization goals such as reduced energy consumption and reduced resource
57 usage, different affinity constrained software distributions will be evaluated and energy features
58 will be invoked to see if the goals are met.
59 - Developing a basic and modular online parallelization evaluation software that will retrieve
60 scheduling properties such as slack times, execution times, and deadlines from all the processes
61 and that will tell how many of the deadlines are met, how good of a software distribution it is
62 while the software is being executed.
63 - Also taking system traces from the software to carry out offline software evaluation in order
64 to figure out means to balance the load on cores.
65 - Comparing the conventional schedulers non-constrained affinity distribution (such as a Linux OS
66 scheduler) to the affinity constrained distribution from APP4MC to see if performance can be
67 improved.
68
Mustafa Ozcelikors90f20c62017-08-20 19:01:37 +020069Introduction and Setup:
70 Please visit
71 http://a4mcar.readthedocs.io
72
Mustafa Ozcelikorsd8f8a732017-07-17 14:02:35 +020073File System and Applications:
74 The a4mcar directory have to be placed in the home directory: /home/pi
75 The external libraries and modules that needs to be downloaded are located at:
76 https://gitlab.pimes.fh-dortmund.de/RPublic/a4mcar_required_modules.git
77
Mustafa Ozcelikors90f20c62017-08-20 19:01:37 +020078 The dependencies are installed using setup scripts that are created. External modules involve
79 virtkeyboard, psutil, mjpg_streamer for those who want to manually install the dependencies.
Mustafa Ozcelikorsd8f8a732017-07-17 14:02:35 +020080
81 The repository should have the following main folders:
82
83 web_interface : The web interface that is developed for A4MCAR project which is used to control
84 A4MCAR over remote Wi-Fi connection.
85
86 In order to set up web_interface, run the setup script:
87 web_interface/setup_web_interface.sh
88
89 In order to run the web_interface correctly, the high-level modules core_reader
90 and ethernet_client should be ready and working.
91 To run the web_interface one should connect to the access point of Raspberry Pi
92 from a client computer web browser and visit
93 http://<IP_Address>/jqueryControl2.php or http://<IP_Address>/jqueryControl.php
94
95 high_level_applications : This module consists of several high-level applications that are developed for
96 A4MCAR's high-level module (Raspberry Pi). These applications involve:
97 touchscreen_display, core_recorder, dummy_loads, ethernet_client, and
98 image_processing.
99
100 In order to run the applications, respective Python files could be run or C/C++
101 binaries could be executed. Also the scripts that are located under scripts
102 folder could be used to initialize some of the applications.
103
104 In order to set up high_level_applications module dependencies, one should run
105 the setup script and follow the instructions:
106 high_level_applications/setup_high_level_applications.sh
107
108 models: A4MCAR's hardware and software model with Eclipse APP4MC is located in this
109 directory.
110
111 android_application: This directory consists of the source files that belong to the A4MCAR's bluetooth
112 based driving application. The source and design files could be used in an Android
113 IDE in order to make tweaks to the application and to generate new .apk files.
114
115 low_level_applications: low_level_applications module involves the source code for the low-level module that
116 are run using a multi-core microcontroller XMOS xCORE-200 eXplorerKIT. The low level
117 applications are responsible for tasks such as sensor driving, actuation, communication,
118 and core monitoring of the A4MCAR. The low_level_applications module could be imported
119 into xTIMEcomposer to make tweaks to the tasks.
Mustafa Ozcelikorsf8e6a252017-07-30 20:18:40 +0200120
Mustafa Ozcelikors90f20c62017-08-20 19:01:37 +0200121 docs: Involves documentation and Sphinx-generated how-to-setup manual.
Mustafa Ozcelikorsd8f8a732017-07-17 14:02:35 +0200122