Derrill Vezina | 13 May 15:31 2013

Beckhoff EL2502 Issue

Hi,

 

I am currently writing software to use the Beckhoff EL2502 module. Using the cstruct output of the etherlab tool, I get the following pdo configuration:

 

/* Master 0, Slave 7, "EL2502"

* Vendor ID:       0x00000002

* Product code:    0x09c63052

* Revision number: 0x00170000

*/

 

ec_pdo_entry_info_t slave_7_pdo_entries[] = {

    {0x7000, 0x11, 16}, /* PWM output */

    {0x7010, 0x11, 16}, /* PWM output */

};

 

ec_pdo_info_t slave_7_pdos[] = {

    {0x1600, 1, slave_7_pdo_entries + 0}, /* PWM RxPDO-Map Ch.1 */

    {0x1601, 1, slave_7_pdo_entries + 1}, /* PWM RxPDO-Map Ch.2 */

};

 

ec_sync_info_t slave_7_syncs[] = {

    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},

    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},

    {2, EC_DIR_OUTPUT, 2, slave_7_pdos + 0, EC_WD_DISABLE},

    {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},

    {0xff}

};

 

After reading through some of the beckhoff documentation, I changed my structures to accommodate the channel period registers…(I believe it is firmware specific).

 

// EL2502 PDO entries

ec_pdo_entry_info_t EL2502_pdo_entries[] = {

    {0x7000, 0x11, 16}, /* PWM CH1 output */

    {0x7000, 0x12, 16},             /* PWM CH1 period */

    {0x7010, 0x11, 16}, /* PWM CH2 output */

    {0x7010, 0x12, 16},             /* PWM CH2 period */

};

 

// EL2502 PDOs

ec_pdo_info_t EL2502_pdos[] = {

    {0x1602, 1, EL2502_pdo_entries + 0}, /* PWM RxPDO-Map Ch.1 */

    {0x1603, 1, EL2502_pdo_entries + 2}, /* PWM RxPDO-Map Ch.2 */

};

 

// EL2502 sync

ec_sync_info_t EL2502_syncs[] = {

    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},

    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},

    {2, EC_DIR_OUTPUT, 2, EL2502_pdos + 0, EC_WD_DISABLE},

    {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},

    {0xff}

};

 

Has anyone ever set the frequency and pulse width of the ouput signal on either channel using pdo’s? My project requires changing the pulse frequency and the pulse width on the fly and I was wondering if I can accomplish this using the pdo’s. Does anyone else have different c structures they are using?

 

Thank you!

 

-Derrill

<div>
<div class="WordSection1">
<p class="MsoNormal">Hi,<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">I am currently writing software to use the Beckhoff EL2502 module. Using the cstruct output of the etherlab tool, I get the following pdo configuration:<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><span>/* Master 0, Slave 7, "EL2502"<p></p></span></p>
<p class="MsoNormal"><span>* Vendor ID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00000002<p></p></span></p>
<p class="MsoNormal"><span>* Product code:&nbsp;&nbsp;&nbsp; 0x09c63052<p></p></span></p>
<p class="MsoNormal"><span>* Revision number: 0x00170000<p></p></span></p>
<p class="MsoNormal"><span>*/<p></p></span></p>
<p class="MsoNormal"><span><p>&nbsp;</p></span></p>
<p class="MsoNormal"><span>ec_pdo_entry_info_t slave_7_pdo_entries[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7000, 0x11, 16}, /* PWM output */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7010, 0x11, 16}, /* PWM output */<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><span><p>&nbsp;</p></span></p>
<p class="MsoNormal"><span>ec_pdo_info_t slave_7_pdos[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x1600, 1, slave_7_pdo_entries + 0}, /* PWM RxPDO-Map Ch.1 */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x1601, 1, slave_7_pdo_entries + 1}, /* PWM RxPDO-Map Ch.2 */<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><span><p>&nbsp;</p></span></p>
<p class="MsoNormal"><span>ec_sync_info_t slave_7_syncs[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {2, EC_DIR_OUTPUT, 2, slave_7_pdos + 0, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0xff}<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">After reading through some of the beckhoff documentation, I changed my structures to accommodate the channel period registers&hellip;(I believe it is firmware specific).
<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal"><span>// EL2502 PDO entries<p></p></span></p>
<p class="MsoNormal"><span>ec_pdo_entry_info_t EL2502_pdo_entries[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7000, 0x11, 16}, /* PWM CH1 output */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7000, 0x12, 16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* PWM CH1 period */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7010, 0x11, 16}, /* PWM CH2 output */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x7010, 0x12, 16},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* PWM CH2 period */<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><span><p>&nbsp;</p></span></p>
<p class="MsoNormal"><span>// EL2502 PDOs<p></p></span></p>
<p class="MsoNormal"><span>ec_pdo_info_t EL2502_pdos[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x1602, 1, EL2502_pdo_entries + 0}, /* PWM RxPDO-Map Ch.1 */<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0x1603, 1, EL2502_pdo_entries + 2}, /* PWM RxPDO-Map Ch.2 */<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><span><p>&nbsp;</p></span></p>
<p class="MsoNormal"><span>// EL2502 sync<p></p></span></p>
<p class="MsoNormal"><span>ec_sync_info_t EL2502_syncs[] = {<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {2, EC_DIR_OUTPUT, 2, EL2502_pdos + 0, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},<p></p></span></p>
<p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp; {0xff}<p></p></span></p>
<p class="MsoNormal"><span>};<p></p></span></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Has anyone ever set the frequency and pulse width of the ouput signal on either channel using pdo&rsquo;s? My project requires changing the pulse frequency and the pulse width on the fly and I was wondering if I can accomplish this using the
 pdo&rsquo;s. Does anyone else have different c structures they are using?<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Thank you!<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">-Derrill<p></p></p>
</div>
</div>
vilian_ch | 8 May 04:33 2013

Datagram TIMED OUT

 When we start our system for many times(about 1000 times),There would be an error from EtherCAT master:
1)The master is in IDLE state(using command tool: ethercat master);
2) All datagram are marked lost frames(using ethercat master, Rx frames = 0)
3)The master can not find any slaves(using commmand tool:ethercat sl, no slave info display)
4)If I restart master(sudo /etc/init.d/ethercat restart), the master can find its slaves again.
5)When I set master debug to 1(sudo ethercat debug 1) and dmesg. The following debug info will display:
..........
[53970.871062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 80 waited 8000 us.
[53970.879062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 81 waited 8000 us.
[53970.887062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 82 waited 8000 us.
...........
6) I also use wireshark to capture ethercat datagram, and find all send datagram have been received successfully(wkc is not zero)
I find this debug info printed in master.c file, function is:void ecrt_master_receive(ec_master_t * master)
Generally master has set a time out value for received datagram, using parameter EC_IO_TIMEOUT(in file globals.h), which is set 500us.
I want to know is it a bug in master? how should we resolve this problem? can we just simply reset the parameter
EC_IO_TIMEOUT to a large value like 1ms or 10ms or more?
 
 
 
----- 原始邮件 -----
发件人:etherlab-users-request <at> etherlab.org
收件人:etherlab-users <at> etherlab.org
主题:etherlab-users Digest, Vol 72, Issue 6
日期:2013年05月06日 18点00分

<div>
<div>&nbsp;When we start our system for many times(about 1000 times),There would be an error from EtherCAT master:</div>
<div>1)The master is in IDLE state(using command tool: ethercat master);</div>
<div>2) All datagram are marked lost frames(using ethercat master, Rx frames = 0)</div>
<div>3)The master can not find any slaves(using commmand tool:ethercat sl, no slave info display)</div>
<div>4)If I restart master(sudo /etc/init.d/ethercat restart), the master can find its slaves again.</div>
<div>5)When I set master debug to 1(sudo ethercat debug 1) and dmesg. The following debug info will display:</div>
<div>..........</div>
<div>[53970.871062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 80 waited 8000 us.<br>[53970.879062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 81 waited 8000 us.<br>[53970.887062] EtherCAT DEBUG 0: TIMED OUT datagram f667c3e0, index 82 waited 8000 us.<br>...........</div>
<div>6) I also use wireshark to capture ethercat datagram, and find all send datagram have been received successfully(wkc is not zero)</div>
<div>I find this debug info printed in master.c file, function is:void ecrt_master_receive(ec_master_t * master)</div>
<div>Generally master has set a time out value for received datagram, using parameter EC_IO_TIMEOUT(in file globals.h), which is set 500us.</div>
<div>I want to know is it a bug in master? how should we resolve this problem? can we just simply reset the parameter</div>
<div>EC_IO_TIMEOUT to a large value like 1ms or 10ms or more?</div>
<div>&nbsp;</div>
<div>&nbsp;</div>&nbsp;<br><div>
<div>----- &#21407;&#22987;&#37038;&#20214; -----<br>&#21457;&#20214;&#20154;&#65306;etherlab-users-request <at> etherlab.org<br>&#25910;&#20214;&#20154;&#65306;etherlab-users <at> etherlab.org<br>&#20027;&#39064;&#65306;etherlab-users Digest, Vol 72, Issue 6<br>&#26085;&#26399;&#65306;2013&#24180;05&#26376;06&#26085; 18&#28857;00&#20998;<br>
</div>
<br>
</div>
</div>
vilian_ch | 6 May 11:07 2013

ethercat realtime:rt_preempt in userspace

 Hello,everyone!
I want to know anyone has experience in develop userspace realtime using linux rt_preempt patch(not via rtdm module, use ethercat ioctl interface?
In master document about master's feactures:The master code supports any linux Real-time extension through its
independet architecture: ... RT-Preempt[]...
And I want to know if it is possible to reach hard-realtime performance when using ioctl interface?
Thank you in advance!

----- 原始邮件 -----
发件人:etherlab-users-request <at> etherlab.org
收件人:etherlab-users <at> etherlab.org
主题:etherlab-users Digest, Vol 72, Issue 5
日期:2013年05月04日 18点00分

<div>
<div>&nbsp;Hello,everyone!</div>
<div>I want to know anyone has experience in develop userspace realtime using linux rt_preempt patch(not via rtdm module, use ethercat ioctl interface?</div>
<div>In master document about master's feactures:The master code supports any linux Real-time extension through its</div>
<div>independet architecture: ... RT-Preempt[]...</div>
<div>And I want to know if it is possible to reach hard-realtime&nbsp;performance when using ioctl interface?<br>Thank you in advance!</div>
<br><div>
<div>----- &#21407;&#22987;&#37038;&#20214; -----<br>&#21457;&#20214;&#20154;&#65306;etherlab-users-request <at> etherlab.org<br>&#25910;&#20214;&#20154;&#65306;etherlab-users <at> etherlab.org<br>&#20027;&#39064;&#65306;etherlab-users Digest, Vol 72, Issue 5<br>&#26085;&#26399;&#65306;2013&#24180;05&#26376;04&#26085; 18&#28857;00&#20998;<br>
</div>
<br>
</div>
</div>
Gianluca Medini | 3 May 21:54 2013
Picon

Problems with EL7041

Hi, I've experienced problem with EL7041; I'm able to work with one of 
them if I have this at the end of the slave chains.
If I put two of them works the last. If I put just one and after another 
terminal (es. EL1008) it stop working.
I'm not very experienced but can be a problem of calculating the lenght 
data ? How to solve it ?
The errors that come is AL state 1E.
The problem arise with 1.5.0 and 1.5.2 too.

Regards and thanks in advance  for any help
Gianluca Medini

Attachment (gianluca.vcf): text/x-vcard, 276 bytes
Hi, I've experienced problem with EL7041; I'm able to work with one of 
them if I have this at the end of the slave chains.
If I put two of them works the last. If I put just one and after another 
terminal (es. EL1008) it stop working.
I'm not very experienced but can be a problem of calculating the lenght 
data ? How to solve it ?
The errors that come is AL state 1E.
The problem arise with 1.5.0 and 1.5.2 too.

Regards and thanks in advance  for any help
Gianluca Medini

rothgaenger | 2 May 23:06 2013

WARNINGS: "Working counter changed" and "datagram UNMATCHED"


Hello everybody!

I am trying to build an etherlab-application based on the  
user-example. I modified the source code for my bus configuration.  
After compiling and running the program I received the following output:

Configuring PDOs...
Activating master...
Starting timer...
Started.
5 slave(s).
AL states: 0x02.
Link is up.
Domain1: WC 1.
Domain1: State 1.
Domain1: WC 4.
Domain1: WC 5.
Domain1: WC 6.
Domain1: State 2.
AL states: 0x08.
Domain1: WC 0.
Domain1: State 0.
Domain1: WC 6.
Domain1: State 2.
Domain1: WC 0.
Domain1: State 0.
Domain1: WC 6.
Domain1: State 2.

The program works, the digital outputs are blinking/toggleing. I paid  
attention to the domain working counter- and state changes. This  
messages appear when the program is running a few seconds. The kernel  
logs showed the following messages:

tux <at> terminal:~$ sudo dmesg -c
[29842.462777] EtherCAT 0: Domain 0: Working counter changed to 0/6.
[29842.752788] EtherCAT WARNING: Datagram f73b59c0 (domain0-0) was  
SKIPPED 2 times.
[29843.076180] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[29843.472786] EtherCAT 0: Domain 0: Working counter changed to 6/6.
tux <at> terminal:~$ sudo dmesg -c
[29855.462831] EtherCAT 0: Domain 0: Working counter changed to 0/6.
[29855.882832] EtherCAT WARNING: Datagram f73b59c0 (domain0-0) was  
SKIPPED 2 times.
[29856.084222] EtherCAT WARNING 0: 1 datagram UNMATCHED!
[29856.472779] EtherCAT 0: Domain 0: Working counter changed to 6/6.

Here some infos about the system: Ubuntu 10.04 LTS with Kernel  
2.6.31.6 and PREEMPT patch but same warnings also appear on a system  
without RT PREEMPT.
etherlab version info:
tux <at> terminal:~$ sudo /opt/etherlab/bin/ethercat version
IgH EtherCAT master 1.5.1 0f7a243b03e4

I can imagine there are timing problems because program is working and  
the messages appear irregular. On the other side, EtherCAT is a  
real-time capable system but does not require real-time, isn't it? Can  
you tell me what's wrong in the program or what is the reason for  
warnings?

Below you can see the program.

Best Regards,
Marcel

#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/resource.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

/****************************************************************************/

#include "ecrt.h"

/****************************************************************************/

// Application parameters
#define FREQUENCY 100
#define PRIORITY 1

// Optional features
#define CONFIGURE_PDOS  1
#define SDO_ACCESS      0

/****************************************************************************/

// EtherCAT
static ec_master_t *master = NULL;
static ec_master_state_t master_state = {};

static ec_domain_t *domain1 = NULL;
static ec_domain_state_t domain1_state = {};

static ec_slave_config_t *sc_ana_in = NULL;
static ec_slave_config_state_t sc_ana_in_state = {};

// Timer
static unsigned int sig_alarms = 0;
static unsigned int user_alarms = 0;

/****************************************************************************/

// process data
static uint8_t *domain1_pd = NULL;

#define BusCouplerPos  0, 0
#define PotentialPos   0, 1
#define DigOutSlavePos 0, 2
#define DigInSlavePos  0, 2
#define AnaInSlavePos  0, 3
#define ThermoSlavePos 0, 4

#define Beckhoff_EK1100 0x00000002, 0x044c2c52
#define Beckhoff_EL9110 0x00000002, 0x23963052
#define Beckhoff_EL1859 0x00000002, 0x07433052
#define Beckhoff_EL3111 0x00000002, 0x0c273052
#define Beckhoff_EL3311 0x00000002, 0x0cef3052

// offsets for PDO entries
static unsigned int off_potential_status;
static unsigned int off_dig_out;
static unsigned int off_dig_in;
static unsigned int off_ana_in;
static unsigned int off_thermo_in;

const static ec_pdo_entry_reg_t domain1_regs[] = {
     {PotentialPos,  Beckhoff_EL9110, 0x6000, 1, &off_potential_status},
     {DigOutSlavePos,  Beckhoff_EL1859, 0x7080, 1, &off_dig_out},
     {DigInSlavePos,  Beckhoff_EL1859, 0x6000, 1, &off_dig_in},
     {AnaInSlavePos,  Beckhoff_EL3111, 0x6000, 0x11, &off_ana_in},
     {ThermoSlavePos,  Beckhoff_EL3311, 0x6000, 0x11, &off_thermo_in},
     {}
};

static unsigned int counter = 0;
static unsigned int blink = 0;

/*****************************************************************************/

#if CONFIGURE_PDOS

/* Master 0, Slave 1, "EL9110"
  * Vendor ID:       0x00000002
  * Product code:    0x23963052
  * Revision number: 0x00100000
  */

ec_pdo_entry_info_t slave_1_pdo_entries[] = {
     {0x6000, 0x01, 1}, /* Input */
};

ec_pdo_info_t slave_1_pdos[] = {
     {0x1a00, 1, slave_1_pdo_entries + 0}, /* PowerOK */
};

ec_sync_info_t slave_1_syncs[] = {
     {0, EC_DIR_INPUT, 1, slave_1_pdos + 0, EC_WD_DISABLE},
     {0xff}
};

/* Master 0, Slave 2, "EL1859"
  * Vendor ID:       0x00000002
  * Product code:    0x07433052
  * Revision number: 0x00100000
  */

ec_pdo_entry_info_t slave_2_pdo_entries[] = {
     {0x7080, 0x01, 1}, /* Output */
     {0x7090, 0x01, 1}, /* Output */
     {0x70a0, 0x01, 1}, /* Output */
     {0x70b0, 0x01, 1}, /* Output */
     {0x70c0, 0x01, 1}, /* Output */
     {0x70d0, 0x01, 1}, /* Output */
     {0x70e0, 0x01, 1}, /* Output */
     {0x70f0, 0x01, 1}, /* Output */
     {0x6000, 0x01, 1}, /* Input */
     {0x6010, 0x01, 1}, /* Input */
     {0x6020, 0x01, 1}, /* Input */
     {0x6030, 0x01, 1}, /* Input */
     {0x6040, 0x01, 1}, /* Input */
     {0x6050, 0x01, 1}, /* Input */
     {0x6060, 0x01, 1}, /* Input */
     {0x6070, 0x01, 1}, /* Input */
};

ec_pdo_info_t slave_2_pdos[] = {
     {0x1608, 1, slave_2_pdo_entries + 0}, /* Channel 9 */
     {0x1609, 1, slave_2_pdo_entries + 1}, /* Channel 10 */
     {0x160a, 1, slave_2_pdo_entries + 2}, /* Channel 11 */
     {0x160b, 1, slave_2_pdo_entries + 3}, /* Channel 12 */
     {0x160c, 1, slave_2_pdo_entries + 4}, /* Channel 13 */
     {0x160d, 1, slave_2_pdo_entries + 5}, /* Channel 14 */
     {0x160e, 1, slave_2_pdo_entries + 6}, /* Channel 15 */
     {0x160f, 1, slave_2_pdo_entries + 7}, /* Channel 16 */
     {0x1a00, 1, slave_2_pdo_entries + 8}, /* Channel 1 */
     {0x1a01, 1, slave_2_pdo_entries + 9}, /* Channel 2 */
     {0x1a02, 1, slave_2_pdo_entries + 10}, /* Channel 3 */
     {0x1a03, 1, slave_2_pdo_entries + 11}, /* Channel 4 */
     {0x1a04, 1, slave_2_pdo_entries + 12}, /* Channel 5 */
     {0x1a05, 1, slave_2_pdo_entries + 13}, /* Channel 6 */
     {0x1a06, 1, slave_2_pdo_entries + 14}, /* Channel 7 */
     {0x1a07, 1, slave_2_pdo_entries + 15}, /* Channel 8 */
};

ec_sync_info_t el1859_syncs[] = {
     {0, EC_DIR_OUTPUT, 8, slave_2_pdos + 0, EC_WD_ENABLE},
     {1, EC_DIR_INPUT, 8, slave_2_pdos + 8, EC_WD_DISABLE},
     {0xff}
};

/* Master 0, Slave 3, "EL3111"
  * Vendor ID:       0x00000002
  * Product code:    0x0c273052
  * Revision number: 0x00100000
  */

ec_pdo_entry_info_t slave_3_pdo_entries[] = {
     {0x6000, 0x01, 1}, /* Underrange */
     {0x6000, 0x02, 1}, /* Overrange */
     {0x6000, 0x03, 2}, /* Limit 1 */
     {0x6000, 0x05, 2}, /* Limit 2 */
     {0x6000, 0x07, 1}, /* Error */
     {0x0000, 0x00, 1}, /* Gap */
     {0x0000, 0x00, 5}, /* Gap */
     {0x1c32, 0x20, 1},
     {0x1800, 0x07, 1}, /* TxPDO State */
     {0x1800, 0x09, 1}, /* TxPDO Toggle */
     {0x6000, 0x11, 16}, /* Value */
};

ec_pdo_info_t slave_3_pdos[] = {
     {0x1a00, 11, slave_3_pdo_entries + 0}, /* AI TxPDO-Map Standard Ch.1 */
};

ec_sync_info_t el3111_syncs[] = {
     {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
     {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
     {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
     {3, EC_DIR_INPUT, 1, slave_3_pdos + 0, EC_WD_DISABLE},
     {0xff}
};

/* Master 0, Slave 4, "EL3311"
  * Vendor ID:       0x00000002
  * Product code:    0x0cef3052
  * Revision number: 0x00120000
  */

ec_pdo_entry_info_t slave_4_pdo_entries[] = {
     {0x6000, 0x01, 1}, /* Underrange */
     {0x6000, 0x02, 1}, /* Overrange */
     {0x6000, 0x03, 2}, /* Limit 1 */
     {0x6000, 0x05, 2}, /* Limit 2 */
     {0x6000, 0x07, 1}, /* Error */
     {0x0000, 0x00, 7}, /* Gap */
     {0x6000, 0x0f, 1}, /* TxPDO State */
     {0x1800, 0x09, 1},
     {0x6000, 0x11, 16}, /* Value */
};

ec_pdo_info_t slave_4_pdos[] = {
     {0x1a00, 9, slave_4_pdo_entries + 0}, /* TC TxPDO-MapCh.1 */
};

ec_sync_info_t slave_4_syncs[] = {
     {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
     {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
     {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
     {3, EC_DIR_INPUT, 1, slave_4_pdos + 0, EC_WD_DISABLE},
     {0xff}
};

#endif

/*****************************************************************************/

#if SDO_ACCESS
static ec_sdo_request_t *sdo;
#endif

/*****************************************************************************/

void check_domain1_state(void)
{
     ec_domain_state_t ds;

     ecrt_domain_state(domain1, &ds);

     if (ds.working_counter != domain1_state.working_counter)
         printf("Domain1: WC %u.\n", ds.working_counter);
     if (ds.wc_state != domain1_state.wc_state)
         printf("Domain1: State %u.\n", ds.wc_state);

     domain1_state = ds;
}

/*****************************************************************************/

void check_master_state(void)
{
     ec_master_state_t ms;

     ecrt_master_state(master, &ms);

     if (ms.slaves_responding != master_state.slaves_responding)
         printf("%u slave(s).\n", ms.slaves_responding);
     if (ms.al_states != master_state.al_states)
         printf("AL states: 0x%02X.\n", ms.al_states);
     if (ms.link_up != master_state.link_up)
         printf("Link is %s.\n", ms.link_up ? "up" : "down");

     master_state = ms;
}

/*****************************************************************************/

void check_slave_config_states(void)
{
     ec_slave_config_state_t s;

     ecrt_slave_config_state(sc_ana_in, &s);

     if (s.al_state != sc_ana_in_state.al_state)
         printf("AnaIn: State 0x%02X.\n", s.al_state);
     if (s.online != sc_ana_in_state.online)
         printf("AnaIn: %s.\n", s.online ? "online" : "offline");
     if (s.operational != sc_ana_in_state.operational)
         printf("AnaIn: %soperational.\n",
                 s.operational ? "" : "Not ");

     sc_ana_in_state = s;
}

/*****************************************************************************/

#if SDO_ACCESS
void read_sdo(void)
{
     switch (ecrt_sdo_request_state(sdo)) {
         case EC_REQUEST_UNUSED: // request was not used yet
             ecrt_sdo_request_read(sdo); // trigger first read
             break;
         case EC_REQUEST_BUSY:
             fprintf(stderr, "Still busy...\n");
             break;
         case EC_REQUEST_SUCCESS:
             fprintf(stderr, "SDO value: 0x%04X\n",
                     EC_READ_U16(ecrt_sdo_request_data(sdo)));
             ecrt_sdo_request_read(sdo); // trigger next read
             break;
         case EC_REQUEST_ERROR:
             fprintf(stderr, "Failed to read SDO!\n");
             ecrt_sdo_request_read(sdo); // retry reading
             break;
     }
}
#endif

/****************************************************************************/

void cyclic_task()
{
     int i;

     // receive process data
     ecrt_master_receive(master);
     ecrt_domain_process(domain1);

     // check process data state (optional)
     check_domain1_state();

     if (counter) {
         counter--;
     } else { // do this at 1 Hz
         counter = FREQUENCY;

         // calculate new process data
         blink = !blink;

         // check for master state (optional)
         check_master_state();

         // check for islave configuration state(s) (optional)
         //check_slave_config_states();

#if SDO_ACCESS
         // read process data SDO
         read_sdo();
#endif

     }

#if 0
     // read process data
     printf("AnaIn: state %u value %u\n",
             EC_READ_U8(domain1_pd + off_ana_in_status),
             EC_READ_U16(domain1_pd + off_ana_in_value));
#endif

#if 1
     // write process data
     EC_WRITE_U8(domain1_pd + off_dig_out, blink ? 0x06 : 0x09);
#endif

     // send process data
     ecrt_domain_queue(domain1);
     ecrt_master_send(master);
}

/****************************************************************************/

void signal_handler(int signum) {
     switch (signum) {
         case SIGALRM:
             sig_alarms++;
             break;
     }
}

/****************************************************************************/

int main(int argc, char **argv)
{
     ec_slave_config_t *sc;
     struct sigaction sa;
     struct itimerval tv;

     master = ecrt_request_master(0);
     if (!master)
         return -1;

     domain1 = ecrt_master_create_domain(master);
     if (!domain1)
         return -1;

     if (!(sc_ana_in = ecrt_master_slave_config(
                     master, AnaInSlavePos, Beckhoff_EL3111))) {
         fprintf(stderr, "Failed to get slave configuration.\n");
         return -1;
     }

#if SDO_ACCESS
     fprintf(stderr, "Creating SDO requests...\n");
     if (!(sdo = ecrt_slave_config_create_sdo_request(sc_ana_in,  
0x3102, 2, 2))) {
         fprintf(stderr, "Failed to create SDO request.\n");
         return -1;
     }
     ecrt_sdo_request_timeout(sdo, 500); // ms
#endif

#if CONFIGURE_PDOS
     printf("Configuring PDOs...\n");
     if (ecrt_slave_config_pdos(sc_ana_in, EC_END, el3111_syncs)) {
         fprintf(stderr, "Failed to configure PDOs.\n");
         return -1;
     }

     if (!(sc = ecrt_master_slave_config(
                     master, DigOutSlavePos, Beckhoff_EL1859))) {
         fprintf(stderr, "Failed to get slave configuration.\n");
         return -1;
     }

     if (ecrt_slave_config_pdos(sc, EC_END, el1859_syncs)) {
         fprintf(stderr, "Failed to configure PDOs.\n");
         return -1;
     }
#endif

     // Create configuration for bus coupler
     sc = ecrt_master_slave_config(master, BusCouplerPos, Beckhoff_EK1100);
     if (!sc)
         return -1;

     if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) {
         fprintf(stderr, "PDO entry registration failed!\n");
         return -1;
     }

     printf("Activating master...\n");
     if (ecrt_master_activate(master))
         return -1;

     if (!(domain1_pd = ecrt_domain_data(domain1))) {
         return -1;
     }

#if PRIORITY
     pid_t pid = getpid();
     if (setpriority(PRIO_PROCESS, pid, -19))
         fprintf(stderr, "Warning: Failed to set priority: %s\n",
                 strerror(errno));
#endif

     sa.sa_handler = signal_handler;
     sigemptyset(&sa.sa_mask);
     sa.sa_flags = 0;
     if (sigaction(SIGALRM, &sa, 0)) {
         fprintf(stderr, "Failed to install signal handler!\n");
         return -1;
     }

     printf("Starting timer...\n");
     tv.it_interval.tv_sec = 0;
     tv.it_interval.tv_usec = 1000000 / FREQUENCY;
     tv.it_value.tv_sec = 0;
     tv.it_value.tv_usec = 1000;
     if (setitimer(ITIMER_REAL, &tv, NULL)) {
         fprintf(stderr, "Failed to start timer: %s\n", strerror(errno));
         return 1;
     }

     printf("Started.\n");
     while (1) {
         pause();

#if 0
         struct timeval t;
         gettimeofday(&t, NULL);
         printf("%u.%06u\n", t.tv_sec, t.tv_usec);
#endif

         while (sig_alarms != user_alarms) {
             cyclic_task();
             user_alarms++;
         }
     }

     return 0;
}

/****************************************************************************/

Ian Norton | 2 May 12:07 2013

e1000e

Hi,

I'm trying to build the e1000e driver, but got the following errors when doing "make all modules".
Can you help please?

[root <at> localhost ethercat-1.5.0]# ./configure --enable-e1000e
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1966080
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking how to run the C++ preprocessor... g++ -E
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... no
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether gcc and cc understand -c and -o together... yes
checking for Linux kernel sources... /usr/src/kernels/2.6.32-358.el6.i686 (Kernel 2.6.32)
checking for Linux modules installation directory... ethercat
checking for kernel for 8139too driver... 2.6.32
checking for kernel for e1000e driver... 2.6.32
checking for RTAI path... not specified.
configure: creating ./config.status
config.status: creating Doxyfile
config.status: creating Kbuild
config.status: creating Makefile
config.status: creating devices/Kbuild
config.status: creating devices/Makefile
config.status: creating devices/e1000/Kbuild
config.status: creating devices/e1000/Makefile
config.status: creating devices/e1000e/Kbuild
config.status: creating devices/e1000e/Makefile
config.status: creating ethercat.spec
config.status: creating examples/Kbuild
config.status: creating examples/Makefile
config.status: creating examples/dc_rtai/Kbuild
config.status: creating examples/dc_rtai/Makefile
config.status: creating examples/dc_user/Makefile
config.status: creating examples/mini/Kbuild
config.status: creating examples/mini/Makefile
config.status: creating examples/rtai/Kbuild
config.status: creating examples/rtai/Makefile
config.status: creating examples/tty/Kbuild
config.status: creating examples/tty/Makefile
config.status: creating examples/user/Makefile
config.status: creating include/Makefile
config.status: creating lib/Makefile
config.status: creating m4/Makefile
config.status: creating master/Kbuild
config.status: creating master/Makefile
config.status: creating script/Makefile
config.status: creating script/ethercat.service
config.status: creating script/ethercatctl
config.status: creating script/init.d/Makefile
config.status: creating script/init.d/ethercat
config.status: creating script/sysconfig/Makefile
config.status: creating tool/Makefile
config.status: creating tty/Kbuild
config.status: creating tty/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
[root <at> localhost ethercat-1.5.0]# make all modules
make  all-recursive
make[1]: Entering directory `/home/mcs/ethercat-1.5.0'
Making all in devices
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/devices'
make  all-recursive
make[3]: Entering directory `/home/mcs/ethercat-1.5.0/devices'
Making all in e1000
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000'
make  all-am
make[5]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000'
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000'
Making all in e1000e
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000e'
make  all-am
make[5]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000e'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000e'
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000e'
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'
make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'
Making all in include
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/include'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/include'
Making all in master
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/master'
make  all-am
make[3]: Entering directory `/home/mcs/ethercat-1.5.0/master'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/master'
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/master'
Making all in script
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/script'
make  all-recursive
make[3]: Entering directory `/home/mcs/ethercat-1.5.0/script'
Making all in init.d
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script/init.d'
make  all-am
make[5]: Entering directory `/home/mcs/ethercat-1.5.0/script/init.d'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/script/init.d'
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script/init.d'
Making all in sysconfig
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script/sysconfig'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script/sysconfig'
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script'
make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/script'
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/script'
Making all in tool
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/tool'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/tool'
Making all in lib
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/lib'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/lib'
Making all in examples
make[2]: Entering directory `/home/mcs/ethercat-1.5.0/examples'
make  all-recursive
make[3]: Entering directory `/home/mcs/ethercat-1.5.0/examples'
Making all in dc_user
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples/dc_user'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples/dc_user'
Making all in user
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples/user'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples/user'
make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'
make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'
make[2]: Entering directory `/home/mcs/ethercat-1.5.0'
make[2]: Leaving directory `/home/mcs/ethercat-1.5.0'
make[1]: Leaving directory `/home/mcs/ethercat-1.5.0'
make -C "/usr/src/kernels/2.6.32-358.el6.i686" M="/home/mcs/ethercat-1.5.0" modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-358.el6.i686'
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/82571-2.6.32-ethercat.o
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/es2lan-2.6.32-ethercat.o
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/ethtool-2.6.32-ethercat.o
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/ich8lan-2.6.32-ethercat.o
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/lib-2.6.32-ethercat.o
  CC [M]  /home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.o
/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c: In function ‘e1000_put_txbuf’:
/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:593: error: implicit declaration of function ‘skb_dma_unmap’

/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c: In function ‘e1000_tx_map’:
/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4011: error: implicit declaration of function ‘skb_dma_map’

/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4017: error: ‘struct skb_shared_info’ has no member named ‘dma_maps’

/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4027: error: ‘struct skb_shared_info’ has no member named ‘dma_head’

make[4]: *** [/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.o] Error 1
make[3]: *** [/home/mcs/ethercat-1.5.0/devices/e1000e] Error 2
make[2]: *** [/home/mcs/ethercat-1.5.0/devices] Error 2
make[1]: *** [_module_/home/mcs/ethercat-1.5.0] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.el6.i686'
make: *** [modules] Error 2
[root <at> localhost ethercat-1.5.0]#

regards
Ian


************************************************************

DISCLAIMER:

This email and any attachments are confidential to the intended recipient and may also be privileged. For those other than the recipient any disclosure, copying, distribution, or any action taken or omitted to be taken in reliance on such information is prohibited and may be unlawful. If you are not the intended recipient please delete it from your system and notify the sender immediately by telephoning +44(0) 1234 754978 or by immediate reply via e-mail to the Sender.

Should the content of this Email, including any attachments, require an Export Licence, this shall have been registered in compliance with export controls laid down by the UK Export Control Organisation, which forms part of the UK Department for Business, Innovation and Skills (BIS).

Emails and other electronic communication with Cranfield Aerospace may be monitored.

Thank you.

Cranfield Aerospace Limited Registered in England No. 2415720 Registered Office: Cranfield University, Cranfield, Beds, MK43 0AL

Updated 14-July-2010



Disclaimer added by CodeTwo Exchange Rules
www.codetwo.com

<div>

<p>Hi,
</p>

<p>I'm trying to build the e1000e driver, but got the following errors when doing "make all modules".

<br>Can you help please?
</p>

<p>[root <at> localhost ethercat-1.5.0]# ./configure --enable-e1000e

<br>checking for a BSD-compatible install... /usr/bin/install -c

<br>checking whether build environment is sane... yes

<br>checking for a thread-safe mkdir -p... /bin/mkdir -p

<br>checking for gawk... gawk

<br>checking whether make sets $(MAKE)... yes

<br>checking for g++... g++

<br>checking for C++ compiler default output file name... a.out

<br>checking whether the C++ compiler works... yes

<br>checking whether we are cross compiling... no

<br>checking for suffix of executables... 

<br>checking for suffix of object files... o

<br>checking whether we are using the GNU C++ compiler... yes

<br>checking whether g++ accepts -g... yes

<br>checking for style of include used by make... GNU

<br>checking dependency style of g++... gcc3

<br>checking build system type... i686-pc-linux-gnu

<br>checking host system type... i686-pc-linux-gnu

<br>checking for gcc... gcc

<br>checking whether we are using the GNU C compiler... yes

<br>checking whether gcc accepts -g... yes

<br>checking for gcc option to accept ISO C89... none needed

<br>checking dependency style of gcc... gcc3

<br>checking for a sed that does not truncate output... /bin/sed

<br>checking for grep that handles long lines and -e... /bin/grep

<br>checking for egrep... /bin/grep -E

<br>checking for fgrep... /bin/grep -F

<br>checking for ld used by gcc... /usr/bin/ld

<br>checking if the linker (/usr/bin/ld) is GNU ld... yes

<br>checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B

<br>checking the name lister (/usr/bin/nm -B) interface... BSD nm

<br>checking whether ln -s works... yes

<br>checking the maximum length of command line arguments... 1966080

<br>checking whether the shell understands some XSI constructs... yes

<br>checking whether the shell understands "+="... yes

<br>checking for /usr/bin/ld option to reload object files... -r

<br>checking for objdump... objdump

<br>checking how to recognize dependent libraries... pass_all

<br>checking for ar... ar

<br>checking for strip... strip

<br>checking for ranlib... ranlib

<br>checking command to parse /usr/bin/nm -B output from gcc object... ok

<br>checking how to run the C preprocessor... gcc -E

<br>checking for ANSI C header files... yes

<br>checking for sys/types.h... yes

<br>checking for sys/stat.h... yes

<br>checking for stdlib.h... yes

<br>checking for string.h... yes

<br>checking for memory.h... yes

<br>checking for strings.h... yes

<br>checking for inttypes.h... yes

<br>checking for stdint.h... yes

<br>checking for unistd.h... yes

<br>checking for dlfcn.h... yes

<br>checking whether we are using the GNU C++ compiler... (cached) yes

<br>checking whether g++ accepts -g... (cached) yes

<br>checking dependency style of g++... (cached) gcc3

<br>checking how to run the C++ preprocessor... g++ -E

<br>checking for objdir... .libs

<br>checking if gcc supports -fno-rtti -fno-exceptions... no

<br>checking for gcc option to produce PIC... -fPIC -DPIC

<br>checking if gcc PIC flag -fPIC -DPIC works... yes

<br>checking if gcc static flag -static works... no

<br>checking if gcc supports -c -o file.o... yes

<br>checking if gcc supports -c -o file.o... (cached) yes

<br>checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes

<br>checking whether -lc should be explicitly linked in... no

<br>checking dynamic linker characteristics... GNU/Linux ld.so

<br>checking how to hardcode library paths into programs... immediate

<br>checking whether stripping libraries is possible... yes

<br>checking if libtool supports shared libraries... yes

<br>checking whether to build shared libraries... yes

<br>checking whether to build static libraries... yes

<br>checking for ld used by g++... /usr/bin/ld

<br>checking if the linker (/usr/bin/ld) is GNU ld... yes

<br>checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes

<br>checking for g++ option to produce PIC... -fPIC -DPIC

<br>checking if g++ PIC flag -fPIC -DPIC works... yes

<br>checking if g++ static flag -static works... no

<br>checking if g++ supports -c -o file.o... yes

<br>checking if g++ supports -c -o file.o... (cached) yes

<br>checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes

<br>checking dynamic linker characteristics... GNU/Linux ld.so

<br>checking how to hardcode library paths into programs... immediate

<br>checking whether gcc and cc understand -c and -o together... yes

<br>checking for Linux kernel sources... /usr/src/kernels/2.6.32-358.el6.i686 (Kernel 2.6.32)

<br>checking for Linux modules installation directory... ethercat

<br>checking for kernel for 8139too driver... 2.6.32

<br>checking for kernel for e1000e driver... 2.6.32

<br>checking for RTAI path... not specified.

<br>configure: creating ./config.status

<br>config.status: creating Doxyfile

<br>config.status: creating Kbuild

<br>config.status: creating Makefile

<br>config.status: creating devices/Kbuild

<br>config.status: creating devices/Makefile

<br>config.status: creating devices/e1000/Kbuild

<br>config.status: creating devices/e1000/Makefile

<br>config.status: creating devices/e1000e/Kbuild

<br>config.status: creating devices/e1000e/Makefile

<br>config.status: creating ethercat.spec

<br>config.status: creating examples/Kbuild

<br>config.status: creating examples/Makefile

<br>config.status: creating examples/dc_rtai/Kbuild

<br>config.status: creating examples/dc_rtai/Makefile

<br>config.status: creating examples/dc_user/Makefile

<br>config.status: creating examples/mini/Kbuild

<br>config.status: creating examples/mini/Makefile

<br>config.status: creating examples/rtai/Kbuild

<br>config.status: creating examples/rtai/Makefile

<br>config.status: creating examples/tty/Kbuild

<br>config.status: creating examples/tty/Makefile

<br>config.status: creating examples/user/Makefile

<br>config.status: creating include/Makefile

<br>config.status: creating lib/Makefile

<br>config.status: creating m4/Makefile

<br>config.status: creating master/Kbuild

<br>config.status: creating master/Makefile

<br>config.status: creating script/Makefile

<br>config.status: creating script/ethercat.service

<br>config.status: creating script/ethercatctl

<br>config.status: creating script/init.d/Makefile

<br>config.status: creating script/init.d/ethercat

<br>config.status: creating script/sysconfig/Makefile

<br>config.status: creating tool/Makefile

<br>config.status: creating tty/Kbuild

<br>config.status: creating tty/Makefile

<br>config.status: creating config.h

<br>config.status: config.h is unchanged

<br>config.status: executing depfiles commands

<br>config.status: executing libtool commands

<br>[root <at> localhost ethercat-1.5.0]# make all modules

<br>make&nbsp; all-recursive

<br>make[1]: Entering directory `/home/mcs/ethercat-1.5.0'

<br>Making all in devices

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/devices'

<br>make&nbsp; all-recursive

<br>make[3]: Entering directory `/home/mcs/ethercat-1.5.0/devices'

<br>Making all in e1000

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000'

<br>make&nbsp; all-am

<br>make[5]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000'

<br>make[5]: Nothing to be done for `all-am'.

<br>make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000'

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000'

<br>Making all in e1000e

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000e'

<br>make&nbsp; all-am

<br>make[5]: Entering directory `/home/mcs/ethercat-1.5.0/devices/e1000e'

<br>make[5]: Nothing to be done for `all-am'.

<br>make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000e'

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices/e1000e'

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/devices'

<br>make[4]: Nothing to be done for `all-am'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'

<br>make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/devices'

<br>Making all in include

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/include'

<br>make[2]: Nothing to be done for `all'.

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/include'

<br>Making all in master

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/master'

<br>make&nbsp; all-am

<br>make[3]: Entering directory `/home/mcs/ethercat-1.5.0/master'

<br>make[3]: Nothing to be done for `all-am'.

<br>make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/master'

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/master'

<br>Making all in script

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/script'

<br>make&nbsp; all-recursive

<br>make[3]: Entering directory `/home/mcs/ethercat-1.5.0/script'

<br>Making all in init.d

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script/init.d'

<br>make&nbsp; all-am

<br>make[5]: Entering directory `/home/mcs/ethercat-1.5.0/script/init.d'

<br>make[5]: Nothing to be done for `all-am'.

<br>make[5]: Leaving directory `/home/mcs/ethercat-1.5.0/script/init.d'

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script/init.d'

<br>Making all in sysconfig

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script/sysconfig'

<br>make[4]: Nothing to be done for `all'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script/sysconfig'

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/script'

<br>make[4]: Nothing to be done for `all-am'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/script'

<br>make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/script'

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/script'

<br>Making all in tool

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/tool'

<br>make[2]: Nothing to be done for `all'.

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/tool'

<br>Making all in lib

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/lib'

<br>make[2]: Nothing to be done for `all'.

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/lib'

<br>Making all in examples

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0/examples'

<br>make&nbsp; all-recursive

<br>make[3]: Entering directory `/home/mcs/ethercat-1.5.0/examples'

<br>Making all in dc_user

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples/dc_user'

<br>make[4]: Nothing to be done for `all'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples/dc_user'

<br>Making all in user

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples/user'

<br>make[4]: Nothing to be done for `all'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples/user'

<br>make[4]: Entering directory `/home/mcs/ethercat-1.5.0/examples'

<br>make[4]: Nothing to be done for `all-am'.

<br>make[4]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'

<br>make[3]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0/examples'

<br>make[2]: Entering directory `/home/mcs/ethercat-1.5.0'

<br>make[2]: Leaving directory `/home/mcs/ethercat-1.5.0'

<br>make[1]: Leaving directory `/home/mcs/ethercat-1.5.0'

<br>make -C "/usr/src/kernels/2.6.32-358.el6.i686" M="/home/mcs/ethercat-1.5.0" modules

<br>make[1]: Entering directory `/usr/src/kernels/2.6.32-358.el6.i686'

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/82571-2.6.32-ethercat.o

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/es2lan-2.6.32-ethercat.o

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/ethtool-2.6.32-ethercat.o

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/ich8lan-2.6.32-ethercat.o

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/lib-2.6.32-ethercat.o

<br>&nbsp; CC [M]&nbsp; /home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.o

<br>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c: In function &acirc;&euro;&tilde;e1000_put_txbuf&acirc;&euro;&trade;:

<br>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:593: error: implicit declaration of function &acirc;&euro;&tilde;skb_dma_unmap&acirc;&euro;&trade;</p>

<p>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c: In function &acirc;&euro;&tilde;e1000_tx_map&acirc;&euro;&trade;:

<br>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4011: error: implicit declaration of function &acirc;&euro;&tilde;skb_dma_map&acirc;&euro;&trade;</p>

<p>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4017: error: &acirc;&euro;&tilde;struct skb_shared_info&acirc;&euro;&trade; has no member named &acirc;&euro;&tilde;dma_maps&acirc;&euro;&trade;</p>

<p>/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.c:4027: error: &acirc;&euro;&tilde;struct skb_shared_info&acirc;&euro;&trade; has no member named &acirc;&euro;&tilde;dma_head&acirc;&euro;&trade;</p>

<p>make[4]: *** [/home/mcs/ethercat-1.5.0/devices/e1000e/netdev-2.6.32-ethercat.o] Error 1

<br>make[3]: *** [/home/mcs/ethercat-1.5.0/devices/e1000e] Error 2

<br>make[2]: *** [/home/mcs/ethercat-1.5.0/devices] Error 2

<br>make[1]: *** [_module_/home/mcs/ethercat-1.5.0] Error 2

<br>make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.el6.i686'

<br>make: *** [modules] Error 2

<br>[root <at> localhost ethercat-1.5.0]# 
</p>

<p>regards

<br>Ian
</p>
<p><br>************************************************************ </p>
<p>DISCLAIMER: 
</p>
<p>This email and any attachments are confidential to the intended recipient and 
may also be privileged. For those other than the recipient any disclosure, 
copying, distribution, or any action taken or omitted to be taken in reliance on 
such information is prohibited and may be unlawful. If you are not the intended 
recipient please delete it from your system and notify the sender immediately by 
telephoning +44(0) 1234 754978 or by immediate reply via e-mail to the Sender. 
</p>
<p>Should the content of this Email, including any attachments, require an Export Licence, 
this shall have been registered in compliance with export controls laid down by the 
UK Export Control Organisation, which forms part of the UK Department for Business, Innovation and Skills (BIS). 
</p>
<p>Emails and other electronic communication with Cranfield Aerospace may be 
monitored. 
</p>
<p>Thank you. 
</p>
<p>Cranfield Aerospace Limited Registered in England No. 2415720 Registered Office: 
Cranfield University, Cranfield, Beds, MK43 0AL 
</p>
<p>Updated 14-July-2010 
</p>
<p><br></p>
<div>
<br>Disclaimer added by CodeTwo Exchange Rules<br><a href="http://www.codetwo.com">www.codetwo.com</a>
</div>
<br>
</div>
Gavin Lambert | 29 Apr 02:36 2013

VoE message latency

Hi,

 

Given a standard cyclic process running (PDO exchanges occurring but no other queued SDOs etc), what would be the expected latency of an SDO or VoE transfer (separately both out to a slave and back, ignoring the processing time within the slave itself)?

 

I’m in the process of developing a custom slave (for a custom master app) and am trying to decide whether a particular kind of data transfer (asynchronous and acyclic, but still with a performance deadline, albeit one about 20x more relaxed than for PDO transfers) is achievable with SDO/VoE transfers or whether I would have to reserve PDO space for it (even though most of it would go unused most of the time).

 

I’d prefer SDO, given that it’s more standardised, but I don’t think it’d work without support for complete access for both read and write, and it looks like for some reason Etherlab does not support complete access reads at present.

 

Or to rephrase the question a bit:

1.       If an SDO/VoE request is queued by the realtime cyclic thread, how many cycles will (typically and worst case, ignoring slave failure) run before the request is completed (received and acked but not replied to by the slave), and conversely how many cycles would it take for a message posted by the slave to get into the master and acknowledged?

2.       Does this change if the request is queued by a different thread?  (And is this even allowed?  From what I can tell it looks like most such operations should be cross-thread-safe, but it’d be good to get confirmation.)

 

Regards,

Gavin Lambert

 

<div><div class="WordSection1">
<p class="MsoNormal">Hi,<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Given a standard cyclic process running (PDO exchanges occurring but no other queued SDOs etc), what would be the expected latency of an SDO or VoE transfer (separately both out to a slave and back, ignoring the processing time within the slave itself)?<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">I&rsquo;m in the process of developing a custom slave (for a custom master app) and am trying to decide whether a particular kind of data transfer (asynchronous and acyclic, but still with a performance deadline, albeit one about 20x more relaxed than for PDO transfers) is achievable with SDO/VoE transfers or whether I would have to reserve PDO space for it (even though most of it would go unused most of the time).<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">I&rsquo;d prefer SDO, given that it&rsquo;s more standardised, but I don&rsquo;t think it&rsquo;d work without support for complete access for both read and write, and it looks like for some reason Etherlab does not support complete access reads at present.<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Or to rephrase the question a bit:<p></p></p>
<p class="MsoListParagraph"><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>If an SDO/VoE request is queued by the realtime cyclic thread, how many cycles will (typically and worst case, ignoring slave failure) run before the request is completed (received and acked but not replied to by the slave), and conversely how many cycles would it take for a message posted by the slave to get into the master and acknowledged?<p></p></p>
<p class="MsoListParagraph"><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Does this change if the request is queued by a different thread?&nbsp; (And is this even allowed?&nbsp; From what I can tell it looks like most such operations should be cross-thread-safe, but it&rsquo;d be good to get confirmation.)<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
<p class="MsoNormal">Regards,<p></p></p>
<p class="MsoNormal">Gavin Lambert<p></p></p>
<p class="MsoNormal"><p>&nbsp;</p></p>
</div></div>
Giovanni Lazzarini | 26 Apr 17:05 2013

Fedora Install

Hi,
I would like to install the ehrtlab system in my Fedora 17 ( or 18)...(kernel is 3.6.10-4)
Is it possible?
Where can I find some DOC how to install and folllow install peocedure step by step?

Sincerely
Joe
<div>
    Hi,<br>I would like to install the ehrtlab system in my Fedora 17 ( or 18)...(kernel is 3.6.10-4)<br>Is it possible?<br>Where can I find
                            some DOC how to install and
                        folllow install peocedure step
                          by step?<br><br>Sincerely<br>Joe<br>

  </div>
Picon

writing sdo inside real time loop

Hello everybody,
is there a definite way to read or write sdo inside 
real time loop?
I've checked the examples and made my own functions to 
do it, but after some time I get a SDO timeout upload or download error 
from ethercat master.

For example: EtherCAT ERROR 0-2: Timeout after 
1000 ms while> waiting for SDO 0x6060:0 upload response.

I'm wondering 
whether there is any chance to do it cleanly and how to recover from 
such an error.

I create the sdo objects I need at the beginning of the 
application using ecrt_slave_config_create_sdo_request(...) calls.
My 
functions to write sdo are write_sdo to write and sdo and 
write_sdo_success to check it is correctly written.
If 
write_sdo_success  doesn't return success state i go back to write_sdo 
again

bool SdoTask::write_sdo(Slave::sdo_config sdo_map,int32_t 
data)
{
    bool bRetVal = false;
    int8_t cData;
    uint8_t ucData;

    int16_t wData;
    uint16_t uwData;
    uint32_t udwData;

    
switch(ecrt_sdo_request_state(sdo_map.pSdo))
    {
    case 
EC_REQUEST_UNUSED:
    case EC_REQUEST_SUCCESS:
        switch(sdo_map.
size)
        {
        case 8:
            if (sdo_map.bSigned)

            {
                cData = (int8_t) data;

EC_WRITE_S8(ecrt_sdo_request_data(sdo_map.pSdo), cData);
            }

            else
            {
                ucData = (uint8_t) data;

                EC_WRITE_U8(ecrt_sdo_request_data(sdo_map.pSdo), 
ucData);
            }
            break;
        case 16:

if (sdo_map.bSigned)
            {
                wData = (int16_t) 
data;
                EC_WRITE_S16(ecrt_sdo_request_data(sdo_map.pSdo), 
wData);
            }
            else
            {

uwData = (uint16_t) data;
                EC_WRITE_U16
(ecrt_sdo_request_data(sdo_map.pSdo), uwData);
            }

            break;
        case 32:
            if (sdo_map.bSigned)

                EC_WRITE_S32(ecrt_sdo_request_data(sdo_map.pSdo), 
data);
            else
            {
                udwData = 
(uint32_t) data;
                EC_WRITE_U32(ecrt_sdo_request_data
(sdo_map.pSdo), udwData);
            }
            break;
        }

        bRetVal = true;
        break;
    case EC_REQUEST_ERROR:

case EC_REQUEST_BUSY:
        break;
    }

    if (bRetVal)

ecrt_sdo_request_write(sdo_map.pSdo);

    return bRetVal;

}

bool 
SdoTask::write_sdo_success(Slave::sdo_config sdo_map)
{
    bool 
bRetVal = false;

    switch(ecrt_sdo_request_state(sdo_map.pSdo))

{
    case EC_REQUEST_UNUSED:
    case EC_REQUEST_ERROR:
    case 
EC_REQUEST_BUSY:
        break;
    case EC_REQUEST_SUCCESS:

bRetVal = true;
        break;
    }

    return bRetVal;
}

Thanks 
in advance for your attention, every advice is well accepted.
Best 
Regards Luca Paluan

Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più di uno spot in TV. Per ogni nuovo
abbonato 30 € di premio per te e per lui! Un amico al mese e parli e navighi sempre gratis: http://freelosophy.tiscali.it/
_______________________________________________
etherlab-users mailing list
etherlab-users <at> etherlab.org
http://lists.etherlab.org/mailman/listinfo/etherlab-users
김익환 | 21 Apr 19:24 2013
Picon

Question about overlapping PDO API

Hi,  My name is Ikhwan Kim. 
I was checking latest EtherCAT Master stack last night (Development version), 
I can't find ecrt_slave_config_overlapping_pdos API. 
In 1.5.0, 1.5.1 release from download link, all the same. 
Is it removed? or replaced to another API?


<div><div dir="ltr">
<span>Hi, &nbsp;My name is Ikhwan Kim.&nbsp;</span><div>
<div>I was checking latest EtherCAT Master stack last night (Development version),&nbsp;<br>
</div>
<div>I can't find&nbsp;ecrt_slave_config_overlapping_pdos&nbsp;API.&nbsp;</div>
<div>In 1.5.0, 1.5.1 release from download link, all the same.&nbsp;</div>
<div>Is it removed? or replaced to another API?</div>
</div>
<div><br></div>
<div dir="ltr"><div><br></div></div>
</div></div>
Ankit Goila | 21 Apr 00:10 2013
Picon

Etherlab compatibility with specific kernel versions

Hi,

I am working on setting up a real time control framework on my machine with Ubuntu 12.10 installed (Linux 3.5.0-17-generic). I have tried using the RTAI package but I have had a series of failures while trying to get that to work (it expects a Linux kernel of 2.6.35.9). 

I am planning to use Xenomai to set up my real time kernel and then install etherlab. With the same requirements of etherlab for linux kernel, what should I do to make this installation hassle free? Should I install an older version of Ubuntu and configure it with a similar Xenomai kernel OR would a 3.5.7 xenomai kernel work with etherlab installations?

I am confused between these compatibility issues and will be really grateful if anyone could help me out.

Thanks,

Ankit

--
Ankit Goila
U-M ID: 83509056
Graduate Student (2012-2014)
M.S.E Mechanical Engineering
University of Michigan, Ann Arbor
Contact: 734-747-0829

<div><div dir="ltr">Hi,<div><br></div>
<div>I am working on setting up a real time control framework on my machine with Ubuntu 12.10 installed (Linux 3.5.0-17-generic). I have tried using the RTAI package but I have had a series of failures while trying to get that to work (it expects a Linux kernel of 2.6.35.9).&nbsp;</div>

<div><br></div>
<div>I am planning to use Xenomai to set up my real time kernel and then install etherlab. With the same requirements of etherlab for linux kernel, what should I do to make this installation hassle free? Should I install an older version of Ubuntu and configure it with a similar Xenomai kernel OR would a 3.5.7 xenomai kernel work with etherlab installations?</div>

<div><br></div>
<div>I am confused between these compatibility issues and will be really grateful if anyone could help me out.</div>
<div><br></div>
<div>Thanks,</div>
<div><br></div>
<div>Ankit<br clear="all"><div><br></div>
-- <br><div dir="ltr">
<div><span>Ankit Goila</span></div>
<span>U-M ID: 83509056</span><br><div><span>Graduate Student (2012-2014)</span></div>
<div><span>M.S.E Mechanical Engineering</span></div>

<div><span>University of Michigan, Ann Arbor</span></div>
<div><span>Contact: 734-747-0829</span></div>

<div><br></div>
</div>
</div>
</div></div>

Gmane