* [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
@ 2012-09-27 16:25 Andrey Nechypurenko
2012-09-27 18:11 ` Gilles Chanteperdrix
0 siblings, 1 reply; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 16:25 UTC (permalink / raw)
To: xenomai
Hi,
I am currently working on simple RTDM driver for quadrature encoder
and want to register the handler for interrupt from GPIO pin using
rtdm_irq_request(). My platform is BeagleBoard xM (TI DM3730 ARM CPU),
3.2.21 Linux kernel with Xenomai-2.6.1.
When insmod-ing the driver for the very first time, I am getting the
following error message. However, after rmmod-ing and inserting the
driver again, the error message is not appearing any more. All
subsequent insertions and removals also do not generate any errors.
[ 109.244410] I-pipe: Detected stalled head domain, probably caused by a bug.
[ 109.244417] A critical section may have been left unterminated.
[ 109.258596] [<c001250c>] (unwind_backtrace+0x0/0xe0) from
[<c0075ba4>] (ipipe_request_irq+0x1c/0)
[ 109.269958] [<c0075ba4>] (ipipe_request_irq+0x1c/0xd0) from
[<c007ca30>] (rthal_irq_request+0x34)
[ 109.281951] [<c007ca30>] (rthal_irq_request+0x34/0x3c) from
[<c007ed48>] (xnintr_attach+0x54/0x1)
[ 109.292274] [<c007ed48>] (xnintr_attach+0x54/0x100) from
[<c00b7c20>] (rtdm_irq_request+0x34/0x5)
[ 109.302221] [<c00b7c20>] (rtdm_irq_request+0x34/0x5c) from
[<bf826890>] (initializeEncoders+0xa4)
[ 109.313102] [<bf826890>] (initializeEncoders+0xa4/0xe0 [tb6612fng])
from [<bf826708>] (initpwm+0)
[ 109.324364] [<bf826708>] (initpwm+0x130/0x1a4 [tb6612fng]) from
[<bf829094>] (init_module+0x94/0)
[ 109.334984] [<bf829094>] (init_module+0x94/0xf0 [tb6612fng]) from
[<c0008748>] (do_one_initcall+)
[ 109.345146] [<c0008748>] (do_one_initcall+0x94/0x174) from
[<c00653cc>] (sys_init_module+0x161c/)
[ 109.354948] [<c00653cc>] (sys_init_module+0x161c/0x17f4) from
[<c000dbc0>] (ret_fast_syscall+0x0)
[ 109.364657] ------------[ cut here ]------------
[ 109.369472] WARNING: at include/linux/ipipe_debug.h:88
xnintr_attach+0xb0/0x100()
[ 109.377267] Modules linked in: tb6612fng(O+) sdmak(O)
lpm_omap3530(O) dsplinkk(O) cmemk(O) easycn
[ 109.391566] [<c001250c>] (unwind_backtrace+0x0/0xe0) from
[<c0036028>] (warn_slowpath_common+0x4)
[ 109.401362] [<c0036028>] (warn_slowpath_common+0x4c/0x64) from
[<c0036058>] (warn_slowpath_null+)
[ 109.411430] [<c0036058>] (warn_slowpath_null+0x18/0x1c) from
[<c007eda4>] (xnintr_attach+0xb0/0x)
[ 109.423816] [<c007eda4>] (xnintr_attach+0xb0/0x100) from
[<c00b7c20>] (rtdm_irq_request+0x34/0x5)
[ 109.434047] [<c00b7c20>] (rtdm_irq_request+0x34/0x5c) from
[<bf826890>] (initializeEncoders+0xa4)
[ 109.444919] [<bf826890>] (initializeEncoders+0xa4/0xe0 [tb6612fng])
from [<bf826708>] (initpwm+0)
[ 109.456206] [<bf826708>] (initpwm+0x130/0x1a4 [tb6612fng]) from
[<bf829094>] (init_module+0x94/0)
[ 109.466824] [<bf829094>] (init_module+0x94/0xf0 [tb6612fng]) from
[<c0008748>] (do_one_initcall+)
[ 109.478492] [<c0008748>] (do_one_initcall+0x94/0x174) from
[<c00653cc>] (sys_init_module+0x161c/)
[ 109.489746] [<c00653cc>] (sys_init_module+0x161c/0x17f4) from
[<c000dbc0>] (ret_fast_syscall+0x0)
[ 109.500334] ---[ end trace c1c770f3aa0b8c03 ]---
I am stuck searching for possible reasons for this error message and
would appreciate any help or hints.
Thank you,
Andrey.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 16:25 [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM) Andrey Nechypurenko
@ 2012-09-27 18:11 ` Gilles Chanteperdrix
2012-09-27 21:05 ` Andrey Nechypurenko
0 siblings, 1 reply; 12+ messages in thread
From: Gilles Chanteperdrix @ 2012-09-27 18:11 UTC (permalink / raw)
To: Andrey Nechypurenko; +Cc: xenomai
On 09/27/2012 06:25 PM, Andrey Nechypurenko wrote:
> Hi,
>
> I am currently working on simple RTDM driver for quadrature encoder
> and want to register the handler for interrupt from GPIO pin using
> rtdm_irq_request(). My platform is BeagleBoard xM (TI DM3730 ARM CPU),
> 3.2.21 Linux kernel with Xenomai-2.6.1.
>
> When insmod-ing the driver for the very first time, I am getting the
> following error message. However, after rmmod-ing and inserting the
> driver again, the error message is not appearing any more. All
> subsequent insertions and removals also do not generate any errors.
>
> [ 109.244410] I-pipe: Detected stalled head domain, probably caused by a bug.
> [ 109.244417] A critical section may have been left unterminated.
> [ 109.258596] [<c001250c>] (unwind_backtrace+0x0/0xe0) from
> [<c0075ba4>] (ipipe_request_irq+0x1c/0)
> [ 109.269958] [<c0075ba4>] (ipipe_request_irq+0x1c/0xd0) from
> [<c007ca30>] (rthal_irq_request+0x34)
> [ 109.281951] [<c007ca30>] (rthal_irq_request+0x34/0x3c) from
> [<c007ed48>] (xnintr_attach+0x54/0x1)
> [ 109.292274] [<c007ed48>] (xnintr_attach+0x54/0x100) from
> [<c00b7c20>] (rtdm_irq_request+0x34/0x5)
> [ 109.302221] [<c00b7c20>] (rtdm_irq_request+0x34/0x5c) from
> [<bf826890>] (initializeEncoders+0xa4)
> [ 109.313102] [<bf826890>] (initializeEncoders+0xa4/0xe0 [tb6612fng])
> from [<bf826708>] (initpwm+0)
> [ 109.324364] [<bf826708>] (initpwm+0x130/0x1a4 [tb6612fng]) from
> [<bf829094>] (init_module+0x94/0)
> [ 109.334984] [<bf829094>] (init_module+0x94/0xf0 [tb6612fng]) from
> [<c0008748>] (do_one_initcall+)
> [ 109.345146] [<c0008748>] (do_one_initcall+0x94/0x174) from
> [<c00653cc>] (sys_init_module+0x161c/)
> [ 109.354948] [<c00653cc>] (sys_init_module+0x161c/0x17f4) from
> [<c000dbc0>] (ret_fast_syscall+0x0)
> [ 109.364657] ------------[ cut here ]------------
> [ 109.369472] WARNING: at include/linux/ipipe_debug.h:88
> xnintr_attach+0xb0/0x100()
> [ 109.377267] Modules linked in: tb6612fng(O+) sdmak(O)
> lpm_omap3530(O) dsplinkk(O) cmemk(O) easycn
> [ 109.391566] [<c001250c>] (unwind_backtrace+0x0/0xe0) from
> [<c0036028>] (warn_slowpath_common+0x4)
> [ 109.401362] [<c0036028>] (warn_slowpath_common+0x4c/0x64) from
> [<c0036058>] (warn_slowpath_null+)
> [ 109.411430] [<c0036058>] (warn_slowpath_null+0x18/0x1c) from
> [<c007eda4>] (xnintr_attach+0xb0/0x)
> [ 109.423816] [<c007eda4>] (xnintr_attach+0xb0/0x100) from
> [<c00b7c20>] (rtdm_irq_request+0x34/0x5)
> [ 109.434047] [<c00b7c20>] (rtdm_irq_request+0x34/0x5c) from
> [<bf826890>] (initializeEncoders+0xa4)
> [ 109.444919] [<bf826890>] (initializeEncoders+0xa4/0xe0 [tb6612fng])
> from [<bf826708>] (initpwm+0)
> [ 109.456206] [<bf826708>] (initpwm+0x130/0x1a4 [tb6612fng]) from
> [<bf829094>] (init_module+0x94/0)
> [ 109.466824] [<bf829094>] (init_module+0x94/0xf0 [tb6612fng]) from
> [<c0008748>] (do_one_initcall+)
> [ 109.478492] [<c0008748>] (do_one_initcall+0x94/0x174) from
> [<c00653cc>] (sys_init_module+0x161c/)
> [ 109.489746] [<c00653cc>] (sys_init_module+0x161c/0x17f4) from
> [<c000dbc0>] (ret_fast_syscall+0x0)
> [ 109.500334] ---[ end trace c1c770f3aa0b8c03 ]---
>
> I am stuck searching for possible reasons for this error message and
> would appreciate any help or hints.
The message is likely a false positive. Could you post the init_module code?
--
Gilles.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 18:11 ` Gilles Chanteperdrix
@ 2012-09-27 21:05 ` Andrey Nechypurenko
2012-09-27 21:06 ` Gilles Chanteperdrix
0 siblings, 1 reply; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 21:05 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
> The message is likely a false positive. Could you post the init_module code?
Sure, here it is. I removed some simple array initializations and
error handling code which is not invoked in this scenario to make
functions shorter. Two relevant places are marked with <<<
static struct rtdm_device device = {
.struct_version = RTDM_DEVICE_STRUCT_VER,
.device_flags = RTDM_NAMED_DEVICE,
.context_size = sizeof(context_t),
.device_name = DEVICE_NAME,
.open_nrt = pwm_rtdm_open_nrt,
.ops = {
.close_nrt = pwm_rtdm_close_nrt,
.read_nrt = pwm_rtdm_read_nrt,
.write_nrt = pwm_rtdm_write_nrt,
},
.device_class = RTDM_CLASS_EXPERIMENTAL,
.device_sub_class = SOME_SUB_CLASS,
.profile_version = 1,
.driver_name = "TB6612FNG-CTL",
.driver_version = RTDM_DRIVER_VER(0, 1, 2),
.peripheral_name = "TB6612FNG dual motor driver",
.provider_name = "Andrey Nechypurenko",
.proc_name = device.device_name,
};
int __init pwm_rtdm_init(void)
{
int res;
res = rtdm_dev_register(&device);
if(res == 0)
rtdm_printk("TB6612FNG: driver registered without errors\n");
else
{
... error handling
}
res = initpwm();
return res;
}
int
initpwm(void)
{
int i;
int retval;
// Set GPIO mode and configuration
retval = InitGPIO(channels, sizeof(channels) / sizeof(channels[0]));
rtdm_printk("TB6612FNG: Starting PWM generation timers.\n");
retval = rtdm_timer_init(&up_timer, pwm_up, "up timer");
for(i = 0; i < RC_NUM; i++)
{
retval = rtdm_timer_init(&down_timer[i], pwm_down, "down timer");
}
retval = rtdm_timer_start(&up_timer,
PERIOD, // we will use periodic timer
PERIOD, // PERIOD period
RTDM_TIMERMODE_RELATIVE);
rtdm_printk("TB6612FNG: initializing encoder handlers\n");
retval = initializeEncoders(); // <<<< this is the function where
irq is requested and warning is printed
return 0;
}
int
initializeEncoders(void)
{
void __iomem *confmem = NULL;
int res = 0;
const int irq = gpio_to_irq(143);
rtdm_printk("IRQ for GPIO 143: %i\n", irq); // 303 for 143
// Enable interrupts for rotary encoders
confmem = ioremap(0x48200000, 0x05cc);
iowrite32(0, confmem + 0x0010); // sysconfig
iowrite32(1, confmem + 0x0050); // idle
iowrite32(0, confmem + 0x0174); // ILRm
// 15 = (gpio)143 - 128
iowrite32(1 << 15, confmem + 0x0088); // clear MIRn (INTCPS_MIR_CLEARn)
iounmap(confmem);
res = rtdm_irq_request(&irq_handles[0],
irq, //303 - something happens,
encoderIrqHandler,
RTDM_IRQTYPE_EDGE,
"wheel-encoder1",
NULL); <<<<<< This call causing the WARNING message
return res;
}
int
encoderIrqHandler(rtdm_irq_t *irq_handle)
{
++irq_count;
return RTDM_IRQ_HANDLED;
}
Thank you,
Andrey.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:05 ` Andrey Nechypurenko
@ 2012-09-27 21:06 ` Gilles Chanteperdrix
2012-09-27 21:08 ` Andrey Nechypurenko
2012-09-27 21:10 ` Andrey Nechypurenko
0 siblings, 2 replies; 12+ messages in thread
From: Gilles Chanteperdrix @ 2012-09-27 21:06 UTC (permalink / raw)
To: Andrey Nechypurenko; +Cc: xenomai
On 09/27/2012 11:05 PM, Andrey Nechypurenko wrote:
> retval = InitGPIO(channels, sizeof(channels) / sizeof(channels[0]));
The code for this funtion is missing.
--
Gilles.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:06 ` Gilles Chanteperdrix
@ 2012-09-27 21:08 ` Andrey Nechypurenko
2012-09-27 21:14 ` Gilles Chanteperdrix
2012-09-27 21:10 ` Andrey Nechypurenko
1 sibling, 1 reply; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 21:08 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
On 27 September 2012 23:06, Gilles Chanteperdrix
<gilles.chanteperdrix@xenomai.org> wrote:
> On 09/27/2012 11:05 PM, Andrey Nechypurenko wrote:
>
>> retval = InitGPIO(channels, sizeof(channels) / sizeof(channels[0]));
>
>
> The code for this funtion is missing.
>
> --
> Gilles.
static void __iomem *confmem = NULL;
int
InitGPIO(ChannelConfig *channels, size_t ch_count)
{
const u16 mode_value = (EN | PTD | M4);
const u32 conf_val = ((1<<5)|(1<<2)|(1<<4)|(1<<3)|(1<<8)|(1<<6)|(1<<7));
size_t i;
u32 cur_val;
rtdm_printk("TB6612FNG: configuring I/O pins mode\n");
confmem = ioremap(0x48000000, 0x05cc);
// STBY GPIO 133 - Bank 5, base addr 0x4905 6000
iowrite16(mode_value, confmem + 0x215C + 2);
// PWMA GPIO 130
iowrite16(mode_value, confmem + 0x2158);
// AIN1 GPIO 132
iowrite16(mode_value, confmem + 0x215C);
// AIN2 GPIO 131
iowrite16(mode_value, confmem + 0x2158 + 2);
// PWMB GPIO 136
iowrite16(mode_value, confmem + 0x2164);
// BIN1 GPIO 134
iowrite16(mode_value, confmem + 0x2160);
// BIN2 GPIO 135
iowrite16(mode_value, confmem + 0x2160 + 2);
// ENC1 GPIO 143
iowrite16(IEN | mode_value, confmem + 0x2170 + 2);
iounmap(confmem);
confmem = NULL;
confmem = ioremap(0x49050000, 0x05cc);
if(!confmem)
{
rtdm_printk("TB6612FNG: GPIO bank mapping failed\n");
return 2;
}
else
rtdm_printk("TB6612FNG: GPIO bank mapped to address %p\n", confmem);
// GPIO_OE - config pins as output
cur_val = ioread32(confmem + 0x6034);
iowrite32(cur_val & (~conf_val), confmem + 0x6034);
// Disable the wakeupenable and irqenable intertupts
cur_val = ioread32(confmem + 0x6080);
iowrite32(cur_val | conf_val, confmem + 0x6080);
// GPIO clear_irqenable1
cur_val = ioread32(confmem + 0x6060);
iowrite32(cur_val | conf_val, confmem + 0x6060);
// GPIO clear_irqenable2 is offset
cur_val = ioread32(confmem + 0x6070);
iowrite32(cur_val | conf_val, confmem + 0x6070);
// Enable interrupts for rotary encoders
// 15 = (gpio)143 - 128
// GPIO_OE - config pins as input
cur_val = ioread32(confmem + 0x6034);
iowrite32(cur_val | (1 << 15), confmem + 0x6034);
// GPIO_RISINGDETECT
iowrite32(1 << 15, confmem + 0x6048);
//GPIO_FALLINGDETECT
iowrite32(1 << 15, confmem + 0x604C);
// GPIO_SETIRQENABLE1
iowrite32(1 << 15, confmem + 0x6064);
// GPIO_IRQENABLE1
cur_val = ioread32(confmem + 0x601C);
iowrite32(cur_val | (1 << 15), confmem + 0x601C);
// GPIO_IRQSTATUS1
iowrite32(1 << 15, confmem + 0x6018);
return 0;
}
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:06 ` Gilles Chanteperdrix
2012-09-27 21:08 ` Andrey Nechypurenko
@ 2012-09-27 21:10 ` Andrey Nechypurenko
1 sibling, 0 replies; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 21:10 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
> On 09/27/2012 11:05 PM, Andrey Nechypurenko wrote:
>
>> retval = InitGPIO(channels, sizeof(channels) / sizeof(channels[0]));
>
>
> The code for this funtion is missing.
Actually, if it would be helpful, I can send the complete compilable
code (is not much more then what is already posted).
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:08 ` Andrey Nechypurenko
@ 2012-09-27 21:14 ` Gilles Chanteperdrix
2012-09-27 21:24 ` Andrey Nechypurenko
0 siblings, 1 reply; 12+ messages in thread
From: Gilles Chanteperdrix @ 2012-09-27 21:14 UTC (permalink / raw)
To: Andrey Nechypurenko; +Cc: xenomai
On 09/27/2012 11:08 PM, Andrey Nechypurenko wrote:
> On 27 September 2012 23:06, Gilles Chanteperdrix
> <gilles.chanteperdrix@xenomai.org> wrote:
>> On 09/27/2012 11:05 PM, Andrey Nechypurenko wrote:
>>
>>> retval = InitGPIO(channels, sizeof(channels) / sizeof(channels[0]));
>>
>>
>> The code for this funtion is missing.
>>
>> --
>> Gilles.
> static void __iomem *confmem = NULL;
>
>
> int
> InitGPIO(ChannelConfig *channels, size_t ch_count)
> {
> const u16 mode_value = (EN | PTD | M4);
> const u32 conf_val = ((1<<5)|(1<<2)|(1<<4)|(1<<3)|(1<<8)|(1<<6)|(1<<7));
> size_t i;
> u32 cur_val;
>
> rtdm_printk("TB6612FNG: configuring I/O pins mode\n");
> confmem = ioremap(0x48000000, 0x05cc);
>
> // STBY GPIO 133 - Bank 5, base addr 0x4905 6000
> iowrite16(mode_value, confmem + 0x215C + 2);
> // PWMA GPIO 130
> iowrite16(mode_value, confmem + 0x2158);
> // AIN1 GPIO 132
> iowrite16(mode_value, confmem + 0x215C);
> // AIN2 GPIO 131
> iowrite16(mode_value, confmem + 0x2158 + 2);
> // PWMB GPIO 136
> iowrite16(mode_value, confmem + 0x2164);
> // BIN1 GPIO 134
> iowrite16(mode_value, confmem + 0x2160);
> // BIN2 GPIO 135
> iowrite16(mode_value, confmem + 0x2160 + 2);
>
> // ENC1 GPIO 143
> iowrite16(IEN | mode_value, confmem + 0x2170 + 2);
>
>
> iounmap(confmem);
> confmem = NULL;
> confmem = ioremap(0x49050000, 0x05cc);
> if(!confmem)
> {
> rtdm_printk("TB6612FNG: GPIO bank mapping failed\n");
> return 2;
> }
> else
> rtdm_printk("TB6612FNG: GPIO bank mapped to address %p\n", confmem);
>
> // GPIO_OE - config pins as output
> cur_val = ioread32(confmem + 0x6034);
> iowrite32(cur_val & (~conf_val), confmem + 0x6034);
> // Disable the wakeupenable and irqenable intertupts
> cur_val = ioread32(confmem + 0x6080);
> iowrite32(cur_val | conf_val, confmem + 0x6080);
> // GPIO clear_irqenable1
> cur_val = ioread32(confmem + 0x6060);
> iowrite32(cur_val | conf_val, confmem + 0x6060);
> // GPIO clear_irqenable2 is offset
> cur_val = ioread32(confmem + 0x6070);
> iowrite32(cur_val | conf_val, confmem + 0x6070);
>
> // Enable interrupts for rotary encoders
> // 15 = (gpio)143 - 128
> // GPIO_OE - config pins as input
> cur_val = ioread32(confmem + 0x6034);
> iowrite32(cur_val | (1 << 15), confmem + 0x6034);
> // GPIO_RISINGDETECT
> iowrite32(1 << 15, confmem + 0x6048);
> //GPIO_FALLINGDETECT
> iowrite32(1 << 15, confmem + 0x604C);
> // GPIO_SETIRQENABLE1
> iowrite32(1 << 15, confmem + 0x6064);
> // GPIO_IRQENABLE1
> cur_val = ioread32(confmem + 0x601C);
> iowrite32(cur_val | (1 << 15), confmem + 0x601C);
> // GPIO_IRQSTATUS1
> iowrite32(1 << 15, confmem + 0x6018);
> return 0;
> }
>
You are really supposed to use the kernel API for these things, and not
touch the registers directly. But I agree that it is not the issue. No
sign of interrupt disabling. I think Jan already talked about the issue
you have:
http://www.xenomai.org/pipermail/xenomai/2012-September/026267.html
It is a false positive, you can safely ignore the warning or remove the
check from the code.
--
Gilles.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:14 ` Gilles Chanteperdrix
@ 2012-09-27 21:24 ` Andrey Nechypurenko
2012-09-27 21:26 ` Andrey Nechypurenko
2012-09-27 22:01 ` Gilles Chanteperdrix
0 siblings, 2 replies; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 21:24 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
> You are really supposed to use the kernel API for these things, and not
> touch the registers directly.
You are right and I will definitely change the pin configuration code.
It was just a very first quick prototype and I was unfamiliar with
corresponding kernel API.
Is it also "safe" to use kernel GPIO API to toggle GPIO from RT
context such as timer handler? With safe I mean if it can influence
real-time performance in some negative way?
Thank you,
Andrey.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:24 ` Andrey Nechypurenko
@ 2012-09-27 21:26 ` Andrey Nechypurenko
2012-09-27 22:01 ` Gilles Chanteperdrix
1 sibling, 0 replies; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-27 21:26 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
> It is a false positive, you can safely ignore the warning or remove the
> check from the code.
Sounds good :-) . Thank you very much Gilles for such quick response
and explanations!
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 21:24 ` Andrey Nechypurenko
2012-09-27 21:26 ` Andrey Nechypurenko
@ 2012-09-27 22:01 ` Gilles Chanteperdrix
2012-09-28 8:52 ` Andrey Nechypurenko
1 sibling, 1 reply; 12+ messages in thread
From: Gilles Chanteperdrix @ 2012-09-27 22:01 UTC (permalink / raw)
To: Andrey Nechypurenko; +Cc: xenomai
On 09/27/2012 11:24 PM, Andrey Nechypurenko wrote:
>> You are really supposed to use the kernel API for these things, and not
>> touch the registers directly.
>
> You are right and I will definitely change the pin configuration code.
> It was just a very first quick prototype and I was unfamiliar with
> corresponding kernel API.
>
> Is it also "safe" to use kernel GPIO API to toggle GPIO from RT
> context such as timer handler? With safe I mean if it can influence
> real-time performance in some negative way?
Yes, it is supposed to be possible.
--
Gilles.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-27 22:01 ` Gilles Chanteperdrix
@ 2012-09-28 8:52 ` Andrey Nechypurenko
2012-09-28 10:17 ` Gilles Chanteperdrix
0 siblings, 1 reply; 12+ messages in thread
From: Andrey Nechypurenko @ 2012-09-28 8:52 UTC (permalink / raw)
To: Gilles Chanteperdrix; +Cc: xenomai
>> Is it also "safe" to use kernel GPIO API to toggle GPIO from RT
>> context such as timer handler? With safe I mean if it can influence
>> real-time performance in some negative way?
>
> Yes, it is supposed to be possible.
Here I hope you meant possible and safe to use and not that it can
possibly influence the real-time performance? Right?
Thank you,
Andrey.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM)
2012-09-28 8:52 ` Andrey Nechypurenko
@ 2012-09-28 10:17 ` Gilles Chanteperdrix
0 siblings, 0 replies; 12+ messages in thread
From: Gilles Chanteperdrix @ 2012-09-28 10:17 UTC (permalink / raw)
To: Andrey Nechypurenko; +Cc: xenomai
On 09/28/2012 10:52 AM, Andrey Nechypurenko wrote:
>>> Is it also "safe" to use kernel GPIO API to toggle GPIO from RT
>>> context such as timer handler? With safe I mean if it can influence
>>> real-time performance in some negative way?
>>
>> Yes, it is supposed to be possible.
>
> Here I hope you meant possible and safe to use and not that it can
> possibly influence the real-time performance? Right?
See:
http://www.xenomai.org/index.php/I-pipe-core:ArmPorting#GPIOs
--
Gilles.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-09-28 10:17 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-27 16:25 [Xenomai] Error requesting IRQ on DM3730 (BeagleBoard xM) Andrey Nechypurenko
2012-09-27 18:11 ` Gilles Chanteperdrix
2012-09-27 21:05 ` Andrey Nechypurenko
2012-09-27 21:06 ` Gilles Chanteperdrix
2012-09-27 21:08 ` Andrey Nechypurenko
2012-09-27 21:14 ` Gilles Chanteperdrix
2012-09-27 21:24 ` Andrey Nechypurenko
2012-09-27 21:26 ` Andrey Nechypurenko
2012-09-27 22:01 ` Gilles Chanteperdrix
2012-09-28 8:52 ` Andrey Nechypurenko
2012-09-28 10:17 ` Gilles Chanteperdrix
2012-09-27 21:10 ` Andrey Nechypurenko
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.