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