<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>Recent files: https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/"/><updated>2008-12-02T15:23:28Z</updated><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/</id><entry><title>how-to-query-a-modem</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/how-to-query-a-modem"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/how-to-query-a-modem</id><updated>2008-12-02T15:23:28Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>This program is a small example useful to query a modem. It might be a starting point for serial programming.&lt;/p>&lt;PRE>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;stdio.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;stdlib.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;string.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;errno.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;fcntl.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;sys/types.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;sys/times.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;sys/ioctl.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;sys/unistd.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;getopt.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;termios.h&amp;gt;&lt;/FONT>&lt;/B>

&lt;I>&lt;FONT COLOR="#B22222">/*  This code started as a streamlined version of
 *  a C++ file that is part of a project which is
 *  is Copyright (c) 2005 Dave Hylands.
 *  http://www.davehylands.com/Software/BootHost/
 *
 *  We might need to restore more options later
 *  to allow 96008N1 and so on.
 */&lt;/FONT>&lt;/I>

#&lt;B>&lt;FONT COLOR="#5F9EA0">define&lt;/FONT>&lt;/B> &lt;FONT COLOR="#B8860B">SERIAL_BAD_BAUDRATE&lt;/FONT> -1000
#&lt;B>&lt;FONT COLOR="#5F9EA0">define&lt;/FONT>&lt;/B> &lt;FONT COLOR="#B8860B">SERIAL_BAD_PORT&lt;/FONT> -1001
#&lt;B>&lt;FONT COLOR="#5F9EA0">define&lt;/FONT>&lt;/B> &lt;FONT COLOR="#B8860B">SERIAL_GEN_ERROR&lt;/FONT> -1002

&lt;B>&lt;FONT COLOR="#228B22">static&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#228B22">struct&lt;/FONT>&lt;/B> {
    speed_t speed;
    &lt;B>&lt;FONT COLOR="#228B22">unsigned&lt;/FONT>&lt;/B> baudRate;
} BaudTable[] = {
    {
    B50, 50}, {
    B75, 75}, {
    B110, 110}, {
    B134, 134}, {
    B150, 150}, {
    B200, 200}, {
    B300, 300}, {
    B600, 600}, {
    B1200, 1200}, {
    B1800, 1800}, {
    B2400, 2400}, {
    B4800, 4800}, {
    B9600, 9600}, {
    B19200, 19200}, {
    B38400, 38400}, {
    B57600, 57600}, {
    B115200, 115200}, {
    B230400, 230400}
};

#&lt;B>&lt;FONT COLOR="#5F9EA0">define&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#0000FF">ARRAY_LEN&lt;/FONT>&lt;/B>(x)    ( sizeof( x ) / sizeof( x[ 0 ]))

&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#0000FF">serial_open&lt;/FONT>&lt;/B>(&lt;B>&lt;FONT COLOR="#228B22">char&lt;/FONT>&lt;/B> *portStr, &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> try_baud_rate, &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> verbose)
{
    speed_t baudRate = B0;
    &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> gPortFd = -1;
    &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> i;

    &lt;B>&lt;FONT COLOR="#228B22">struct&lt;/FONT>&lt;/B> termios attr;

    &lt;B>&lt;FONT COLOR="#A020F0">for&lt;/FONT>&lt;/B> (i = 0; i &amp;lt; ARRAY_LEN(BaudTable); i++) {
       &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (BaudTable[i].baudRate == try_baud_rate) {
            baudRate = BaudTable[i].speed;
            &lt;B>&lt;FONT COLOR="#A020F0">break&lt;/FONT>&lt;/B>;
        }
    }

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (baudRate == B0) {
        &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (verbose)
          fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Unrecognized baud rate: '%d'\n&amp;quot;&lt;/FONT>&lt;/B>, try_baud_rate);
        &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> SERIAL_BAD_BAUDRATE;
    }

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> ((gPortFd = open(portStr, O_RDWR | O_EXCL)) &amp;lt; 0) {
        &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (verbose)
          fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Unable to open serial port '%s': %s\n&amp;quot;&lt;/FONT>&lt;/B>, portStr,
                strerror(errno));
        &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> SERIAL_BAD_PORT;
    }

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (tcgetattr(gPortFd, &amp;amp;attr) &amp;lt; 0) {
        &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (verbose)
          fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Call to tcgetattr failed: %s\n&amp;quot;&lt;/FONT>&lt;/B>, strerror(errno));
        &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> SERIAL_GEN_ERROR;
    }

    attr.c_iflag = 0;
    attr.c_oflag = 0;
    attr.c_cflag = CLOCAL | CREAD | CS8;
    attr.c_lflag = 0;
    attr.c_cc[VTIME] = 0;       &lt;I>&lt;FONT COLOR="#B22222">/* timeout in tenths of a second */&lt;/FONT>&lt;/I>
    attr.c_cc[VMIN] = 1;        &lt;I>&lt;FONT COLOR="#B22222">/* Only wait for a single char */&lt;/FONT>&lt;/I>

    cfsetispeed(&amp;amp;attr, baudRate);
    cfsetospeed(&amp;amp;attr, baudRate);

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (tcsetattr(gPortFd, TCSAFLUSH, &amp;amp;attr) &amp;lt; 0) {
        &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (verbose)
          fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Call to tcsetattr failed: %s\n&amp;quot;&lt;/FONT>&lt;/B>, strerror(errno));
        &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> SERIAL_GEN_ERROR;
    }

    &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> gPortFd;
}

&lt;I>&lt;FONT COLOR="#B22222">/*
 * Tne next two function were written by Nelson Castillo.
 * You should not blame Dave for what he wrote here :-)
 */&lt;/FONT>&lt;/I>

&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B>
&lt;B>&lt;FONT COLOR="#0000FF">serial_read&lt;/FONT>&lt;/B> (&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> fd, &lt;B>&lt;FONT COLOR="#228B22">char&lt;/FONT>&lt;/B> *buf, &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> len, &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> ms_timeout)
{
  fd_set rfds;
  &lt;B>&lt;FONT COLOR="#228B22">struct&lt;/FONT>&lt;/B> timeval tv;
  &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> retval;
  &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> nread = 0;

  FD_ZERO(&amp;amp;rfds);
  FD_SET(fd, &amp;amp;rfds);

  tv.tv_sec = ms_timeout / 1000;
  tv.tv_usec = (ms_timeout % 1000) * 1000;

&lt;B>&lt;FONT COLOR="#5F9EA0">select_next&lt;/FONT>&lt;/B>:

  &lt;I>&lt;FONT COLOR="#B22222">/* We rely on the value of tv after the select call.
   * This is a Linux-only thing.
   * TODO: Fix. */&lt;/FONT>&lt;/I>

  errno = 0;
  retval = select(fd + 1, &amp;amp;rfds, NULL, NULL, &amp;amp;tv);

  &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (retval == -1)
  {
    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (errno == EINTR)
      &lt;B>&lt;FONT COLOR="#A020F0">goto&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#5F9EA0">select_next&lt;/FONT>&lt;/B>;

    perror(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;select&amp;quot;&lt;/FONT>&lt;/B>);
    exit(1);
  }
  &lt;B>&lt;FONT COLOR="#A020F0">else&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (retval)
  {
    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (len - nread &amp;gt; 0)
    {
      &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> r;
      r = read(fd, buf + nread, len - nread);
      &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (r &amp;gt; 0)
      {
        nread += r;

        &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (len - nread &amp;gt;  0)
          &lt;B>&lt;FONT COLOR="#A020F0">goto&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#5F9EA0">select_next&lt;/FONT>&lt;/B>;
      }
      &lt;B>&lt;FONT COLOR="#A020F0">else&lt;/FONT>&lt;/B>
      {
        fprintf(stderr, __FILE__&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot; * read returned %d\n\n&amp;quot;&lt;/FONT>&lt;/B>, r);
        perror(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;read&amp;quot;&lt;/FONT>&lt;/B>);
      }
    }
  }

  &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> nread;
}

&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B>
&lt;B>&lt;FONT COLOR="#0000FF">main&lt;/FONT>&lt;/B>(&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> argc, &lt;B>&lt;FONT COLOR="#228B22">char&lt;/FONT>&lt;/B> **argv)
{
 &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> r;
 &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> len;
 &lt;B>&lt;FONT COLOR="#228B22">char&lt;/FONT>&lt;/B> buf[256];

 r = serial_open(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;/dev/modem&amp;quot;&lt;/FONT>&lt;/B>, 57600, 1);
 &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (r &amp;lt; 0)
   &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> 1;

 &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (4 != write(r, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;ATZ\r&amp;quot;&lt;/FONT>&lt;/B>, 4)) {
   perror(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;write&amp;quot;&lt;/FONT>&lt;/B>);
   &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> 1;
 }

 len = serial_read (r, buf, 255, 500 &lt;I>&lt;FONT COLOR="#B22222">/* milliseconds */&lt;/FONT>&lt;/I>);
 printf(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;We got:&amp;quot;&lt;/FONT>&lt;/B>);
 fwrite(buf, 1, len, stdout);

 &lt;B>&lt;FONT COLOR="#A020F0">return&lt;/FONT>&lt;/B> 0;
}
&lt;/PRE>
</content></entry><entry><title>ecbot</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ecbot"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ecbot</id><updated>2007-11-03T00:20:36Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ecbot?action=edit&amp;amp;section=ECBOT">Edit&lt;/a> &lt;a class="header-links" href="#ECBOT">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="ecbot">&lt;/a>&lt;h2>ECBOT&lt;/h2>&lt;p>&lt;img src="../imagenes/products/ecbot/ECBOT_movil.png" alt="imagenes/products/ecbot/ECBOT_movil.png"/>&lt;/p>&lt;p>A GNU/Linux powered robot compatibe with the ECB_AT91 family of boards.&lt;/p>&lt;p>The ECBOT is being developed by &lt;a href="../carlos-camargo" class="internal">Carlos Camargo&lt;/a> at the &lt;a href="http://www.unal.edu.co" class="external" rel="nofollow">National University of Colombia&lt;/a>.&lt;/p>&lt;p>Features:&lt;/p>&lt;ul>&lt;li>180 MHz ARM9 processor (Atmel AT91RM9200)&lt;/li>&lt;li>2 MBytes of serial flash&lt;/li>&lt;li>32MBytes of SDRAM&lt;/li>&lt;li>1 SD/MMC slot&lt;/li>&lt;li>USB 2.0 host&lt;/li>&lt;li>FPGA for image capture (image processing capable)&lt;/li>&lt;li>640x480 CMOS image sensor&lt;/li>&lt;li>6 IR proximity sensors&lt;/li>&lt;li>6 RGB leds&lt;/li>&lt;li>2 DC motor driver based in AVR microcontroller&lt;/li>&lt;li>1 AVR microcontroller for analog inputs&lt;/li>&lt;li>JTAG support&lt;/li>&lt;/ul>                                                                                        
&lt;center>                                                                                        
&lt;object width="425" height="350">&lt;param name="movie" value="http://www.youtube.com/v/p5bCEETSR0g">&lt;/param>&lt;param name="wmode" value="transparent">&lt;/param>&lt;embed src="http://www.youtube.com/v/p5bCEETSR0g" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350">&lt;/embed>&lt;/object>                                                                                 
&lt;/center>  
&lt;p>&lt;a href="http://www.youtube.com/view_play_list?p=F8A54844B8E5ED46" class="external" rel="nofollow">more videos...&lt;/a>&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ecbot?action=edit&amp;amp;section=ECBOT Block diagram">Edit&lt;/a> &lt;a class="header-links" href="#ECBOT Block diagram">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="ecbot-block-diagram">&lt;/a>&lt;h2>ECBOT Block diagram&lt;/h2>&lt;center>&lt;p>&lt;img src="../imagenes/products/ecbot/ECBOT_Block.png" alt="imagenes/products/ecbot/ECBOT_Block.png"/>&lt;/p>&lt;/center></content></entry><entry><title>at91-gpio</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/at91-gpio"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/at91-gpio</id><updated>2007-08-22T13:42:30Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>You can use the GPIOs from user-space or from kernel space. To use them from user-space you need to use memory mapped IO.&lt;/p>&lt;p>We have some examples in &lt;a href="http://svn.arhuaco.org/svn/src/emqbit/tools/AT91-GPIO/" class="external" rel="nofollow">our repository&lt;/a>. &lt;/p>&lt;p>Let us know if you improve them.&lt;/p></content></entry><entry><title>tspc</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/tspc"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/tspc</id><updated>2007-08-11T15:03:37Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Quick overview">Edit&lt;/a> &lt;a class="header-links" href="#Quick overview">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="quick-overview">&lt;/a>&lt;h2>Quick overview&lt;/h2>&lt;p>&lt;a href="http://packages.debian.org/unstable/net/tspc" class="external" rel="nofollow">tspc&lt;/a> is a client that will allow you to use an  &lt;a href="http://www.sixxs.net/tools/aiccu/brokers/" class="external" rel="nofollow">IPv6 Broker&lt;/a>. By default, it uses a &lt;a href="http://www.go6.net/4105/freenet.asp" class="external" rel="nofollow">Freenet6&lt;/a> broker.&lt;/p>&lt;p>With it, you can have IPv6 in your computer in the fly. This is very useful if you're behind a NAT and you want to be able to SSH to the natted computer.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=More information">Edit&lt;/a> &lt;a class="header-links" href="#More information">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="more-information">&lt;/a>&lt;h2>More information&lt;/h2>&lt;p>&lt;strong>tspc&lt;/strong> is a lightweight client that utilizes the Tunnel Setup Protocol (TSP) and is available on Windows 2000, NT, XP, Linux, FreeBSD, OpenBSD, NetBSD, Solaris, OS X, VxWorks and QNX. Its key features include:&lt;/p>&lt;ul>&lt;li>IPv6 in IPv4 tunneling&lt;/li>&lt;li>IPv6 permanent (or temporary) addresses&lt;/li>&lt;li>NAT traversal&lt;/li>&lt;/ul>&lt;p>All you need is a valid IPv4 connection with access to the Internet. It does not matter if you're behind a NAT and you're using a Intranet address (such as 10.X.X.X, 172.16.X.X or 192.168.X.X), as long as you can reach the Internet with a gateway.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Use">Edit&lt;/a> &lt;a class="header-links" href="#Use">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="use">&lt;/a>&lt;h2>Use&lt;/h2>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Install">Edit&lt;/a> &lt;a class="header-links" href="#Install">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="install">&lt;/a>&lt;h3>Install&lt;/h3>&lt;pre>aptitude install tspc&lt;/pre>&lt;p>This will install the client in your computer. When it starts, it will give you your own IPv6.&lt;/p>&lt;p>To check if you got the IPv6 address, run &lt;tt>ifconfig&lt;/tt>, and you should see a tunnel, that allows you to connect to the IPv6 network.&lt;/p>&lt;pre>tun       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
   inet6 addr: 2001:5c0:8fff:fffe::4a21/128 Scope:Global
   UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1
   RX packets:9 errors:0 dropped:0 overruns:0 frame:0
   TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:500 
   RX bytes:656 (656.0 b)  TX bytes:240 (240.0 b)&lt;/pre>&lt;p>Now you can be reached from the Internet using your IP, that in this example is &lt;tt>2001:5c0:8fff:fffe::4a21&lt;/tt>.&lt;/p>&lt;p>We will now provide some examples of what you can do in the IPv6 world. Remember that we will use an example IP and that you have to look up your own with &lt;tt>ifconfig&lt;/tt>.&lt;/p>&lt;p>Also note that if you're used to be behind a firewall, &lt;strong>you will not be protected in IPv6 unless you add new rules to your firewall&lt;/strong>. All the ports will be reachable.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=ping">Edit&lt;/a> &lt;a class="header-links" href="#ping">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="ping">&lt;/a>&lt;h4>ping&lt;/h4>&lt;p>Ping is useful to determine if you can already reach some IPv6 host.&lt;/p>&lt;pre>$ ping6 www.kame.net
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=2 ttl=50 time=414 ms
64 bytes from orange.kame.net: icmp_seq=3 ttl=50 time=378 ms&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=browse">Edit&lt;/a> &lt;a class="header-links" href="#browse">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="browse">&lt;/a>&lt;h4>browse&lt;/h4>&lt;p>With IPv6, you could see the improved version of the dancing kame at &lt;a href="http://www.kame.net/" class="external" rel="nofollow">www.kame.net&lt;/a>.&lt;/p>&lt;center>&lt;p>&lt;img src="http://www.kame.net/img/kame-mosaic-small.gif" alt="http://www.kame.net/img/kame-mosaic-small.gif"/>&lt;/p>&lt;/center>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=SSH">Edit&lt;/a> &lt;a class="header-links" href="#SSH">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="ssh">&lt;/a>&lt;h4>SSH&lt;/h4>&lt;p>Someone can SSH into your box, using:&lt;/p>&lt;pre> ssh 2001:5c0:8fff:fffe::4a21&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=HTTP">Edit&lt;/a> &lt;a class="header-links" href="#HTTP">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="http">&lt;/a>&lt;h4>HTTP&lt;/h4>&lt;p>Someone can see your wep page using your IP. Like this:&lt;/p>&lt;pre>http://[2001:5c0:8fff:fffe::4a21]/&lt;/pre>&lt;p>Remember you have to run a web server, such as Apache.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Restart the service">Edit&lt;/a> &lt;a class="header-links" href="#Restart the service">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="restart-the-service">&lt;/a>&lt;h3>Restart the service&lt;/h3>&lt;p>If you lose your IP, you can restart the tunnel.&lt;/p>&lt;pre>/etc/init.d/tspc restart&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Authenticated tunnels">Edit&lt;/a> &lt;a class="header-links" href="#Authenticated tunnels">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="authenticated-tunnels">&lt;/a>&lt;h3>Authenticated tunnels&lt;/h3>&lt;p>By default you get an anonymous section.  In order to keep it, you have to create &lt;a href="http://www.go6.net/4105/freenet.asp" class="external" rel="nofollow">an account in the IPv6 broker&lt;/a> and then edit the file &lt;tt>/etc/tsp/tspc.conf&lt;/tt>.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//tspc?action=edit&amp;amp;section=Conclusion">Edit&lt;/a> &lt;a class="header-links" href="#Conclusion">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="conclusion">&lt;/a>&lt;h3>Conclusion&lt;/h3>&lt;p>With little effort you can try IPv6. Let us know how it goes for you.&lt;/p></content></entry><entry><title>OpenEmbedded from scratch</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/openembedded"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/openembedded</id><updated>2007-08-08T04:44:05Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>&lt;strong>Note&lt;/strong>: Keeping an OE document updated is hard. Please refer to the OE website.&lt;/p>&lt;ul>&lt;li>&lt;a href="http://www.openembedded.org" class="external" rel="nofollow">http://www.openembedded.org&lt;/a>&lt;/li>&lt;/ul></content></entry><entry><title>Hardware watchdog for the AT91RM9200</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/at91rm9200-watchdog"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/at91rm9200-watchdog</id><updated>2007-07-30T23:29:41Z</updated><author><name>arhuaco</name></author><content type="text/html">&lt;p>Andres just added a new document that explains how to enable the hardware watchdog of the at91rm9200. Check &lt;a href="../at91rm9200-watchdog" class="internal">it out&lt;/a>.&lt;/p>&lt;p>This can be useful in a critical environment.&lt;/p>&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-41324" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/at91rm9200-watchdog', function (x) { rating.updateStats(x, 'div-rating-41324'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/at91rm9200-watchdog&amp;quot;, &amp;quot;div-rating-41324&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/at91rm9200-watchdog&amp;quot;, &amp;quot;div-rating-41324&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>
&lt;a class="render-bottom-span render-bottom-span-discuss-count" href="../log/xsvnwiki-discuss/at91rm9200-watchdog">&lt;img src='http://wiki.emqbit.com//img/discussion/0' border=0/> Discussion&lt;/a>&lt;/p></content></entry><entry><title>at91rm9200-watchdog</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/at91rm9200-watchdog"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/at91rm9200-watchdog</id><updated>2007-07-30T23:16:12Z</updated><author><name>arhuaco</name></author><content type="text/html">&lt;p>In this page we show how to enable the &lt;a href="http://en.wikipedia.org/wiki/Watchdog_timer" class="external" rel="nofollow">watchdog timer&lt;/a> of the at91rm200. It will allow you to do an automated system reset if a program fails to ping the watchdog.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//at91rm9200-watchdog?action=edit&amp;amp;section=Setup the kernel">Edit&lt;/a> &lt;a class="header-links" href="#Setup the kernel">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="setup-the-kernel">&lt;/a>&lt;h2>Setup the kernel&lt;/h2>&lt;p>Enable required options in your kernel .confg:&lt;/p>&lt;pre> CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_NOWAYOUT=y
 CONFIG_AT91RM9200_WATCHDOG=y&lt;/pre>&lt;p>&lt;a href="../update the kernel of the ecb_at91" class="internal">Boot the new kernel&lt;/a>, and check for watchdog support when it boots.&lt;/p>&lt;pre> &amp;gt; dmesg |grep Watch
 AT91 Watchdog Timer enabled (5 seconds, nowayout)&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//at91rm9200-watchdog?action=edit&amp;amp;section=Verify that the device file exists">Edit&lt;/a> &lt;a class="header-links" href="#Verify that the device file exists">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="verify-that-the-device-file-exists">&lt;/a>&lt;h2>Verify that the device file exists&lt;/h2>&lt;p>This file has a major number 10, minor number 130.&lt;/p>&lt;pre> crw-rw---- 1 root root 10, 130 Dec 31 19:00 /dev/watchdog&lt;/pre>&lt;p>If it doesn't exist, create it with &lt;tt>mknod&lt;/tt>.&lt;/p>&lt;pre> &amp;gt; mknod  /dev/watchdog c 10 130&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//at91rm9200-watchdog?action=edit&amp;amp;section=Build an example">Edit&lt;/a> &lt;a class="header-links" href="#Build an example">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="build-an-example">&lt;/a>&lt;h2>Build an example&lt;/h2>&lt;p>Here we will show the example &lt;tt>watchdog-test.c&lt;/tt> that lives in the Linux kernel documentation &lt;tt>linux-2.6.xx/Documentation/watchdog/src&lt;/tt>.&lt;/p>&lt;PRE>
&lt;I>&lt;FONT COLOR="#B22222">/*
 * Watchdog Driver Test Program
 */&lt;/FONT>&lt;/I>

#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;stdio.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;stdlib.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;string.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;unistd.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;fcntl.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;sys/ioctl.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;linux/types.h&amp;gt;&lt;/FONT>&lt;/B>
#&lt;B>&lt;FONT COLOR="#5F9EA0">include&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;lt;linux/watchdog.h&amp;gt;&lt;/FONT>&lt;/B>

&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> fd;

&lt;I>&lt;FONT COLOR="#B22222">/*
 * This function simply sends an IOCTL to the driver, which in turn ticks
 * the PC Watchdog card to reset its internal timer so it doesn't trigger
 * a computer reset.
 */&lt;/FONT>&lt;/I>

&lt;B>&lt;FONT COLOR="#228B22">void&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#0000FF">keep_alive&lt;/FONT>&lt;/B>(&lt;B>&lt;FONT COLOR="#228B22">void&lt;/FONT>&lt;/B>)
{
    &lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> dummy;

    ioctl(fd, WDIOC_KEEPALIVE, &amp;amp;dummy);
}

&lt;I>&lt;FONT COLOR="#B22222">/*
 * The main program.  Run the program with &amp;quot;-d&amp;quot; to disable the card,
 * or &amp;quot;-e&amp;quot; to enable the card.
 */&lt;/FONT>&lt;/I>
&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#0000FF">main&lt;/FONT>&lt;/B>(&lt;B>&lt;FONT COLOR="#228B22">int&lt;/FONT>&lt;/B> argc, &lt;B>&lt;FONT COLOR="#228B22">char&lt;/FONT>&lt;/B> *argv[])
{
    fd = open(&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;/dev/watchdog&amp;quot;&lt;/FONT>&lt;/B>, O_WRONLY);

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (fd == -1) {
	fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Watchdog device not enabled.\n&amp;quot;&lt;/FONT>&lt;/B>);
	fflush(stderr);
	exit(-1);
    }

    &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (argc &amp;gt; 1) {
	&lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (!strncasecmp(argv[1], &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;-d&amp;quot;&lt;/FONT>&lt;/B>, 2)) {
	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
	    fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Watchdog card disabled.\n&amp;quot;&lt;/FONT>&lt;/B>);
	    fflush(stderr);
	    exit(0);
	} &lt;B>&lt;FONT COLOR="#A020F0">else&lt;/FONT>&lt;/B> &lt;B>&lt;FONT COLOR="#A020F0">if&lt;/FONT>&lt;/B> (!strncasecmp(argv[1], &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;-e&amp;quot;&lt;/FONT>&lt;/B>, 2)) {
	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
	    fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Watchdog card enabled.\n&amp;quot;&lt;/FONT>&lt;/B>);
	    fflush(stderr);
	    exit(0);
	} &lt;B>&lt;FONT COLOR="#A020F0">else&lt;/FONT>&lt;/B> {
	    fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;-d to disable, -e to enable.\n&amp;quot;&lt;/FONT>&lt;/B>);
	    fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;run by itself to tick the card.\n&amp;quot;&lt;/FONT>&lt;/B>);
	    fflush(stderr);
	    exit(0);
	}
    } &lt;B>&lt;FONT COLOR="#A020F0">else&lt;/FONT>&lt;/B> {
	fprintf(stderr, &lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;Watchdog Ticking Away!\n&amp;quot;&lt;/FONT>&lt;/B>);
	fflush(stderr);
    }

    &lt;B>&lt;FONT COLOR="#A020F0">while&lt;/FONT>&lt;/B> (1) {
	keep_alive();
	sleep(1);
    }
}
&lt;/PRE>
&lt;p>Now &lt;a href="../how to cross-compile for the arm" class="internal">compile it&lt;/a>:&lt;/p>&lt;pre>arm-softfloat-linux-gnu-gcc  watchdog-test.c -o watchdog-test&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//at91rm9200-watchdog?action=edit&amp;amp;section=Test the watchdog">Edit&lt;/a> &lt;a class="header-links" href="#Test the watchdog">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="test-the-watchdog">&lt;/a>&lt;h2>Test the watchdog&lt;/h2>&lt;pre> &amp;gt; ./watchdog-test -e
 Watchdog card enabled.&lt;/pre>&lt;pre> &amp;gt; ./watchdog-test
 Watchdog Ticking Away!&lt;/pre>&lt;p>Interrupt the process (with &lt;tt>Ctrl+C&lt;/tt>) and wait five seconds. The at91rm9200 watchdog should reset the board.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//at91rm9200-watchdog?action=edit&amp;amp;section=References">Edit&lt;/a> &lt;a class="header-links" href="#References">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="references">&lt;/a>&lt;h2>References&lt;/h2>&lt;ul>&lt;li>Linux kernel documentation &lt;tt>linux-2.6.xx/Documentation/watchdog/src&lt;/tt>.&lt;/li>&lt;/ul></content></entry><entry><title>First post</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/first-post"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/first-post</id><updated>2007-06-28T05:26:27Z</updated><author><name>azul</name></author><content type="text/html">&lt;p>This is the fist post of the emQbit's weblog. We will use this weblog to keep track of what we do.&lt;/p>&lt;p>We guess this weblog will be developer-oriented, but only time will tell.&lt;/p>&lt;p>The software behind this page is &lt;a href="http://wiki.freaks-unidos.net/svnwiki/" class="external" rel="nofollow">Svnwiki&lt;/a>. Nelson wrote &lt;a href="http://wiki.freaks-unidos.net/weblogs/arhuaco/new%20weblog" class="external" rel="nofollow">some reasons to use Svnwiki for weblogs&lt;/a> one year ago. Since then the software has improved a lot.&lt;/p>&lt;p>Fasten your seatbelts :)&lt;/p>&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-74546" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/first-post', function (x) { rating.updateStats(x, 'div-rating-74546'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/first-post&amp;quot;, &amp;quot;div-rating-74546&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/first-post&amp;quot;, &amp;quot;div-rating-74546&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>
&lt;a class="render-bottom-span render-bottom-span-discuss-count" href="../log/xsvnwiki-discuss/first-post">&lt;img src='http://wiki.emqbit.com//img/discussion/0' border=0/> Discussion&lt;/a>&lt;/p></content></entry><entry><title>emqbot</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/emqbot"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/emqbot</id><updated>2007-06-28T02:36:26Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//emqbot?action=edit&amp;amp;section=emQbot">Edit&lt;/a> &lt;a class="header-links" href="#emQbot">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="emqbot">&lt;/a>&lt;h2>emQbot&lt;/h2>
&lt;center>
&lt;script language="javascript" type="text/javascript" src="js/gallery.js">
&lt;/script>
&lt;div id="gallery-1">
 &lt;div id="gallery-1-frame" style="left: 20px; width: 400px; height: 400px;">
  &lt;img src="imagenes/slideshow/ecb_at91_v1/v1.2.jpg">
 &lt;/div>
 &lt;div id = "gallery-1-alt"  style="left: 20px; width: 400px; height: 50px;" >&lt;/div>
 &lt;div id = "gallery-1-controls">Loading...&lt;/div>
&lt;/div>
&lt;script language="javascript" type="text/javascript">
  var g1 = new GalleryObject('g1', 'gallery-1', 'imagenes/slideshow/slides.xml', Array('emqbot'))
&lt;/script>
&lt;/center>
&lt;ul>&lt;li>Embedded robotics research&lt;/li>&lt;li>Reconfigurable computing&lt;/li>&lt;/ul>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//emqbot?action=edit&amp;amp;section=Details">Edit&lt;/a> &lt;a class="header-links" href="#Details">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="details">&lt;/a>&lt;h2>Details&lt;/h2>&lt;center>&lt;p>&lt;img src="../imagenes/products/ecbot/ecbot_bot_small.jpg" alt="emQbot"/>&lt;/p>&lt;/center>&lt;center>&lt;p>&lt;img src="../imagenes/products/ecbot/ecbot_top_small.jpg" alt="emQbot"/>&lt;/p>&lt;/center>&lt;center>&lt;p>&lt;img src="../imagenes/products/ecbot/tux_with_ecbot_camera.jpg" alt="emQbot"/>&lt;/p>&lt;/center></content></entry><entry><title>darrell-loader</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/darrell-loader"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/darrell-loader</id><updated>2007-06-12T21:15:00Z</updated><author><name>arhuaco</name></author><content type="text/html">&lt;p>Read &lt;a href="../flashing-the-ecb-at91" class="internal">flashing-the-ecb-at91&lt;/a> to know how to upload this loader to the board.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//darrell-loader?action=edit&amp;amp;section=AT91RM9200 Loader">Edit&lt;/a> &lt;a class="header-links" href="#AT91RM9200 Loader">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="at91rm9200-loader">&lt;/a>&lt;h4>AT91RM9200 Loader&lt;/h4>&lt;p>&lt;strong>Warning&lt;/strong>: This loader is working with gcc 3.4.5. We tried gcc 4.1 and it didn't work. We have to debug this issue. If you have problems, email us and we'll send you a binary.&lt;/p>&lt;p>We &lt;a href="http://svn.arhuaco.org/svn/src/emqbit/ECB_AT91_V2/darrell-loader/" class="external" rel="nofollow">maintain a loader&lt;/a> for the &lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2983" class="external" rel="nofollow">AT91RM9200&lt;/a> that could be useful for other projects. It was started by &lt;a href="http://dlharmon.com/" class="external" rel="nofollow">Darrell Harmon&lt;/a>. If you find it useful we could host it in sourceforge or in code.google.com. It requires just 10KB.&lt;/p>&lt;pre>Darrell's loader - Thanks to the u-boot project
Version 1.0
RAM:32MB

1: Upload Darrell's loader to Dataflash
2: Upload u-boot to Dataflash
3: Upload Kernel to Dataflash
4: Start u-boot
5: Upload Filesystem image
6: Memory test&lt;/pre></content></entry><entry><title>emQbit's weblog</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/index"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/index</id><updated>2007-06-03T20:49:00Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;h2 class="post-title">&lt;a href="at91rm9200-watchdog">Hardware watchdog for the AT91RM9200&lt;/a>&lt;/h2>&lt;p class="post-date">Mon Jul 30 23:29:41 2007&lt;/p>&lt;p>Andres just added a new document that explains how to enable the hardware watchdog of the at91rm9200. Check &lt;a href="../at91rm9200-watchdog" class="internal">it out&lt;/a>.&lt;/p>&lt;p>This can be useful in a critical environment.&lt;/p>&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-36648" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/at91rm9200-watchdog', function (x) { rating.updateStats(x, 'div-rating-36648'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/at91rm9200-watchdog&amp;quot;, &amp;quot;div-rating-36648&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/at91rm9200-watchdog&amp;quot;, &amp;quot;div-rating-36648&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>
&lt;a class="render-bottom-span render-bottom-span-discuss-count" href="../log/xsvnwiki-discuss/at91rm9200-watchdog">&lt;img src='http://wiki.emqbit.com//img/discussion/0' border=0/> Discussion&lt;/a>&lt;/p>&lt;h2 class="post-title">&lt;a href="first-post">First post&lt;/a>&lt;/h2>&lt;p class="post-date">Sun Jun  3 20:52:01 2007&lt;/p>&lt;p>This is the fist post of the emQbit's weblog. We will use this weblog to keep track of what we do.&lt;/p>&lt;p>We guess this weblog will be developer-oriented, but only time will tell.&lt;/p>&lt;p>The software behind this page is &lt;a href="http://wiki.freaks-unidos.net/svnwiki/" class="external" rel="nofollow">Svnwiki&lt;/a>. Nelson wrote &lt;a href="http://wiki.freaks-unidos.net/weblogs/arhuaco/new%20weblog" class="external" rel="nofollow">some reasons to use Svnwiki for weblogs&lt;/a> one year ago. Since then the software has improved a lot.&lt;/p>&lt;p>Fasten your seatbelts :)&lt;/p>&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-74546" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/first-post', function (x) { rating.updateStats(x, 'div-rating-74546'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/first-post&amp;quot;, &amp;quot;div-rating-74546&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/first-post&amp;quot;, &amp;quot;div-rating-74546&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>
&lt;a class="render-bottom-span render-bottom-span-discuss-count" href="../log/xsvnwiki-discuss/first-post">&lt;img src='http://wiki.emqbit.com//img/discussion/0' border=0/> Discussion&lt;/a>&lt;/p>&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-15185" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/index', function (x) { rating.updateStats(x, 'div-rating-15185'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/index&amp;quot;, &amp;quot;div-rating-15185&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/index&amp;quot;, &amp;quot;div-rating-15185&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>&lt;/p></content></entry><entry><title>log/menu</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/menu"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/log/menu</id><updated>2007-06-03T20:46:48Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>You are creating the file &lt;b>xsvnwiki-atom/xsvnwiki-dir&lt;/b>.  You can go to &lt;a href="..">this weblog's main page&lt;/a>&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//log/menu?action=edit&amp;amp;section=About">Edit&lt;/a> &lt;a class="header-links" href="#About">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="about">&lt;/a>&lt;h2>About&lt;/h2>&lt;p>This is the &lt;a href="http://www.emqbit.com" class="external" rel="nofollow">emQbit&lt;/a>'s weblog. We're located in  &lt;a href="http://www.bogowiki.org" class="external" rel="nofollow">Bogota&lt;/a>, &lt;a href="http://en.wikipedia.org/wiki/Colombia" class="external" rel="nofollow">Colombia&lt;/a>. &lt;center>&lt;p>&lt;a href="http://www.emqbit.com" class="external" rel="nofollow">&lt;img src="../log/images/emqbit-logo.png" alt="images/emqbit-logo.png"/>&lt;/a>&lt;/p>&lt;/center>&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//log/menu?action=edit&amp;amp;section=Contact">Edit&lt;/a> &lt;a class="header-links" href="#Contact">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="contact">&lt;/a>&lt;h2>Contact&lt;/h2>&lt;ul>&lt;li>info @ emqbit.com&lt;/li>&lt;li>&lt;a href="http://www.emqbit.com" class="external" rel="nofollow">http://www.emqbit.com&lt;/a>&lt;/li>&lt;li>&lt;a href="../products" class="internal">Products&lt;/a>&lt;/li>&lt;li>&lt;a href="../support" class="internal">Support&lt;/a>&lt;/li>&lt;li>&lt;a href="../wiki" class="internal">Wiki&lt;/a>&lt;/li>&lt;li>&lt;a href="../sales" class="internal">Sales&lt;/a>&lt;/li>&lt;li>&lt;a href="../about" class="internal">About&lt;/a>&lt;/li>&lt;/ul>&lt;div id="archive-3062196" class="archive">&lt;p>[&lt;a href="../log/xsvnwiki-archive">Archive&lt;/a>]&lt;/p>&lt;/div>&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/archive/archive">&lt;/script>&lt;script type="text/javascript">&lt;!--
if (typeof(showArchive) == 'function') { loadXml ('../log/xsvnwiki-archive/files.xml', function (x) { showArchive(x, 'archive-3062196', '../log/xsvnwiki-archive'); }); }
-->&lt;/script>
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
&lt;/script>
&lt;script type="text/javascript">
_uacct = "UA-332299-2";
urchinTracker();
&lt;/script>
&lt;p class="render-bottom-span">&lt;script type="text/javascript" src="http://wiki.emqbit.com//xsvnwiki-helper/rating/rating">&lt;/script>&lt;span id="div-rating-5945" class="render-bottom-span render-bottom-span-rating">Loading...&lt;/span>&lt;script type="text/javascript">&lt;!--
rating.url = "https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/";
if (typeof(rating.updateStats) == 'function') { rating.loadXml('../log/xsvnwiki-rating/menu', function (x) { rating.updateStats(x, 'div-rating-5945'); }); }
-->&lt;/script>
&lt;a href="javascript:rating.vote(1, &amp;quot;log/menu&amp;quot;, &amp;quot;div-rating-5945&amp;quot;);" class="render-bottom-span render-bottom-span-rating-up">Vote up&lt;/a>
&lt;a href="javascript:rating.vote(-1, &amp;quot;log/menu&amp;quot;, &amp;quot;div-rating-5945&amp;quot;);" class="render-bottom-span render-bottom-span-rating-down">Vote down&lt;/a>
&lt;a class="render-bottom-span render-bottom-span-discuss-count" href="../log/xsvnwiki-discuss/menu">&lt;img src='http://wiki.emqbit.com//img/discussion/0' border=0/> Discussion&lt;/a>&lt;/p></content></entry><entry><title>linux-kernel</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/linux-kernel"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/linux-kernel</id><updated>2007-06-03T20:00:29Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>We will put some kernel related links here. In the NEAR future, wi will start putting some parches here. But the best thing to do is to send them upstream as soon as we can, I guess.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//linux-kernel?action=edit&amp;amp;section=Where are the patches?">Edit&lt;/a> &lt;a class="header-links" href="#Where are the patches?">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="where-are-the-patches">&lt;/a>&lt;h2>Where are the patches?&lt;/h2>&lt;p>Russell King puts his patches here:&lt;/p>&lt;ul>&lt;li>&lt;a href="ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/git-cur/" class="external" rel="nofollow">ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/git-cur/&lt;/a> Patches: &lt;a href="http://www.arm.linux.org.uk/developer/patches/" class="external" rel="nofollow">http://www.arm.linux.org.uk/developer/patches/&lt;/a>&lt;/li>&lt;/ul>&lt;p>And I guess they're agains the linux GIT tree. You can get it with:&lt;/p>&lt;pre>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git&lt;/pre>&lt;p>We migth use our own git soon.&lt;/p></content></entry><entry><title>ccache-distcc</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ccache-distcc"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ccache-distcc</id><updated>2007-05-30T18:24:15Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>The following instructions are for Debian and they might work for Ubuntu as well.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=Motivation">Edit&lt;/a> &lt;a class="header-links" href="#Motivation">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="motivation">&lt;/a>&lt;h2>Motivation&lt;/h2>&lt;ul>&lt;li>If you don't use ccache you'll waste time.&lt;/li>&lt;li>If you don't use distcc you'll waste time.&lt;/li>&lt;li>If you don't use ccache and distcc together, you'll waste time.&lt;/li>&lt;/ul>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=Some theory">Edit&lt;/a> &lt;a class="header-links" href="#Some theory">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="some-theory">&lt;/a>&lt;h2>Some theory&lt;/h2>&lt;p>You might want to use ccache and distcc all the time, &lt;a href="http://www.mail-archive.com/distcc@lists.samba.org/msg02355.html" class="external" rel="nofollow">even if you compile only from a single machine&lt;/a>. This way, you can add nodes to the cluster anytime and the cache will be valid when you compile with a single processor some other time.&lt;/p>&lt;p>This is especially useful if you have a laptop.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=Installing">Edit&lt;/a> &lt;a class="header-links" href="#Installing">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="installing">&lt;/a>&lt;h2>Installing&lt;/h2>&lt;p>In the front-end machine:&lt;/p>&lt;pre> aptitude install ccache distcc gcc g++&lt;/pre>&lt;p>In the nodes:&lt;/p>&lt;pre> aptitude install distgcc gcc g++&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=Configuring ccache">Edit&lt;/a> &lt;a class="header-links" href="#Configuring ccache">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="configuring-ccache">&lt;/a>&lt;h2>Configuring ccache&lt;/h2>&lt;p>The first thing to set is the maximum cache size. The more, the better. For me a few gigabytes are more than enough. If need to cache a few kernel compilations, it will be enough.&lt;/p>&lt;pre>$ ccache --max-size 5G&lt;/pre>&lt;p>You can check statistics anytime you like with &lt;tt>ccache -s&lt;/tt>.&lt;/p>&lt;pre>$ ccache -s
cache directory                     /home/galactus/.ccache
cache hit                              0
cache miss                             0
files in cache                     43454
cache size                         265.9 Mbytes
max cache size                       3.0 Gbytes&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=Configuring distcc">Edit&lt;/a> &lt;a class="header-links" href="#Configuring distcc">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="configuring-distcc">&lt;/a>&lt;h2>Configuring distcc&lt;/h2>&lt;p>In the compilation nodes, make sure that your computer is allowed to use distcc. To configure it use:&lt;/p>&lt;pre>dpkg-reconfigure distcc&lt;/pre>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=The environment">Edit&lt;/a> &lt;a class="header-links" href="#The environment">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="the-environment">&lt;/a>&lt;h2>The environment&lt;/h2>&lt;p>In the front-end machine, you might want to use something like the following environment:&lt;/p>&lt;PRE>
&lt;I>&lt;FONT COLOR="#B22222"># When You're alone
&lt;/FONT>&lt;/I>&lt;I>&lt;FONT COLOR="#B22222"># export DISTCC_HOSTS=localhost
&lt;/FONT>&lt;/I>
&lt;I>&lt;FONT COLOR="#B22222"># When you use the cluster
&lt;/FONT>&lt;/I>&lt;I>&lt;FONT COLOR="#B22222"># Faster machines first.
&lt;/FONT>&lt;/I>&lt;B>&lt;FONT COLOR="#A020F0">export&lt;/FONT>&lt;/B> DISTCC_HOSTS=&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;192.168.1.2 192.168.1.3 192.168.1.4 localhost&amp;quot;&lt;/FONT>&lt;/B>
&lt;B>&lt;FONT COLOR="#A020F0">export&lt;/FONT>&lt;/B> CCACHE_PREFIX=&lt;B>&lt;FONT COLOR="#BC8F8F">&amp;quot;distcc&amp;quot;&lt;/FONT>&lt;/B>
&lt;I>&lt;FONT COLOR="#B22222">#If you don't want to cache the compilation results
&lt;/FONT>&lt;/I>&lt;I>&lt;FONT COLOR="#B22222">#export  CCACHE_DISABLE.  
&lt;/FONT>&lt;/I>&lt;/PRE>
&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ccache-distcc?action=edit&amp;amp;section=An example">Edit&lt;/a> &lt;a class="header-links" href="#An example">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="an-example">&lt;/a>&lt;h2>An example&lt;/h2>&lt;p>This is an example of what you would need to do to use ccache with the Linux kernel.&lt;/p>&lt;PRE>
&lt;B>&lt;FONT COLOR="#BC8F8F">--- Makefile.old        2007-05-30 10:07:00.000000000 -0500
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">+++ Makefile    2007-05-30 10:07:49.000000000 -0500
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">@@ -195,8 +195,8 @@
&lt;/FONT>&lt;/B>          else if [ -x /bin/bash ]; then echo /bin/bash; \
          else echo sh; fi ; fi)
 
&lt;B>&lt;FONT COLOR="#BC8F8F">-HOSTCC       = gcc
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">-HOSTCXX      = g++
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">+HOSTCC       = ccache gcc
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">+HOSTCXX      = ccache g++
&lt;/FONT>&lt;/B> HOSTCFLAGS   = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
 HOSTCXXFLAGS = -O2
 
&lt;B>&lt;FONT COLOR="#BC8F8F">@@ -281,7 +281,7 @@
&lt;/FONT>&lt;/B> 
 AS             = $(CROSS_COMPILE)as
 LD             = $(CROSS_COMPILE)ld
&lt;B>&lt;FONT COLOR="#BC8F8F">-CC             = $(CROSS_COMPILE)gcc
&lt;/FONT>&lt;/B>&lt;B>&lt;FONT COLOR="#BC8F8F">+CC             = ccache $(CROSS_COMPILE)gcc
&lt;/FONT>&lt;/B> CPP            = $(CC) -E
 AR             = $(CROSS_COMPILE)ar
 NM             = $(CROSS_COMPILE)nm
&lt;/PRE>
&lt;p>In this example, we used &lt;a href="http://wiki.emqbit.com/how%20to%20cross-compile%20for%20the%20arm" class="external" rel="nofollow">cross-compiler&lt;/a>.&lt;/p>&lt;p>In order to use all the nodes in the cluster, you need to  call make with the "-j" flag. For instance:&lt;/p>&lt;pre>crossmake -j5 vmlinux&lt;/pre></content></entry><entry><title>Flashing the ECB_AT91</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/flashing-the-ecb-at91"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/flashing-the-ecb-at91</id><updated>2007-05-12T00:54:46Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>To flash &lt;a href="../free-ecb-at91" class="internal">the board&lt;/a>, you need to use &lt;a href="../ecb-at91-serial-port" class="internal">the serial port&lt;/a>.&lt;/p>&lt;p>The software you will need:&lt;/p>&lt;ul>&lt;li>&lt;a href="http://svn.arhuaco.org/svn/src/emqbit/ECB_AT91_V2/darrell-loader/" class="external" rel="nofollow">Darrell's Loader&lt;/a>&lt;/li>&lt;li>&lt;a href="http://svn.arhuaco.org/svn/src/emqbit/ECB_AT91_V2/u-boot/" class="external" rel="nofollow">u-boot&lt;/a>&lt;/li>&lt;li>&lt;a href="http://svn.arhuaco.org/svn/src/emqbit/ECB_AT91_V2/linux-kernel/" class="external" rel="nofollow">Linux&lt;/a>&lt;/li>&lt;/ul>&lt;p>&lt;strong>Warning&lt;/strong>: The darrell loader is working with gcc 3.4.5. We tried gcc 4.1 and it didn't work. We have to debug this issue. If you have problems, email us and we'll send you a binary.&lt;/p>&lt;p>When you compile the Darrell loader, you get a binary named &lt;tt>loader.bin&lt;/tt>, the one you will upload.&lt;/p>&lt;p>The tricky part is the Darrel's loader. It's located in the ROM in the AT91RM9200 CPU. To have it loaded you need to perform the following steps:&lt;/p>&lt;ul>&lt;li>Load the Darrel's loader into RAM&lt;ul>&lt;li>Power off the board&lt;/li>&lt;li>Short the J2 jumper&lt;/li>&lt;li>Start a XMODEM transfer. You might want to use &lt;a href="../configure minicom to use the serial console" class="internal">minicom&lt;/a> for this task.&lt;/li>&lt;li>Power on the board before the transfer times out.&lt;/li>&lt;li>Wait until the u-boot image loads&lt;/li>&lt;/ul>&lt;/li>&lt;/ul>&lt;p>When it gets loaded, it prompts the menu endlessly, you can stop that by pressing a key (ENTER is a good choice).&lt;/p>&lt;ul>&lt;li>Remove the J2 jumper without restarting the board.&lt;/li>&lt;/ul>&lt;p>This allows the loader to store the Loader in the AT91's ROM.&lt;/p>&lt;ul>&lt;li>Using the menu of the Loader that is running, select the first option (1)&lt;/li>&lt;/ul>&lt;pre>1: Upload loader to Dataflash with vector 6 modification.
2: Upload u-boot to Dataflash.
3: Upload Linux to Dataflash
4: Start U-boot
5: Upload Filesystem image
6: Memory test&lt;/pre>&lt;p>This will ask for a XMODEM transfer, the same one that was done in a previous step. In minicom, you can use &lt;strong>Ctrl + a + s&lt;/strong> to repeat the transfer.&lt;/p>&lt;p>Once the transfer finishes, the Darrel's loader will be stored in the AT91RM9200 ROM (TODO: Is it OK to call this memory a ROM?). So it will be there when you reboot, and you'll get a nifty menu that will allow you to:&lt;/p>&lt;ul>&lt;li>&lt;a href="../build-u-boot" class="internal">Upload u-boot&lt;/a>&lt;/li>&lt;li>&lt;a href="../update the kernel of the ecb_at91" class="internal">Upload the Linux kernel&lt;/a>&lt;/li>&lt;/ul>&lt;hr/>&lt;p>There is another method that doesn't require a Jumper. It's not easy to describe. Perhaps we should automate it using &lt;a href="http://expect.nist.gov/" class="external" rel="nofollow">expect&lt;/a>, as &lt;a href="http://svn.arhuaco.org/svn/src/junk/trunk/gumstix-files/copy-root-fs" class="external" rel="nofollow">we did a long time ago for the gumstix&lt;/a>.&lt;/p></content></entry><entry><title>Our first reflow oven (Obi-Wan)</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/reflow-obi-wan"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/reflow-obi-wan</id><updated>2007-03-26T04:11:46Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>&lt;strong>Our first reflow oven (Obi-Wan)&lt;/strong>&lt;/p>&lt;p>For the control part, we're using an &lt;a href="http://en.wikipedia.org/wiki/Atmel_AVR" class="external" rel="nofollow">Atmega16 AVR&lt;/a> and a PC. The AVR is just an slave controlled using a serial port. We wanted to use it for the Analog-Digital conversion. In the final step, we will generate the controller.&lt;/p>&lt;p>This is our victim:&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/oven/oven-new.jpg" alt="oven heating"/>&lt;/p>&lt;/center>&lt;p>&lt;ol>&lt;ol>&lt;li>&lt;a href="../#calibration-the-analog-digital-converter" class="internal">Calibration the analog-digital converter&lt;/a>&lt;/li>&lt;li>&lt;a href="../#controling-the-oven" class="internal">Controling the oven&lt;/a>&lt;/li>&lt;li>&lt;a href="../#links" class="internal">Links&lt;/a>&lt;/li>&lt;/ol>&lt;/ol>&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//reflow-obi-wan?action=edit&amp;amp;section=Calibration the analog-digital converter">Edit&lt;/a> &lt;a class="header-links" href="#Calibration the analog-digital converter">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="calibration-the-analog-digital-converter">&lt;/a>&lt;h3>Calibration the analog-digital converter&lt;/h3>&lt;p>We tested the AD-C, using ADC0 (pin 40).&lt;/p>&lt;p>The AVR manual says that the conversion formula is: ADC = (I*1024)/2.56. Our results are close, but not exact.&lt;/p>
&lt;table border="1">
&lt;tr>&lt;th>Volts(I)&lt;/th>&lt;th>10-bit A-D conversion (ADC)&lt;/th>&lt;th>Theory&lt;/th>&lt;/tr>
&lt;tr>&lt;td>4.43&lt;/td>&lt;td>1023 (overflow)&lt;/td>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>
&lt;tr>&lt;td>2.54&lt;/td>&lt;td>986&lt;/td>&lt;td>1016&lt;/td>&lt;/tr>
&lt;tr>&lt;td>1.90&lt;/td>&lt;td>739&lt;/td>&lt;td>760&lt;/td>&lt;/tr>
&lt;tr>&lt;td>1.27&lt;/td>&lt;td>491&lt;/td>&lt;td>508&lt;/td>&lt;/tr>
&lt;tr>&lt;td>0.63&lt;/td>&lt;td>243&lt;/td>&lt;td>252&lt;/td>&lt;/tr>
&lt;/table>
&lt;ul>&lt;li>The &lt;a href="http://en.wikipedia.org/wiki/Linear_function" class="external" rel="nofollow">linear function&lt;/a> is: I = M*ADC + B.&lt;ul>&lt;li>M = 0.0025706940874036 (&lt;a href="http://en.wikipedia.org/wiki/Slope" class="external" rel="nofollow">slope&lt;/a>)&lt;/li>&lt;li>B = 0.00532974427994848&lt;/li>&lt;/ul>&lt;/li>&lt;/ul>&lt;p>Let's test it (&lt;a href="http://www.schemers.org/" class="external" rel="nofollow">Scheme language&lt;/a>) :&lt;/p>&lt;PRE>
&amp;gt;(&lt;B>&lt;FONT COLOR="#A020F0">define&lt;/FONT>&lt;/B> (&lt;B>&lt;FONT COLOR="#0000FF">v&lt;/FONT>&lt;/B> x) (+ B (* M x)))
&amp;gt; (v 243)
0.630000000000002
&amp;gt; (v 491)
1.26752355316285
&amp;gt; (v 739)
1.90504710632571
&amp;gt; (v 739)
1.90504710632571
&amp;gt; (v 986)
2.54
&lt;/PRE>
&lt;p>Ok. It works.&lt;/p>&lt;p>Now let's relate these values with the actual temperature. We calibrated the thermocouple and the linear regression (line) fits the measured data (dashed line).&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/oven/termocouple-calibration.png" alt="thermocouple calibration"/>&lt;/p>&lt;/center>&lt;ul>&lt;li>The &lt;a href="http://en.wikipedia.org/wiki/Linear_function" class="external" rel="nofollow">linear function&lt;/a> is: T = M1*V + B1.&lt;ul>&lt;li>M1 = 99.4219653179191 (&lt;a href="http://en.wikipedia.org/wiki/Slope" class="external" rel="nofollow">slope&lt;/a>)&lt;/li>&lt;li>B1 = -0.66473988439313&lt;/li>&lt;/ul>&lt;/li>&lt;/ul>&lt;PRE>
&amp;gt; (&lt;B>&lt;FONT COLOR="#A020F0">define&lt;/FONT>&lt;/B> (&lt;B>&lt;FONT COLOR="#0000FF">t&lt;/FONT>&lt;/B> v) (+ (* v 99.4219653179191) -0.66473988439313))
&amp;gt; (t 2.31)
229.0
&amp;gt; (t 0.58)
57.0
&lt;/PRE>
&lt;p>It works. So, we measure the temperature using this formula: T = M1 * (M * &lt;strong>ADC&lt;/strong> + B) + B1. That is:&lt;/p>&lt;pre>T = 99.4219653179191 * (0.0025706940874036 * &lt;strong>ADC&lt;/strong> + 0.00532974427994848) + -0.66473988439313&lt;/pre>&lt;p>So, the temperature this room is now (We measured 82 with the ADC).&lt;/p>&lt;PRE>
&amp;gt;(&lt;B>&lt;FONT COLOR="#A020F0">define&lt;/FONT>&lt;/B> (&lt;B>&lt;FONT COLOR="#0000FF">real&lt;/FONT>&lt;/B> adc) (+ -0.66473988439313 (* 99.4219653179191 (+ 0.00532974427994848 (* adc 0.0025706940874036)))))
&amp;gt; (real 82)
20.8229973554286
&lt;/PRE>
&lt;p>&lt;a href="http://ftp.casio.co.jp/pub/world_manual/wat/en/qw4335.pdf" class="external" rel="nofollow">Nelson's watch&lt;/a> is reporting 20.05 ºC, so this is quite close. We are done with the calibration.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//reflow-obi-wan?action=edit&amp;amp;section=Controling the oven">Edit&lt;/a> &lt;a class="header-links" href="#Controling the oven">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="controling-the-oven">&lt;/a>&lt;h3>Controling the oven&lt;/h3>&lt;p>Let's see how the oven performs heating the air inside it.&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/oven/horno.calentando.a.toda.png" alt="oven heating"/>&lt;/p>&lt;/center>&lt;p>We turned it off at time 6.74, and opened the door at time 14.38.&lt;/p>&lt;p>Seems a little slow.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//reflow-obi-wan?action=edit&amp;amp;section=Links">Edit&lt;/a> &lt;a class="header-links" href="#Links">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="links">&lt;/a>&lt;h3>Links&lt;/h3>&lt;ul>&lt;li>&lt;a href="http://www.sparkfun.com/commerce/present.php?p=Reflow%20Skillet" class="external" rel="nofollow">http://www.sparkfun.com/commerce/present.php?p=Reflow%20Skillet&lt;/a>&lt;/li>&lt;li>&lt;a href="http://www.tkb-4u.com/articles/soldering/reflprofadjust/reflprofadjust.php" class="external" rel="nofollow">http://www.tkb-4u.com/articles/soldering/reflprofadjust/reflprofadjust.php&lt;/a>&lt;/li>&lt;li>&lt;a href="http://www.actel.com/documents/Solder_Reflow_LeadFree.pdf" class="external" rel="nofollow">http://www.actel.com/documents/Solder_Reflow_LeadFree.pdf&lt;/a> (parameters for PB and lead-free)&lt;/li>&lt;/ul></content></entry><entry><title>programador-paralelo-avr</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/programador-paralelo-avr"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/programador-paralelo-avr</id><updated>2007-03-24T06:50:03Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//programador-paralelo-avr?action=edit&amp;amp;section=Cable paralelo">Edit&lt;/a> &lt;a class="header-links" href="#Cable paralelo">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="cable-paralelo">&lt;/a>&lt;h2>Cable paralelo&lt;/h2>&lt;p>Naranja = 1 Verde = 2 Azul = 11 Blanco/Azul = 16 (reset) Café = 20, 21 (GND)&lt;/p>&lt;p>Extra cables:&lt;/p>&lt;p>Blanco verde = 3 Blanco cafe = 4 Blanco naranja = 5&lt;/p>&lt;p>Install:&lt;/p>&lt;p>avr-libc gcc-avr uisp&lt;/p></content></entry><entry><title>ecb-at91-v3</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ecb-at91-v3"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/ecb-at91-v3</id><updated>2007-03-19T00:52:55Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ecb-at91-v3?action=edit&amp;amp;section=SBC ECB_AT91 V3">Edit&lt;/a> &lt;a class="header-links" href="#SBC ECB_AT91 V3">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="sbc-ecb-at91-v3">&lt;/a>&lt;h2>SBC ECB_AT91 V3&lt;/h2>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//ecb-at91-v3?action=edit&amp;amp;section=Features of the Single Board Computer">Edit&lt;/a> &lt;a class="header-links" href="#Features of the Single Board Computer">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="features-of-the-single-board-computer">&lt;/a>&lt;h3>Features of the Single Board Computer&lt;/h3>&lt;ul>&lt;li>200MHz ARM926EJ-S-based processor (Atmel &lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=4056" class="external" rel="nofollow">AT91SAM9263&lt;/a>)&lt;ul>&lt;li>&lt;a href="http://www.arm.com/products/CPUs/cpu-arch-DSP.html" class="external" rel="nofollow">DSP Instruction Extensions&lt;/a>&lt;/li>&lt;li>&lt;a href="http://www.arm.com/products/esd/jazelle_home.html" class="external" rel="nofollow">Jazelle Technology for Java Acceleration&lt;/a>&lt;/li>&lt;/ul>&lt;li>LCD Controller&lt;ul>&lt;li>Supports Passive or Active Displays&lt;/li>&lt;li>Up to 24 bits per Pixel in TFT Mode, Up to 16 bits per Pixel in STN Color Mode&lt;/li>&lt;li>Up to 16M Colors in TFT Mode, Resolution Up to 2048x2048, Supports Virtual Scren Buffers&lt;/li>&lt;/ul>&lt;li>2D Graphics Accelerator&lt;ul>&lt;li>Line Draw, Block Transfer, Polygon Fill, Clipping, Commands Queuing&lt;/li>&lt;/ul>&lt;li>&lt;a href="http://www.nxp.com/pip/UCB1400BE.html" class="external" rel="nofollow">UCB1400&lt;/a> Audio and Touch Screen Controller&lt;ul>&lt;li>Integrated AC'97 Rev. 2.1 interface&lt;/li>&lt;li>20-bit stereo audio codec supporting input/output gain control&lt;/li>&lt;li>4-wire resistive touch screen interface circuit supporting position, pressure and plate resistance measurements&lt;/li>&lt;/ul>&lt;li>128 MBytes, SanDisk mDOC H3&lt;/li>&lt;/li>&lt;/li>&lt;/li>&lt;/li>&lt;li>8 MBytes of serial flash (boot room)&lt;/li>&lt;li>Up to 128MBytes of SDRAM (Supports 32M/64M)&lt;/li>&lt;li>2 MicroSD slots&lt;/li>&lt;li>2 USB 2.0 host&lt;/li>&lt;li>1 10/100 Ethernet interface&lt;/li>&lt;li>2 serial (RS232) interfaces&lt;/li>&lt;li>JTAG support&lt;/li>&lt;/ul></content></entry><entry><title>linux-cl-url-temporal</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/linux-cl-url-temporal"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/linux-cl-url-temporal</id><updated>2007-03-16T04:37:47Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p>&lt;a href="http://arhuaco.org" class="external" rel="nofollow">Nelson Castillo&lt;/a> es Ingeniero de Sistemas, Colombiano, con 8 años de experiencia en administración de servidores con GNU/Linux. Actualmente se encuentra trabajando tiempo completo en &lt;a href="http://wiki.emqbit.com/" class="external" rel="nofollow">emQbit&lt;/a>, una empresa que se dedica al desarrollo de sistemas embebidos. Hace 10 años, con dos amigos, inició el proyecto &lt;a href="http://wiki.freaks-unidos.net/freedfd/" class="external" rel="nofollow">Dfd&lt;/a>, un intérprete de diagramas de flujo que es usado en enseñanza de algoritmos básicos.&lt;/p>&lt;blockquote>&lt;p>¿Cómo y por qué llegaste a utilizar Debian?&lt;/p>&lt;/blockquote>&lt;p>Primero fue por curiosidad, y luego por que me pareció una distribución de mejor calidad.&lt;/p>&lt;p>Fue en el año 2000 ó en el 2001, no recuerdo bien la fecha. Por esa época era estudiante y estaba trabajando como administrador de los servidores de Correo y Proxy. El primer servidor de correo de la &lt;a href="http://www.unimagdalena.edu.co/" class="external" rel="nofollow">Universidad del Magdalena&lt;/a> lo instalamos con &lt;a href="http://www.debian.org/releases/potato/" class="external" rel="nofollow">Debian Potato&lt;/a>. El servidor funcionaba sin problemas y no requería mucha atención.&lt;/p>&lt;p>El servidor Proxy estaba instalado con RedHat, que fue la primera distribución que usé, por algo más de un año. Un día la navegación en la Intranet se caía con frecuencia, y yo no podía encontrar la causa. Por accidente, en un momento logramos notar que cuando alguien hacía una transferencia usando el protocolo FTP hacia un servidor que estaba fuera de la Intranet, el kernel se ocupaba al 100%. Me sorprendió que un error tan grave estuviera presente en el sistema, y por lo que logré averiguar era un error con la versión del kernel instalada. Al día siguiente ya el servidor no era RedHat, lo cambiamos por un Debian. Desde ese día Debian es mi distribución preferida para servidores.&lt;/p>&lt;p>RedHat me parecía una distribución buena para los estándares de la época, pero Debian me pareció de mejor calidad. Sobre todo, por el manejo de los paquetes y las dependencias entre paquetes. Un problema de este estilo es menos probable en Debian, ya que el kernel es uno de los paquetes más probados, y también por la &lt;a href="http://www.debian.org/releases/index.es.html" class="external" rel="nofollow">dinámica de desarrollo&lt;/a>, que hace que cuando uno descargue una versión estable, realmente sea estable.&lt;/p>&lt;p>Las versiones estables de Debian se liberan cuando estén listas cuando el número de errores críticos se acerque a cero. Esto se puede ver &lt;a href="http://bugs.debian.org/release-critical/" class="external" rel="nofollow">siguiendo la línea verde en esta gráfica&lt;/a>. En el 2005 se ve que esta línea estaba cerca de 0, cuando &lt;a href="http://www.debian.org/releases/stable/" class="external" rel="nofollow">Debian Sarge&lt;/a> estuvo listo.&lt;/p>&lt;blockquote>&lt;p>- ¿Ha cumplido Debian con tus expectativas?&lt;/p>&lt;/blockquote>&lt;p>Sí.&lt;/p>&lt;p>El sistema de paquetes que desarrollaron me gusta mucho. En mi máquina uso &lt;a href="http://www.debian.org/releases/unstable/" class="external" rel="nofollow">Debian inestable&lt;/a>. De vez en cuando alguna funcionalidad se daña, pero afortunadamente hasta ahora he podido mantener la misma instalación, que ya tiene 2 años. Para muchos usos supongo que lo recomendable es usar una versión estable de Debian, pero es importante anotar que para muchos usuarios experimentados de Debian esto no es una restricción y usan &lt;a href="http://www.debian.org/releases/testing/index.es.html" class="external" rel="nofollow">Debian testing&lt;/a>, o &lt;a href="http://www.debian.org/releases/unstable/index.es.html" class="external" rel="nofollow">Debian unstable&lt;/a>.&lt;/p>&lt;p>La parte que más desanima a los usuarios nuevos es lo que se demoran en salir las nuevas versiones estables, y este si es un problema de Debian.&lt;/p>&lt;p>Supongo que lo ideal es que hiciera &lt;a href="http://www.debian.org/doc/maint-guide/" class="external" rel="nofollow">carrera para desarrollador de Debian&lt;/a> para ayudar con algunos paquetes, pero actualmente me quedaría difícil sacar el tiempo. Tengo una tarea pendiente desde hace más de un año : crear paquetes de Debian para &lt;a href="http://wiki.freaks-unidos.net/svnwiki" class="external" rel="nofollow">Svnwiki&lt;/a>.&lt;/p>&lt;blockquote>&lt;p>¿Qué otro S.O. utilizas normalmente?&lt;/p>&lt;/blockquote>&lt;p>Usualmente trabajo con GNU/Linux.  Me gustaría probar &lt;a href="http://www.freebsd.org" class="external" rel="nofollow">FreeBSD&lt;/a> y &lt;a href="http://www.openbsd.org" class="external" rel="nofollow">OpenBSD&lt;/a>.&lt;/p>&lt;blockquote>&lt;p>- Sabemos que trabajas con procesadores ARM en proyectos embebidos, ¿por qué utilizan Debian? &lt;/p>&lt;/blockquote>&lt;p>Nos gusta usar Debian por que tiene muchos paquetes listos para ser usados, y por la calidad de los mismos que es buena. También usamos &lt;a href="http://wiki.emqbit.com/openembedded" class="external" rel="nofollow">OpenEmbedded&lt;/a> y &lt;a href="http://buildroot.uclibc.org/" class="external" rel="nofollow">Buildroot&lt;/a>. Creo que estas distribuciones no compiten estre si. Son muy diferentes.&lt;/p>&lt;blockquote>&lt;p>- ¿Existe otra distribución que entregue tantos paquetes para esa arquitectura?&lt;/p>&lt;/blockquote>&lt;p>No estoy seguro, aunque creo que no hay otra. Una ventaja que tiene Debian es que crear paquetes para ARM muchas veces no implica un trabajo adicional para los desarrolladores.&lt;/p>&lt;blockquote>&lt;p>- Sabemos que crearon una placa basada en ARM de tamaño pequeño, y además, con hardware libre eso es algo extraño acá en Sud américa, ¿ha sido un trabajo muy complejo? &lt;/p>&lt;/blockquote>&lt;p>Supongo que te refieres a la &lt;a href="http://wiki.emqbit.com/free-ecb-at91" class="external" rel="nofollow">Free ECB_AT91&lt;/a>, ha sido un proyecto muy interesante para nosotros. En sur-América ya se había hecho algo, como el proyecto de &lt;a href="http://linuxdevices.com/news/NS2816582491.html" class="external" rel="nofollow">Flavio Ribeiro&lt;/a>.&lt;/p>&lt;p>Usar &lt;a href="http://kernel.org/" class="external" rel="nofollow">Linux&lt;/a> nos ha ayudado bastante a entrar en el mundo de los Embebidos. Si ya uno está familiarizado con el núcleo, y con herramientas de desarrollo libres, el paso a Linux Embebido no es traumático.&lt;/p>&lt;p>En esta pregunta me quedé corto así que le pregunté a &lt;a href="http://wiki.emqbit.com/carlos-camargo" class="external" rel="nofollow">Carlos Camargo&lt;/a>, quién trabajó el hardware de este desarrollo. Esta es su respuesta:&lt;/p>&lt;blockquote>&lt;blockquote>&lt;p>En algunos países de sur-América no estamos acostumbrados a desarrollar nuestras propias soluciones, y siempre adquirimos tecnología, por esta razón, la apropiación de tecnología es un poco traumática, además porque no existen puntos de referencias locales que ayuden en el proceso. Hablando específicamente de nuestra board, el único problema que existió fue en la construcción misma de la board. La primera vez que armamos nuestro prototipo, no funcionó, cambiamos muchos valores del diseño, medimos en muchos puntos de la board, y al final mandamos a construir unas nuevas boards, pero cuando llegaron estas sucedió exactamente lo mismo, ¡no funcionaba!. Comenzamos a hacer una serie de pruebas para determinar hasta que punto el diseño funcionaba y después de mucho probar nos dimos  cuenta que el problema era de soldadura, es decir, la técnica de soldar que utilizamos no era la adecuada. Si en Colombia existiera experiencia previa en este tipo de tecnología muy seguramente nos hubiéramos ahorrado ese tiempo. &lt;/p>&lt;p>Una vez el prototipo alcanzó el grado de funcionalidad mínimo, fue relativamente fácil implementar todas las herramientas necesarias para trabajar con Linux Embebido, las listas de discusión son una herramienta poderosa, ya que muy seguramente alguien ha tenido el mismo problema que uno antes.&lt;/p>&lt;/blockquote>&lt;/blockquote>&lt;p>Ahora yo añadiría otra cosa. Una parte que nos ha costado bastantes horas de trabajo es la &lt;a href="http://wiki.emqbit.com/wiki" class="external" rel="nofollow">documentación que hemos puesto&lt;/a> en línea. Así que cualquier ayuda que sirva para mejorar los documentos es bienvenida. Tenemos &lt;a href="http://groups.google.com/group/ecbat91es" class="external" rel="nofollow">una lista para este proyecto&lt;/a> en Español, &lt;a href="http://groups.google.com/group/ecbat91" class="external" rel="nofollow">y otra en Inglés&lt;/a>.&lt;/p>&lt;blockquote>&lt;p>- ¿A qué mercado está dirigida esa placa?&lt;/p>&lt;/blockquote>&lt;p>Al mundo industrial y académico, este Single-board computer es una herramienta de trabajo muy poderosa que puede y está siendo utilizada por varias universidades de Colombia, Venezuela, Perú, Bélgica y España y por varias empresas en Colombia y una en Italia. &lt;/p>&lt;blockquote>&lt;p>- ¿Algún proyecto que esté pronto a ver la luz? &lt;/p>&lt;/blockquote>&lt;p>Ya está listo el &lt;a href="http://wiki.emqbit.com/ecb-at91-v2" class="external" rel="nofollow">ECB_AT91 V2&lt;/a>, y nos falta poner más documentación en línea para el uso del FPGA, del PsOC y de los otros juguetes que esta board trae.&lt;/p>&lt;p>Tenemos dos desarrollos pendientes, que creo serán los próximos. Uno es un nuevo &lt;a href="http://wiki.emqbit.com/ecb-at91-v3" class="external" rel="nofollow">Single-board computer&lt;/a>, con más características. Y la &lt;a href="http://wiki.emqbit.com/smartcam" class="external" rel="nofollow">cámara de red&lt;/a>, que va a ser una cámara con bastante poder de cómputo. Esta cámara tendrá un FPGA y un PowerPC.&lt;/p>&lt;blockquote>&lt;p>- ¿Algo que quieras decirle a la comunidad Debian en Chile? (y también a los que no lo utilizan) &lt;/p>&lt;/blockquote>&lt;p>Huy, que responsabilidad :)&lt;/p>&lt;p>Primero, por supuesto una invitación a probar Debian GNU/Linux, y segundo, que no se puede olvidar que Ubuntu ha logrado ser bueno gracias al trabajo de la comunidad de desarrollo de Debian.&lt;/p>&lt;p>Hay una comunidad de &lt;a href="http://www.debiancolombia.org" class="external" rel="nofollow">usuarios y desarrolladores de Debian en Colombia&lt;/a>, que es muy amigable. Supongo que las puertas están abiertas para colaboración en el futuro. En cuanto a Linux Embebido, los invitamos a participar en el grupo &lt;a href="http://wiki.freaks-unidos.net/linuxencaja/" class="external" rel="nofollow">Linux en-Caja&lt;/a>, en el que hemos logrado crear documentación útil.&lt;/p>&lt;p>Y para terminar, muchas gracias por tenernos en cuenta para publicar estas opiniones en el espacio que están creando, que espero que les sirva para coordinar muchas actividades en el futuro próximo.&lt;/p></content></entry><entry><title>eabi-oabi-benchmark</title><link href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/eabi-oabi-benchmark"/><id>https://freaks-unidos.net/cgi-bin/svnwiki/emqbit/eabi-oabi-benchmark</id><updated>2007-03-15T19:59:49Z</updated><author><name>Unknown</name></author><content type="text/html">&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=Analysis: Why EABI matters">Edit&lt;/a> &lt;a class="header-links" href="#Analysis: Why EABI matters">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="analysis-why-eabi-matters">&lt;/a>&lt;h2>Analysis: Why EABI matters&lt;/h2>&lt;p>&lt;em>Published  in &lt;a href="http://www.linuxdevices.com/articles/AT5920399313.html" class="external" rel="nofollow">LinuxDevices&lt;/a>.  (Mar. 14, 2007)&lt;/em>&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=Foreword">Edit&lt;/a> &lt;a class="header-links" href="#Foreword">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="foreword">&lt;/a>&lt;h2>Foreword&lt;/h2>&lt;p>It's usual to &lt;a href="http://www.linuxdevices.com/news/NS9048137234.html" class="external" rel="nofollow">hear of the new ARM EABI&lt;/a> nowadays. There are many motivations to start using it but there is one we specially like: &lt;strong>it's much faster for floating point operations&lt;/strong>.&lt;/p>&lt;p>Many &lt;a href="http://en.wikipedia.org/wiki/ARM_architecture" class="external" rel="nofollow">ARM cores&lt;/a> lack of a &lt;a href="http://en.wikipedia.org/wiki/Floating_point_unit" class="external" rel="nofollow">Floating Point Unit&lt;/a> and any software acceleration is more than welcome.&lt;/p>&lt;p>It might be hard to switch to EABI. For instance, for the Debian distribution, EABI is actually considered a new port.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=Without EABI">Edit&lt;/a> &lt;a class="header-links" href="#Without EABI">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="without-eabi">&lt;/a>&lt;h2>Without EABI&lt;/h2>&lt;p>The ARM EABI (embedded application binary interface) improves the floating point performance. So, it's not striking if you read how your processor is wasting a lot of cycles now. From the &lt;a href="http://wiki.debian.org/ArmEabiPort" class="external" rel="nofollow">Debian ARM-EABI&lt;/a> wiki:&lt;/p>&lt;blockquote>&lt;p>The current Debian port creates hardfloat FPA instructions. FPA comes from "Floating Point Accelerator". Since the FPA floating point unit was implemented only in very few ARM cores, these days FPA instructions are emulated in kernel via Illegal instruction faults. This is of course very inefficient: about 10 times slower that -msoftfloat for a FIR test program. The FPA unit also has the peculiarity of having mixed-endian doubles, which is usually the biggest grief for ARM porters, along with structure packing issues.&lt;/p>&lt;/blockquote>&lt;p>So, what does it mean? It means that the compilers usually generate inscructions for a piece of harware, namely a &lt;a href="http://en.wikipedia.org/wiki/Floating_point_unit" class="external" rel="nofollow">Floating Point Unit&lt;/a> that is not actually there!&lt;/p>&lt;p>So, when you make a floating point operation, such at &lt;em>3.58*x&lt;/em>, the CPU runs into an illegal instruction, and it raises an exception.&lt;/p>&lt;p>The kernel catches this specific exception and performs the intended float point operation, and then resumes executing the program. And this is slow because it implies a &lt;a href="http://en.wikipedia.org/wiki/Context_switch" class="external" rel="nofollow">context switch&lt;/a>. &lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=The benchmark">Edit&lt;/a> &lt;a class="header-links" href="#The benchmark">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="the-benchmark">&lt;/a>&lt;h2>The benchmark&lt;/h2>&lt;p>We made a simple benchmark using our Open Hardware &lt;a href="http://wiki.emqbit.com/free-ecb-at91" class="external" rel="nofollow">Free ECB_AT91 ARM(ARMv4t) development board&lt;/a> and a simple benchmark we have used before : The dot product of 2 given vectors, the euclidean distance of the vectors, and the FFT algorithm (complex valued, Cooley and Tukey radix-2), The &lt;a href="http://svn.arhuaco.org/svn/src/emqbit/tools/emqbit-bench/" class="external" rel="nofollow">source code we used is available (GPL)&lt;/a>.&lt;/p>&lt;p>It's usual to use the number of &lt;a href="http://en.wikipedia.org/wiki/Floating_point" class="external" rel="nofollow">Floating Point Operations&lt;/a> performed by a given program for benchmarking purposes. This can be misleading because some operations (division) take more time than others (addition). That's why we will run the same program in both setups, with similar compiler flags&lt;/p>&lt;p>First we will try the Old ABI using the Debian distribution (&lt;a href="http://www.debian.org/releases/unstable/" class="external" rel="nofollow">Debian Sid&lt;/a>). We will use an image that we &lt;a href="http://wiki.emqbit.com/deboostrap-debian" class="external" rel="nofollow">bootstrapped&lt;/a>.&lt;/p>&lt;p>For the EABI test we used &lt;a href="http://www.openembedded.org/" class="external" rel="nofollow">OpenEmbedded&lt;/a> (by using the &lt;a href="http://www.angstrom-distribution.org/" class="external" rel="nofollow">Ångström Distribution&lt;/a>).&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=Results">Edit&lt;/a> &lt;a class="header-links" href="#Results">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="results">&lt;/a>&lt;h2>Results&lt;/h2>&lt;p>MFLOPS (Millions of floating point instructions per second)&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/bench/eabi-oabi/bench-eabi-oabi.png" alt="imagenes/bench/eabi-oabi/bench-eabi-oabi.png"/>&lt;/p>&lt;/center>&lt;p>Speed-Up EABI over OABI&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/bench/eabi-oabi/bench-speedup.png" alt="imagenes/bench/eabi-oabi/bench-speedup.png"/>&lt;/p>&lt;/center>&lt;p>In each context switch both the data and instruction cache are flushed and this hurts the Old ABI's performance. You will notice it in the graphs because the performance with the old ABI does not depend on the size (N) of the input data whereas in EABI the impact of the cache in the performance is seen clearly. The dot-product performance only goes down when N &amp;gt; 4096 (When we use more than 16KB in memory). The processor we're using (&lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2983" class="external" rel="nofollow">AT91RM9200&lt;/a>) has a 16-Kbyte data cache.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=Closing Remarks">Edit&lt;/a> &lt;a class="header-links" href="#Closing Remarks">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="closing-remarks">&lt;/a>&lt;h2>Closing Remarks&lt;/h2>&lt;p>In order to benefit from the new EABI you need a distribution that supports it. Thanks to the work of the &lt;a href="http://www.openembedded.org/" class="external" rel="nofollow">OpenEmbedded&lt;/a> crew we got a working toolchain &lt;a href="http://lists.linuxtogo.org/pipermail/openembedded-commits/2006-October/001472.html" class="external" rel="nofollow">based on GCC&lt;/a>.  We didn't test EABI with Debian, but we expect the results to be quite similar.&lt;/p>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=About the Authors">Edit&lt;/a> &lt;a class="header-links" href="#About the Authors">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="about-the-authors">&lt;/a>&lt;h2>About the Authors&lt;/h2>&lt;p>Andrés Calderón and Nelson Castillo are co-founders of &lt;a href="http://www.emqbit.com" class="external" rel="nofollow">emQbit&lt;/a>. Both of them are long time GNU/Linux users.&lt;/p>&lt;p>&lt;img src="../imagenes/emQbit/team/afc-lt.png" alt="imagenes/emQbit/team/afc-lt.png"/>&lt;/p>&lt;p>Andrés has experience in High Performance computing and in Embedded Systems Design, DSP and FPGA programming.&lt;/p>&lt;p>&lt;img src="../imagenes/emQbit/team/nelson-lt.png" alt="imagenes/emQbit/team/nelson-lt.png"/>&lt;/p>&lt;p>Nelson has experience in Unix Network Programming, Linux driver programming and Embedded System  programming.&lt;/p>&lt;p>The &lt;a href="http://wiki.emqbit.com/free-ecb-at91" class="external" rel="nofollow">Free ECB_AT91 V1&lt;/a> was used in the tests. The design (open hardware) of this board is &lt;a href="http://wiki.emqbit.com/free-ecb-at91" class="external" rel="nofollow">available online&lt;/a>.&lt;/p>&lt;center>&lt;p>&lt;img src="../imagenes/products/ecb_at91/free-ecb-at91-v1.5.jpg" alt="Free ECB_AT91"/>&lt;/p>&lt;/center>&lt;p class="header-links">&lt;a class="header-links" href="https://freaks-unidos.net/cgi-bin/svnwiki/emqbit//eabi-oabi-benchmark?action=edit&amp;amp;section=References">Edit&lt;/a> &lt;a class="header-links" href="#References">Link&lt;/a> &lt;a class="header-links" href="#top">Top&lt;/a>&lt;/p>&lt;a name="references">&lt;/a>&lt;h2>References&lt;/h2>&lt;ul>&lt;li>&lt;a href="http://www.linuxdevices.com/news/NS9048137234.html" class="external" rel="nofollow">Debian ARM accelerates via EABI port&lt;/a>&lt;/li>&lt;li>&lt;a href="http://wiki.debian.org/ArmEabiPort" class="external" rel="nofollow">Debian ARM EABI Port&lt;/a>&lt;/li>&lt;/ul></content></entry></feed>