Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
@ 2011-07-13 15:52 benoit.mauduit at gmail.com
  2011-07-13 15:52 ` [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu benoit.mauduit at gmail.com
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: benoit.mauduit at gmail.com @ 2011-07-13 15:52 UTC (permalink / raw)
  To: buildroot

From: Benoit Mauduit <benoit.mauduit@openwide.fr>

These two patches are an initial add for Xenomai in buildroot.

"Xenomai is a real-time development framework cooperating with the
Linux kernel, in order to provide a pervasive, interface-agnostic,
hard real-time support to user-space applications, seamlessly
integrated into the GNU/Linux environment."
[http://www.xenomai.org]

Xenomai comes with a Linux Kernel and user-space part.
I added a Linux extensions sub-menu (The first patch) which handles
the kernel modification provided by Adeos/Xenomai. The advantage of
this way is for maintenance purpose. (Xenomai do not provide a full
kernel patch, but use a script called "prepare-kernel.sh")
Also, this split the user-space from the kernel in a nice way instead
of adding a serie of patches.

The Xenomai user-space part can be built separately with an external
real-time Kernel.

I have tested on both x86 and Arm with buildroot toolchains (uclibc).

Any feedback is welcome, especially for the first patch.

Regards,
-- 
Beno?t Mauduit

---

Benoit Mauduit (2):
  linux: Add Linux Kernel extensions menu
  Add xenomai real-time Framework to buildroot for Arm and x86

 Makefile                                           |    2 +-
 linux/Config.ext.in                                |   20 ++++
 linux/Config.in                                    |    4 +
 linux/xenomai.mk                                   |   29 ++++++
 package/Config.in                                  |    4 +
 package/xenomai/Config.in                          |   81 +++++++++++++++++
 package/xenomai/README                             |   48 ++++++++++
 .../xenomai/xenomai-do-not-install-devices.patch   |   11 +++
 package/xenomai/xenomai.mk                         |   95 ++++++++++++++++++++
 target/generic/device_table_dev.txt                |    5 +
 10 files changed, 298 insertions(+), 1 deletions(-)
 create mode 100644 linux/Config.ext.in
 create mode 100644 linux/xenomai.mk
 create mode 100644 package/xenomai/Config.in
 create mode 100644 package/xenomai/README
 create mode 100644 package/xenomai/xenomai-do-not-install-devices.patch
 create mode 100644 package/xenomai/xenomai.mk

-- 
1.7.6

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu
  2011-07-13 15:52 [Buildroot] [PATCH 0/2] Add Xenomai real-time framework benoit.mauduit at gmail.com
@ 2011-07-13 15:52 ` benoit.mauduit at gmail.com
  2011-07-20  6:12   ` Thomas De Schampheleire
  2011-07-13 15:53 ` [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86 benoit.mauduit at gmail.com
  2011-07-13 16:23 ` [Buildroot] [PATCH 0/2] Add Xenomai real-time framework Thomas Petazzoni
  2 siblings, 1 reply; 13+ messages in thread
From: benoit.mauduit at gmail.com @ 2011-07-13 15:52 UTC (permalink / raw)
  To: buildroot

From: Benoit Mauduit <benoit.mauduit@openwide.fr>

Add a kernel sub-menu (called "Linux Kernel Extensions"), which makes
possible to patch it or tweak the kernel build step.

 * All linux/*.mk files will be read by the make process.
 * The menu can be customized in "linux/Config.ext.in".

Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
---
 Makefile            |    2 +-
 linux/Config.ext.in |    3 +++
 linux/Config.in     |    4 ++++
 3 files changed, 8 insertions(+), 1 deletions(-)
 create mode 100644 linux/Config.ext.in

diff --git a/Makefile b/Makefile
index 2f3802c..27e4375 100644
--- a/Makefile
+++ b/Makefile
@@ -313,7 +313,7 @@ include package/*/*.mk
 
 include boot/common.mk
 include target/Makefile.in
-include linux/linux.mk
+include linux/*.mk
 
 TARGETS+=target-finalize
 
diff --git a/linux/Config.ext.in b/linux/Config.ext.in
new file mode 100644
index 0000000..50e801d
--- /dev/null
+++ b/linux/Config.ext.in
@@ -0,0 +1,3 @@
+menu "Linux Kernel Extensions"
+
+endmenu
diff --git a/linux/Config.in b/linux/Config.in
index 8d3b0ba..3a22686 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -176,6 +176,10 @@ config BR2_LINUX_KERNEL_INSTALL_TARGET
 	  /boot in the target root filesystem, as is typically done on
 	  x86/x86_64 systems.
 
+
+# Linux extensions (Xenomai)
+source "linux/Config.ext.in"
+
 endif # BR2_LINUX_KERNEL
 
 endmenu
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86
  2011-07-13 15:52 [Buildroot] [PATCH 0/2] Add Xenomai real-time framework benoit.mauduit at gmail.com
  2011-07-13 15:52 ` [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu benoit.mauduit at gmail.com
@ 2011-07-13 15:53 ` benoit.mauduit at gmail.com
  2011-07-20  6:08   ` Thomas De Schampheleire
  2011-07-13 16:23 ` [Buildroot] [PATCH 0/2] Add Xenomai real-time framework Thomas Petazzoni
  2 siblings, 1 reply; 13+ messages in thread
From: benoit.mauduit at gmail.com @ 2011-07-13 15:53 UTC (permalink / raw)
  To: buildroot

From: Benoit Mauduit <benoit.mauduit@openwide.fr>

Buildroot Kernel:
  * Download Adeos patch and specify the path into buildroot
    menuconfig...
  * ..and take care of Linux kernel version supported by Xenomai.

Non-buildroot Kernel:
  * The User-space part of Xenomai can be built with an external
    real-time kernel.

Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
---
 linux/Config.ext.in                                |   17 ++++
 linux/xenomai.mk                                   |   29 ++++++
 package/Config.in                                  |    4 +
 package/xenomai/Config.in                          |   81 +++++++++++++++++
 package/xenomai/README                             |   48 ++++++++++
 .../xenomai/xenomai-do-not-install-devices.patch   |   11 +++
 package/xenomai/xenomai.mk                         |   95 ++++++++++++++++++++
 target/generic/device_table_dev.txt                |    5 +
 8 files changed, 290 insertions(+), 0 deletions(-)
 create mode 100644 linux/xenomai.mk
 create mode 100644 package/xenomai/Config.in
 create mode 100644 package/xenomai/README
 create mode 100644 package/xenomai/xenomai-do-not-install-devices.patch
 create mode 100644 package/xenomai/xenomai.mk

diff --git a/linux/Config.ext.in b/linux/Config.ext.in
index 50e801d..1d35ffc 100644
--- a/linux/Config.ext.in
+++ b/linux/Config.ext.in
@@ -1,3 +1,20 @@
 menu "Linux Kernel Extensions"
 
+# Xenomai
+config BR2_LINUX_KERNEL_EXT_XENOMAI
+	bool "Adeos/Xenomai Real-time patch"
+  select BR2_PACKAGE_XENOMAI
+	depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
+		|| BR2_i386)
+	help
+	  Xenomai Kernel part.
+
+config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
+	depends on BR2_LINUX_KERNEL_EXT_XENOMAI
+	string "Path for ADEOS patch file"
+	help
+	  Xenomai needs Adeos patch.
+	  You must download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
+	  and verify that your kernel version in buildroot match.
+
 endmenu
diff --git a/linux/xenomai.mk b/linux/xenomai.mk
new file mode 100644
index 0000000..8cffb43
--- /dev/null
+++ b/linux/xenomai.mk
@@ -0,0 +1,29 @@
+##################################################
+# Linux Adeos/Xenomai extensions
+#
+# Patch the linux kernel with xenomai extension
+##################################################
+
+ifeq ($(BR2_LINUX_KERNEL_EXT_XENOMAI),y)
+# Add dependency to xenomai (user-space) which provide ksrc part
+LINUX_DEPENDENCIES += xenomai
+
+# Adeos patch version
+XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH))
+ifeq ($(XENOMAI_ADEOS_PATCH),)
+XENOMAI_ADEOS_OPT = --default
+else
+XENOMAI_ADEOS_OPT = --adeos=$(XENOMAI_ADEOS_PATCH)
+endif
+
+# Prepare kernel patch
+define XENOMAI_PREPARE_KERNEL
+	$(XENOMAI_DIR)/scripts/prepare-kernel.sh \
+		--linux=$(LINUX_DIR) \
+		--arch=$(BR2_ARCH) \
+		$(XENOMAI_ADEOS_OPT)
+endef
+
+LINUX_POST_EXTRACT_HOOKS += XENOMAI_PREPARE_KERNEL
+
+endif #BR2_LINUX_EXT_XENOMAI
diff --git a/package/Config.in b/package/Config.in
index 2fa9ff5..a461135 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -478,6 +478,10 @@ source "package/rpm/Config.in"
 endif
 endmenu
 
+menu "Real-Time"
+source "package/xenomai/Config.in"
+endmenu
+
 menu "Shell and utilities"
 source "package/at/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
diff --git a/package/xenomai/Config.in b/package/xenomai/Config.in
new file mode 100644
index 0000000..614c564
--- /dev/null
+++ b/package/xenomai/Config.in
@@ -0,0 +1,81 @@
+config BR2_PACKAGE_XENOMAI
+	bool "Xenomai Userspace"
+	depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
+	  || BR2_i386)
+	help
+	  Real-Time Framework for Linux
+	  http://www.xenomai.org
+
+config BR2_PACKAGE_XENOMAI_VERSION
+	depends on BR2_PACKAGE_XENOMAI
+	string "Custom Xenomai version"
+	help
+	  Manualy select Xenomai Version.
+	  Take care of compatibility with the Linux kernel.
+
+# Manually select CPU (use it if not detected)
+config BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
+	bool "Manually Select Xenomai CPU"
+	depends on (BR2_PACKAGE_XENOMAI && !BR2_i386)
+	help
+	  This option allows you to select Xenomai CPU in a list. Use it only
+	  if CPU is not auto-detected by Buildroot ! (i.e. your board is not
+	  described)
+
+choice
+	prompt "Xenomai ARM CPU type"
+	depends on BR2_PACKAGE_XENOMAI && BR2_arm \
+	  && BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
+	help
+	  Manually select CPU type for Xenomai.
+
+	config BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
+		bool "Atmel AT91RM9200"
+
+	config BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
+		bool "Atmel AT91SAM926X"
+
+	config BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
+		bool "ARM Ltd. Integrator"
+
+	config BR2_PACKAGE_XENOMAI_CPU_IXP4XX
+		bool "Intel IXP4XX (XScale)"
+
+	config BR2_PACKAGE_XENOMAI_CPU_IMX
+		bool "Freescale i.MX (MX1/MXL)"
+
+	config BR2_PACKAGE_XENOMAI_CPU_IMX21
+		bool "Freescale i.MX21"
+
+	config BR2_PACKAGE_XENOMAI_CPU_MX2
+		bool "Freescale MXC/MX2"
+
+	config BR2_PACKAGE_XENOMAI_CPU_MX3
+		bool "Freescale MXC/MX3"
+
+	config BR2_PACKAGE_XENOMAI_CPU_SA1100
+		bool "StrongARM SA1100"
+
+	config BR2_PACKAGE_XENOMAI_CPU_S3C2410
+		bool "S3C2410"
+
+	config BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
+		bool "Generic ARM"
+
+endchoice
+
+# Now set CPU type. We force manually selected type even if detected in case
+# user takes the risk.
+config BR2_PACKAGE_XENOMAI_CPU_TYPE
+	string
+	depends on BR2_PACKAGE_XENOMAI && BR2_arm
+	default "at91rm9200"  if BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
+	default "at91sam926x" if BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
+	default "integrator"  if BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
+	default "ixp4xx"      if BR2_PACKAGE_XENOMAI_CPU_IXP4XX
+	default "generic"     if BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
+	default "imx"         if BR2_PACKAGE_XENOMAI_CPU_IMX
+	default "imx21"       if BR2_PACKAGE_XENOMAI_CPU_IMX21
+	default "mx2"         if BR2_PACKAGE_XENOMAI_CPU_MX2
+	default "mx3"         if BR2_PACKAGE_XENOMAI_CPU_MX3
+	default "s3c2410"     if BR2_PACKAGE_XENOMAI_CPU_S3C2410
diff --git a/package/xenomai/README b/package/xenomai/README
new file mode 100644
index 0000000..118223a
--- /dev/null
+++ b/package/xenomai/README
@@ -0,0 +1,48 @@
+****************
+* Xenomai      *
+****************
+
+Xenomai comes with 2 parts : Kernel Part and User-space part.
+Kernel part patch Linux with ADEOS(i-pipe)
+(http://home.gna.org/adeos/) and some Xenomai kernel space stuff.
+
+From Adeos main site :
+"The purpose of Adeos is to provide a flexible environment for sharing
+hardware resources among multiple operating systems, or among multiple
+instances of a single OS."
+
+From Xenomai main site :
+"Xenomai is a real-time development framework cooperating with the
+Linux kernel, in order to provide a pervasive, interface-agnostic,
+hard real-time support to user-space applications, seamlessly
+integrated into the GNU/Linux environment."
+
+****************
+* Installation *
+****************
+
+* Buildroot Kernel: *
+  - Check that your version of Linux Kernel is supported by the
+    version of xenomai you choose.
+  - Download Adeos patch at
+    http://download.gna.org/adeos/patches/v2.6/$(ARCH)/, or if your
+    are sure, let the Xenomai 'prepare-kernel.sh' script do the work.
+  - Check the Xenomai Kernel option in Buildroot :
+     -> Kernel
+       -> Linux Kernel (BR2_LINUX_KERNEL [=y])
+         -> Linux Kernel Extensions
+            -> [*] Adeos/Xenomai Real-time patch
+     ..And add the path to Adeos patch. (or leave it empty if you let
+     xenomai script do the work)
+
+* Non-Buildroot Kernel AND Buildroot Kernel *
+  - Make sure your Kernel is patched with Xenomai
+  - Check the option in Buildroot menu :
+    -> Package Selection for the target
+       -> Real-time
+          -> [*] Xenomai Userspace
+  - You can download a custom version of Xenomai that fit with your
+  Kernel.
+  - If you use static /dev and the default device_table, Uncomment
+  Xenomai part in 'target/generic/device_table_dev.txt'. (rtheap,
+  rtscope and rtp[0-31])
diff --git a/package/xenomai/xenomai-do-not-install-devices.patch b/package/xenomai/xenomai-do-not-install-devices.patch
new file mode 100644
index 0000000..348abee
--- /dev/null
+++ b/package/xenomai/xenomai-do-not-install-devices.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.in	2011-06-24 16:11:23.591449817 +0200
++++ b/Makefile.in	2011-06-24 16:20:29.638129633 +0200
+@@ -719,7 +719,7 @@
+ 	  $$sudo mknod -m 666 $(DESTDIR)/dev/rtheap c 10 254 ; \
+ 	fi
+ 
+-install-exec-local: devices
++install-exec-local:
+ 
+ install-user:
+ 	$(MAKE) SUDO=false install
diff --git a/package/xenomai/xenomai.mk b/package/xenomai/xenomai.mk
new file mode 100644
index 0000000..6819168
--- /dev/null
+++ b/package/xenomai/xenomai.mk
@@ -0,0 +1,95 @@
+#############################################################
+# Xenomai
+# URL  : http://xenomai.org
+# NOTE : Real-Time Framework for Linux
+#
+#############################################################
+
+XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))
+ifeq ($(XENOMAI_VERSION),)
+XENOMAI_VERSION = 2.5.6
+endif
+
+XENOMAI_SITE = http://download.gna.org/xenomai/stable/
+XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2
+
+XENOMAI_INSTALL_STAGING = YES
+
+# Only ARM and x86 are supported
+ifeq ($(BR2_arm),y)
+XENOMAI_CPU_TYPE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CPU_TYPE))
+# Set "generic" if not defined
+ifeq ($(XENOMAI_CPU_TYPE),)
+XENOMAI_CPU_TYPE = generic
+endif
+
+define XENOMAI_CONFIGURE_CMDS
+	(cd $(@D); rm -rf config.cache; \
+		$(TARGET_CONFIGURE_OPTS) \
+		$(TARGET_CONFIGURE_ARGS) \
+		CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
+		./configure \
+		--enable-$(BR2_ARCH)-mach=$(XENOMAI_CPU_TYPE) \
+		--host=$(BR2_ARCH)-linux \
+	)
+endef
+endif #BR2_arm
+
+# x86
+ifeq ($(BR2_i386),y)
+define XENOMAI_CONFIGURE_CMDS
+	(cd $(@D); rm -rf config.cache; \
+		$(TARGET_CONFIGURE_OPTS) \
+		$(TARGET_CONFIGURE_ARGS) \
+		CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
+		./configure \
+		--host=$(BR2_ARCH)-linux \
+	)
+endef
+endif # BR2_x86
+
+define XENOMAI_INSTALL_STAGING_CMDS
+	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
+endef
+
+define XENOMAI_INSTALL_TARGET_CMDS
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
+	rm -rf $(TARGET_DIR)/usr/xenomai/share/doc
+	rm -rf $(TARGET_DIR)/usr/xenomai/include
+	echo "/usr/xenomai/lib" > $(TARGET_DIR)/etc/ld.so.conf
+endef
+
+# If you use static /dev creation don't forget to update your
+#  device_table_dev.txt
+ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV),y)
+XENOMAI_DEPENDENCIES += udev
+
+define XENOMAI_UDEV_HOOKS
+	if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
+		for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
+			cp $$f $(TARGET_DIR)/etc/udev/rules.d/ ; \
+		done ; \
+	fi;
+endef
+
+XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_UDEV_HOOKS
+endif # udev
+
+define XENOMAI_CLEAN_CMDS
+	-$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) clean
+endef
+
+define XENOMAI_UNINSTALL_TARGET_CMDS
+	if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
+		for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
+			rm -f $(TARGET_DIR)/etc/udev/rules.d/$$f ; \
+		done ; \
+	fi;
+	$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) uninstall
+endef
+
+define XENOMAI_UNINSTALL_STAGING_CMDS
+	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) uninstall
+endef
+
+$(eval $(call GENTARGETS,package,xenomai))
diff --git a/target/generic/device_table_dev.txt b/target/generic/device_table_dev.txt
index a3d53d4..71cd083 100644
--- a/target/generic/device_table_dev.txt
+++ b/target/generic/device_table_dev.txt
@@ -141,3 +141,8 @@
 
 # I2C device nodes
 /dev/i2c-	c	666	0	0	89	0	0	1	4
+
+# Xenomai
+#/dev/rtheap     c       666     0       0       10      254     0       0       -
+#/dev/rtscope    c       666     0       0       10      253     0       0       -
+#/dev/rtp        c       666     0       0       150     0       0       1       32
-- 
1.7.6

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
  2011-07-13 15:52 [Buildroot] [PATCH 0/2] Add Xenomai real-time framework benoit.mauduit at gmail.com
  2011-07-13 15:52 ` [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu benoit.mauduit at gmail.com
  2011-07-13 15:53 ` [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86 benoit.mauduit at gmail.com
@ 2011-07-13 16:23 ` Thomas Petazzoni
  2011-09-12 19:24   ` Thomas De Schampheleire
  2 siblings, 1 reply; 13+ messages in thread
From: Thomas Petazzoni @ 2011-07-13 16:23 UTC (permalink / raw)
  To: buildroot

Hello Benoit,

Le Wed, 13 Jul 2011 17:52:58 +0200,
benoit.mauduit at gmail.com a ?crit :

> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
> 
> These two patches are an initial add for Xenomai in buildroot.

Hey, this is great!

I did a quick review. There a few things I am not totally happy with,
but I like the way you hooked up the Xenomai kernel patch into the
kernel build process.

I will have a more detailed look, do some testing, and give some more
precise feedback.

Thanks again for doing this work!

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86
  2011-07-13 15:53 ` [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86 benoit.mauduit at gmail.com
@ 2011-07-20  6:08   ` Thomas De Schampheleire
  2011-07-20  9:22     ` Benoît Mauduit
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas De Schampheleire @ 2011-07-20  6:08 UTC (permalink / raw)
  To: buildroot

Hi,

On Wed, Jul 13, 2011 at 5:53 PM,  <benoit.mauduit@gmail.com> wrote:
> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
>
> Buildroot Kernel:
> ?* Download Adeos patch and specify the path into buildroot
> ? ?menuconfig...
> ?* ..and take care of Linux kernel version supported by Xenomai.
>
> Non-buildroot Kernel:
> ?* The User-space part of Xenomai can be built with an external
> ? ?real-time kernel.
>
> Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
> ---
> ?linux/Config.ext.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 17 ++++
> ?linux/xenomai.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 29 ++++++
> ?package/Config.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?4 +
> ?package/xenomai/Config.in ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 81 +++++++++++++++++
> ?package/xenomai/README ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 48 ++++++++++
> ?.../xenomai/xenomai-do-not-install-devices.patch ? | ? 11 +++
> ?package/xenomai/xenomai.mk ? ? ? ? ? ? ? ? ? ? ? ? | ? 95 ++++++++++++++++++++
> ?target/generic/device_table_dev.txt ? ? ? ? ? ? ? ?| ? ?5 +
> ?8 files changed, 290 insertions(+), 0 deletions(-)
> ?create mode 100644 linux/xenomai.mk
> ?create mode 100644 package/xenomai/Config.in
> ?create mode 100644 package/xenomai/README
> ?create mode 100644 package/xenomai/xenomai-do-not-install-devices.patch
> ?create mode 100644 package/xenomai/xenomai.mk


Looking forward to have this in buildroot.
Actually, I added support for Xenomai in my buildroot tree, but never
got around to submit a proper patch. My changes were based on the
xenomai-buildroot patch from the Armadeus project, but with several
modifications.

One of these modifications is to add support for a local xenomai
installation. However, I understand that Thomas P. is preparing
patches that supports this in a generic way, so it doesn't need to be
in the xenomai Makefile anymore.

Some comments below...


>
> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> index 50e801d..1d35ffc 100644
> --- a/linux/Config.ext.in
> +++ b/linux/Config.ext.in
> @@ -1,3 +1,20 @@
> ?menu "Linux Kernel Extensions"
>
> +# Xenomai
> +config BR2_LINUX_KERNEL_EXT_XENOMAI
> + ? ? ? bool "Adeos/Xenomai Real-time patch"
> + ?select BR2_PACKAGE_XENOMAI
> + ? ? ? depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
> + ? ? ? ? ? ? ? || BR2_i386)

Why do you restrict this to arm and i386? Xenomai has support for many
more architectures, among which powerpc.

> + ? ? ? help
> + ? ? ? ? Xenomai Kernel part.
> +
> +config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
> + ? ? ? depends on BR2_LINUX_KERNEL_EXT_XENOMAI
> + ? ? ? string "Path for ADEOS patch file"
> + ? ? ? help
> + ? ? ? ? Xenomai needs Adeos patch.
> + ? ? ? ? You must download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
> + ? ? ? ? and verify that your kernel version in buildroot match.

I think you should mention that this is optional. If you don't specify
a patch, the default patches included with the Xenomai distribution
will be used.

> +
> ?endmenu
> diff --git a/linux/xenomai.mk b/linux/xenomai.mk
> new file mode 100644
> index 0000000..8cffb43
> --- /dev/null
> +++ b/linux/xenomai.mk
> @@ -0,0 +1,29 @@
> +##################################################
> +# Linux Adeos/Xenomai extensions
> +#
> +# Patch the linux kernel with xenomai extension
> +##################################################
> +
> +ifeq ($(BR2_LINUX_KERNEL_EXT_XENOMAI),y)
> +# Add dependency to xenomai (user-space) which provide ksrc part
> +LINUX_DEPENDENCIES += xenomai
> +
> +# Adeos patch version
> +XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH))
> +ifeq ($(XENOMAI_ADEOS_PATCH),)
> +XENOMAI_ADEOS_OPT = --default
> +else
> +XENOMAI_ADEOS_OPT = --adeos=$(XENOMAI_ADEOS_PATCH)
> +endif
> +
> +# Prepare kernel patch
> +define XENOMAI_PREPARE_KERNEL
> + ? ? ? $(XENOMAI_DIR)/scripts/prepare-kernel.sh \
> + ? ? ? ? ? ? ? --linux=$(LINUX_DIR) \
> + ? ? ? ? ? ? ? --arch=$(BR2_ARCH) \
> + ? ? ? ? ? ? ? $(XENOMAI_ADEOS_OPT)
> +endef
> +
> +LINUX_POST_EXTRACT_HOOKS += XENOMAI_PREPARE_KERNEL
> +
> +endif #BR2_LINUX_EXT_XENOMAI
> diff --git a/package/Config.in b/package/Config.in
> index 2fa9ff5..a461135 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -478,6 +478,10 @@ source "package/rpm/Config.in"
> ?endif
> ?endmenu
>
> +menu "Real-Time"
> +source "package/xenomai/Config.in"
> +endmenu
> +
> ?menu "Shell and utilities"
> ?source "package/at/Config.in"
> ?if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
> diff --git a/package/xenomai/Config.in b/package/xenomai/Config.in
> new file mode 100644
> index 0000000..614c564
> --- /dev/null
> +++ b/package/xenomai/Config.in
> @@ -0,0 +1,81 @@
> +config BR2_PACKAGE_XENOMAI
> + ? ? ? bool "Xenomai Userspace"
> + ? ? ? depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
> + ? ? ? ? || BR2_i386)

Same comment on architectures.

> + ? ? ? help
> + ? ? ? ? Real-Time Framework for Linux
> + ? ? ? ? http://www.xenomai.org
> +
> +config BR2_PACKAGE_XENOMAI_VERSION
> + ? ? ? depends on BR2_PACKAGE_XENOMAI
> + ? ? ? string "Custom Xenomai version"
> + ? ? ? help
> + ? ? ? ? Manualy select Xenomai Version.
> + ? ? ? ? Take care of compatibility with the Linux kernel.

If you allow specifying a specific version, wouldn't it make sense to
create a select statement here? Right now, there is no indication of
the default version that would be selected (this is specified in the
.mk file).
Making this more like the linux or gdb version selection seems logical to me.

> +
> +# Manually select CPU (use it if not detected)
> +config BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
> + ? ? ? bool "Manually Select Xenomai CPU"
> + ? ? ? depends on (BR2_PACKAGE_XENOMAI && !BR2_i386)
> + ? ? ? help
> + ? ? ? ? This option allows you to select Xenomai CPU in a list. Use it only
> + ? ? ? ? if CPU is not auto-detected by Buildroot ! (i.e. your board is not
> + ? ? ? ? described)

What is the reason for this !BR2_i386? Why the exception?

> +
> +choice
> + ? ? ? prompt "Xenomai ARM CPU type"
> + ? ? ? depends on BR2_PACKAGE_XENOMAI && BR2_arm \
> + ? ? ? ? && BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
> + ? ? ? help
> + ? ? ? ? Manually select CPU type for Xenomai.
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
> + ? ? ? ? ? ? ? bool "Atmel AT91RM9200"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
> + ? ? ? ? ? ? ? bool "Atmel AT91SAM926X"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
> + ? ? ? ? ? ? ? bool "ARM Ltd. Integrator"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IXP4XX
> + ? ? ? ? ? ? ? bool "Intel IXP4XX (XScale)"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IMX
> + ? ? ? ? ? ? ? bool "Freescale i.MX (MX1/MXL)"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IMX21
> + ? ? ? ? ? ? ? bool "Freescale i.MX21"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_MX2
> + ? ? ? ? ? ? ? bool "Freescale MXC/MX2"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_MX3
> + ? ? ? ? ? ? ? bool "Freescale MXC/MX3"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_SA1100
> + ? ? ? ? ? ? ? bool "StrongARM SA1100"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_S3C2410
> + ? ? ? ? ? ? ? bool "S3C2410"
> +
> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
> + ? ? ? ? ? ? ? bool "Generic ARM"
> +
> +endchoice
> +
> +# Now set CPU type. We force manually selected type even if detected in case
> +# user takes the risk.
> +config BR2_PACKAGE_XENOMAI_CPU_TYPE
> + ? ? ? string
> + ? ? ? depends on BR2_PACKAGE_XENOMAI && BR2_arm
> + ? ? ? default "at91rm9200" ?if BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
> + ? ? ? default "at91sam926x" if BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
> + ? ? ? default "integrator" ?if BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
> + ? ? ? default "ixp4xx" ? ? ?if BR2_PACKAGE_XENOMAI_CPU_IXP4XX
> + ? ? ? default "generic" ? ? if BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
> + ? ? ? default "imx" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_IMX
> + ? ? ? default "imx21" ? ? ? if BR2_PACKAGE_XENOMAI_CPU_IMX21
> + ? ? ? default "mx2" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_MX2
> + ? ? ? default "mx3" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_MX3
> + ? ? ? default "s3c2410" ? ? if BR2_PACKAGE_XENOMAI_CPU_S3C2410
> diff --git a/package/xenomai/README b/package/xenomai/README
> new file mode 100644
> index 0000000..118223a
> --- /dev/null
> +++ b/package/xenomai/README
> @@ -0,0 +1,48 @@
> +****************
> +* Xenomai ? ? ?*
> +****************
> +
> +Xenomai comes with 2 parts : Kernel Part and User-space part.
> +Kernel part patch Linux with ADEOS(i-pipe)
> +(http://home.gna.org/adeos/) and some Xenomai kernel space stuff.
> +
> +From Adeos main site :
> +"The purpose of Adeos is to provide a flexible environment for sharing
> +hardware resources among multiple operating systems, or among multiple
> +instances of a single OS."
> +
> +From Xenomai main site :
> +"Xenomai is a real-time development framework cooperating with the
> +Linux kernel, in order to provide a pervasive, interface-agnostic,
> +hard real-time support to user-space applications, seamlessly
> +integrated into the GNU/Linux environment."
> +
> +****************
> +* Installation *
> +****************
> +
> +* Buildroot Kernel: *
> + ?- Check that your version of Linux Kernel is supported by the
> + ? ?version of xenomai you choose.
> + ?- Download Adeos patch at
> + ? ?http://download.gna.org/adeos/patches/v2.6/$(ARCH)/, or if your
> + ? ?are sure, let the Xenomai 'prepare-kernel.sh' script do the work.
> + ?- Check the Xenomai Kernel option in Buildroot :
> + ? ? -> Kernel
> + ? ? ? -> Linux Kernel (BR2_LINUX_KERNEL [=y])
> + ? ? ? ? -> Linux Kernel Extensions
> + ? ? ? ? ? ?-> [*] Adeos/Xenomai Real-time patch
> + ? ? ..And add the path to Adeos patch. (or leave it empty if you let
> + ? ? xenomai script do the work)
> +
> +* Non-Buildroot Kernel AND Buildroot Kernel *
> + ?- Make sure your Kernel is patched with Xenomai
> + ?- Check the option in Buildroot menu :
> + ? ?-> Package Selection for the target
> + ? ? ? -> Real-time
> + ? ? ? ? ?-> [*] Xenomai Userspace
> + ?- You can download a custom version of Xenomai that fit with your
> + ?Kernel.
> + ?- If you use static /dev and the default device_table, Uncomment
> + ?Xenomai part in 'target/generic/device_table_dev.txt'. (rtheap,
> + ?rtscope and rtp[0-31])
> diff --git a/package/xenomai/xenomai-do-not-install-devices.patch b/package/xenomai/xenomai-do-not-install-devices.patch
> new file mode 100644
> index 0000000..348abee
> --- /dev/null
> +++ b/package/xenomai/xenomai-do-not-install-devices.patch
> @@ -0,0 +1,11 @@
> +--- a/Makefile.in ? ? ?2011-06-24 16:11:23.591449817 +0200
> ++++ b/Makefile.in ? ? ?2011-06-24 16:20:29.638129633 +0200
> +@@ -719,7 +719,7 @@
> + ? ? ? ? $$sudo mknod -m 666 $(DESTDIR)/dev/rtheap c 10 254 ; \
> + ? ? ? fi
> +
> +-install-exec-local: devices
> ++install-exec-local:
> +
> + install-user:
> + ? ? ? $(MAKE) SUDO=false install
> diff --git a/package/xenomai/xenomai.mk b/package/xenomai/xenomai.mk
> new file mode 100644
> index 0000000..6819168
> --- /dev/null
> +++ b/package/xenomai/xenomai.mk
> @@ -0,0 +1,95 @@
> +#############################################################
> +# Xenomai
> +# URL ?: http://xenomai.org
> +# NOTE : Real-Time Framework for Linux
> +#
> +#############################################################
> +
> +XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))
> +ifeq ($(XENOMAI_VERSION),)
> +XENOMAI_VERSION = 2.5.6
> +endif
> +
> +XENOMAI_SITE = http://download.gna.org/xenomai/stable/
> +XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2
> +
> +XENOMAI_INSTALL_STAGING = YES
> +
> +# Only ARM and x86 are supported
> +ifeq ($(BR2_arm),y)
> +XENOMAI_CPU_TYPE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CPU_TYPE))
> +# Set "generic" if not defined
> +ifeq ($(XENOMAI_CPU_TYPE),)
> +XENOMAI_CPU_TYPE = generic
> +endif
> +
> +define XENOMAI_CONFIGURE_CMDS
> + ? ? ? (cd $(@D); rm -rf config.cache; \
> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_OPTS) \
> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_ARGS) \
> + ? ? ? ? ? ? ? CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
> + ? ? ? ? ? ? ? ./configure \
> + ? ? ? ? ? ? ? --enable-$(BR2_ARCH)-mach=$(XENOMAI_CPU_TYPE) \
> + ? ? ? ? ? ? ? --host=$(BR2_ARCH)-linux \
> + ? ? ? )
> +endef
> +endif #BR2_arm
> +
> +# x86
> +ifeq ($(BR2_i386),y)
> +define XENOMAI_CONFIGURE_CMDS
> + ? ? ? (cd $(@D); rm -rf config.cache; \
> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_OPTS) \
> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_ARGS) \
> + ? ? ? ? ? ? ? CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
> + ? ? ? ? ? ? ? ./configure \
> + ? ? ? ? ? ? ? --host=$(BR2_ARCH)-linux \
> + ? ? ? )
> +endef
> +endif # BR2_x86

We had to explicitly enable SMP support in case our kernel was
configured that way, otherwise the Xenomai userland detected a feature
mismatch between kernel and userland. To achieve this, we added the
following to the configure commands:
                    $(if $(shell grep "^CONFIG_SMP*=*y"
$(LINUX26_DIR)/.config ),--enable-smp,) \

I'm not sure this the cleanest way to interrogate the kernel
configuration, but it certainly works.


Regarding the architecture selection: in case of powerpc, the
configuration commands are the same than for i386. In fact, I think
that only ARM is the exception, because the machine type is specified.
Therefore, I would suggest to add a variable for extra configure
options, which is set for ARM and untouched for other architectures
(i386, powerpc, ...). That way, the CONFIGURE_CMDS only need to be
specified only once.

> +
> +define XENOMAI_INSTALL_STAGING_CMDS
> + ? ? ? $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
> +endef
> +
> +define XENOMAI_INSTALL_TARGET_CMDS
> + ? ? ? $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
> + ? ? ? rm -rf $(TARGET_DIR)/usr/xenomai/share/doc
> + ? ? ? rm -rf $(TARGET_DIR)/usr/xenomai/include
> + ? ? ? echo "/usr/xenomai/lib" > $(TARGET_DIR)/etc/ld.so.conf
> +endef

The way you add the lib directory to /etc/ld.so.conf can not co-exist
with other packages adding to this file. You should append instead of
overwrite. Our solution is this:

       # Make sure /etc/ld.so.conf exists
        touch $(TARGET_DIR)/etc/ld.so.conf
        # Add /usr/xenomai/lib only if it is not yet present
        (grep "/usr/xenomai/lib" $(TARGET_DIR)/etc/ld.so.conf
&>/dev/null) || (echo "/usr/xenomai/lib" >>
$(TARGET_DIR)/etc/ld.so.conf)

Since I think this is a generic pattern when adding something to
/etc/ld.so.conf, it could be interesting to put it as a function
somewher in buildroot, so that package Makefiles only need to say
something like:
        add_to_ld_so_conf("/usr/xenomai/lib")

> +
> +# If you use static /dev creation don't forget to update your
> +# ?device_table_dev.txt
> +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV),y)
> +XENOMAI_DEPENDENCIES += udev
> +
> +define XENOMAI_UDEV_HOOKS
> + ? ? ? if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
> + ? ? ? ? ? ? ? for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
> + ? ? ? ? ? ? ? ? ? ? ? cp $$f $(TARGET_DIR)/etc/udev/rules.d/ ; \
> + ? ? ? ? ? ? ? done ; \
> + ? ? ? fi;
> +endef
> +
> +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_UDEV_HOOKS
> +endif # udev
> +
> +define XENOMAI_CLEAN_CMDS
> + ? ? ? -$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) clean
> +endef
> +
> +define XENOMAI_UNINSTALL_TARGET_CMDS
> + ? ? ? if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
> + ? ? ? ? ? ? ? for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $(TARGET_DIR)/etc/udev/rules.d/$$f ; \
> + ? ? ? ? ? ? ? done ; \
> + ? ? ? fi;
> + ? ? ? $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) uninstall
> +endef
> +
> +define XENOMAI_UNINSTALL_STAGING_CMDS
> + ? ? ? $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) uninstall
> +endef
> +
> +$(eval $(call GENTARGETS,package,xenomai))
> diff --git a/target/generic/device_table_dev.txt b/target/generic/device_table_dev.txt
> index a3d53d4..71cd083 100644
> --- a/target/generic/device_table_dev.txt
> +++ b/target/generic/device_table_dev.txt
> @@ -141,3 +141,8 @@
>
> ?# I2C device nodes
> ?/dev/i2c- ? ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 89 ? ? ?0 ? ? ? 0 ? ? ? 1 ? ? ? 4
> +
> +# Xenomai
> +#/dev/rtheap ? ? c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 10 ? ? ?254 ? ? 0 ? ? ? 0 ? ? ? -
> +#/dev/rtscope ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 10 ? ? ?253 ? ? 0 ? ? ? 0 ? ? ? -
> +#/dev/rtp ? ? ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 150 ? ? 0 ? ? ? 0 ? ? ? 1 ? ? ? 32
> --
> 1.7.6
>

Thanks,
Thomas

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu
  2011-07-13 15:52 ` [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu benoit.mauduit at gmail.com
@ 2011-07-20  6:12   ` Thomas De Schampheleire
  2011-07-20  8:10     ` Benoît Mauduit
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas De Schampheleire @ 2011-07-20  6:12 UTC (permalink / raw)
  To: buildroot

Hi,

On Wed, Jul 13, 2011 at 5:52 PM,  <benoit.mauduit@gmail.com> wrote:
> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
>
> Add a kernel sub-menu (called "Linux Kernel Extensions"), which makes
> possible to patch it or tweak the kernel build step.
>
> ?* All linux/*.mk files will be read by the make process.
> ?* The menu can be customized in "linux/Config.ext.in".
>
> Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
> ---
> ?Makefile ? ? ? ? ? ?| ? ?2 +-
> ?linux/Config.ext.in | ? ?3 +++
> ?linux/Config.in ? ? | ? ?4 ++++
> ?3 files changed, 8 insertions(+), 1 deletions(-)
> ?create mode 100644 linux/Config.ext.in
>
> diff --git a/Makefile b/Makefile
> index 2f3802c..27e4375 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -313,7 +313,7 @@ include package/*/*.mk
>
> ?include boot/common.mk
> ?include target/Makefile.in
> -include linux/linux.mk
> +include linux/*.mk

Shouldn't the linux.mk file be included *before* all the other .mk
files? I can imagine that some of the extra .mk files depend on linux
variables.

>
> ?TARGETS+=target-finalize
>
> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
> new file mode 100644
> index 0000000..50e801d
> --- /dev/null
> +++ b/linux/Config.ext.in
> @@ -0,0 +1,3 @@
> +menu "Linux Kernel Extensions"
> +
> +endmenu
> diff --git a/linux/Config.in b/linux/Config.in
> index 8d3b0ba..3a22686 100644
> --- a/linux/Config.in
> +++ b/linux/Config.in
> @@ -176,6 +176,10 @@ config BR2_LINUX_KERNEL_INSTALL_TARGET
> ? ? ? ? ?/boot in the target root filesystem, as is typically done on
> ? ? ? ? ?x86/x86_64 systems.
>
> +
> +# Linux extensions (Xenomai)
> +source "linux/Config.ext.in"
> +
> ?endif # BR2_LINUX_KERNEL
>
> ?endmenu
> --
> 1.7.6
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu
  2011-07-20  6:12   ` Thomas De Schampheleire
@ 2011-07-20  8:10     ` Benoît Mauduit
  2011-07-20 19:21       ` Thomas Petazzoni
  0 siblings, 1 reply; 13+ messages in thread
From: Benoît Mauduit @ 2011-07-20  8:10 UTC (permalink / raw)
  To: buildroot

On Wed, Jul 20, 2011 at 8:12 AM, Thomas De Schampheleire
<patrickdepinguin+buildroot@gmail.com> wrote:
> Hi,
Hi !

> On Wed, Jul 13, 2011 at 5:52 PM, ?<benoit.mauduit@gmail.com> wrote:
>> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
>>
>> Add a kernel sub-menu (called "Linux Kernel Extensions"), which makes
>> possible to patch it or tweak the kernel build step.
>>
>> ?* All linux/*.mk files will be read by the make process.
>> ?* The menu can be customized in "linux/Config.ext.in".
>>
>> Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
>> ---
>> ?Makefile ? ? ? ? ? ?| ? ?2 +-
>> ?linux/Config.ext.in | ? ?3 +++
>> ?linux/Config.in ? ? | ? ?4 ++++
>> ?3 files changed, 8 insertions(+), 1 deletions(-)
>> ?create mode 100644 linux/Config.ext.in
>>
>> diff --git a/Makefile b/Makefile
>> index 2f3802c..27e4375 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -313,7 +313,7 @@ include package/*/*.mk
>>
>> ?include boot/common.mk
>> ?include target/Makefile.in
>> -include linux/linux.mk
>> +include linux/*.mk
>
> Shouldn't the linux.mk file be included *before* all the other .mk
> files? I can imagine that some of the extra .mk files depend on linux
> variables.
>

You are right, this is a mistake.
I suggest to name all linux makefile extension like that :
"xenomai_ext.mk".
And include them with:
include linux/*_ext.mk

Thanks !

-- 
Benoit Mauduit

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86
  2011-07-20  6:08   ` Thomas De Schampheleire
@ 2011-07-20  9:22     ` Benoît Mauduit
  0 siblings, 0 replies; 13+ messages in thread
From: Benoît Mauduit @ 2011-07-20  9:22 UTC (permalink / raw)
  To: buildroot

On Wed, Jul 20, 2011 at 8:08 AM, Thomas De Schampheleire
<patrickdepinguin+buildroot@gmail.com> wrote:
> Hi,
>
> On Wed, Jul 13, 2011 at 5:53 PM, ?<benoit.mauduit@gmail.com> wrote:
>> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
>>
>> Buildroot Kernel:
>> ?* Download Adeos patch and specify the path into buildroot
>> ? ?menuconfig...
>> ?* ..and take care of Linux kernel version supported by Xenomai.
>>
>> Non-buildroot Kernel:
>> ?* The User-space part of Xenomai can be built with an external
>> ? ?real-time kernel.
>>
>> Signed-off-by: Benoit Mauduit <benoit.mauduit@openwide.fr>
>> ---
>> ?linux/Config.ext.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 17 ++++
>> ?linux/xenomai.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 29 ++++++
>> ?package/Config.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?4 +
>> ?package/xenomai/Config.in ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 81 +++++++++++++++++
>> ?package/xenomai/README ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 48 ++++++++++
>> ?.../xenomai/xenomai-do-not-install-devices.patch ? | ? 11 +++
>> ?package/xenomai/xenomai.mk ? ? ? ? ? ? ? ? ? ? ? ? | ? 95 ++++++++++++++++++++
>> ?target/generic/device_table_dev.txt ? ? ? ? ? ? ? ?| ? ?5 +
>> ?8 files changed, 290 insertions(+), 0 deletions(-)
>> ?create mode 100644 linux/xenomai.mk
>> ?create mode 100644 package/xenomai/Config.in
>> ?create mode 100644 package/xenomai/README
>> ?create mode 100644 package/xenomai/xenomai-do-not-install-devices.patch
>> ?create mode 100644 package/xenomai/xenomai.mk
>
>
> Looking forward to have this in buildroot.
> Actually, I added support for Xenomai in my buildroot tree, but never
> got around to submit a proper patch. My changes were based on the
> xenomai-buildroot patch from the Armadeus project, but with several
> modifications.
>
> One of these modifications is to add support for a local xenomai
> installation. However, I understand that Thomas P. is preparing
> patches that supports this in a generic way, so it doesn't need to be
> in the xenomai Makefile anymore.
>
> Some comments below...
>
>
>>
>> diff --git a/linux/Config.ext.in b/linux/Config.ext.in
>> index 50e801d..1d35ffc 100644
>> --- a/linux/Config.ext.in
>> +++ b/linux/Config.ext.in
>> @@ -1,3 +1,20 @@
>> ?menu "Linux Kernel Extensions"
>>
>> +# Xenomai
>> +config BR2_LINUX_KERNEL_EXT_XENOMAI
>> + ? ? ? bool "Adeos/Xenomai Real-time patch"
>> + ?select BR2_PACKAGE_XENOMAI
>> + ? ? ? depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
>> + ? ? ? ? ? ? ? || BR2_i386)
>
> Why do you restrict this to arm and i386? Xenomai has support for many
> more architectures, among which powerpc.

I deliberately restrict to ARM and i386 architecture, because I have
not tested them.
But you are right, Xenomai is compatible with ARM, Blackfin, Nios II,
PowerPc et x86 Architectures.

>> + ? ? ? help
>> + ? ? ? ? Xenomai Kernel part.
>> +
>> +config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH
>> + ? ? ? depends on BR2_LINUX_KERNEL_EXT_XENOMAI
>> + ? ? ? string "Path for ADEOS patch file"
>> + ? ? ? help
>> + ? ? ? ? Xenomai needs Adeos patch.
>> + ? ? ? ? You must download it at http://download.gna.org/adeos/patches/v2.6/$(ARCH)/
>> + ? ? ? ? and verify that your kernel version in buildroot match.
>
> I think you should mention that this is optional. If you don't specify
> a patch, the default patches included with the Xenomai distribution
> will be used.
>

Oups, i mention that in xenomai/README but forgot it in the menu entry.

>> +
>> ?endmenu
>> diff --git a/linux/xenomai.mk b/linux/xenomai.mk
>> new file mode 100644
>> index 0000000..8cffb43
>> --- /dev/null
>> +++ b/linux/xenomai.mk
>> @@ -0,0 +1,29 @@
>> +##################################################
>> +# Linux Adeos/Xenomai extensions
>> +#
>> +# Patch the linux kernel with xenomai extension
>> +##################################################
>> +
>> +ifeq ($(BR2_LINUX_KERNEL_EXT_XENOMAI),y)
>> +# Add dependency to xenomai (user-space) which provide ksrc part
>> +LINUX_DEPENDENCIES += xenomai
>> +
>> +# Adeos patch version
>> +XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH))
>> +ifeq ($(XENOMAI_ADEOS_PATCH),)
>> +XENOMAI_ADEOS_OPT = --default
>> +else
>> +XENOMAI_ADEOS_OPT = --adeos=$(XENOMAI_ADEOS_PATCH)
>> +endif
>> +
>> +# Prepare kernel patch
>> +define XENOMAI_PREPARE_KERNEL
>> + ? ? ? $(XENOMAI_DIR)/scripts/prepare-kernel.sh \
>> + ? ? ? ? ? ? ? --linux=$(LINUX_DIR) \
>> + ? ? ? ? ? ? ? --arch=$(BR2_ARCH) \
>> + ? ? ? ? ? ? ? $(XENOMAI_ADEOS_OPT)
>> +endef
>> +
>> +LINUX_POST_EXTRACT_HOOKS += XENOMAI_PREPARE_KERNEL
>> +
>> +endif #BR2_LINUX_EXT_XENOMAI
>> diff --git a/package/Config.in b/package/Config.in
>> index 2fa9ff5..a461135 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -478,6 +478,10 @@ source "package/rpm/Config.in"
>> ?endif
>> ?endmenu
>>
>> +menu "Real-Time"
>> +source "package/xenomai/Config.in"
>> +endmenu
>> +
>> ?menu "Shell and utilities"
>> ?source "package/at/Config.in"
>> ?if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
>> diff --git a/package/xenomai/Config.in b/package/xenomai/Config.in
>> new file mode 100644
>> index 0000000..614c564
>> --- /dev/null
>> +++ b/package/xenomai/Config.in
>> @@ -0,0 +1,81 @@
>> +config BR2_PACKAGE_XENOMAI
>> + ? ? ? bool "Xenomai Userspace"
>> + ? ? ? depends on ((BR2_arm && (BR2_ARM_EABI || BR2_TOOLCHAIN_EXTERNAL)) \
>> + ? ? ? ? || BR2_i386)
>
> Same comment on architectures.
>
>> + ? ? ? help
>> + ? ? ? ? Real-Time Framework for Linux
>> + ? ? ? ? http://www.xenomai.org
>> +
>> +config BR2_PACKAGE_XENOMAI_VERSION
>> + ? ? ? depends on BR2_PACKAGE_XENOMAI
>> + ? ? ? string "Custom Xenomai version"
>> + ? ? ? help
>> + ? ? ? ? Manualy select Xenomai Version.
>> + ? ? ? ? Take care of compatibility with the Linux kernel.
>
> If you allow specifying a specific version, wouldn't it make sense to
> create a select statement here? Right now, there is no indication of
> the default version that would be selected (this is specified in the
> .mk file).
> Making this more like the linux or gdb version selection seems logical to me.
>

Ok. Personally I prefer for package to do like that, because it's
easier for version bumping.

>> +
>> +# Manually select CPU (use it if not detected)
>> +config BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
>> + ? ? ? bool "Manually Select Xenomai CPU"
>> + ? ? ? depends on (BR2_PACKAGE_XENOMAI && !BR2_i386)
>> + ? ? ? help
>> + ? ? ? ? This option allows you to select Xenomai CPU in a list. Use it only
>> + ? ? ? ? if CPU is not auto-detected by Buildroot ! (i.e. your board is not
>> + ? ? ? ? described)
>
> What is the reason for this !BR2_i386? Why the exception?
>

Because when we compile for x86 arch, the configure script doesn't
need this option.
In fact, the makefile is wrong, because only "--enable-arm-mach=" is
correct (and not --enable-$(BR2_ARCH)-mach).

>> +
>> +choice
>> + ? ? ? prompt "Xenomai ARM CPU type"
>> + ? ? ? depends on BR2_PACKAGE_XENOMAI && BR2_arm \
>> + ? ? ? ? && BR2_PACKAGE_XENOMAI_CPU_TYPE_MANUAL
>> + ? ? ? help
>> + ? ? ? ? Manually select CPU type for Xenomai.
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
>> + ? ? ? ? ? ? ? bool "Atmel AT91RM9200"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
>> + ? ? ? ? ? ? ? bool "Atmel AT91SAM926X"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
>> + ? ? ? ? ? ? ? bool "ARM Ltd. Integrator"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IXP4XX
>> + ? ? ? ? ? ? ? bool "Intel IXP4XX (XScale)"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IMX
>> + ? ? ? ? ? ? ? bool "Freescale i.MX (MX1/MXL)"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_IMX21
>> + ? ? ? ? ? ? ? bool "Freescale i.MX21"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_MX2
>> + ? ? ? ? ? ? ? bool "Freescale MXC/MX2"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_MX3
>> + ? ? ? ? ? ? ? bool "Freescale MXC/MX3"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_SA1100
>> + ? ? ? ? ? ? ? bool "StrongARM SA1100"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_S3C2410
>> + ? ? ? ? ? ? ? bool "S3C2410"
>> +
>> + ? ? ? config BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
>> + ? ? ? ? ? ? ? bool "Generic ARM"
>> +
>> +endchoice
>> +
>> +# Now set CPU type. We force manually selected type even if detected in case
>> +# user takes the risk.
>> +config BR2_PACKAGE_XENOMAI_CPU_TYPE
>> + ? ? ? string
>> + ? ? ? depends on BR2_PACKAGE_XENOMAI && BR2_arm
>> + ? ? ? default "at91rm9200" ?if BR2_PACKAGE_XENOMAI_CPU_AT91RM9200
>> + ? ? ? default "at91sam926x" if BR2_PACKAGE_XENOMAI_CPU_AT91SAM926X
>> + ? ? ? default "integrator" ?if BR2_PACKAGE_XENOMAI_CPU_INTEGRATOR
>> + ? ? ? default "ixp4xx" ? ? ?if BR2_PACKAGE_XENOMAI_CPU_IXP4XX
>> + ? ? ? default "generic" ? ? if BR2_PACKAGE_XENOMAI_CPU_GENERIC_ARM
>> + ? ? ? default "imx" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_IMX
>> + ? ? ? default "imx21" ? ? ? if BR2_PACKAGE_XENOMAI_CPU_IMX21
>> + ? ? ? default "mx2" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_MX2
>> + ? ? ? default "mx3" ? ? ? ? if BR2_PACKAGE_XENOMAI_CPU_MX3
>> + ? ? ? default "s3c2410" ? ? if BR2_PACKAGE_XENOMAI_CPU_S3C2410
>> diff --git a/package/xenomai/README b/package/xenomai/README
>> new file mode 100644
>> index 0000000..118223a
>> --- /dev/null
>> +++ b/package/xenomai/README
>> @@ -0,0 +1,48 @@
>> +****************
>> +* Xenomai ? ? ?*
>> +****************
>> +
>> +Xenomai comes with 2 parts : Kernel Part and User-space part.
>> +Kernel part patch Linux with ADEOS(i-pipe)
>> +(http://home.gna.org/adeos/) and some Xenomai kernel space stuff.
>> +
>> +From Adeos main site :
>> +"The purpose of Adeos is to provide a flexible environment for sharing
>> +hardware resources among multiple operating systems, or among multiple
>> +instances of a single OS."
>> +
>> +From Xenomai main site :
>> +"Xenomai is a real-time development framework cooperating with the
>> +Linux kernel, in order to provide a pervasive, interface-agnostic,
>> +hard real-time support to user-space applications, seamlessly
>> +integrated into the GNU/Linux environment."
>> +
>> +****************
>> +* Installation *
>> +****************
>> +
>> +* Buildroot Kernel: *
>> + ?- Check that your version of Linux Kernel is supported by the
>> + ? ?version of xenomai you choose.
>> + ?- Download Adeos patch at
>> + ? ?http://download.gna.org/adeos/patches/v2.6/$(ARCH)/, or if your
>> + ? ?are sure, let the Xenomai 'prepare-kernel.sh' script do the work.
>> + ?- Check the Xenomai Kernel option in Buildroot :
>> + ? ? -> Kernel
>> + ? ? ? -> Linux Kernel (BR2_LINUX_KERNEL [=y])
>> + ? ? ? ? -> Linux Kernel Extensions
>> + ? ? ? ? ? ?-> [*] Adeos/Xenomai Real-time patch
>> + ? ? ..And add the path to Adeos patch. (or leave it empty if you let
>> + ? ? xenomai script do the work)
>> +
>> +* Non-Buildroot Kernel AND Buildroot Kernel *
>> + ?- Make sure your Kernel is patched with Xenomai
>> + ?- Check the option in Buildroot menu :
>> + ? ?-> Package Selection for the target
>> + ? ? ? -> Real-time
>> + ? ? ? ? ?-> [*] Xenomai Userspace
>> + ?- You can download a custom version of Xenomai that fit with your
>> + ?Kernel.
>> + ?- If you use static /dev and the default device_table, Uncomment
>> + ?Xenomai part in 'target/generic/device_table_dev.txt'. (rtheap,
>> + ?rtscope and rtp[0-31])
>> diff --git a/package/xenomai/xenomai-do-not-install-devices.patch b/package/xenomai/xenomai-do-not-install-devices.patch
>> new file mode 100644
>> index 0000000..348abee
>> --- /dev/null
>> +++ b/package/xenomai/xenomai-do-not-install-devices.patch
>> @@ -0,0 +1,11 @@
>> +--- a/Makefile.in ? ? ?2011-06-24 16:11:23.591449817 +0200
>> ++++ b/Makefile.in ? ? ?2011-06-24 16:20:29.638129633 +0200
>> +@@ -719,7 +719,7 @@
>> + ? ? ? ? $$sudo mknod -m 666 $(DESTDIR)/dev/rtheap c 10 254 ; \
>> + ? ? ? fi
>> +
>> +-install-exec-local: devices
>> ++install-exec-local:
>> +
>> + install-user:
>> + ? ? ? $(MAKE) SUDO=false install
>> diff --git a/package/xenomai/xenomai.mk b/package/xenomai/xenomai.mk
>> new file mode 100644
>> index 0000000..6819168
>> --- /dev/null
>> +++ b/package/xenomai/xenomai.mk
>> @@ -0,0 +1,95 @@
>> +#############################################################
>> +# Xenomai
>> +# URL ?: http://xenomai.org
>> +# NOTE : Real-Time Framework for Linux
>> +#
>> +#############################################################
>> +
>> +XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))
>> +ifeq ($(XENOMAI_VERSION),)
>> +XENOMAI_VERSION = 2.5.6
>> +endif
>> +
>> +XENOMAI_SITE = http://download.gna.org/xenomai/stable/
>> +XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2
>> +
>> +XENOMAI_INSTALL_STAGING = YES
>> +
>> +# Only ARM and x86 are supported
>> +ifeq ($(BR2_arm),y)
>> +XENOMAI_CPU_TYPE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CPU_TYPE))
>> +# Set "generic" if not defined
>> +ifeq ($(XENOMAI_CPU_TYPE),)
>> +XENOMAI_CPU_TYPE = generic
>> +endif
>> +
>> +define XENOMAI_CONFIGURE_CMDS
>> + ? ? ? (cd $(@D); rm -rf config.cache; \
>> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_OPTS) \
>> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_ARGS) \
>> + ? ? ? ? ? ? ? CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
>> + ? ? ? ? ? ? ? ./configure \
>> + ? ? ? ? ? ? ? --enable-$(BR2_ARCH)-mach=$(XENOMAI_CPU_TYPE) \
>> + ? ? ? ? ? ? ? --host=$(BR2_ARCH)-linux \
>> + ? ? ? )
>> +endef
>> +endif #BR2_arm
>> +
>> +# x86
>> +ifeq ($(BR2_i386),y)
>> +define XENOMAI_CONFIGURE_CMDS
>> + ? ? ? (cd $(@D); rm -rf config.cache; \
>> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_OPTS) \
>> + ? ? ? ? ? ? ? $(TARGET_CONFIGURE_ARGS) \
>> + ? ? ? ? ? ? ? CCFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \
>> + ? ? ? ? ? ? ? ./configure \
>> + ? ? ? ? ? ? ? --host=$(BR2_ARCH)-linux \
>> + ? ? ? )
>> +endef
>> +endif # BR2_x86
>
> We had to explicitly enable SMP support in case our kernel was
> configured that way, otherwise the Xenomai userland detected a feature
> mismatch between kernel and userland. To achieve this, we added the
> following to the configure commands:
> ? ? ? ? ? ? ? ? ? ?$(if $(shell grep "^CONFIG_SMP*=*y"
> $(LINUX26_DIR)/.config ),--enable-smp,) \
>
> I'm not sure this the cleanest way to interrogate the kernel
> configuration, but it certainly works.
>

I will add this to the patch.
I think a generic way to check other Kconfig-based package options is
an interesting feature to add to Buildroot.

>
> Regarding the architecture selection: in case of powerpc, the
> configuration commands are the same than for i386. In fact, I think
> that only ARM is the exception, because the machine type is specified.
> Therefore, I would suggest to add a variable for extra configure
> options, which is set for ARM and untouched for other architectures
> (i386, powerpc, ...). That way, the CONFIGURE_CMDS only need to be
> specified only once.
>
>> +
>> +define XENOMAI_INSTALL_STAGING_CMDS
>> + ? ? ? $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
>> +endef
>> +
>> +define XENOMAI_INSTALL_TARGET_CMDS
>> + ? ? ? $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
>> + ? ? ? rm -rf $(TARGET_DIR)/usr/xenomai/share/doc
>> + ? ? ? rm -rf $(TARGET_DIR)/usr/xenomai/include
>> + ? ? ? echo "/usr/xenomai/lib" > $(TARGET_DIR)/etc/ld.so.conf
>> +endef
>
> The way you add the lib directory to /etc/ld.so.conf can not co-exist
> with other packages adding to this file. You should append instead of
> overwrite. Our solution is this:
>
> ? ? ? # Make sure /etc/ld.so.conf exists
> ? ? ? ?touch $(TARGET_DIR)/etc/ld.so.conf
> ? ? ? ?# Add /usr/xenomai/lib only if it is not yet present
> ? ? ? ?(grep "/usr/xenomai/lib" $(TARGET_DIR)/etc/ld.so.conf
> &>/dev/null) || (echo "/usr/xenomai/lib" >>
> $(TARGET_DIR)/etc/ld.so.conf)
>
> Since I think this is a generic pattern when adding something to
> /etc/ld.so.conf, it could be interesting to put it as a function
> somewher in buildroot, so that package Makefiles only need to say
> something like:
> ? ? ? ?add_to_ld_so_conf("/usr/xenomai/lib")
>

I agree with you. I will try to make a patch if I find some time.

>> +
>> +# If you use static /dev creation don't forget to update your
>> +# ?device_table_dev.txt
>> +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV),y)
>> +XENOMAI_DEPENDENCIES += udev
>> +
>> +define XENOMAI_UDEV_HOOKS
>> + ? ? ? if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
>> + ? ? ? ? ? ? ? for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
>> + ? ? ? ? ? ? ? ? ? ? ? cp $$f $(TARGET_DIR)/etc/udev/rules.d/ ; \
>> + ? ? ? ? ? ? ? done ; \
>> + ? ? ? fi;
>> +endef
>> +
>> +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_UDEV_HOOKS
>> +endif # udev
>> +
>> +define XENOMAI_CLEAN_CMDS
>> + ? ? ? -$(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) clean
>> +endef
>> +
>> +define XENOMAI_UNINSTALL_TARGET_CMDS
>> + ? ? ? if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \
>> + ? ? ? ? ? ? ? for f in $(@D)/ksrc/nucleus/udev/*.rules ; do \
>> + ? ? ? ? ? ? ? ? ? ? ? rm -f $(TARGET_DIR)/etc/udev/rules.d/$$f ; \
>> + ? ? ? ? ? ? ? done ; \
>> + ? ? ? fi;
>> + ? ? ? $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) uninstall
>> +endef
>> +
>> +define XENOMAI_UNINSTALL_STAGING_CMDS
>> + ? ? ? $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) uninstall
>> +endef
>> +
>> +$(eval $(call GENTARGETS,package,xenomai))
>> diff --git a/target/generic/device_table_dev.txt b/target/generic/device_table_dev.txt
>> index a3d53d4..71cd083 100644
>> --- a/target/generic/device_table_dev.txt
>> +++ b/target/generic/device_table_dev.txt
>> @@ -141,3 +141,8 @@
>>
>> ?# I2C device nodes
>> ?/dev/i2c- ? ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 89 ? ? ?0 ? ? ? 0 ? ? ? 1 ? ? ? 4
>> +
>> +# Xenomai
>> +#/dev/rtheap ? ? c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 10 ? ? ?254 ? ? 0 ? ? ? 0 ? ? ? -
>> +#/dev/rtscope ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 10 ? ? ?253 ? ? 0 ? ? ? 0 ? ? ? -
>> +#/dev/rtp ? ? ? ?c ? ? ? 666 ? ? 0 ? ? ? 0 ? ? ? 150 ? ? 0 ? ? ? 0 ? ? ? 1 ? ? ? 32
>> --
>> 1.7.6
>>
>
> Thanks,
> Thomas
>

Thanks for feedbacks !
Regards,

-- 
Benoit Mauduit

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu
  2011-07-20  8:10     ` Benoît Mauduit
@ 2011-07-20 19:21       ` Thomas Petazzoni
  0 siblings, 0 replies; 13+ messages in thread
From: Thomas Petazzoni @ 2011-07-20 19:21 UTC (permalink / raw)
  To: buildroot

Le Wed, 20 Jul 2011 10:10:36 +0200,
Beno?t Mauduit <benoit.mauduit@gmail.com> a ?crit :

> You are right, this is a mistake.
> I suggest to name all linux makefile extension like that :
> "xenomai_ext.mk".
> And include them with:
> include linux/*_ext.mk

Or maybe, it's linux/linux.mk's job to include linux/linux-*-ext.mk, or
explicitly linux/linux-xenomai.mk ?

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
  2011-07-13 16:23 ` [Buildroot] [PATCH 0/2] Add Xenomai real-time framework Thomas Petazzoni
@ 2011-09-12 19:24   ` Thomas De Schampheleire
  2011-09-12 19:52     ` Thomas Petazzoni
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas De Schampheleire @ 2011-09-12 19:24 UTC (permalink / raw)
  To: buildroot

Hi Benoit, Thomas,

On Wed, Jul 13, 2011 at 6:23 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello Benoit,
>
> Le Wed, 13 Jul 2011 17:52:58 +0200,
> benoit.mauduit at gmail.com a ?crit :
>
>> From: Benoit Mauduit <benoit.mauduit@openwide.fr>
>>
>> These two patches are an initial add for Xenomai in buildroot.
>
> Hey, this is great!
>
> I did a quick review. There a few things I am not totally happy with,
> but I like the way you hooked up the Xenomai kernel patch into the
> kernel build process.
>
> I will have a more detailed look, do some testing, and give some more
> precise feedback.
>
> Thanks again for doing this work!

What is the current status of this? I haven't seen any recent updated
patches for xenomai in buildroot.

Benoit, do you have the time to submit a new patch based on the
feedback you received?
Thomas (P.), are there more comments you wanted to add?

Thanks,
Thomas

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
  2011-09-12 19:24   ` Thomas De Schampheleire
@ 2011-09-12 19:52     ` Thomas Petazzoni
  2011-09-13  7:38       ` Benoît Mauduit
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas Petazzoni @ 2011-09-12 19:52 UTC (permalink / raw)
  To: buildroot

Le Mon, 12 Sep 2011 21:24:40 +0200,
Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :

> What is the current status of this? I haven't seen any recent updated
> patches for xenomai in buildroot.
> 
> Benoit, do you have the time to submit a new patch based on the
> feedback you received?
> Thomas (P.), are there more comments you wanted to add?

I haven't had the time to do a more careful review process yet, but
it's on my TODO-list: my colleague Maxime Ripard can testify that I did
talk to him today about those Xenomai patches.

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
  2011-09-12 19:52     ` Thomas Petazzoni
@ 2011-09-13  7:38       ` Benoît Mauduit
  2011-09-14 10:36         ` Thomas De Schampheleire
  0 siblings, 1 reply; 13+ messages in thread
From: Benoît Mauduit @ 2011-09-13  7:38 UTC (permalink / raw)
  To: buildroot

On Mon, Sep 12, 2011 at 9:52 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Le Mon, 12 Sep 2011 21:24:40 +0200,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> What is the current status of this? I haven't seen any recent updated
>> patches for xenomai in buildroot.
>>
>> Benoit, do you have the time to submit a new patch based on the
>> feedback you received?
>> Thomas (P.), are there more comments you wanted to add?
>
> I haven't had the time to do a more careful review process yet, but
> it's on my TODO-list: my colleague Maxime Ripard can testify that I did
> talk to him today about those Xenomai patches.
>
> Regards,
>
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
>

Hello,

I am sorry but i am very busy this last weeks. (new job, etc...)

But, it is on my TODO-list and I think i will resend patches for the
next week-end.

Thanks for the reminder :)

Regards,

Ps: D?sol? Thomas pour le fail :)

-- 
Benoit Mauduit

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Buildroot] [PATCH 0/2] Add Xenomai real-time framework
  2011-09-13  7:38       ` Benoît Mauduit
@ 2011-09-14 10:36         ` Thomas De Schampheleire
  0 siblings, 0 replies; 13+ messages in thread
From: Thomas De Schampheleire @ 2011-09-14 10:36 UTC (permalink / raw)
  To: buildroot

Hello Thomas, Beno?t,

2011/9/13 Beno?t Mauduit <benoit.mauduit@gmail.com>:
> On Mon, Sep 12, 2011 at 9:52 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Le Mon, 12 Sep 2011 21:24:40 +0200,
>> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>>
>>> What is the current status of this? I haven't seen any recent updated
>>> patches for xenomai in buildroot.
>>>
>>> Benoit, do you have the time to submit a new patch based on the
>>> feedback you received?
>>> Thomas (P.), are there more comments you wanted to add?
>>
>> I haven't had the time to do a more careful review process yet, but
>> it's on my TODO-list: my colleague Maxime Ripard can testify that I did
>> talk to him today about those Xenomai patches.
>>
>> Regards,
>>
>> Thomas
>> --
>> Thomas Petazzoni, Free Electrons
>> Kernel, drivers, real-time and embedded Linux
>> development, consulting, training and support.
>> http://free-electrons.com
>>
>
> Hello,
>
> I am sorry but i am very busy this last weeks. (new job, etc...)
>
> But, it is on my TODO-list and I think i will resend patches for the
> next week-end.
>
> Thanks for the reminder :)

I was in the process of upgrading to buildroot-2011.08, and had to fix
my own Xenomai patch anyway, so I decided to switch to your patches. I
modified them according to the comments I gave earlier, and tested on
a powerpc target with SMP.

I attach the changes to your patches to this mail, for your reference.
I'll send the resulting patch as a separate mail.

Feel free to make whatever modifications you still want to make, e.g.
on feedback from Thomas.

Best regards,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xenomai-01-changes.patch
Type: application/octet-stream
Size: 793 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110914/27d9f76b/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xenomai-02-changes.patch
Type: application/octet-stream
Size: 4226 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110914/27d9f76b/attachment-0003.obj>

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2011-09-14 10:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-13 15:52 [Buildroot] [PATCH 0/2] Add Xenomai real-time framework benoit.mauduit at gmail.com
2011-07-13 15:52 ` [Buildroot] [PATCH 1/2] linux: Add Linux Kernel extensions menu benoit.mauduit at gmail.com
2011-07-20  6:12   ` Thomas De Schampheleire
2011-07-20  8:10     ` Benoît Mauduit
2011-07-20 19:21       ` Thomas Petazzoni
2011-07-13 15:53 ` [Buildroot] [PATCH 2/2] Add xenomai real-time Framework to buildroot for Arm and x86 benoit.mauduit at gmail.com
2011-07-20  6:08   ` Thomas De Schampheleire
2011-07-20  9:22     ` Benoît Mauduit
2011-07-13 16:23 ` [Buildroot] [PATCH 0/2] Add Xenomai real-time framework Thomas Petazzoni
2011-09-12 19:24   ` Thomas De Schampheleire
2011-09-12 19:52     ` Thomas Petazzoni
2011-09-13  7:38       ` Benoît Mauduit
2011-09-14 10:36         ` Thomas De Schampheleire

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox