 We port Xhyp on your hardware, we port your
OS or application on Xhyp
read more
We port Xhyp on your hardware, we port your
OS or application on Xhyp
read more
Howto: Running X-hyp binaries demo.
...read more
Howto: Run your own RTOS in X-hyp.
...read more
Howto use the X-hyp configurator.
...read more
FAQ: Frequently Asked Questions on Licensing.
...read more
Howto use the X-Hyp framework to port an RTOS to X-Hyp.
...read more
Source code example: a hello world domain for X-Hyp.
...read more
Binary testing: using X-Hyp ARINC like scheduling.
...read more
IST Project: OCERA, Open components for realtime applications.
...read more
| A realtime hypervisor for embedded systems on ARM-9 and Cortex ready with paravirtualized FreeRTOS. | 
CROSS_COMPILE := arm-linux-gnueabihf-
CROSS_COMPILE := arm-none-linux-gnueabi-
CC := $(CROSS_COMPILE)gcc
LDSCRIPT := xhyp.ld
LOADADDR := 0x02100000
INCLUDES := -I../../include -I include -nostdinc
WARNINGS := -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-unused-parameter
CFLAGS := -fno-common -ffixed-r8 -msoft-float  -D__KERNEL__ -DTEXT_BASE=${LD_ADDR} -fno-builtin -ffreestanding -pipe  -DCONFIG_ARM -D__ARM__ -marm  -mabi=aapcs-linux -mno-thumb-interwork -march=armv5te -Wall -Wstrict-prototypes -fno-stack-protector -Wall -Werror $(INCLUDES)
AFLAGS := -D__ASSEMBLY__ -Os   -fno-common -ffixed-r8 -msoft-float  -D__KERNEL__ -DTEXT_BASE=${LD_ADDR} -fno-builtin -ffreestanding -pipe  -DCONFIG_ARM -D__ARM__ -marm  -mabi=aapcs-linux -mno-thumb-interwork -march=armv5te $(INCLUDES)
LDFLAGS := -Bstatic -T $(LDSCRIPT) -nostartfiles -nostdlib
LIB := stdlib.c
LIB_OBJ := $(LIB:.c=.o)
OBJS := start.o xhyp.o main.o _udivsi3.o $(LIB_OBJ)
all: xhyp_hello
start.o: start.S
$(CC) -c $(AFLAGS) start.S
xhyp.o: xhyp.S
$(CC) -c $(AFLAGS) xhyp.S
xhyp_hello: $(OBJS)
$(CC) $(LDFLAGS) $(OBJS) -o xhyp_hello
clean:
rm -f $(OBJS)
rm -f xhyp_hello
MEMORY
{
ram	: ORIGIN = 0x02100000, LENGTH = 0x00700000
}
__stack_end__ = 0x02800000 - 0x10;
SECTIONS
{
. = 0;
startup : { *(.startup)} >ram
prog :
{
*(.text)
*(.rodata)
*(.rodata*)
*(.glue_7)
*(.glue_7t)
*(.plt)
} >ram
__end_of_text__ = .;
.data :
{
__data_beg__ = .;
__data_beg_src__ = __end_of_text__;
*(.data)
__data_end__ = .;
} >ram
.bss :
{
__bss_beg__ = .;
*(.bss)
} >ram
/* Align here to ensure that the .bss section occupies space up to
_end.  Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections.  */
. = ALIGN(32 / 8);
_end = .;
_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
PROVIDE (end = .);
.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*)  *(.note.gnu.build-id) }
}
/* * start.S * * Author: Pierre Morel* * $LICENSE: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ .text .globl _start _start: /* setup stack */ ldr sp, =__stack_end__ /* Setup initial call frame */ mov lr, #4 mov r12, sp stmfd sp!, {r11-r12, lr-pc} sub r11, r12, #0x00000004 /* Jump to main entry point */ mov r0, #0 bl main do_hang: b do_hang 
/* * very simple domain code * */ #include.globl _hyp_console _hyp_console: swi #_HYP_console mov pc, lr .globl _hyp_get_cp15 _hyp_get_cp15: swi #_HYP_cpuctrl mov pc, lr .globl _hyp_exit _hyp_exit: swi #_HYP_exit mov pc, lr .globl _hyp_syscall_request _hyp_syscall_request: swi #_HYP_syscall_request mov pc, lr .globl _hyp_syscall_return _hyp_syscall_return: swi #_HYP_syscall_return mov pc, lr .globl _hyp_irq_request _hyp_irq_request: swi #_HYP_irq_request mov pc, lr .globl _hyp_irq_enable _hyp_irq_enable: swi #_HYP_irq_enable mov pc, lr .globl _hyp_irq_disable _hyp_irq_disable: swi #_HYP_irq_disable mov pc, lr .globl _hyp_irq_return _hyp_irq_return: swi #_HYP_irq_return .globl _hyp_syscall _hyp_syscall: swi #_HYP_syscall .globl _hyp_pgfault_request _hyp_pgfault_request: swi #_HYP_pgfault_request .globl _hyp_undef_request _hyp_undef_request: swi #_HYP_undef_request .globl get_cpsr get_cpsr: @ mrs r0, cpsr mov pc, lr .globl _hyp_context_switch _hyp_context_switch: swi #_HYP_switch_task mov pc, lr .globl _hyp_event_send _hyp_event_send: swi #_HYP_event_send mov pc, lr .globl _hyp_io_open _hyp_io_open: swi #_HYP_io_open mov pc, lr .globl _hyp_io_close _hyp_io_close: swi #_HYP_io_close mov pc, lr .globl _hyp_io_read _hyp_io_read: swi #_HYP_io_read mov pc, lr .globl _hyp_io_write _hyp_io_write: swi #_HYP_io_write mov pc, lr .globl _hyp_io_ioctl _hyp_io_ioctl: swi #_HYP_io_ioctl mov pc, lr .space 1024 
#include#include void main(void) { _hyp_console("startn", 6); printk("Hello worldn"); _hyp_exit(1); } 
Howto use the X-Hyp framework to port an RTOS to X-Hyp.
...read more
Howto use the X-Hyp Assemblor Hypercall API.
...read more
 
Binary testing: using X-Hyp ARINC like scheduling.
...read more
Howto: Running X-hyp binaries demo.
...read more
Howto: Run your own RTOS in X-hyp.
...read more
Howto use the X-Hyp C hypercall API.
...read more
IST Project: OCERA, Open components for realtime applications.
...read more
Source code example: a hello world domain for X-Hyp.
...read more
Designed and built by M.N.I.S.
Using Bootstrap licensed under Apache V2 and Glyphicons Free licensed under CC BY 3.0.