Using Xenomai with the EMAC OE SDK

From wiki.emacinc.com
Revision as of 13:24, 16 October 2015 by Kyoungmeyer (talk | contribs)
Jump to: navigation, search
TODO: {{#todo: Review (10.06.2015-14:59->KY+)|Klint Youngmeyer|OE 5.0,KY}}

This page will describe basically how to use the Xenomai real time operating system API with the EMAC OE SDK.

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.

Further Information

Where to Go Next
Pages with Related Content