Xenomai

From linux-sunxi.org
Jump to: navigation, search

ipipe on A20

Cubietruck works with ipipe on mainline kernel 3.18.12.

download kernel source from kernel.org 3.18.12 download ipipe-core-patch for arm 3.18.12

unpack kernel

patch -p1 < ../ipipe-core-3.18.12-arm-1.patch

You need also to patch these files

--- a/arch/arm/Kconfig     2015-05-12 09:05:30.566224133 +0200
+++ b/arch/arm/Kconfig     2015-05-06 14:47:39.464380270 +0200
@@ -1018,7 +1018,7 @@ config IPIPE_ARM_KUSER_TSC
        bool
        select GENERIC_TIME_VSYSCALL
        select IPIPE_HAVE_HOSTRT if IPIPE
-       default y if ARCH_AT91 || ARM_TIMER_SP804 || ARCH_MXC || ARCH_OMAP || PLAT_PXA || PLAT_S3C24XX || ARCH_SA1100
+       default y if ARCH_AT91 || ARM_TIMER_SP804 || ARCH_MXC || ARCH_OMAP || PLAT_PXA || PLAT_S3C24XX || ARCH_SA1100 || ARCH_SUNXI
 endif
--- a/arch/arm/mach-sunxi/Kconfig  2015-04-20 21:48:02.000000000 +0200
+++ b/arch/arm/mach-sunxi/Kconfig  2015-05-06 14:47:45.554380273 +0200
@@ -33,6 +33,7 @@ config MACH_SUN7I
        select ARM_PSCI
        select HAVE_ARM_ARCH_TIMER
        select SUN5I_HSTIMER
+       select IPIPE_ARM_KUSER_TSC if IPIPE

config MACH_SUN8I
        bool "Allwinner A23 (sun8i) SoCs support"
--- a/drivers/irqchip/irq-sunxi-nmi.c      2015-04-20 21:48:02.000000000 +0200
+++ b/drivers/irqchip/irq-sunxi-nmi.c      2015-05-07 10:09:31.639805322 +0200
@@ -77,8 +77,10 @@ static int sunxi_sc_nmi_set_type(struct
        u32 ctrl_off = ct->regs.type;
        unsigned int src_type;
        unsigned int i;
+       unsigned long flags;

-       irq_gc_lock(gc);
+       /* Disable interrupt */
+       flags = irq_gc_lock(gc);

        switch (flow_type & IRQF_TRIGGER_MASK) {
        case IRQ_TYPE_EDGE_FALLING:
@@ -95,7 +97,7 @@ static int sunxi_sc_nmi_set_type(struct
                src_type = SUNXI_SRC_TYPE_LEVEL_LOW;
                break;
        default:
-               irq_gc_unlock(gc);
+               irq_gc_unlock(gc, flags);
                pr_err("%s: Cannot assign multiple trigger modes to IRQ %d.\n",
                        __func__, data->irq);
                return -EBADR;
@@ -113,7 +115,7 @@ static int sunxi_sc_nmi_set_type(struct
        src_type_reg |= src_type;
        sunxi_sc_nmi_write(gc, ctrl_off, src_type_reg);

-       irq_gc_unlock(gc);
+       irq_gc_unlock(gc, flags);

        return IRQ_SET_MASK_OK;
 }


make defconfig cubietruck
make menuconfig

enable ipipe patches

compile kernel

then you can try to boot your kernel If that works add xenomai patches to kernel source

Personal tools
Namespaces

Variants
Actions
Navigation
Tools