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