Captain's Universe Home
Captain's Universe Home
Cosmic Ray Muon DetectorTeleGarden Pages
Time on MarsBryophyllum Plants
Jupiter Radio AstronomyAncient Pages
Salzburg Tourist GuideEarth Magnetometer
  H O M E     AJAX & MORE     LINUX & MORE     RTAI     XENOMAI     ADEOS IPIPE      
    JAVA & BROWSERS     *NIX     ELECTRONICS     REVIEWS     ARTEMIA     FAIRY SHRIMP      


Porting from ADEOS to ADEOS-IPIPE

Porting from ADEOS-IPIPE 1.0 to 1.1

Using an Adeos nano kernel patched vanilla linux kernel allows to run stuff in hard real time in kernel modules. This page presents a few things to change when porting existing software from ADEOS to the new ADEOS-IPIPE system.
Additional info for ADEOS-IPIPE for 2.4 kernels below


The left column shows the traditional ADEOS functions/constant/data-type - the right column the equivalent ADEOS-IPIPE function/constant/data-type.

ADEOSADEOS-IPIPE
ADEOS_ROOT_PRIIPIPE_ROOT_PRIO
adeos_critical_enter
adeos_critical_exit
adeos_control_irq
adeos_propagate_irq
adeos_virtualize_irq
adeos_get_sysinfo
adeos_virtualize_irq
adeos_suspend_domain
adeos_register_domain
adeos_unregister_domain
ipipe_critical_enter
ipipe_critical_exit
ipipe_control_irq
ipipe_propagate_irq
ipipe_virtualize_irq
ipipe_get_sysinfo
ipipe_virtualize_irq
ipipe_suspend_domain
ipipe_register_domain
ipipe_unregister_domain
adomain_tstruct ipipe_domain
adattr_tipipe_domain_attr
adsysinfo_tstruct ipipe_sysinfo
adp_currentipipe_current_domain
adeos_virtualize_irq(IRQ, &handler, NULL, IPIPE_DYNAMIC_MASK); ipipe_virtualize_irq(ipipe_current_domain, IRQ, &handler, NULL, IPIPE_HANDLE_MASK);


Domain initialization:

ADEOS classic:
	adattr_t attr;
	attr.name     = "TestDomain";
	attr.domid    = 1;	 // Adeos Domain ID: >0
	attr.entry    = &domain_entry;
	attr.estacksz = 0; // Adeos chooses a reasonable stack size
	attr.priority = ADEOS_ROOT_PRI + 1;
	attr.dswitch  = NULL; // Domain switch hook - always a C routine
	return adeos_register_domain(&this_domain,&attr);
ADEOS-IPIPE:
	struct ipipe_domain_attr attr;
	ipipe_init_attr (&attr);
	attr.name     = "TestDomain";
	attr.priority = IPIPE_ROOT_PRIO + 1;
	attr.entry    = &domain_entry;
	return ipipe_register_domain(&this_domain,&attr);


If you have something like this
	for (;;)
		adeos_suspend_domain();
in your ADEOS code, remove it for ADEOS-IPIPE.

These are just a few things I encountered when testing the new adeos-ipipe 1.00 patch with kernel 2.6.13.

adeos-ipipe kernel patch for the 2.4 kernel series (2.4.31 - 2.4.32):

Error:
`LOCAL_TIMER_VECTOR' undeclared (first use in this function)
add
#include <asm/hw_irq.h>


Porting from ADEOS-IPIPE 1.0 to 1.1

Some things changed from IPIPE 1.0 to 1.1. One I've encountered so far is this one:
error: too few arguments to function `ipipe_virtualize_irq'
From the patch:
+int ipipe_virtualize_irq(struct ipipe_domain *ipd,
+			 unsigned irq,
+			 ipipe_irq_handler_t handler,
+			 void *cookie,
+			 ipipe_irq_ackfn_t acknowledge,
+			 unsigned modemask)
+{
IPIPE 1.0
		ipipe_virtualize_irq(ipipe_current_domain, RTHAL_8254_IRQ,
			&timer_tick, NULL, IPIPE_DYNAMIC_MASK);

IPIPE 1.1
		ipipe_virtualize_irq(ipipe_current_domain, RTHAL_8254_IRQ,
			&timer_tick, NULL, NULL, IPIPE_DYNAMIC_MASK);

"ipipe_irq_ackfn_t acknowledge" seems to be some interrupt acknowledge handler, but I have yet to find out more details (it's not used in Xenomai 2.1).

Last-Modified: Sat, 04 Feb 2006 15:44:18 GMT

Google
 
Web www.captain.at
go to top
© 1996-2010 . All rights reserved.
No reproduction, distribution, publishing or transmission of the copyrighted materials at this site is permitted. Policy
go to top