Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
FORMUS3IC_LAS3
/
embb
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c6d1ae26
authored
Oct 10, 2014
by
Tobias Schuele
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated README.md.
parent
b49cf2e1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
21 deletions
+21
-21
README.md
+21
-21
No files found.
README.md
View file @
c6d1ae26
Embedded Multicore Building Blocks (EMBB
)
Embedded Multicore Building Blocks (EMB²
)
=========================================
=========================================
Overview
Overview
========
========
The Embedded Multicore Building Blocks (EMB
B
) are an easy to use yet powerful
The Embedded Multicore Building Blocks (EMB
²
) are an easy to use yet powerful
and efficient C/C++ library for the development of parallel applications. EMB
B
and efficient C/C++ library for the development of parallel applications. EMB
²
has been specifically designed for embedded systems and the typical
has been specifically designed for embedded systems and the typical
requirements that accompany them, such as real-time capability and constraints
requirements that accompany them, such as real-time capability and constraints
on memory consumption. As a major advantage, low-level operations are hidden
on memory consumption. As a major advantage, low-level operations are hidden
...
@@ -15,18 +15,18 @@ management and synchronization. This not only improves productivity of
...
@@ -15,18 +15,18 @@ management and synchronization. This not only improves productivity of
parallel software development, but also results in increased reliability and
parallel software development, but also results in increased reliability and
performance of the applications.
performance of the applications.
EMB
B
is independent of the hardware architecture (x86, ARM, ...) and runs on
EMB
²
is independent of the hardware architecture (x86, ARM, ...) and runs on
various platforms, from small devices to large systems containing numerous
various platforms, from small devices to large systems containing numerous
processor cores. It builds on MTAPI, a standardized programming interface for
processor cores. It builds on MTAPI, a standardized programming interface for
leveraging task parallelism in embedded systems containing symmetric or
leveraging task parallelism in embedded systems containing symmetric or
asymmetric multicore processors. A core feature of MTAPI is low-overhead
asymmetric multicore processors. A core feature of MTAPI is low-overhead
scheduling of fine-grained tasks among the available cores during runtime.
scheduling of fine-grained tasks among the available cores during runtime.
Unlike existing libraries, EMB
B
supports task priorities, which allows the
Unlike existing libraries, EMB
²
supports task priorities, which allows the
creation of soft real-time systems. Additionally, the scheduling strategy can
creation of soft real-time systems. Additionally, the scheduling strategy can
be optimized for non-functional requirements such as minimal latency and
be optimized for non-functional requirements such as minimal latency and
fairness.
fairness.
Besides the task scheduler, EMB
B
provides basic parallel algorithms, concurrent
Besides the task scheduler, EMB
²
provides basic parallel algorithms, concurrent
data structures, and skeletons for implementing stream processing
data structures, and skeletons for implementing stream processing
applications. These building blocks are largely implemented in a non-blocking
applications. These building blocks are largely implemented in a non-blocking
fashion, thus preventing frequently encountered pitfalls like lock contention,
fashion, thus preventing frequently encountered pitfalls like lock contention,
...
@@ -81,7 +81,7 @@ the following OS/compiler/architecture combinations:
...
@@ -81,7 +81,7 @@ the following OS/compiler/architecture combinations:
Other compilers and operating systems may be supported without any changes to
Other compilers and operating systems may be supported without any changes to
the source code. The project includes unit tests that can be used to find out
the source code. The project includes unit tests that can be used to find out
whether a system not officially supported is suitable to run EMB
B
. If there is
whether a system not officially supported is suitable to run EMB
²
. If there is
a requirement to support a system on which the unit tests do not pass, please
a requirement to support a system on which the unit tests do not pass, please
contact us: embb-dev@googlegroups.com.
contact us: embb-dev@googlegroups.com.
...
@@ -89,10 +89,10 @@ contact us: embb-dev@googlegroups.com.
...
@@ -89,10 +89,10 @@ contact us: embb-dev@googlegroups.com.
Directory Structure
Directory Structure
===================
===================
EMB
B
is a technology stack consisting of various building blocks. For some of
EMB
²
is a technology stack consisting of various building blocks. For some of
them, there exist C and C++ versions, others are only implemented in C++. The
them, there exist C and C++ versions, others are only implemented in C++. The
directory names are postfixed with either "_cpp" or "_c" for the C++ and C
directory names are postfixed with either "_cpp" or "_c" for the C++ and C
versions, respectively. Currently, EMB
B
contains the following components:
versions, respectively. Currently, EMB
²
contains the following components:
-
base: base_c, base_cpp
-
base: base_c, base_cpp
-
mtapi: mtapi_c, mtapi_cpp
-
mtapi: mtapi_c, mtapi_cpp
...
@@ -117,7 +117,7 @@ data structures for storing object in an organized and thread-safe way.
...
@@ -117,7 +117,7 @@ data structures for storing object in an organized and thread-safe way.
Build and Installation
Build and Installation
======================
======================
EMB
B
is built using CMake (version 2.8.9 or higher). CMake is a build file
EMB
²
is built using CMake (version 2.8.9 or higher). CMake is a build file
generator which allows to abstract from the concrete build tools. To generate
generator which allows to abstract from the concrete build tools. To generate
and invoke the platform-specific build files, open a shell (on Windows, use
and invoke the platform-specific build files, open a shell (on Windows, use
the Visual Studio developer shell to have the correct environment variables)
the Visual Studio developer shell to have the correct environment variables)
...
@@ -147,12 +147,12 @@ option -DCMAKE_BUILD_TYPE=[Release|Debug]. If no build mode is given on Linux,
...
@@ -147,12 +147,12 @@ option -DCMAKE_BUILD_TYPE=[Release|Debug]. If no build mode is given on Linux,
the default (Release) is used. The Visual Studio generators create build files
the default (Release) is used. The Visual Studio generators create build files
for both modes (the selection is done at build time).
for both modes (the selection is done at build time).
EMB
B
can be built with and without C++ exception handling, which has to be
EMB
²
can be built with and without C++ exception handling, which has to be
specified on build file generation. When exceptions are turned off, an error
specified on build file generation. When exceptions are turned off, an error
message is emitted and the program aborts in case of an exception within EMB
B
.
message is emitted and the program aborts in case of an exception within EMB
²
.
To disable exceptions, add the option -DUSE_EXCEPTIONS=OFF.
To disable exceptions, add the option -DUSE_EXCEPTIONS=OFF.
The tutorial of EMB
B
comes with example source files in doc/examples/. These
The tutorial of EMB
²
comes with example source files in doc/examples/. These
can be built with the other source files using CMake option -DBUILD_EXAMPLES=ON
can be built with the other source files using CMake option -DBUILD_EXAMPLES=ON
in the generation step. Note, however, that the examples use C++11 features and
in the generation step. Note, however, that the examples use C++11 features and
require a corresponding compiler.
require a corresponding compiler.
...
@@ -188,7 +188,7 @@ For a Windows Release build, type
...
@@ -188,7 +188,7 @@ For a Windows Release build, type
3. Running the tests
3. Running the tests
--------------------
--------------------
To check whether EMB
B
was compiled correctly, run the tests. The test
To check whether EMB
²
was compiled correctly, run the tests. The test
executables are contained in the subfolder "binaries".
executables are contained in the subfolder "binaries".
On Linux, type
On Linux, type
...
@@ -199,7 +199,7 @@ On Windows, type
...
@@ -199,7 +199,7 @@ On Windows, type
binaries\run_tests.bat
binaries\run_tests.bat
If no error message occurs, EMB
B
is working fine.
If no error message occurs, EMB
²
is working fine.
4.
Installation
4.
Installation
---------------
---------------
...
@@ -232,13 +232,13 @@ installation has to be run with administrator / root privileges.
...
@@ -232,13 +232,13 @@ installation has to be run with administrator / root privileges.
Using the Library
Using the Library
=================
=================
To use EMB
B
, the include files have to be made available during compilation of
To use EMB
²
, the include files have to be made available during compilation of
your application and the libraries have to be added during linking.
your application and the libraries have to be added during linking.
1.
Using C++
1.
Using C++
------------
------------
If you want to use the C++ functionalities of EMB
B
, you have to link the
If you want to use the C++ functionalities of EMB
²
, you have to link the
following libraries (names will be different on Windows and on Linux) in the
following libraries (names will be different on Windows and on Linux) in the
given order:
given order:
...
@@ -268,7 +268,7 @@ The C header files can be included as follows:
...
@@ -268,7 +268,7 @@ The C header files can be included as follows:
Documentation
Documentation
=============
=============
EMB
B
comes with a tutorial, example programs, and an HTML reference
EMB
²
comes with a tutorial, example programs, and an HTML reference
documentation describing the APIs, which can be found in the "doc" folder.
documentation describing the APIs, which can be found in the "doc" folder.
The root document of the HTML reference is "doc/reference/index.html".
The root document of the HTML reference is "doc/reference/index.html".
...
@@ -276,7 +276,7 @@ The root document of the HTML reference is "doc/reference/index.html".
...
@@ -276,7 +276,7 @@ The root document of the HTML reference is "doc/reference/index.html".
Code Quality
Code Quality
============
============
For the C++ parts of EMB
B
, we respect most rules of the "Google C++ Style
For the C++ parts of EMB
²
, we respect most rules of the "Google C++ Style
Guide" which are checked using the cpplint tool. However, we ignore some
Guide" which are checked using the cpplint tool. However, we ignore some
rules, as they are not applicable or yield false results for this project.
rules, as they are not applicable or yield false results for this project.
For example, we respect the include order of the Google Style Guide, but use
For example, we respect the include order of the Google Style Guide, but use
...
@@ -290,7 +290,7 @@ Known Bugs and Limitations
...
@@ -290,7 +290,7 @@ Known Bugs and Limitations
-
The MTAPI implementation is currently limited to homogeneous systems.
-
The MTAPI implementation is currently limited to homogeneous systems.
Support for heterogeneous systems will be added in the near future.
Support for heterogeneous systems will be added in the near future.
-
For memory management reasons, the number of threads EMB
B
can deal with
-
For memory management reasons, the number of threads EMB
²
can deal with
is bounded by a predefined but modifiable constant (see functions
is bounded by a predefined but modifiable constant (see functions
embb_thread_get_max_count() / embb_thread_set_max_count() and class
embb_thread_get_max_count() / embb_thread_set_max_count() and class
embb::base::Thread).
embb::base::Thread).
...
@@ -305,7 +305,7 @@ Links
...
@@ -305,7 +305,7 @@ Links
http://www.multicore-association.org/workgroup/mtapi.php
http://www.multicore-association.org/workgroup/mtapi.php
-
CMake:
-
CMake:
http://www.cmake.org/
http://www.cmake.org/
-
Google C++ Style Guide
-
Google C++ Style Guide
:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html
-
cpplint:
-
cpplint:
http://google-styleguide.googlecode.com/svn/trunk/cpplint/
http://google-styleguide.googlecode.com/svn/trunk/cpplint/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment