Difference between revisions of "Using Xenomai with the EMAC OE SDK"
Kyoungmeyer (talk | contribs) |
|||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | {{todo| | + | {{todo| Complete (10.06.2015-14:59->KY+)(10.27.2015-14:05->MG+)(11.12.2015-15:00->MD+)|Klint Youngmeyer| project=OE 5.0,KY,MD,Complete }} |
{{#seo: | {{#seo: | ||
|title=Using Xenomai with the EMAC OE SDK | |title=Using Xenomai with the EMAC OE SDK | ||
Line 10: | Line 10: | ||
<!-- /**************************************** Page Description Text ****************************************/ --> | <!-- /**************************************** Page Description Text ****************************************/ --> | ||
<!-- /*********************************************************************************************************/ --> | <!-- /*********************************************************************************************************/ --> | ||
− | This page | + | This page provides a brief description on how to use the Xenomai real time operating system API with the EMAC OE SDK. |
__TOC__ | __TOC__ | ||
Line 23: | Line 23: | ||
<!-- /*********************************************************************************************************/ --> | <!-- /*********************************************************************************************************/ --> | ||
{{:Templateimpl:geninfo | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | {{:Templateimpl:geninfo | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | ||
− | By default, the EMAC SDK includes support for Xenomai. However, due to the hardware dependent nature of the real time API, | + | By default, the EMAC SDK includes support for Xenomai. However, due to the hardware dependent nature of the real time API, a Xenomai enabled kernel is necessary. |
<!-- /*********************************************************************************************************/ --> | <!-- /*********************************************************************************************************/ --> | ||
<!-- /***************************************** Using/Working With ******************************************/ --> | <!-- /***************************************** Using/Working With ******************************************/ --> | ||
Line 70: | Line 70: | ||
<!-- /*********************************************************************************************************/ --> | <!-- /*********************************************************************************************************/ --> | ||
{{:Templateimpl:examples | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | {{:Templateimpl:examples | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | ||
− | To see how to build and use an actual example Xenomai project with the EMAC SDK, please see [[Example_Xenomai_Timer | | + | To see how to build and use an actual example Xenomai project with the EMAC SDK, please see the [[Example_Xenomai_Timer | Xenomai Timer Example]] page. Additionally, Xenomai provides many example projects on their own [https://xenomai.org/documentation/xenomai-3/html/xeno3prm/examples.html documentation page]. |
<!-- /*********************************************************************************************************/ --> | <!-- /*********************************************************************************************************/ --> | ||
<!-- /****************************************** Conclusion ******************************************/ --> | <!-- /****************************************** Conclusion ******************************************/ --> | ||
Line 81: | Line 81: | ||
{{:Templateimpl:moreinfo | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | {{:Templateimpl:moreinfo | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | ||
*[[Xenomai]] | *[[Xenomai]] | ||
− | *[[ | + | *[[Installing_EMAC_OE_5.0_SDK | Install the EMAC SDK]] |
{{:Templateimpl:whatnext | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | {{:Templateimpl:whatnext | initials=KY | title=Using Xenomai with the EMAC OE SDK | desc=This page will cover how to use xenomai with the EMAC OE SDK and how to use some examples. | project=OE 5.0 }} | ||
*[[Example_Xenomai_Timer | Xenomai Timer Example]] | *[[Example_Xenomai_Timer | Xenomai Timer Example]] | ||
+ | *[[Getting_Started_with_the_EMAC_OE_SDK | Getting Started with the EMAC OE SDK]] |
Latest revision as of 15:46, 13 July 2017
This page provides a brief description on how to use the Xenomai real time operating system API with the EMAC OE SDK.
Contents
Background
Xenomai is a real-time operating system (RTOS) API designed to work alongside Linux. It provides a means of migrating from a proprietary RTOS to a Linux based system. This also allows for native Linux applications to be run side-by-side with real-time applications on the same target
General Information
By default, the EMAC SDK includes support for Xenomai. However, due to the hardware dependent nature of the real time API, a Xenomai enabled kernel is necessary.
Using Xenomai with the EMAC OE SDK
For the purposes of this document, all examples will be using the CMake build system. These examples can be easily modified to be used on a traditional Makefile project or a Qt qmake project as well. For most Xenomai enabled projects, adding the following lines to the project's CMakeLists.txt file will be sufficient.
project (example)
#######################################
### Necessary additions for Xenomai ###
#######################################
set(XENO_BASE "${CMAKE_FIND_ROOT_PATH}/usr")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -MMD -g")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${XENO_BASE}/include/xenomai/cobalt -I${XENO_BASE}/include/xenomai -D_GNU_SOURCE -D_REENTRANT -D__COBALT__ -I${XENO_BASE}/include/xenomai/alchemy")
set(CMAKE_EXE_LINKER_FLAGS "-lalchemy -lcopperplate ${XENO_BASE}/lib/xenomai/bootstrap.o -Wl,--wrap=main -Wl,--dynamic-list=${XENO_BASE}/lib/dynlist.ld -L${XENO_BASE}/lib -lcobalt -lpthread -lrt")
include_directories(${XENO_BASE}/include ${XENO_BASE}/include/cobalt)
link_directories(${XENO_BASE}/lib)
#######################################
#######################################
#######################################
add_executable(example example.c)
#######################################
### Necessary additions for Xenomai ###
#######################################
add_definitions(-D_GNU_SOURCE -D_REENTRANT -D__XENO__ -DNO_GPL)
target_link_libraries(example pthread rt alchemy copperplate cobalt)
#######################################
#######################################
#######################################
Examples
To see how to build and use an actual example Xenomai project with the EMAC SDK, please see the Xenomai Timer Example page. Additionally, Xenomai provides many example projects on their own documentation page.