All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Hello, doubts with RT-CAN
@ 2008-06-16 16:33 quinty
  2008-06-17  7:21 ` Wolfgang Grandegger
  0 siblings, 1 reply; 4+ messages in thread
From: quinty @ 2008-06-16 16:33 UTC (permalink / raw)
  To: xenomai

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

Hello,

I am testing RT-CAN with MPC5200 and linux 2.6.23.14 , xenomai 2.4.2.
Well I have some doubts:
1.- In kernel configuration, there is a parameter to change lenght of RX CAN
buffer, 1024 by default.
What units???, 1024 bytes, 1024 telegrams??'
2.- RT-CAN is a block or non-block??? in other words, when I use rtcanrecv
examples, code wait in this line of code

ret = rt_dev_recvfrom
<http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__userapi.html#g0cc144457c649f197d485581686273dd>(s,
(void *)&frame, sizeof(can_frame_t
<http://www.xenomai.org/documentation/branches/v2.4.x/html/api/structcan__frame.html>),
0,(struct sockaddr *)&addr, &addrlen);, until driver recieve  message.


3.- Have RT-CAN TX buffer???

Best regards.
John
Automation & Research

[-- Attachment #2: Type: text/html, Size: 1124 bytes --]

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

* Re: [Xenomai-help] Hello, doubts with RT-CAN
  2008-06-16 16:33 [Xenomai-help] Hello, doubts with RT-CAN quinty
@ 2008-06-17  7:21 ` Wolfgang Grandegger
  2008-06-17  8:09   ` quinty
  0 siblings, 1 reply; 4+ messages in thread
From: Wolfgang Grandegger @ 2008-06-17  7:21 UTC (permalink / raw)
  To: quinty; +Cc: xenomai

quinty wrote:
> Hello,
> 
> I am testing RT-CAN with MPC5200 and linux 2.6.23.14 <http://2.6.23.14> 
> , xenomai 2.4.2. <http://2.4.2.>
> Well I have some doubts:
> 1.- In kernel configuration, there is a parameter to change lenght of RX 
> CAN buffer, 1024 by default.
> What units???, 1024 bytes, 1024 telegrams??'

It is in bytes and must be 2^n.


> 2.- RT-CAN is a block or non-block??? in other words, when I use 
> rtcanrecv examples, code wait in this line of code
> 
> ret = rt_dev_recvfrom <http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__userapi.html#g0cc144457c649f197d485581686273dd>(s, (void *)&frame, sizeof(can_frame_t <http://www.xenomai.org/documentation/branches/v2.4.x/html/api/structcan__frame.html>), 0,(struct sockaddr *)&addr, &addrlen);, until driver recieve  message.

Yes, unless you have opened the socket with the non-blocking flag.

> 
> 3.- Have RT-CAN TX buffer???

No, Out-going messages are not queued.

What is your problem?

Wolfgang.



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

* Re: [Xenomai-help] Hello, doubts with RT-CAN
  2008-06-17  7:21 ` Wolfgang Grandegger
@ 2008-06-17  8:09   ` quinty
  2008-06-17  8:29     ` Wolfgang Grandegger
  0 siblings, 1 reply; 4+ messages in thread
From: quinty @ 2008-06-17  8:09 UTC (permalink / raw)
  To: Wolfgang Grandegger; +Cc: xenomai

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

2008/6/17 Wolfgang Grandegger <wg@domain.hid>:

> quinty wrote:
>
>> Hello,
>>
>> I am testing RT-CAN with MPC5200 and linux 2.6.23.14 <http://2.6.23.14> ,
>> xenomai 2.4.2. <http://2.4.2.>
>> Well I have some doubts:
>> 1.- In kernel configuration, there is a parameter to change lenght of RX
>> CAN buffer, 1024 by default.
>> What units???, 1024 bytes, 1024 telegrams??'
>>
>
> It is in bytes and must be 2^n.
>
>
>  2.- RT-CAN is a block or non-block??? in other words, when I use rtcanrecv
>> examples, code wait in this line of code
>>
>> ret = rt_dev_recvfrom <
>> http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__userapi.html#g0cc144457c649f197d485581686273dd>(s,
>> (void *)&frame, sizeof(can_frame_t <
>> http://www.xenomai.org/documentation/branches/v2.4.x/html/api/structcan__frame.html>),
>> 0,(struct sockaddr *)&addr, &addrlen);, until driver recieve  message.
>>
>
> Yes, unless you have opened the socket with the non-blocking flag.
>
>
>> 3.- Have RT-CAN TX buffer???
>>
>
> No, Out-going messages are not queued.
>
> What is your problem?
>
> Wolfgang.
>
> Hello Wolfgang,

well, in this moment I have not clear what is my problem. I have made some
examples with my board to try understand rt-can.

About non-block

ret = rt_dev_recvfrom(can_fd, (void *)&frame, sizeof(can_frame_t), *
MSG_DONTWAIT*,
            (struct sockaddr *)&addr, &addrlen);

I have used this flag to not wait a message, but now, you told me that I
must open the socket with the non-blocking flag.

can_fd = rt_dev_socket(PF_CAN, SOCK_RAW, CAN_RAW);
ret = rt_dev_ioctl(can_fd, SIOCGIFINDEX, &ifr);

but in this lines, I do not known how to set non-blocking flag.

I am going to explaind you my problem. I am connected a device with CAN.
This device send message every 5ms with differents ID, for example, 0x136,
0x624, 0x664, etc etc, then I need to read this telegrams and the same time,
I must calculate some values to send and check other process. If driver is
block, I can not check other process.

That is all.

John Martin
Automation and Research.
Best regards

[-- Attachment #2: Type: text/html, Size: 3490 bytes --]

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

* Re: [Xenomai-help] Hello, doubts with RT-CAN
  2008-06-17  8:09   ` quinty
@ 2008-06-17  8:29     ` Wolfgang Grandegger
  0 siblings, 0 replies; 4+ messages in thread
From: Wolfgang Grandegger @ 2008-06-17  8:29 UTC (permalink / raw)
  To: quinty; +Cc: xenomai

quinty wrote:
> 
> 
> 2008/6/17 Wolfgang Grandegger <wg@domain.hid 
> <mailto:wg@domain.hid>>:
> 
>     quinty wrote:
> 
>         Hello,
> 
>         I am testing RT-CAN with MPC5200 and linux 2.6.23.14
>         <http://2.6.23.14> <http://2.6.23.14> , xenomai 2.4.2.
>         <http://2.4.2.> <http://2.4.2.>
> 
>         Well I have some doubts:
>         1.- In kernel configuration, there is a parameter to change
>         lenght of RX CAN buffer, 1024 by default.
>         What units???, 1024 bytes, 1024 telegrams??'
> 
> 
>     It is in bytes and must be 2^n.
> 
> 
>         2.- RT-CAN is a block or non-block??? in other words, when I use
>         rtcanrecv examples, code wait in this line of code
> 
>         ret = rt_dev_recvfrom
>         <http://www.xenomai.org/documentation/branches/v2.4.x/html/api/group__userapi.html#g0cc144457c649f197d485581686273dd>(s,
>         (void *)&frame, sizeof(can_frame_t
>         <http://www.xenomai.org/documentation/branches/v2.4.x/html/api/structcan__frame.html>),
>         0,(struct sockaddr *)&addr, &addrlen);, until driver recieve
>          message.
> 
> 
>     Yes, unless you have opened the socket with the non-blocking flag.
> 
> 
> 
>         3.- Have RT-CAN TX buffer???
> 
> 
>     No, Out-going messages are not queued.
> 
>     What is your problem?
> 
>     Wolfgang.
> 
> Hello Wolfgang,
> 
> well, in this moment I have not clear what is my problem. I have made 
> some examples with my board to try understand rt-can.
> 
> About non-block
> 
> ret = rt_dev_recvfrom(can_fd, (void *)&frame, sizeof(can_frame_t), 
> *MSG_DONTWAIT*,
>             (struct sockaddr *)&addr, &addrlen);
> 
> I have used this flag to not wait a message, but now, you told me that I 
> must open the socket with the non-blocking flag.

I'm wrong and your are right.

> 
> can_fd = rt_dev_socket(PF_CAN, SOCK_RAW, CAN_RAW);
> ret = rt_dev_ioctl(can_fd, SIOCGIFINDEX, &ifr);
> 
> but in this lines, I do not known how to set non-blocking flag.

See above.

> I am going to explaind you my problem. I am connected a device with CAN. 
> This device send message every 5ms with differents ID, for example, 
> 0x136, 0x624, 0x664, etc etc, then I need to read this telegrams and the 
> same time, I must calculate some values to send and check other process. 
> If driver is block, I can not check other process.

You could use a multi-threaded application with proper synchronization. 
But your single-threaded approach is a valuable option as well.

Wolfgang.



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

end of thread, other threads:[~2008-06-17  8:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-16 16:33 [Xenomai-help] Hello, doubts with RT-CAN quinty
2008-06-17  7:21 ` Wolfgang Grandegger
2008-06-17  8:09   ` quinty
2008-06-17  8:29     ` Wolfgang Grandegger

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.