<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div dir="ltr"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">During my tries to get the ethercat driver working, I got stuck on two computers.</span></div></div></blockquote>
<div><br></div><div>You really need to give more specific information. For starters, which EtherCAT master version ?</div><div><br></div><div>The first is therefore an ARM SoC. What type is the second ?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div dir="ltr"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">The first computer is a raspberry pi. Here, I run a ported kernel especially for raspberry pi.</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">My problem: I can perfectly do a "./ethercat restart". The ethercat driver stops and comes back up.</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">This I perfectly see with "lsmod".</span></div></div></blockquote><div><br></div><div>'restart' is not a valid ethercat command. Nothing of what 'ethercat' does, influences the kernel drivers and, therefore, cannot be observed by lsmod.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">Still, when I try to do "ethercat slaves" for example, the raspberry pi immediatly gives me the following line: "IOCTL() version magic difference. EtherCAT0:28 ethercat:13".</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">The compiling happens on the same target. I don't understand why I have this problems.</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">The second computer gives "Module ec_master not found. Failed".</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">What is saw was the fact that I don't have the "ec_master.ko" in the /lib/modules/<kernel>/</span><u style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"></u><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">ethercat</span><u></u><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">.</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">This ethercat directory is just empty. What can be the problem for this problem?</span></div></div></blockquote><div><br></div>
<div>Assuming you are building this on a PC, I can suggest the following:</div><div><br></div><div>0. First build and test this on a PC platform, so that you know how the master should behave.</div><div>1. Make sure you get the source in a local building directory, not requiring root access. Avoids contamination of your Linux installation.</div>
<div>2. Do not build kernel-specific Ethernet drivers yet. Instead, use ec_generic for initial testing and acquaintance. The main reason is that you do not need a specific kernel version in this case. Any recent kernel will do.</div>
<div>3. Do not install yet (don't do 'sudo make install' or 'sudo make modules_install'). Instead, use 'sudo insmod' to try and load the kernel modules directly without affecting your Linux installation.</div>
<div><br></div><div>For <u>building</u>, after unpacking the source, you basically need 4 steps (you need to be in the toplevel source dir for this, note the $ prompt: none of this requires root privs):</div><div><br></div>
<div>$ ./bootstrap linux</div><div>$ ./configure --disable-8139too  [note: must terminate with: 'config.status: executing libtool commands']</div><div>$ make</div><div>$ make modules</div><div><br></div><div>(by default, ec_generic is enabled (good) but the 8139 is by default enabled as well (bad) and will fail if your kernel doesn't match any of the supported versions. By disabling it, any kernel version will do.)</div>
<div><br></div><div>Follow the INSTALL guidelines closely and specifically, check during module building ('make modules') which kernel build directory was used. For that, check the 2nd line of the 'make modules' result. It should read like:</div>
<div><br></div><div>make[1]: Entering directory `/home/[username]/work/linux-[version]'<br></div><div><br></div><div>Check that this is indeed the Linux version you intend to use.</div><div><br></div><div><br></div><div>
To <u>run the master</u>, you first need to determine the MAC address of the eth interface that's going to be managed by the master.</div><div><br></div><div>$ /sbin/ifconfig -a</div><div><br></div><div>Make note of the relevant MAC address. </div>
<div><br></div><div>Now load the master (still in toplevel source dir !)</div><div><br></div><div>$ sudo insmod master/ec_master.ko main_devices=[mac address]</div><div><br></div><div>Do yourself a favor and enable ordinary user access to the just-created device (otherwise you have to always 'sudo ethercat'):</div>
<div><br></div><div>$ sudo chmod 666 /dev/EtherCAT0</div><div><br></div><div>Then, and only then, load the Ethernet driver (the correct attachment is done through the MAC address you specified earlier):</div><div><br></div>
<div>$ sudo insmod devices/ec_generic.ko</div><div><br></div><div>Chances are that your network interface isn't up yet. To make certain, do:</div><div><br></div><div>$ sudo ifconfig eth[X] up</div><div><br></div><div>
Now test operation of the system with any and all of:</div><div><br></div><div>$ dmesg</div><div>$ tool/ethercat master</div><div>$ tool/ethercat slave -v</div><div><br></div><div><br></div><div>Only after this, I would endeavour building on an embedded platform.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">Can somebody please get me a hand with this. I really have no clues anymore.</span></div>
</div></blockquote><div><br></div><div>Go and build it. Properly. And step by step.</div><div><br></div><div>Good luck,</div><div><br></div><div><br></div><div><br></div><div>J.</div><div><br></div></div></div></div>