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.