瀏覽代碼

Add support for the RTAI real-time extension

[Peter: fix rtai Config.in]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Thomas Petazzoni 14 年之前
父節點
當前提交
8797a9cd1f
共有 5 個文件被更改,包括 83 次插入0 次删除
  1. 13 0
      linux/Config.ext.in
  2. 47 0
      linux/linux-ext-rtai.mk
  3. 1 0
      package/Config.in
  4. 7 0
      package/rtai/Config.in
  5. 15 0
      package/rtai/rtai.mk

+ 13 - 0
linux/Config.ext.in

@@ -15,4 +15,17 @@ config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
 	  Download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
 	  Download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
 	  and verify that your kernel version in buildroot matches.
 	  and verify that your kernel version in buildroot matches.
 
 
+# RTAI
+config BR2_LINUX_KERNEL_EXT_RTAI
+       bool "RTAI Real-time patch"
+       select BR2_PACKAGE_RTAI
+       help
+         RTAI Kernel part.
+
+config BR2_LINUX_KERNEL_EXT_RTAI_PATCH
+       depends on BR2_LINUX_KERNEL_EXT_RTAI
+       string "Path for RTAI patch file"
+       help
+         Optionally, explicitly specify the RTAI patch to use.
+
 endmenu
 endmenu

+ 47 - 0
linux/linux-ext-rtai.mk

@@ -0,0 +1,47 @@
+##################################################
+# Linux RTAI extensions
+#
+# Patch the linux kernel with RTAI extension
+##################################################
+
+ifeq ($(BR2_LINUX_KERNEL_EXT_RTAI),y)
+# Add dependency to RTAI (user-space) which provide kernel patches
+LINUX_DEPENDENCIES += rtai-patch
+
+RTAI_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_RTAI_PATCH))
+
+ifeq ($(KERNEL_ARCH),i386)
+RTAI_ARCH = x86
+else ifeq ($(KERNEL_ARCH),x86_64)
+RTAI_ARCH = x86
+else ifeq ($(KERNEL_ARCH),powerpc)
+RTAI_ARCH = ppc
+else
+RTAI_ARCH = $(KERNEL_ARCH)
+endif
+
+# Prepare kernel patch
+ifeq ($(RTAI_PATCH),)
+define RTAI_PREPARE_KERNEL
+	kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \
+	if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \
+		support/script/apply-patches.sh $(LINUX_DIR) 		\
+			$(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ 	\
+			hal-linux-$${kver}-*patch ; \
+	else \
+		echo "No RTAI patch for your kernel version" ; \
+		exit 1 ; \
+	fi
+endef
+else
+define RTAI_PREPARE_KERNEL
+	support/script/apply-patches.sh 	\
+		$(LINUX_DIR)			\
+		$(dir $(RTAI_PATCH))		\
+		$(notdir $(RTAI_PATCH))
+endef
+endif
+
+LINUX_POST_PATCH_HOOKS += RTAI_PREPARE_KERNEL
+
+endif #BR2_LINUX_EXT_RTAI

+ 1 - 0
package/Config.in

@@ -489,6 +489,7 @@ endmenu
 
 
 menu "Real-Time"
 menu "Real-Time"
 source "package/xenomai/Config.in"
 source "package/xenomai/Config.in"
+source "package/rtai/Config.in"
 endmenu
 endmenu
 
 
 menu "Shell and utilities"
 menu "Shell and utilities"

+ 7 - 0
package/rtai/Config.in

@@ -0,0 +1,7 @@
+config BR2_PACKAGE_RTAI
+	bool "rtai"
+	depends on BR2_LINUX_KERNEL_EXT_RTAI
+	help
+	  RTAI - the RealTime Application Interface for Linux.
+
+	  http://www.rtai.org

+ 15 - 0
package/rtai/rtai.mk

@@ -0,0 +1,15 @@
+RTAI_VERSION = 3.8.1
+RTAI_SOURCE  = rtai-$(RTAI_VERSION).tar.bz2
+RTAI_SITE    = http://www.rtai.org/RTAI/
+
+RTAI_DEPENDENCIES = linux
+
+RTAI_CONF_OPT = \
+	--with-linux-dir=$(LINUX_DIR) 	\
+	--disable-leds		      	\
+	--disable-rtailab		\
+	--with-module-dir=/lib/modules/$(LINUX_VERSION_PROBED)/kernel/rtai
+
+RTAI_MAKE = $(MAKE1)
+
+$(eval $(call AUTOTARGETS,package,rtai))