All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] tool for external jitter measurement
@ 2006-11-29 12:35 Syed Amer Gilani
  2006-11-29 12:43 ` [Xenomai-help] " Syed Amer Gilani
  2006-11-29 13:50 ` [Xenomai-help] " Jan Kiszka
  0 siblings, 2 replies; 3+ messages in thread
From: Syed Amer Gilani @ 2006-11-29 12:35 UTC (permalink / raw)
  To: xenomai

I wrote with my little Xenomai experience a rtdm kernel module witch
generates an external signal to measure it on an Oscilloscope. The
Result is satisfying. With no other load there is nearly no jitter.
With "dd if=/dev/zero of=/dev/null" and "ping -f" from an external
machine the jitter is +-15µsec.
My Question now is if my approach is OK or is there a better way to
generate the signal with Xenomai which would result in better results.
Maybe by using hardware timer interrupt or something?

I would appreciate any comment on the following code.

/*
 * 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.
 */

#include <rtdm/rtdm_driver.h>

MODULE_LICENSE("GPL");

#define MPC52xx_MBAR            0xf0000000      /* Phys address */

/* WakeUp GPIO Registers - MBAR + 0x0C00 */
#define GPIO_WKUP_ENA          MPC52xx_MBAR + 0x0C00
#define GPIO_WKUP_DIR          MPC52xx_MBAR + 0x0C08
#define GPIO_WKUP_OUT          MPC52xx_MBAR + 0x0C0C
#define GPIO_WKUP_IN           MPC52xx_MBAR + 0x0C20

/* Set / Get value for Register reg */
#define MPC52xx_REG(reg)               *((unsigned long *)reg / 4)

/* Set Register Bit */
#define SET_REG_BIT(reg,bit)   MPC52xx_REG(reg) |= (1<<(31-bit))

/* Reset Register Bit */
#define RES_REG_BIT(reg,bit)   MPC52xx_REG(reg) &= ~(1<<(31-bit))

/* Get Register Bit */
#define GET_REG_BIT(reg,bit)   MPC52xx_REG(reg) & (1<<(31-bit)) ? 1:0

rtdm_task_t signal_task;
int         end = 0;

#define SIGNAL_PERIOD    1000000   /* 1 ms */

void set_pin(int mask)
{
	if (mask == 1)
	{
		SET_REG_BIT(GPIO_SINT_OUT,7);
		SET_REG_BIT(GPIO_SINT_ENA,7);
		SET_REG_BIT(GPIO_SINT_DIR,7);
	}
	else
	{
		RES_REG_BIT(GPIO_SINT_OUT,7);
		SET_REG_BIT(GPIO_SINT_ENA,7);
		SET_REG_BIT(GPIO_SINT_DIR,7);
	}
}

void signal(void *cookie)
{
    int state = 0;

    while (!end) {
        rtdm_task_wait_period();
        if (state >= 1)
        {
        	set_pin(1);
            state = 0;
        }
        else
        {
        	set_pin(0);
        	state++;
        }
    }
}

int init_module(void)
{
	printk(KERN_INFO "pin_signal start\n");
    return rtdm_task_init(&signal_task, "signal", signal, NULL, 99,
SIGNAL_PERIOD);
}

void cleanup_module(void)
{
    end = 1;
    rtdm_task_join_nrt(&signal_task, 100);
    set_pin(0);
    printk(KERN_INFO "pin_signal stop\n");
}

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

* [Xenomai-help] Re: tool for external jitter measurement
  2006-11-29 12:35 [Xenomai-help] tool for external jitter measurement Syed Amer Gilani
@ 2006-11-29 12:43 ` Syed Amer Gilani
  2006-11-29 13:50 ` [Xenomai-help] " Jan Kiszka
  1 sibling, 0 replies; 3+ messages in thread
From: Syed Amer Gilani @ 2006-11-29 12:43 UTC (permalink / raw)
  To: xenomai

2006/11/29, Syed Amer Gilani <amg@systec.de>:
> I wrote with my little Xenomai experience a rtdm kernel module witch
> generates an external signal to measure it on an Oscilloscope. The
> Result is satisfying. With no other load there is nearly no jitter.
> With "dd if=/dev/zero of=/dev/null" and "ping -f" from an external
> machine the jitter is +-15µsec.
> My Question now is if my approach is OK or is there a better way to
> generate the signal with Xenomai which would result in better results.
> Maybe by using hardware timer interrupt or something?
>
> I would appreciate any comment on the following code.

I forgot to mention this runs on an Freescale mpc5200b and the used
Output is psc3_4.

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

* Re: [Xenomai-help] tool for external jitter measurement
  2006-11-29 12:35 [Xenomai-help] tool for external jitter measurement Syed Amer Gilani
  2006-11-29 12:43 ` [Xenomai-help] " Syed Amer Gilani
@ 2006-11-29 13:50 ` Jan Kiszka
  1 sibling, 0 replies; 3+ messages in thread
From: Jan Kiszka @ 2006-11-29 13:50 UTC (permalink / raw)
  To: Syed Amer Gilani; +Cc: xenomai

[-- Attachment #1: Type: text/plain, Size: 1001 bytes --]

Syed Amer Gilani wrote:
> I wrote with my little Xenomai experience a rtdm kernel module witch
> generates an external signal to measure it on an Oscilloscope. The
> Result is satisfying. With no other load there is nearly no jitter.
> With "dd if=/dev/zero of=/dev/null" and "ping -f" from an external
> machine the jitter is +-15µsec.

15 us looks fairly good, maybe too good. You may also want to try the
cache calibrator as load (see TROUBLESHOOTING for details).

> My Question now is if my approach is OK or is there a better way to
> generate the signal with Xenomai which would result in better results.
> Maybe by using hardware timer interrupt or something?

We have postponed the API definition for RTDM timers until the nucleus
timers have been reworked (scheduled for 2.4), but that service would
probably give you even better results (no reschedule, pins will be
toggled in IRQ context). Check drivers/testing/timerbench.c for a hack
to achieve this already.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

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

end of thread, other threads:[~2006-11-29 13:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-29 12:35 [Xenomai-help] tool for external jitter measurement Syed Amer Gilani
2006-11-29 12:43 ` [Xenomai-help] " Syed Amer Gilani
2006-11-29 13:50 ` [Xenomai-help] " Jan Kiszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.