1
0
mirror of https://github.com/elua/elua.git synced 2025-01-08 20:56:17 +08:00

Completely updated and corrected the "tutorials" sections, now it contains information about how to build toolchains using the latest versions of gcc/newlib/binutils. Other minor fixes in

the documentation.
This commit is contained in:
Bogdan Marinescu 2009-03-25 23:29:27 +00:00
parent 709399a324
commit da05fc6f2f
14 changed files with 929 additions and 1283 deletions

View File

@ -1,17 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Building GCC for i386</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Building_GCC_for_i386" class="local">Building GCC for i386</a></h3>
<div class="content">
<body style="background-color: rgb(255, 255, 255);">
<h3>Building GCC for i386</h3>
<p>At first, the idea of an i386 "cross" compiler under Linux seems
strange. After all, you're already running Linux on a i386 compatible
architecture. But the compiler is sometimes tied in misterious ways
with the operating system it's running on (see for example <a href="http://wiki.osdev.org/GCC_Cross-Compiler">this page</a>
with the operating system it's running on (see for example <a htarget="_blank" ref="http://wiki.osdev.org/GCC_Cross-Compiler">this page</a>
for some possible symptoms). And after all, you want to use Newlib, not
libc, and to customize your development environment as much as
possible. This tutorial will show you how to do that.</p>
@ -21,182 +19,66 @@ GCC/newlib/binutils compilation process. I'm sure that there are better
ways to accomplish what I'm describing here, however I just wanted a
quick and dirty way to build a toolchain, I have no intention in
becoming too intimate with the build process. If you think that what I
did is wrong, innacurate, or simply outrageously ugly, feel free to <a href="http://www.giga.puc-rio.br/cgi-bin/elua.cgi?p=Contact">contact me</a> and I'll make the necessary corrections. And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
did is wrong, innacurate, or simply outrageously ugly, feel free to
<a href="overview.html#contacts">contact us</a> and I'll make the necessary corrections.
And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
<h2>&#8250; Prerequisites</h2>
<h2>Prerequisites</h2>
<p>To build your toolchain you'll need:</p>
<ul><li>a computer running Linux: I use Ubuntu 8.04, but any Linux
will do as long as you know how to find the equivalent of "apt-get" for
your distribution. I won't be going into details about this, google it
and you'll sure find what you need. It is also assumed that the Linux
system already has a "basic" native toolchain installed (gcc/make and
related). This is true for Ubuntu after installation. Again, you might
need to check your specific distribution.</li><li>GNU binutils: get it from <a href="http://ftp.gnu.org/gnu/binutils/">here</a>.
At the moment of writing this, the latest versions is 2.18, which for
some weird reason refuses to compile on my system, so I'm using 2.17
instead.</li><li>GCC: version 4.3.0 or newer is recommended. As
I'm writing this, the latest GCC version is 4.3.1 which I'll be using
for this tutorial. Download it from <a href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li><li>Newlib: as I'm writing this, the latest official Newlib version is 1.16.0. Download it from the <a href="ftp://sources.redhat.com/pub/newlib/index.html">Newlib FTP directory</a>.</li><li>Also,
the tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul>
<p>Also, you need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo</th>
</tr>
</tbody></table>
<ul>
<li><b>GNU binutils</b>: as I'm writing this, the latest binutils version is 2.19.1, which
I'll be using in this tutorial. get it from <a target="_blank" href="http://ftp.gnu.org/gnu/binutils/">here</a>.</li>
<li><b>GCC</b>:as I'm writing this, the latest GCC version is
4.3.3, which I'll be using for this tutorial. Download it from <a target="_blank" href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li>
<li><b>Newlib</b>: as I'm writing this, the latest official Newlib version is 1.17.0, which I'll be using for this tutorial.
Download it from <a target="_blank" href="ftp://sources.redhat.com/pub/newlib/index.html">here</a>.</li>
<li>The tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul></p>
<p>You need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><pre><code>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential</code></pre></p>
<p>Next, decide where you want to install your toolchain. They
generally go in /usr/local/, so I'm going to assume
/usr/local/cross-i686 for this tutorial. To save yourself some typing,
set this path into a shell variable:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ export TOOLPATH=/usr/local/cross-i686</th>
</tr>
</tbody></table>
generally go in <i>/usr/local/</i>, so I'm going to assume
<i>/usr/local/cross-i686</i> for this tutorial. To save yourself some
typing, set this path into a shell variable:</p>
<p><pre><code>$ export TOOLPATH=/usr/local/cross-i686</code></pre></p>
<h2>&#8250; Step 1: binutils</h2>
<p>This is the easiest step: unpack, configure, build.</p>
<p><br></p>
<p><pre><code>$ tar -xvjf binutils-2.19.1.tar.bz2
$ cd binutils-2.19.1
$ mkdir build
$ cd build
$ ../configure --target=i686-elf --prefix=$TOOLPATH --with-gnu-as --with-gnu-ld --disable-nls
$ make all
$ sudo make install
$ export PATH=${TOOLPATH}/bin:$PATH
$ cd ../..</code></pre></p>
<table class="table_cod">
<tbody><tr>
<th style="text-align: left;">$ tar -xvjf binutils-2.17.tar.bz2</th>
</tr>
<tr align="left">
<th>$ cd binutils-2.17</th>
</tr>
<tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$ ../configure --target=i686-elf --prefix=$TOOLPATH --with-gnu-as --with-gnu-ld --disable-nls</th>
</tr>
<tr align="left">
<th>$ make all</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
<tr align="left">
<th>$ export PATH=${TOOLPATH}/bin:$PATH</th>
</tr>
</tbody></table>
<p>Now you have your i386 "binutils" (assembler, linker, disassembler ...) in your PATH. </p>
<p>Now you have your i386 "binutils" (assembler, linker, disassembler ...) in your PATH.</p>
<h2>&#8250; Step 2: basic GCC</h2>
<h2>Step 2: basic GCC</h2>
<p>In this step we build a "basic" GCC (that is, a GCC without any
support libs, which we'll use in order to build all the libraries for
our target). But first we need to make a slight modification in the
configuration files. Out of the box, the GCC 4.3.1/newlib combo won't
compile properly, giving a very weird "Link tests are not allowed after
GCC_NO_EXECUTABLES" error. After a bit of googling, I found the
solution for this:</p>
our target). Let's compile it (and note that the install step is
a bit different from Newlib's):</p?
<p><br></p>
<p><pre><code>$ tar -xvjf gcc-4.3.3.tar.bz2
$ cd gcc-4.3.3
$ mkdir build
$ cd build
$ ../configure --target=i686-elf --prefix=$TOOLPATH --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
$ make all-gcc
$ sudo -s -H
# export PATH=/usr/local/cross-i686/bin:$PATH
# make install-gcc
# exit
$ cd ../..</code></pre></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ tar -xvjf gcc-4.3.1.tar.bz2</th>
</tr>
<tr align="left">
<th>$ cd gcc-4.3.1/libstdc++-v3</th>
</tr>
<tr align="left">
<th>$ joe configure.ac</th>
</tr>
</tbody></table>
<p>I'm using "joe" here as it's my favourite Linux text mode editor,
you can use any other text editor. Now find the line which says
"AC_LIBTOOL_DLOPEN" and comment it out by adding a "#" before it: </p>
<pre><code> # AC_LIBTOOL_DLOPEN<br></code></pre>
<p>Save the modified file and exit the text editor</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ autoconf</th>
</tr>
<tr align="left">
<th>$ cd ..</th>
</tr>
</tbody></table>
<p>Great, now we know it will compile, so let's do it:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=i686-elf --prefix=$TOOLPATH
--enable-languages="c,c++" --with-newlib --without-headers
--disable-shared --with-gnu-as --with-gnu-ld
</th>
</tr>
<tr align="left">
<th>$ make all-gcc</th>
</tr>
<tr align="left">
<th>$ sudo make install-gcc</th>
</tr>
</tbody></table>
<p>On my system, the last line above (sudo make install-gcc) terminated
with errors, because it was unable to find our newly compiled binutils.
If this happens for any kind of "make install" command, this is a quick
way to solve it:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ sudo -s -H</th>
</tr>
</tbody></table>
<pre><code> # export PATH=/usr/local/cross-i686/bin:$PATH<br> # make install-gcc<br> # exit<br></code></pre>
<h2>&#8250; Step 3: Newlib</h2>
<h2>Step 3: Newlib</h2>
<p>Once again, Newlib is as easy as unpack, configure, build. But I
wanted my library to be as small as possible (as opposed to as fast as
@ -204,78 +86,44 @@ possible) and I only wanted to keep what's needed from it in the final
executable, so I added the "-ffunction-sections -fdata-sections" flags
to allow the linker to perform dead code stripping:</p>
<p><br></p>
<p><pre><code>$ tar -xvzf newlib-1.17.0.tar.gz
$ cd newlib-1.17.0
$ mkdir build
$ cd build
$ ../configure --target=i686-elf --prefix=$TOOLPATH --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
$ make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -D__BUFSIZ__=256"
$ sudo -s -H
# export PATH=/usr/local/cross-i686/bin:$PATH
# make install
# exit
$ cd ../..</code></pre></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ tar xvfz newlib-1.16.0.tar.gz</th>
</tr>
<tr align="left">
<th>$ cd newlib-1.16.0</th>
</tr>
<tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=i686-elf --prefix=$TOOLPATH
--disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as
--disable-shared</th>
</tr>
<tr align="left">
<th>$ make
CFLAGS_FOR_TARGET="-ffunction-sections
-fdata-sections -D__PREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os
-fomit-frame-pointer -D__BUFSIZ__=256"</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<p>Some notes about the flags used in the above sequence:
<ul>
<li><code>--disable-newlib-supplied-syscalls</code>: this deserves a page of its own, but I won't cover it here. For an explanation, see for example
<a target="_blank" href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a></li>
<li><code>-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__</code>: compile Newlib for size, not for speed (these are Newlib specific).</li>
<li><code>-Os -fomit-frame-pointer</code>: tell GCC to optimize for size, not for speed.</li>
<li><code>-D__BUFSIZ__=256</code>: again Newlib specific, this is the buffer size allocated by default for files opened via fopen(). The default is 1024, which I find too much
for <b>eLua</b>, so I'm using 256 here. Of course, you can change this value.</li></ul></p>
<p>Some notes about the flags used in the above sequence:</p>
<ul><li><code>--disable-newlib-supplied-syscalls:</code> this deserves a page of its own, but I won't cover it here. For an explanation, see for example <a href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a>.</li><li><code>-D__PREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__:</code> compile Newlib for size, not for speed (these are Newlib specific).</li><li><code>-Os -fomit-frame-pointer:</code> tell GCC to optimize for size, not for speed.</li><li><code>-D__BUFSIZ__=256:</code>
again Newlib specific, this is the buffer size allocated by default for
files opened via fopen(). The default is 1024, which I find too much
for an eLua, so I'm using 256 here. Of course, you can change this
value.</li></ul>
<h2>&#8250; Step 4: full GCC</h2>
<h2>Step 4: full GCC</h2>
<p>Finally, in the last step of our tutorial, we complete the GCC
build. In this stage, a number of compiler support libraries are built
(most notably libgcc.a). Fortunately this is simpler that the Newlib
compilation step:</p>
<p><pre><code>$ cd gcc-4.3.3/build
$ make all
$ sudo make install
</code></pre></p>
<p><br></p>
<h2>Step 5: all done!</h2>
<table class="table_cod">
<tbody><tr align="left">
<th>$ cd gcc-4.3.1/build</th>
</tr>
<tr align="left">
<th>$ make all</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<h2>&#8250; Step 5: all done!</h2>
<p>Now you can finally enjoy your i386 toolchain, and compile eLua with
it :) After you do, you'll be able to boot eLua directly on your PC, as
described <a href="http://www.giga.puc-rio.br/cgi-bin/elua.cgi?p=Booting_your_PC_in_eLua">here</a>, but you won't need to download the ELF file from the eLua project page, since you just generated it using your own toolchain!
If you need further clarification, or if the above instructions didn't work for you, feel free to <a href="http://www.giga.puc-rio.br/cgi-bin/elua.cgi?p=Contact">contact me</a>.</p>
</div></body></html>
<p>Now you can finally enjoy your i386 toolchain, and compile <b>eLua</b> with
it :) After you do, you'll be able to boot <b>eLua</b> directly on your PC, as
described <a href="tut_bootpc.html">here</a>, but you won't need to download the ELF file from the <b>eLua</b> project page, since you just generated it using your own toolchain!
If you need further clarification, or if the above instructions didn't work for you, feel free to <a href="overview.html#contacts">contact us</a>.</p>
</body></html>

View File

@ -1,232 +1,94 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Building GCC for ARM</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Building_GCC_for_ARM" class="local">Building GCC for ARM</a></h3>
<div class="content">
<body style="background-color: rgb(255, 255, 255);">
<h3>Building GCC for ARM</h3>
<p> This tutorial explains how you can create a GCC+Newlib toolchain
that can be used to compile programs for the ARM architecture, thus
making it possible to compile programs for the large number of ARM CPUs
out there. You'll need such a toolchain if you want to compile eLua for
ARM CPUs. This tutorial is similar to many others you'll find on the
Internet (particulary the one from <a href="http://www.gnuarm.com/">gnuarm</a>, on which it's based), but it's a bit more detailed and shows some "tricks" you can use when compiling Newlib.</p>
ARM CPUs. Please note that you can also use a
pre-built toolchain to compile <b>eLua</b> (see <a href="toolchains.html">toolchains</a> for details) so building
one yourself is not strictly required. This tutorial is similar to many others you'll find on the
Internet (particulary the one from <a target="_blank" href="http://www.gnuarm.com/">gnuarm</a>, on which it's based), but it's a bit more detailed and shows some "tricks"
(specifying parameters at compile time) you can use when compiling Newlib.</p>
<p><strong>DISCLAIMER: I'm by no means a specialist in the
GCC/newlib/binutils compilation process. I'm sure that there are better
ways to accomplish what I'm describing here, however I just wanted a
quick and dirty way to build a toolchain, I have no intention in
becoming too intimate with the build process. If you think that what I
did is wrong, innacurate, or simply outrageously ugly, feel free to <a href="http://www.eluaproject.net/en/Contact">contact me</a> and I'll make the necessary corrections. And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
did is wrong, innacurate, or simply outrageously ugly, feel free to <a href="overview.html#contacts">contact us</a> and
I'll make the necessary corrections. And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
<h2>Prerequisites</h2>
<p>To build your toolchain you'll need:</p>
<ul><li>a computer running Linux: I use Ubuntu 8.04, but any Linux
<ul>
<li><b>a computer running Linux</b>: I use Ubuntu, but any Linux
will do as long as you know how to find the equivalent of "apt-get" for
your distribution. I won't be going into details about this, google it
and you'll sure find what you need. It is also assumed that the Linux
system already has a "basic" native toolchain installed (gcc/make and
related).This is true for Ubuntu after installation. Again, you might
need to check your specific distribution.</li><li>GNU binutils: get it from <a href="http://ftp.gnu.org/gnu/binutils/">here</a>.
At the moment of writing this, the latest versions is 2.18, which for
some weird reason refuses to compile on my system, so I'm using 2.17
instead.</li><li>GCC: version 4.3.0 or newer is recommended. As
I'm writing this, the latest GCC version is 4.3.1 which I'll be using
for this tutorial. Download it from <a href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li><li>Newlib: as I'm writing this, the latest official Newlib version is 1.16.0. Download it from the <a href="ftp://sources.redhat.com/pub/newlib/index.html">Newlib FTP directory</a>.</li><li>Also,
the tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul>
<p>Also, you need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo</th>
</tr>
</tbody></table>
need to check your specific distribution.</li>
<li><b>GNU binutils</b>: get it from <a target="_blank" href="http://ftp.gnu.org/gnu/binutils/">here</a>.
At the moment of writing this, the latest versions is 2.19.1, but it refuses to compile for ARM. Same goes for
2.19. In fact, the only newer version of Binutils that seems to work properly is
2.19.50, it can be downloaded from <a target="_blank" href="ftp://sourceware.org/pub/binutils/snapshots/">here</a>.
This is the version that we are going to use in this tutorial.</li>
<li><b>GCC</b>:as I'm writing this, the latest GCC version is
4.3.3, which I'll be using for this tutorial. Download it from <a target="_blank" href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li>
<li><b>Newlib</b>: as I'm writing this, the latest official Newlib version is 1.17.0, which I'll be using for this tutorial.
Download it from <a target="_blank" href="ftp://sources.redhat.com/pub/newlib/index.html">here</a>.</li>
<li>The tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul></p>
<p>You need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><pre><code>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential</code></pre></p>
<p>Next, decide where you want to install your toolchain. They
generally go in /usr/local/, so I'm going to assume
/usr/local/cross-arm for this tutorial. To save yourself some typing,
set this path into a shell variable:</p>
generally go in <i>/usr/local/</i>, so I'm going to assume
<i>/usr/local/cross-arm</i> for this tutorial. To save yourself some
typing, set this path into a shell variable:</p>
<p><pre><code>$ export TOOLPATH=/usr/local/cross-arm</code></pre></p>
<p><br></p>
<h2>Step 1: binutils</h2>
<table class="table_cod">
<tbody><tr>
<th>$ export TOOLPATH=/usr/local/cross-arm</th>
</tr>
</tbody></table>
<h2>&#8250; Step 1: binutils</h2>
<p>This is the easiest step: unpack, configure, build.</p>
<p><br></p>
<p><pre><code>$ tar -xvjf binutils-2.19.50.tar.bz2
$ cd binutils-2.19.50
$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls
$ make all
$ sudo make install
$ export PATH=${TOOLPATH}/bin:$PATH
$ cd ../..</code></pre></p>
<table class="table_cod">
<tbody><tr>
<th>$ tar -xvjf binutils-2.17.tar.bz2</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ cd binutils-2.17</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ mkdir build</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ cd build</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th style="text-align: left;">$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib--with-gnu-as --with-gnu-ld --disable-nls</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ make all</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ sudo make install</th>
</tr>
</tbody></table>
<table class="table_cod">
<tbody><tr>
<th>$ export PATH=${TOOLPATH}/bin:$PATH</th>
</tr>
</tbody></table>
<p>Now you have your ARM "binutils" (assembler, linker, disassembler ...) in your PATH.</p>
<p>Now you have your ARM "binutils" (assembler, linker, disassembler ...) in your PATH. </p>
<h2>Step 2: basic GCC</h2>
<p>In this step we build a "basic" GCC (that is, a GCC without any
support libs, which we'll use in order to build all the libraries for
our target). But first we need to make a slight modification in the
configuration files. Out of the box, the GCC 4.3.1/newlib combo won't
compile properly, giving a very weird "Link tests are not allowed after
GCC_NO_EXECUTABLES" error. After a bit of googling, I found the
solution for this:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ tar -xvjf gcc-4.3.1.tar.bz2</th>
</tr>
<tr>
<th>$ cd gcc-4.3.1/libstdc++-v3</th>
</tr>
<tr>
<th style="text-align: left;">$ joe configure.ac</th>
</tr>
</tbody></table>
<p> I'm using "joe" here as it's my favourite Linux text mode editor,
you can use any other text editor. Now find the line which says
"AC_LIBTOOL_DLOPEN" and comment it out by adding a "#" before it:</p>
<p><code># AC_LIBTOOL_DLOPEN</code></p>
<p>Save the modified file and exit the text editor</p>
<p><br> </p>
<table class="table_cod">
<tbody><tr>
<th>$ autoconf</th>
</tr>
<tr>
<th style="text-align: left;">$ cd ..</th>
</tr>
</tbody></table>
<p>Great, now we know it will compile, so let's do it:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork
--enable-multilib --enable-languages="c,c++" --with-newlib
--without-headers --disable-shared--with-gnu-as --with-gnu-ld</th>
</tr>
<tr align="left">
<th>$ make all-gcc</th>
</tr>
<tr align="left">
<th>$ sudo make install-gcc</th>
</tr>
</tbody></table>
<p>On my system, the last line above (sudo make install-gcc) terminated
with errors, because it was unable to find our newly compiled binutils.
If this happens for any kind of "make install" command, this is a quick
way to solve it:</p>
<p style="text-align: left;"><br></p><div style="text-align: left;">
</div><table class="table_cod">
<tbody><tr align="left">
<th>$ sudo -s -H</th>
</tr>
<tr align="left">
<th># export PATH=/usr/local/cross-arm/bin:$PATH</th>
</tr>
<tr align="left">
<th># make install-gcc</th>
</tr>
<tr>
<th style="text-align: left;"># exit</th>
</tr>
</tbody></table>
our target). Let's compile it (and note that the install step is
a bit different from Newlib's):</p?
<p><pre><code>$ tar -xvjf gcc-4.3.3.tar.bz2
$ cd gcc-4.3.3
$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
$ make all-gcc
$ sudo -s -H
# export PATH=/usr/local/cross-arm/bin:$PATH
# make install-gcc
# exit
$ cd ../..</code></pre></p>
<h2>Step 3: Newlib</h2>
@ -236,48 +98,27 @@ possible) and I only wanted to keep what's needed from it in the final
executable, so I added the "-ffunction-sections -fdata-sections" flags
to allow the linker to perform dead code stripping:</p>
<p><br></p>
<p><pre><code>$ tar -xvzf newlib-1.17.0.tar.gz
$ cd newlib-1.17.0
$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
$ make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -D__BUFSIZ__=256"
$ sudo -s -H
# export PATH=/usr/local/cross-arm/bin:$PATH
# make install
# exit
$ cd ../..</code></pre></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ tar xvfz newlib-1.16.0.tar.gz</th>
</tr>
<tr align="left">
<th>$ cd newlib-1.16.0</th>
</tr>
<tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork
--disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as
--disable-shared</th>
</tr>
<tr align="left">
<th>$ make
CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections
-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer
-D__BUFSIZ__=256"</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<p>Some notes about the flags used in the above sequence:</p>
<ul><li><code>--disable-newlib-supplied-syscalls</code>: this deserves a page of its own, but I won't cover it here. For an explanation, see for example <a href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a></li><li><code>-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__</code>: compile Newlib for size, not for speed (these are Newlib specific).</li><li><code>-Os -fomit-frame-pointer</code>: tell GCC to optimize for size, not for speed.</li><li><code>-D__BUFSIZ__=256</code>:
again Newlib specific, this is the buffer size allocated by default for
files opened via fopen(). The default is 1024, which I find too much
for an eLua, so I'm using 256 here. Of course, you can change this
value.</li></ul>
<p>Some notes about the flags used in the above sequence:
<ul>
<li><code>--disable-newlib-supplied-syscalls</code>: this deserves a page of its own, but I won't cover it here. For an explanation, see for example
<a target="_blank" href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a></li>
<li><code>-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__</code>: compile Newlib for size, not for speed (these are Newlib specific).</li>
<li><code>-Os -fomit-frame-pointer</code>: tell GCC to optimize for size, not for speed.</li>
<li><code>-D__BUFSIZ__=256</code>: again Newlib specific, this is the buffer size allocated by default for files opened via fopen(). The default is 1024, which I find too much
for <b>eLua</b>, so I'm using 256 here. Of course, you can change this value.</li></ul></p>
<h2>Step 4: full GCC</h2>
@ -286,25 +127,13 @@ build. In this stage, a number of compiler support libraries are built
(most notably libgcc.a). Fortunately this is simpler that the Newlib
compilation step:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ cd gcc-4.3.1/build</th>
</tr>
<tr align="left">
<th>$ make all</th>
</tr> <tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<p><pre><code>$ cd gcc-4.3.3/build
$ make all
$ sudo make install
</code></pre></p>
<h2>Step 5: all done!</h2>
<p>Now you can finally enjoy your ARM toolchain, and compile eLua with it :)
If you need further clarification, or if the above instructions didn't work for you, feel free to <a href="http://www.eluaproject.net/en/Contact">contact me</a>.</p>
</div></body></html>
<p>Now you can finally enjoy your ARM toolchain, and compile <b>eLua</b> with it :)
If you need further clarification, or if the above instructions didn't work for you, feel free to <a href="overview.html#contacts">contact us</a>.</p>
</body></html>

View File

@ -1,120 +1,74 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Bulding GCC for Cortex</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><div class="content">
<body style="background-color: rgb(255, 255, 255);">
<h3><a name="title" href="http://www.eluaproject.net/en/Building_GCC_for_Cortex" class="local">Building GCC for Cortex</a></h3><p>This tutorial explains how you can create a GCC+Newlib toolchain
<h3>Building GCC for Cortex</h3>
<p>This tutorial explains how you can create a GCC+Newlib toolchain
that can be used to compile programs for the Cortex (Thumb2)
architecture, thus making it possible to use GCC to compile programs
for the increasingly number of Cortex CPUs out there (<a href="http://www.luminarymicro.com/">Luminary Micro</a>, <a href="http://www.st.com/mcu/inchtml-pages-stm32.html">ST</a>,
with new Cortex CPUs being announced by Atmel and other companies). I
for the increasingly number of Cortex CPUs out there (<a target="_blank" href="http://www.luminarymicro.com/">Luminary Micro</a>, i
<a target="_blank" href="http://www.st.com/mcu/inchtml-pages-stm32.html">ST</a>, with new Cortex CPUs being announced by Atmel and other companies). I
am writing this tutorial because I needed to work on a Cortex CPU for
the eLua project and I couldn't find anywhere a complete set of
instructions for building GCC for this architecture. You'll need such a
toolchain if you want to compile eLua for Cortex-M3 CPUs.</p>
toolchain if you want to compile <b>eLua</b> for Cortex-M3 CPUs. Please note that you can also use a
pre-built toolchain to compile <b>eLua</b> (see <a href="toolchains.html">toolchains</a> for details) so building
one yourself is not strictly required.</p>
<p><strong>DISCLAIMER: I'm by no means a specialist in the
GCC/newlib/binutils compilation process. I'm sure that there are better
ways to accomplish what I'm describing here, however I just wanted a
quick and dirty way to build a toolchain, I have no intention in
becoming too intimate with the build process. If you think that what I
did is wrong, innacurate, or simply outrageously ugly, feel free to <a href="http://www.eluaproject.net/en/Contact">contact us</a> and I'll make the necessary corrections. And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
did is wrong, innacurate, or simply outrageously ugly, feel free to <a href="overview.html#contacts">contact us</a> and I'll make the necessary corrections.
And of course, this tutorial comes without any guarantees whatsoever.</strong></p>
<h2>Prerequisites</h2>
<p>To build your toolchain you'll need:</p>
<p>To build your toolchain you'll need:
<ul><li>a computer running Linux: I use Ubuntu 8.04, but any Linux
<ul><li><b>a computer running Linux</b>: I use Ubuntu, but any Linux
will do as long as you know how to find the equivalent of "apt-get" for
your distribution. I won't be going into details about this, google it
and you'll sure find what you need. It is also assumed that the Linux
system already has a "basic" native toolchain installed (gcc/make and
related). This is true for Ubuntu after installation. Again, you might
need to check your specific distribution.</li><li>GNU binutils: get it from <a href="http://ftp.gnu.org/gnu/binutils/">here</a>.
At the moment of writing this, the latest versions is 2.18, which for
some weird reason refuses to compile on my system, so I'm using 2.17
instead. <strong>UPDATE</strong>: you MUST use the new binutils 2.19
distribution for the Cortex toolchain, since it fixes some assembler
issues. You won't be able to compile eLua 0.5 or higher if you don't
use binutils 2.19.</li><li>GCC: since support for Cortex (Thumb2)
was only introduced staring with version 4.3.0, you'll need to download
version 4.3.0 or newer. As I'm writing this, the latest GCC version is
4.3.1, which I'll be using for this tutorial. Download it from <a href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li><li>Newlib:
as I'm writing this, the latest official Newlib version is 1.16.0.
However, the CVS version contains some fixes for the Thumb2
architecture, some of them in very important functions (like
setjmp/longjmp), so you'll need to fetch the sources from CVS (this
will most likely change when a new official Newlib version is
released). So go to <a href="http://sourceware.org/newlib/download.html">http://sourceware.org/newlib/download.html</a> and follow the instructions there in order to get the latest sources from CVS.</li><li>Also,
the tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul>
<p>Also, you need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential</th>
</tr>
</tbody></table>
need to check your specific distribution.</li>
<li><b>GNU binutils</b>: get it from <a target="_blank" href="http://ftp.gnu.org/gnu/binutils/">here</a>.
At the moment of writing this, the latest versions is 2.19.1, but it refuses to compile for ARM. Same goes for
2.19. In fact, the only newer version of Binutils that seems to work properly is
2.19.50, it can be downloaded from <a target="_blank" href="ftp://sourceware.org/pub/binutils/snapshots/">here</a>.
This is the version that we are going to use in this tutorial.</li>
<li><b>GCC</b>:as I'm writing this, the latest GCC version is
4.3.3, which I'll be using for this tutorial. Download it from <a target="_blank" href="http://gcc.gnu.org/mirrors.html">here</a> after choosing a suitable mirror.</li>
<li><b>Newlib</b>: as I'm writing this, the latest official Newlib version is 1.17.0, which I'll be using for this tutorial.
Download it from <a target="_blank" href="ftp://sources.redhat.com/pub/newlib/index.html">here</a>.</li>
<li>The tutorial assumes that you're using bash as your shell. If you use
something else, you might need to adjust some shell-specific commands. </li></ul></p>
<p>You need some support programs/libraries in order to compile the toolchain. To install them:</p>
<p><pre><code>$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential</code></pre></p>
<p>Next, decide where you want to install your toolchain. They
generally go in /usr/local/, so I'm going to assume
/usr/local/cross-cortex for this tutorial. To save yourself some
generally go in <i>/usr/local/</i>, so I'm going to assume
<i>/usr/local/cross-cortex</i> for this tutorial. To save yourself some
typing, set this path into a shell variable:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ export TOOLPATH=/usr/local/cross-cortex</th>
</tr>
</tbody></table>
<p><pre><code>$ export TOOLPATH=/usr/local/cross-cortex</code></pre></p>
<h2>Step 1: binutils</h2>
<p>This is the easiest step: unpack, configure, build.</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ tar -xvjf binutils-2.19.tar.bz2</th>
</tr>
<tr align="left">
<th>$ cd binutils-2.19</th>
</tr>
<tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork
--enable-multilib --with-gnu-as --with-gnu-ld --disable-nls</th>
</tr>
<tr align="left">
<th>$ make all</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
<tr align="left">
<th>$ export PATH=${TOOLPATH}/bin:$PATH</th>
</tr>
</tbody></table>
<p><pre><code>$ tar -xvjf binutils-2.19.50.tar.bz2
$ cd binutils-2.19.50
$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls
$ make all
$ sudo make install
$ export PATH=${TOOLPATH}/bin:$PATH
$ cd ../..</code></pre></p>
<p>Now you have your ARM "binutils" (assembler, linker, disassembler ...) in your PATH. They are fully capable of handling Thumb2.</p>
@ -122,140 +76,61 @@ typing, set this path into a shell variable:</p>
<p>In this step we build a "basic" GCC (that is, a GCC without any
support libs, which we'll use in order to build all the libraries for
our target). But first we need to make a slight modification in the
configuration files. Out of the box, the GCC 4.3.1/newlib combo won't
compile properly, giving a very weird "Link tests are not allowed after
GCC_NO_EXECUTABLES" error. After a bit of googling, I found the
solution for this:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ tar -xvjf gcc-4.3.1.tar.bz2</th>
</tr>
<tr align="left">
<th>$ cd gcc-4.3.1/libstdc++-v3</th>
</tr>
<tr align="left">
<th>$ joe configure.ac </th>
</tr>
</tbody></table>
<p> I'm using "joe" here as it's my favourite Linux text mode editor,
you can use any other text editor. Now find the line which says
"AC_LIBTOOL_DLOPEN" and comment it out by adding a "#" before it: </p>
<code># AC_LIBTOOL_DLOPEN<br></code>
<p>Save the modified file and exit the text editor</p>
<p><br></p>
<table class="table_cod">
<tbody><tr>
<th>$ autoconf</th>
</tr>
<tr>
<th style="text-align: left;">$ cd ..</th>
</tr>
</tbody></table>
<p>Great, now we know it will compile, so let's do it:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork
--enable-multilib --enable-languages="c,c++" --with-newlib
--without-headers --disable-shared --with-gnu-as --with-gnu-ld</th>
</tr>
<tr align="left">
<th>$ make all-gcc</th>
</tr>
<tr align="left">
<th>$ sudo make install-gcc</th>
</tr>
</tbody></table>
<p>On my system, the last line above (sudo make install-gcc) terminated
with errors, because it was unable to find our newly compiled binutils.
If this happens for any kind of "make install" command, this is a quick
way to solve it:</p>
<p><br></p>
<table style="width: 376px; height: 157px;" class="table_cod">
<tbody><tr>
<th>$ sudo -s -H</th>
</tr><tr><td align="undefined" valign="undefined"><code># export PATH=/usr/local/cross-cortex/bin:$PATH</code></td></tr><tr><td align="undefined" valign="undefined"><code># make install-gcc</code></td></tr><tr><td align="undefined" valign="undefined"><code># exit</code></td></tr>
</tbody></table>
<code><br><br><br></code>
our target). Let's compile it (and note that the install step is
a bit different from Newlib's):</p?
<p><pre><code>$ tar -xvjf gcc-4.3.3.tar.bz2
$ cd gcc-4.3.3
$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
$ make all-gcc
$ sudo -s -H
# export PATH=/usr/local/cross-cortex/bin:$PATH
# make install-gcc
# exit
$ cd ../..</code></pre></p>
<h2>Step 3: Newlib</h2>
<p>Again, some modifications are in order before we start compiling.
Because the CVS version of Newlib doesn't seem to have all the required
support for Thumb2 yet, we need to tell Newlib to skip some of its
libraries when compiling:</p>
<p>Some modifications are in order before we start compiling. Namely, we need to tell Newlib to skip some of its
libraries when compiling (I'm using <b>vim</b> to edit, feel free to use your editor of choice instead):</p>
<p><pre><code>$ tar -xvzf newlib-1.17.0.tar.gz
$ cd newlib-1.17.0
$ vim configure.ac
<p><br></p>
<b>Find this fragment of code:</b>
arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
<table class="table_cod">
<tbody><tr>
<th>$ cd [directory where the newlib CVS is located]</th>
</tr>
<tr>
<th style="text-align: left;">$ joe configure.ac</th>
</tr>
</tbody></table>
<b>And add "target-libgloss" to the "noconfigdirs" variable:</b>
arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
noconfigdirs="$noconfigdirs target-libffi target-qthreads <b>target-libgloss</b>"
libgloss_dir=arm
;;
<b>Save the modified file and exit the text editor.</b>
$ autoconf
<p> Find this fragment of code:</p>
<pre><code> arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )<br> noconfigdirs="$noconfigdirs target-libffi target-qthreads"<br> libgloss_dir=arm<br> ;;<br><br> And add "target-libgloss" to the "noconfigdirs" variable:<br><br> arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )<br> noconfigdirs="$noconfigdirs target-libffi target-qthreads target-libgloss"<br> libgloss_dir=arm<br> ;;<br><br> Save the modified file and exit the text editor<br> $ autoconf<br></code></pre>
<p>On one of the systems I ran the above sequence, it terminated with
<b>On one of the systems I ran the above sequence, it terminated with
errors, complaining that autoconf 2.59 was not found. I don't know why
that happens. 2.59 seems to be quite ancient, and the build ran equally
well with 2.61 (the version of autoconf on the system that gave the
error). If this happens to you, first execute autoconf --version to
find the actual version of your autoconf, then do this:</p>
error). If this happens to you, first execute <i>autoconf --version</i> to
find the actual version of your autoconf, then do this:</b>
<p><pre><code>$ vim config/override.m4
<b>Look for this line:</b>
[m4_define([_GCC_AUTOCONF_VERSION], [2.59])])
<p><br></p>
<b>And replace [2.59] with your actual version ([2.61] in my case).
Save the modified file and exit the text editor.</b>
<table class="table_cod">
<tbody><tr>
<th></th>
</tr>
</tbody></table>
<pre><code>$ joe config/override.m4<br><br> Look for this line:<br><br> [m4_define([_GCC_AUTOCONF_VERSION], [2.59])])<br><br> And replace [2.59] with your actual version ([2.61] in my case).<br> $ autoconf<br></code></pre>
$ autoconf</code></pre></p></code></pre></p>
<p>Once again, now we're ready to actually compile Newlib. But we need
@ -267,71 +142,38 @@ be as small as possible (as opposed to as fast as possible) and I only
wanted to keep what's needed from it in the final executable, I added
the "-ffunction-sections -fdata-sections" flags to allow the linker to
perform dead code stripping:</p>
<p><pre><code>$ mkdir build
$ cd build
$ ../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
$ make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
$ sudo -s -H
# export PATH=/usr/local/cross-cortex/bin:$PATH
# make install
# exit
$ cd ../..</code></pre></p>
<p>Some notes about the flags used in the above sequence:
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ mkdir build</th>
</tr>
<tr align="left">
<th>$ cd build</th>
</tr>
<tr align="left">
<th>$
../configure --target=arm-elf --prefix=$TOOLPATH --enable-interwork
--disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as
--disable-shared</th>
</tr>
<tr align="left">
<th>$ make
CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections
-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer
-mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256"
CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<p>Some notes about the flags used in the above sequence:</p>
<ul><li><code>--disable-newlib-supplied-syscalls:</code> this deserves a page of its own, but I won't cover it here. For an explanation, see for example <a href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a>.</li><li><code>-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__:</code> compile Newlib for size, not for speed (these are Newlib specific).</li><li><code>-mcpu=cortex-m3 -mthumb:</code> this tells GCC that you want to compile for Cortex. Note that you need both flags.</li><li><code>-D__thumb2__:</code> again, this is Newlib specific, and seems to be required when compiling Newlib for Cortex.</li><li><code>-Os -fomit-frame-pointer:</code> tell GCC to optimize for size, not for speed.</li><li><code>-D__BUFSIZ__=256:</code>
again Newlib specific, this is the buffer size allocated by default for
<ul><li><code>--disable-newlib-supplied-syscalls:</code> this deserves a page of its own, but I won't cover it here.
For an explanation, see for example <a target="_blank" href="http://openhardware.net/Embedded_ARM/NewLib_Stubs/">this page</a>.</li>
<li><code>-DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__:</code> compile Newlib for size, not for speed (these are Newlib specific).</li>
<li><code>-mcpu=cortex-m3 -mthumb:</code> this tells GCC that you want to compile for Cortex. Note that you need both flags.</li>
<li><code>-D__thumb2__:</code> again, this is Newlib specific, and seems to be required when compiling Newlib for Cortex.</li>
<li><code>-Os -fomit-frame-pointer:</code> tell GCC to optimize for size, not for speed.</li>
<li><code>-D__BUFSIZ__=256:</code>again Newlib specific, this is the buffer size allocated by default for
files opened via fopen(). The default is 1024, which I find too much
for an eLua, so I'm using 256 here. Of course, you can change this
value.</li></ul>
for <b>eLua</b>, so I'm using 256 here. Of course, you can change this value.</li></ul></p>
<h2>Step 4: full GCC</h2>
<p>Finally, in the last step of our tutorial, we complete the GCC
build. In this stage, a number of compiler support libraries are built
(most notably libgcc.a). Fortunately this is simpler that the Newlib
compilation step, as long as you remember that we want to build our
compiler support libraries for the Cortex architecture:</p>
<p><br></p>
<table class="table_cod">
<tbody><tr align="left">
<th>$ cd gcc-4.3.1/build</th>
</tr>
<tr align="left">
<th>$ make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all</th>
</tr>
<tr align="left">
<th>$ sudo make install</th>
</tr>
</tbody></table>
<p><pre><code>$ cd gcc-4.3.3/build
$ make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all
$ sudo make install
</code></pre></p>
<h2>All Done!</h2>
<p>Phew! That was quite a disturbing tutorial, with all that confusing
@ -339,5 +181,5 @@ flags lurking in every single shell line :) But at this point you
should have a fully functional Cortex GCC toolchain, which seems to be
something very rare, so enjoy it with pride.
If you need further clarification, or if the above instructions didn't
work for you, feel free to <a href="http://www.eluaproject.net/en/Contact">contact us</a>.</p><p></p><p></p>
</div></body></html>
work for you, feel free to <a href="overview.html#contacts">contact us</a>.</p>
</body></html>

View File

@ -1,9 +1,18 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Toolchain building tutorials</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Building_GCC_for_i386" class="local">Toolchain Build</a></h3><a name="title" href="http://www.eluaproject.net/en/Building_GCC_for_i386" class="local"></a>eLua can be compiled and link edited with GCC Toolchains.<br><br>.....................<br><br>
</body></html>
<body style="background-color: rgb(255, 255, 255);">
<h3>Toolchain building tutorials</h3>
<p>Although not strictly required, you can roll your own toolchain that can be used to build <b>eLua</b>. As explained <a href="toolchains.html">here</a>, <b>eLua</b> can generally be built with
ready-made toolchains (with the exception of the i386 port), but you might still want to build your own toolchain for various reasons:
<ul>
<li>have a better control over the compilation options of different libraries (most notably libc).</li>
<li>use a specific version of gcc/newlib.</li>
<li>your toolchain might generate smaller code than a pre-built toolchain.</li>
<li>get familiar with the binutils/gcc/newlib build system (not related to <b>eLua</b>, but still a good reason).</li>
</ul></p>
<p>Three separate tutorials explain the procedure of building a regular ARM toolchain, a Cortex-M3 toolchain and an i386 toolchain, respectively.</p>
</body></html>

View File

@ -1,13 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Booting your PC in eLua</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Booting_your_PC_in_eLua" class="local">Booting your PC in eLua</a></h3>
<div class="content">
<body style="background-color: rgb(255, 255, 255);">
<h3>Booting your PC in eLua</h3>
<p>That's right: after following this tutorial, your PC will boot
directly into Lua! No OS there (this explains why the boot process is
so fast), just you and Lua. You'll be able to use the regular Lua
@ -16,14 +14,13 @@ code.</p>
<h2>Details</h2>
<p>Booting Lua involves using the well known <a href="http://www.gnu.org/software/grub/">GRUB</a> that will be used to load a <a href="http://www.gnu.org/software/grub/manual/multiboot/">multiboot</a>
compliant ELF file that contains our eLua code. Since the eLua code and
the build instructions are not available yet, I'll be providing a
direct link to the ELF file. The code runs in protected mode, so you
<p>Booting <b>eLua</b> involves using the well known <a target="_blank" href="http://www.gnu.org/software/grub/">GRUB</a> that will be used to load
a <a target="_blank" href="http://www.gnu.org/software/grub/manual/multiboot/">multiboot</a>
compliant ELF file that contains our <b>eLua</b> code. The code runs in protected mode, so you
have access to your whole memory. The code does not access any kind of
storage device (HDD, CDROM, floppy), so if you're worried that it might
brick your system, you can relax now :) I'm only using some very basic
keyboard and VGA "drivers", so all you're risking is a system freeze
keyboard and VGA textmode "drivers", so all you're risking is a system freeze
(even this is highly unlikely), nothing a good old RESET can't handle
(be sure to use the hardware reset though, CTRL+ALT+DEL is not handled
by the code). But just in case, see also the next section.</p>
@ -36,7 +33,7 @@ need to worry about that. Also it doesn't try to reprogram your video
card registers, so it can't harm it or your monitor. It only implements
a "protected mode keyboard driver" that can't physically damage
anything in your system. In short, I made every effort to make the code
as harmless as possible. I tested it on 5 different computers and in 2 <a href="http://www.virtualbox.org/">VirtualBox</a>
as harmless as possible. I tested it on 5 different computers and in 2 <a target="_blank" href="http://www.virtualbox.org/">VirtualBox</a>
emulators, and nothing bad happened. That said, there are no warranties
of any kind. In the very unlikely event that something bad does happen
to your system, you have my sincere sympathy, but I can't be held
@ -44,50 +41,61 @@ responsible for that.</strong></p>
<h2>Prerequisites</h2>
<p>To boot your computer in Lua you'll need:</p>
<p>To boot your computer in Lua you'll need:
<ul><li>a 386 or better computer running Linux. I actually tested
<ul>
<li>a 386 or better computer running Linux. I actually tested
this only on Pentium class computers, but it should run on a 386
without problems.</li><li><a href="http://www.gnu.org/software/grub/">GRUB</a>.
without problems.</li>
<li><a target="_blank" href="http://www.gnu.org/software/grub/">GRUB</a>.
Since you're running Linux, chances are you're already using GRUB as
your bootloader. If not, you must install it. You don't need to install
it on your HDD; a floppy, an USB stick or even a CDROM will work as
well. I won't cover the GRUB installation procedure here, just google
for "install grub on floppy/usb/cdrom" and you'll sure find what you're
looking for. You can try for example <a href="http://orgs.man.ac.uk/documentation/grub/grub_3.html">here</a>, <a href="http://www.freesoftwaremagazine.com/articles/grub_intro/">here</a> or <a href="http://www.mayrhofer.eu.org/Default.aspx?pageindex=6&amp;pageid=45">here</a>.</li><li>The eLua ELF file. Download it from <a href="http://elua.berlios.de/surprise">here</a>. OR <a href="http://www.eluaproject.net/en/Downloads">download eLua</a> and compile it for the i386 architecture using a toolchain that you can build by following <a href="http://www.eluaproject.net/en/Building_GCC_for_i386">this tutorial</a>.</li><li>a text editor to edit your GRUB configuration file.</li></ul>
looking for. You can try for example <a target="_blank" href="http://orgs.man.ac.uk/documentation/grub/grub_3.html">here</a>,
<a target="_blank" href="http://www.freesoftwaremagazine.com/articles/grub_intro/">here</a> or
<a target="_blank" href="http://www.mayrhofer.eu.org/Default.aspx?pageindex=6&pageid=45">here</a>.</li>
<li>The <b>eLua</b> i386 ELF file, see <a href="downloads.html">here</a> for instructions on how to obtain it. OR <a href="downloads.html">download the eLua source distribution</a> and compile it
for the i386 architecture using a toolchain that you can build by following <a href="tc_386.html">this tutorial</a>.</li>
<li>a text editor to edit your GRUB configuration file.</li>
</ul></p>
<p>The rest of this tutorial assumes that you're using Linux with GRUB,
and that GRUB is located in /boot/grub, which is true for many Linux
distributions (I'm using Ubuntu 8.04).</p>
and that GRUB is located in <i>/boot/grub</i>, which is true for many Linux
distributions.</p>
<h2>Let's do this</h2>
<p>First, copy the <a href="http://elua.berlios.de/surprise">eLua ELF file</a> to your "/boot" directory:</p>
<pre><code>$ sudo cp surprise /boot<br></code></pre>
<p>First, copy the eLua ELF file to your "/boot" directory:</p>
<p><pre><code>$ sudo cp surprise /boot<br></code></pre></p>
<p>Next you need to add another entry to your GRUB menu file (/boot/grub/menu.lst). Edit it and add this entry:</p>
<p>Next you need to add another entry to your GRUB menu file (<i>/boot/grub/menu.lst</i>). Edit it and add this entry:</p>
<pre><code> title Surprise!<br> root (hd0,0)<br> kernel /boot/surprise<br> boot<br></code></pre>
<p><pre><code> title eLua
root (hd0,0)
kernel /boot/elua_lua_i386.elf <b>(change this if the eLua file name is different)</b>
boot</code></pre></p>
<p>You may need to modify the root (hd0,0) line above to match your
boot device. The best way to do this is to look in the menu.lst file
<p>You may need to modify the <i>root (hd0,0)</i> line above to match your
boot device. The best way to do this is to look in the <i>menu.lst</i> file
for the entry that boots your Linux kernel. It should look similar to
this:</p>
<pre><code> title Ubuntu, kernel 2.6.20-16-generic<br> root (hd0,2)<br> kernel /boot/vmlinuz-2.6.20-16-generic<br> initrd /boot/initrd.img-2.6.20-16-generic<br> savedefault <br></code></pre>
<p><pre><code> title Ubuntu, kernel 2.6.20-16-generic
<b>root (hd0,2)</b>
kernel /boot/vmlinuz-2.6.20-16-generic
initrd /boot/initrd.img-2.6.20-16-generic
savedefault</code></pre></p>
<p>After you find it, simply use the root (hdx,y) line from that entry
(root (hd0,2) in the example above) in your newly created entry instead
of root (hd0,0).
<p>After you find it, simply use the <i>root (hdx,y)</i> line from that entry
(<i>root (hd0,2)</i> in the example above) in your newly created entry instead
of root (hd0,0).<br>
That's it! Now reboot your computer, and when the GRUB boot menu
appears, choose "Surprise!" from it. You can even type dofile
"/rom/bisect.lua" to execute the "bisect.lua" test file. Enjoy!
As usual, if you need more details, you can <a href="http://www.eluaproject.net/en/Contact">contact us</a>.
Also, if you want to have you own USB stick that boots Lua, let me
know. If enough people manifest their interest in this, I'll add
another tutorial on how to do it (I already have an USB stick that
boots Lua, of course :) ).</p>
</div></body></html>
appears, choose "eLua" from it. See <a href="using.html">using eLua</a> for
instructions on how to use your newly installed self-booting programming language :)</p>
<p>As usual, if you need more details, you can <a href="overview.html#contacts">contact us</a>.
Also, if you want to go one step ahead and have you own USB stick that boots <b>eLua</b>, check <a href="tut_bootstick.html">this tutorial</a>.</p>
</body></html>

View File

@ -1,57 +1,60 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Booting eLua from an USB stick</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Booting_eLua_from_a_stick" class="local">Booting eLua from a stick</a></h3>
<div class="content">
<p>This is follow up of <a href="http://www.eluaproject.net/en/Booting_your_PC_in_eLua">this tutorial</a>.
After completing it you'll be able to boot eLua directly from your USB
<body style="background-color: rgb(255, 255, 255);">
<h3>Booting eLua from an USB stick</h3>
<p>This is follow up of <a href="tut_bootpc.html">this tutorial</a>.
After completing it you'll be able to boot <b>eLua</b> directly from your USB
stick (provided, of course, that your computer can boot from an USB
stick, which is true for most computers nowadays). You might want to
check the <a href="http://www.eluaproject.net/en/Booting_your_PC_in_eLua">boot your PC in eLua</a>
check the <a href="tut_bootpc.html">boot your PC in eLua</a>
tutorial first for more details. If you have an old USB stick that you
don't use anymore, and/or the shear geekness of this idea makes you
feel curious, this tutorial is definitely for you :)</p>
<h2>Disclaimer</h2>
<p><strong>As mentioned <a href="http://www.eluaproject.net/en/Booting_your_PC_in_eLua">here</a>,
<p><strong>As mentioned <a href="tut_bootpc.html">here</a>,
the code won't try to access any kind of storage (HDD, CDROM, floppy),
not even for reading, so you don't need to worry about that. Also it
doesn't try to reprogram your video card registers, so it can't harm it
or your monitor. It only implements a "protected mode keyboard driver"
that can't physically damage anything in your system. In short, I made
every effort to make the code as harmless as possible. I tested it on 5
different computers and in 2 <a href="http://www.virtualbox.org/">VirtualBox</a>
different computers and in 2 <a htarget="_blank" ref="http://www.virtualbox.org/">VirtualBox</a>
emulators, and nothing bad happened. That said, there are no warranties
of any kind. In the very unlikely event that something bad does happen
to your system, you have my sincere sympathy, but I can't be held
responsible for that. Also, I can't be held responsible if you mess up
your HDD by failing the GRUB installation procedure (even though, once
again, this shouldn't be possible unless you really insist on messing
it up). If you're new to computers, this tutorial might not be for you.
it up). If you're new to computers or Linux, this tutorial might not be for you.
Your call.</strong></p>
<h2>Prerequisites</h2>
<p>To have your own bootable eLua USB stick you'll need:</p>
<p>To have your own bootable eLua USB stick you'll need:
<ul><li>an USB stick. I tested this on an 128M USB stick, because
it's the smallest I could find. You should be OK with a 4M stick or
even a 2M stick</li><li>a computer running Linux. I use Ubuntu, but any other distribution is fine.</li><li><a href="http://www.gnu.org/software/grub/">GRUB</a>.
even a 2M stick</li>
<li>a computer running Linux. I use Ubuntu, but any other distribution is fine.</li>
<li><a target="_blank" href="http://www.gnu.org/software/grub/">GRUB</a>.
Since you're running Linux, chances are you're already using GRUB as
your bootloader. If not, you must install it on your HDD, or at least
know how to install it directly on the USB stick. I won't go into
details here, google it and you'll find lots of good articles about
GRUB. This tutorial assumes that you're using GRUB as your bootloader.</li><li>The eLua ELF file. Download it from <a href="http://elua.berlios.de/surprise">here</a>. OR <a href="http://www.eluaproject.net/en/Downloads">download eLua</a> and compile it for the i386 architecture using a toolchain that you can build by following <a href="http://www.eluaproject.net/en/Building_GCC_for_i386">this tutorial</a>.</li><li>a text editor to edit your GRUB configuration file.</li></ul>
GRUB. This tutorial assumes that you're using GRUB as your bootloader.</li>
<li>The <b>eLua</b> i386 ELF file, see <a href="downloads.html">here</a> for instructions on how to obtain it. OR <a href="downloads.html">download the eLua source distribution</a> and compile it
for the i386 architecture using a toolchain that you can build by following <a href="tc_386.html">this tutorial</a>.</li>
<li>a text editor to edit your GRUB configuration file.</li></ul></p>
<p>The rest of this tutorial assumes that you're using Linux with GRUB,
and that GRUB is located in /boot/grub, which is true for many Linux
and that GRUB is located in <i>/boot/grub</i>, which is true for many Linux
distributions.</p>
<h2>Backup your stick</h2>
@ -65,39 +68,69 @@ tutorial).</p>
chances are you'll need to re-partition and re-format your stick before
installing GRUB on it. The problem is that many sticks have a very
creative, non-standard partition table, and GRUB doesn't like that. I
looked at the partition table on my eLua USB stick, and it scared me to
looked at the original partition table of my <b>eLua</b> USB stick and it scared me to
death, so I had to follow this procedure. In short, you'll need to
delete all the partitions from your stick, create a new partition, and
then format it. For a step by step tutorial check here.</p>
then format it. For a step by step tutorial check <a target="_blank" href="http://www.4p8.com/eric.brasseur/suse9.1_usb_stick.html">here</a>.</p>
<h2>Install GRUB on your stick</h2>
<p>First, mount your freshly formatted stick (I'm going to assume that the mount directory is /mnt):</p>
<p>First, mount your freshly formatted stick (I'm going to assume that the mount directory is <i>/mnt</i>):</p>
<pre><code> $ sudo mount /dev/sda1 /mnt<br></code></pre>
<p><pre><code>$ sudo mount /dev/sda1 /mnt<br></code></pre></p>
<p>(of course, you'll need to change /dev/sda1 to reflect the physical location of your USB stick).
<p>(of course, you'll need to change <i>/dev/sda1</i> to reflect the physical location of your USB stick. You should know the physical location from the previous step).
Then copy the required GRUB files to your stick:</p>
<pre><code> $ cd /mnt<br> $ mkdir boot<br> $ mkdir boot/grub<br> $ cd /boot/grub<br> $ cp stage1 fat_stage1_5 stage2 /mnt/boot/grub<br></code></pre>
<p><pre><code>$ cd /mnt
$ mkdir boot
$ mkdir boot/grub
$ cd /boot/grub
$ cp stage1 fat_stage1_5 stage2 /mnt/boot/grub</code></pre></p>
<p>Copy the <b>eLua</b> ELF file (<i>elua_lua_i386.elf</i> in this example, change the name if needed) to the GRUB directory as well:</p>
<p>Copy the <a href="http://elua.berlios.de/surprise">eLua ELF file</a> to the GRUB directory as well:</p>
<p><pre><code>$ cp elua_lua_i386.elf /mnt/boot/grub</code></pre></p>
<pre><code> $ cp surprise /mnt/boot/grub<br></code></pre>
<p>Create a <i>menu.lst</i> file for GRUB with you favorite text editori (I'm using vim):</p>
<p>Create a menu.lst file for GRUB with you favorite text editor (I'm using joe):</p>
<pre><code> $ cd /mnt/boot/grub<br> $ joe menu.lst<br> title Surprise!<br> root (hd0,0)<br> kernel /boot/grub/surprise<br> boot<br></code></pre>
<p><pre><code>$ cd /mnt/boot/grub
$ vim menu.lst
title eLua
root (hd0,0)
kernel /boot/grub/elua_lua_i386.elf
boot</code></pre></p>
<p>Now it's time to actually install GRUB on the stick.</p>
<pre><code> $ sudo -s -H<br> # grub<br> Now we need to find the GRUB name of our USB stick. We'll use the "find" command from<br> GRUB and our "surprise" file to accomplish this:<br><br> grub&gt; find /boot/grub/surprise<br> (hd2,0)<br><br> GRUB should respond with a single line (like (hd2,0) above). If it gives you more <br> than one line, something is wrong. Maybe you also installed eLua on your HDD? If so, <br> delete the /boot/grub/surprise file from your HDD and try again.<br> You might get a different (hdx,y) line. If so, just use it instead of (hd2,0) in the rest of <br> this tutorial.<br><br> grub&gt; root (hd2,0)<br> grub&gt; setup (hd2)<br> Checking if "/boot/grub/stage1" exists... yes<br> Checking if "/boot/grub/stage2" exists... yes<br> Checking if "/boot/grub/fat_stage1_5" exists... yes<br> Running "embed /boot/grub/fat_stage1_5 (hd2)"... 15 sectors are embedded.<br> succeeded<br> Running "install /boot/grub/stage1 (hd2) (hd2)1+15 p (hd2,0)/boot/grub/stage2<br> /boot/grub/menu.lst"... succeeded<br> Done. <br> grub&gt; quit<br></code></pre>
<p><pre><code>$ sudo -s -H
# grub
<b>Now we need to find the GRUB name of our USB stick. We'll use the "find" command from
GRUB and our eLua ELF file to accomplish this:</b>
grub&gt; find /boot/grub/elua_lua_i386.elf
(hd2,0)
<b>GRUB should respond with a single line (like (hd2,0) above). If it gives you more
than one line, something is wrong. Maybe you also installed eLua on your HDD? If so,
delete the /boot/grub/elua_lua_i386.elf file from your HDD and try again.
You might get a different (hdx,y) line. If so, just use it instead of (hd2,0) in the
rest of this tutorial</b>.
grub&gt; root (hd2,0)
grub&gt; setup (hd2)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/fat_stage1_5" exists... yes
Running "embed /boot/grub/fat_stage1_5 (hd2)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd2) (hd2)1+15 p (hd2,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.
grub&gt; quit</code></pre></p>
<p>That's it! Now reboot your computer, make sure that your BIOS is set
to boot from USB, and enjoy! You can even type dofile "/rom/bisect.lua"
to execute the "bisect.lua" test file.
As usual, if you need more details, you can <a href="http://www.eluaproject.net/en/Contact">contact us</a>.</p>
</div></body></html>
to boot from USB, and enjoy! See <a href="using.html">using eLua</a> for
instructions on how to use your new toy :).</p>
<p>As usual, if you need more details, you can <a href="overview.html#contacts">contact us</a>.</p>
</body></html>

View File

@ -1,28 +1,29 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Using OpenOCD</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Using_OpenOCD" class="local">Using OpenOCD</a></h3>
<div class="content">
<body style="background-color: rgb(255, 255, 255);">
<h3>Using OpenOCD</h3>
<p>This section presents <a target="_blank" href="http://openocd.berlios.de">OpenOCD</a>, a tool used to program <b>eLua</b> on some of its targets.
If you'd rather skip the long and boring OpenOCD introduction and
skip directly to the OpenOCD script downloads, use the links below.
<h2>Quick downloads</h2>
<p>If you'd rather skip the long and boring OpenOCD introduction and
skip directly to the OpenOCD script downloads, use the links below.</p>
<ul><li><p><a href="http://www.eluaproject.net/en/Using_OpenOCD?p=Using_OpenOCD#str9files">Configuration files for STR9-comStick</a></p></li><li><p><a href="http://www.eluaproject.net/en/Using_OpenOCD?p=Using_OpenOCD#lpc2888files">Configuration files for LPC2888</a></p></li><li><p><a href="http://www.eluaproject.net/en/Using_OpenOCD?p=Using_OpenOCD#str7files">Configuration files for STR7</a></p></li></ul>
<ul>
<li><a href="#str9files">Configuration files for STR9-comStick</a></li>
<li><a href="#lpc2888files">Configuration files for LPC2888</a></li>
<li><a href="#str7files">Configuration files for STR7</a></li>
</ul></p>
<h2>About OpenOCD</h2>
<p><a href="http://elua.berlios.de/tut_openocd.html">OpenOCD</a> is an open source tool that can be used to connect to a CPU's <a href="http://en.wikipedia.org/wiki/JTAG">JTAG</a>
<p><a target="_blank" href="http://openocd.berlios.de">OpenOCD</a> is an open source tool that can be used to connect to a CPU's
<a target="_blank" href="http://en.wikipedia.org/wiki/JTAG">JTAG</a>
interface. Using OpenOCD and a physical JTAG connection allows you to
burn the on-chip flash memory of your CPU (or to load your code
directly to RAM), to read the internal CPU memory (Flash/RAM) and to
use <a href="http://sourceware.org/gdb/">gdb</a> to debug your code.
use <a target="_blank" href="http://sourceware.org/gdb/">gdb</a> or other debuggers to debug your code.
Needless to say, this is a very handy tool (and especially handy if
your CPU happens to be built around an ARM core, since in this case you
can be almost certain that it has a JTAG interface that you can use).
@ -34,39 +35,47 @@ while to get used to. Worse, I feel that it is not very well
docummented. The project's wiki does give a few good pointers about all
the configuration parameters, and there are some good OpenOCD tutorials
out there, but none of them tells the whole story. And the syntax (and
even some commands) seems to change slightly between releases, which
even some commands) seems to change between releases, which
makes things even more confusing. This is why I generally choose to use
a different firmware burning tool when available, and resort to OpenOCD
only for targets that lack a proper firmware burning tool. If you need
to debug your code, however, you probably want to use OpenOCD, since
the alternatives aren't cheap.
To summarize, you can forget about OpenOCD when:</p>
To summarize, you can forget about OpenOCD when:
<ul><li><p>your CPU manufacturer provides a special tool for
<ul>
<li>your CPU manufacturer provides a special tool for
firmware burning. This is quite often the case, but more often that not
the forementioned tools work only in Windows.</p></li><li><p>you
must debug your code, but you have a good intuition about where the
the forementioned tools work only in Windows.</li>
<li>you must debug your code, but you have a good intuition about where the
problem is located. In this case, simply connecting a LED to a PIO port
and turning it on and off from different parts of your code until you
figure out exactly what's the problem can work wonders. I can't
remember when was the last time I used gdb for debugging, since "LED
debugging" was all I needed. </p></li></ul>
debugging" was all I needed. </li>
</ul></p>
<p>On the other hand, you should probably use OpenOCD when:</p>
<p>On the other hand, you should probably use OpenOCD when:
<ul><li><p>your CPU manufacturer doesn't provide a special tool for firmware burning (or it does, but it's not what you need).</p></li><li><p>you're using Linux, MacOS or another OS that is not supported by the firmware burning tool.</p></li><li><p>you need to do some serious debugging in order to understand what's wrong with your application.</p></li></ul>
<ul>
<li>your CPU manufacturer doesn't provide a special tool for firmware burning (or it does, but it's not what you need).</li>
<li>you're using Linux, MacOS or another OS that is not supported by the firmware burning tool.</li>
<li>you need to do some serious debugging in order to understand what's wrong with your application.</li>
</ul></p>
<p>If you decided that you don't need OpenOCD after all, now it's a
good time to navigate away from this page and save yourself from some
possible symptoms of headache. If you need OpenOCD, read on, I'll try
to make this as painless as possible. However, don't expect this to be
a full tutorial on OpenOCD, because it's not; my intention is to give
you just enough data to use OpenOCD for burning eLua on your board.
you just enough data to use OpenOCD for burning <b>eLua</b> on your board.
Because of this, I won't be covering debugging with OpenOCD here, just
firmware burning. And, before we begin, please read and understand the
next paragraph.</p>
<p>DISCLAIMER: using OpenOCD improperly may force your CPU to behave
<h2>Disclaimer</h2>
<p><b>Using OpenOCD improperly may force your CPU to behave
unexpectedly. While physically damaging your CPU as a result of using
OpenOCD is very hard to accomplish, you might end up with a locked
chip, or you might erase a memory area that was not supposed to be
@ -75,18 +84,18 @@ rendering it unusable). If you modify the configuration scripts that
I'm going to provide, make sure that you know what you're doing. Also,
I'm not at all an OpenOCD expert, so my configuration scripts might
have errors, even though I tested them. In short, this tutorial comes
without any guarantees whatsoever.</p>
without any guarantees whatsoever.</b></p>
<h2>Getting OpenOCD</h2>
<p>If you're on Windows, the best place to get OpenOCD already compiled and ready to run is to visit the <a href="http://www.yagarto.de/">Yagarto home page</a>.
<p>If you're on Windows, the best way to get OpenOCD already compiled and ready to run is to
visit the <a target="_blank" href="http://www.yagarto.de/">Yagarto home page</a>.
They provide a very nice OpenOCD installer, and they seem to keep up
with OpenOCD progress (the versions on the Yagarto site are not
"bleeding edge", but there are quite fresh nevertheless). If you're on
Linux, you can always use apt-get or your distribution-specific package
manager:</p>
<pre><code>$ sudo apt-get install openocd<br></code></pre>
<p><pre><code>$ sudo apt-get install openocd<br></code></pre></p>
<p>There is a catch here though: the OpenOCD version that I get from
apt-get is dated 2007-09-05, while the Yagarto OpenOCD version is from
@ -96,8 +105,9 @@ instructions are relevant to the Yagarto version. As mentioned in the
introduction, the meaning and parameters of different commands might
change between OpenOCD version, so if you want to use the Yagarto
version on your non Windows system, you'll have to build it from source
(see below).
The main resource on how to build OpenOCD from source is the <a href="http://openfacts.berlios.de/index-en.phtml?title=Building_OpenOCD">OpenOCD build page</a> from the OpenOCD wiki. Also, a very good tutorial can be found <a href="http://forum.sparkfun.com/viewtopic.php?t=11221">here</a>.
(see below).<br>
The main resource on how to build OpenOCD from source is the <a target="_blank" href="http://openfacts.berlios.de/index-en.phtml?title=Building_OpenOCD">OpenOCD build page</a>
from the OpenOCD wiki. Also, a very good tutorial can be found <a target="_blank" href="http://forum.sparkfun.com/viewtopic.php?t=11221">here</a>.
I'm not going to provide step by step build instructions, since the two
links that I mentioned cover this very well, and the build process is
relatively straightforward. However, since both tutorials describe how
@ -105,67 +115,95 @@ to build the bleeding edge version of OpenOCD, you'll need a slight
modification do build the Yagarto version instead. The modification is
in the SVN checkout step. Replace this step:</p>
<pre><code>$ svn checkout svn://svn.berlios.de/openocd/trunk<br></code></pre>
<p><pre><code>$ svn checkout svn://svn.berlios.de/openocd/trunk<br></code></pre></p>
<p>with this step ('717' is the SVN revision of the Yagarto OpenOCD build):</p>
<p>With this step ('717' is the SVN revision of the Yagarto OpenOCD build):</p>
<pre><code>$ svn checkout -r 717 svn://svn.berlios.de/openocd/trunk<br></code></pre>
<p><pre><code>$ svn checkout <b>-r 717</b> svn://svn.berlios.de/openocd/trunk<br></code></pre></p>
<p>Follow the rest of the build instructions, and in the end you should have a working OpenOCD.</p>
<h2>Supported targets</h2>
<p>I couldn't find a good page with a list of the targets that are
<p>I couldn't find a good list of the targets that are
supported by OpenOCD. So, if you want to check if your particular CPU
is supported by OpenOCD, I recommend getting the latest sources (as
described in the previous section) and listing the
trunk/src/target/target directory:</p>
<pre><code>$ ls trunk/src/target/target<br> at91eb40a.cfg<br> at91r40008.cfg<br> cfi.c<br> ....<br> str9comstick.cfg<br> ....<br></code></pre>
<p><pre><code>$ ls trunk/src/target/target
at91eb40a.cfg
at91r40008.cfg
....
str9comstick.cfg
....
</code></pre></p>
<p>If this listing has something that looks like your CPU name, you're
in luck. OpenOCD has support for LPC from NXP, AT91SAM cfrom Atmel,
STR7/STR9 from ST, and many others.</p>
<p>If this listing has something that looks like your CPU name, you're lucky. OpenOCD has support for LPC from NXP, AT91SAM cfrom Atmel, STR7/STR9 from ST, and many others.</p>
<h2>Using OpenOCD</h2>
<p>To use OpenOCD, you'll need:</p>
<ul><li>the OpenOCD executable, as described above</li><li>a board with a JTAG interface</li><li>a JTAG adapter</li></ul>
<ul>
<li>the OpenOCD executable, as described above</li>
<li>a board with a JTAG interface</li>
<li>a JTAG adapter</li>
</ul>
<p>In some cases, your CPU board might provide a built in JTAG adapter. For example, my <a href="http://www.luminarymicro.com/products/lm3s8962_can_ethernet_evaluation_kit.html">LM3S8962</a>
<p>In some cases, your CPU board might provide a built in JTAG adapter. For example,
my <a target="_blank" href="http://www.luminarymicro.com/products/lm3s8962_can_ethernet_evaluation_kit.html">LM3S8962</a>
board provides both an USB-to-JTAG and an USB-to-serial converter built
on board, switching between them automatically. The same is true for my
<a href="http://www.hitex.com/index.php?id=383">STR9-comStick</a>. On the other hand, my <a href="http://www.olimex.com/dev/sam7-ex256.html">SAM7-EX256</a> board has only a JTAG connector, I need a separate JTAG adapter to connect to it. I'm using <a href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a> from Olimex, but there are other affordable USB-to-JTAG adapters out there, like the Amontec <a href="http://www.amontec.com/jtagkey-tiny.shtml">JTAGKey-Tiny</a>. Not to mention that you can <a href="http://www.hs-augsburg.de/%7Ehhoegl/proj/usbjtag/usbjtag.html">build your ownt</a>.
Although USB is my interface of choice, you'll find JTAG adapters for
on board, switching between them automagically. The same is true for my
<a target="_blank" href="http://www.hitex.com/index.php?id=383">STR9-comStick</a>.
On the other hand, my <a target="_blank" href="http://www.olimex.com/dev/sam7-ex256.html">SAM7-EX256</a> board has only a JTAG connector, I need a separate JTAG adapter to connect to it.
I'm using <a target="_blank" href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a> from Olimex, but there are other affordable USB-to-JTAG adapters out there,
like the <a target="_blank" href="http://www.amontec.com/jtagkey-tiny.shtml">Amontec JTAGKey-Tiny</a>. Not to mention that you can
<a target="_blank" href="http://www.hs-augsburg.de/%7Ehhoegl/proj/usbjtag/usbjtag.html">build your own</a>. Although USB is my interface of choice, you'll find JTAG adapters for
PC LPT ports too. The good news is that once you buy a JTAG adapter,
chances are that it will work with many boards with different CPUs,
since the JTAG connector layout is standardized and the JTAG adapters
are generally able to work with different voltages.
To actually use OpenOCD, you'll need a configuration file. The
are generally able to work with different voltages.<br>
To actually use OpenOCD, the next thing you'll need is a configuration file. The
configuration file is the one that lets OpenOCD know about your setup,
such as:</p>
<pre><code>* the kind of JTAG interface that you're using.<br>* the actual hardware platform you're using (ATM7TDMI, ARM966 and others).<br>* the memory configuration of your CPU (flash banks).<br>* the script used to program the flash memory.<br></code></pre>
such as:
<ul>
<li>the kind of JTAG interface that you're using.</li>
<li>the actual hardware platform you're using (ATM7TDMI, ARM966 and so on).</li>
<li>the memory configuration of your CPU (flash banks).</li>
<li>the script used to program the flash memory.</li>
</ul></p>
<p>Presenting a list of all the possible configuration options and
their meaning is way beside the scope of this document, so I'm not
going to do it, I'll give an example instead. For the example I'm going
to use parts of my STR-comStick configuration file (comstick.cfg)
going to do it, I'll give an example instead. I'm going
to use parts of my STR9-comStick configuration file (comstick.cfg)
adapted from the OpenOCD distribution and from other examples (don't
worry, I'll provide full download links for this file later on). First
we need to tell OpenOCD that we're using a the STR9-comStick
USB-to-JTAG adapter:</p>
<pre><code>interface ft2232<br>ft2232_device_desc "STR9-comStick A"<br>ft2232_layout comstick<br>ft2232_vid_pid 0x0640 0x002C<br>jtag_speed 4<br>jtag_nsrst_delay 100<br>jtag_ntrst_delay 100<br></code></pre>
<p><pre><code>interface ft2232
ft2232_device_desc "STR9-comStick A"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x002C
jtag_speed 4
jtag_nsrst_delay 100
jtag_ntrst_delay 100
</code></pre></p>
<p>Also, OpenOCD needs to know what's our target and its memory layout:</p>
<pre><code>target arm966e little run_and_init 1 arm966e<br>run_and_halt_time 0 50<br><br>working_area 0 0x50000000 32768 nobackup<br><br>flash bank str9x 0x00000000 0x00080000 0 0 0<br>flash bank str9x 0x00080000 0x00008000 0 0 0 <br></code></pre>
<p><pre><code>target arm966e little run_and_init 1 arm966e
run_and_halt_time 0 50
working_area 0 0x50000000 32768 nobackup
flash bank str9x 0x00000000 0x00080000 0 0 0
flash bank str9x 0x00080000 0x00008000 0 0 0</code></pre></p>
<p>This tells OpenOCD that our target is an ARM966-E running in little
@ -175,36 +213,50 @@ it's 0x8000 bytes in size. Finally, OpenOCD must know what's the name
of our script file (this is the file that is used to pysically program
the CPU memory):</p>
<pre><code>#Script used for FLASH programming<br>target_script 0 reset str91x_flashprogram.script<br></code></pre>
<p><pre><code>#Script used for FLASH programming
target_script 0 reset str91x_flashprogram.script</code></pre></p>
<p>The contents of the str91x_flashprogram.script is very target-dependent:</p>
<pre><code>wait_halt<br>str9x flash_config 0 4 2 0 0x80000<br>flash protect 0 0 7 off<br>flash erase_sector 0 0 7<br>flash write_bank 0 main.bin 0<br>reset run<br>sleep 10<br>shutdown<br></code></pre>
<p><pre><code>wait_halt
str9x flash_config 0 4 2 0 0x80000
flash protect 0 0 7 off
flash erase_sector 0 0 7
flash write_bank 0 main.bin 0
reset run
sleep 10
shutdown</code></pre></p>
<p>I'm not even going to attempt to explain this one :) Basically it
unprotects the flash, erases it, writes the contents of "main.bin" to
flash, and then resets the CPU. If you need to flash a file with a
different name, the only thing you need to modify is the "main.bin" in
the "flash write_bank" line.
the "flash write_bank" line.<br>
To use all this, you need to tell OpenOCD to use our configuration file:</p>
<pre><code>openocd-ftd2xx -f comstick.cfg<br></code></pre>
<p><pre><code>openocd-ftd2xx -f comstick.cfg<br></code></pre></p>
<p>(note: under Windows, the OpenOCD executable name is often
<p>(<b>note</b>: under Windows, the OpenOCD executable name is often
"openocd-ftd2xx". Under Linux it's simply "openocd". Replace it with
the actualy name with your executable.)
That's it for your OpenOCD crash course. I realise that there's much
the actualy name with your executable).</p>
<p>That's it for your OpenOCD crash course. I realise that there's much
more to learn, so here's a list of links with much better information
on the subject:</p>
on the subject:
<ul><li><a href="http://www.hs-augsburg.de/%7Ehhoegl/proj/openocd/oocd-quickref.pdf">OpenOCD quick reference</a> card. (slightly outdated)</li><li>A very good OpenOCD tutorial.</li><li><a href="http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_scripts">OpenOCD configuration examples</a> from the official OpenOCD wiki.</li><li>An excellent page about using <a href="http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/openocd_intro/index.html">OpenOCD with ARM controllers</a>, with lots of real life examples.</li><li>An interesting <a href="http://forum.sparkfun.com/viewtopic.php?p=42079">topic on the SparkFun forum</a> about STR9 and OpenOCD.</li></ul>
<ul>
<li><a target="_blank" href="http://www.hs-augsburg.de/%7Ehhoegl/proj/openocd/oocd-quickref.pdf">OpenOCD quick reference</a> card. (slightly outdated)</li>
<li><a target="_blank" href="http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_scripts">OpenOCD configuration examples</a> from the official OpenOCD wiki.</li>
<li>An excellent page about using <a target="_blank" href="http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/openocd_intro/index.html">OpenOCD with ARM controllers</a>, with lots
of real life examples.</li>
<li>An interesting <a target="_blank" href="http://forum.sparkfun.com/viewtopic.php?p=42079">topic on the SparkFun forum</a> about STR9 and OpenOCD.</li>
</ul></p>
<p><a name="str9files"></a></p>
<h2>Configuration files for STR9-comStick</h2>
<h2>##Configuration files for STR9-comStick</h2>
<p>Download them below:</p>
@ -216,46 +268,47 @@ on the subject:</p>
<p><a href="http://elua.berlios.de/other/str91x_reset.script">str91x_reset.script</a></p>
<p>The comstick.cfg configuration file is for prorgramming the
STR9-comStick. comrst.cfg is for resetting it. The comStick has a very
<p>The <b>comstick.cfg</b> configuration file is for prorgramming the
STR9-comStick. <b>comrst.cfg</b> is for resetting it. The comStick has a very
interesting habit: after you power it (via USB) it does not start
executing the code from the internal flash, you need to execute OpenOCD
with the comreset.cfg script to start it. This script does exactly what
with the comreset.cfg script to start it. <b>comrst.cfg</b> does exactly what
it says: executes a CPU reset (since the board doesn't have a RESET
button). This is a very peculiar behaviour, and I'm not sure if it's
generic or it's only relevant to my particular comStick. I suspect that
the CPU RESET line isn't properly handled by the on-board USB-to-JTAG
converter, and the only solution I have for this is to execute this
script everytime you power the board and everytime you need to do a
RESET.</p>
RESET.<br>
Also, be sure to modify <b>str91x_flashprogram.script</b> if your image name is
not <b>main.bin</b></p>
<p><a name="lpc2888files"></a></p>
<h2>Configuration files for LPC2888</h2>
<h2>##Configuration files for LPC2888</h2>
<p>LPC2888 is quite a different animal. I couldn't find any "official"
LPC2888 configuration file for OpenOCD, so I had to learn how to write
my own. It works, but I suspect it can be improved. This time, the
configuration file applies to the latest (SVN) version of OpenOCD, so
read this tutorial to understand how to get the latest OpenOCD sources
use this tutorial to understand how to get the latest OpenOCD sources
and how to compile them (this section is based on version 922 of the
OpenOCD repository). Then use the next file to burn your binary image
to the chip:</p>
<p><a href="http://elua.berlios.de/other/lpc2888.cfg">lpc2888.cfg</a></p>
<p>If your image name is not main.bin edit the file and change the
corresponding line (flash write_bank 0 main.bin 0), then invoke openocd
<p>If your image name is not <b>main.bin</b> edit the file and change the
corresponding line (<i>flash write_bank 0 main.bin 0</i>), then invoke openocd
like this:</p>
<pre><code>openocd -f lpc2888.cfg<br></code></pre>
<p><pre><code>openocd -f lpc2888.cfg<br></code></pre></p>
<p>I'm using <a href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a>
<p>I'm using <a target="_blank" href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a>
from Olimex, but it should be easy to use the script with any other
JTAG adapter (don't forget to change the script to match your adapter).</p>
<p><a name="str7files"></a></p>
<h2>Configuration files for STR711FR2 (STR7 from ST)</h2>
<h2><a name="str7files">##Configuration files for STR711FR2 (STR7 from ST)</a></h2>
<p>Download them below:</p>
@ -265,24 +318,24 @@ JTAG adapter (don't forget to change the script to match your adapter).</p>
<p><a href="http://elua.berlios.de/other/str7rst.cfg">str7rst.cfg</a></p>
<p><a href="http://elua.berlios.de/other/str7_reset.script">str7_reset.scrip</a></p>
<p><a href="http://elua.berlios.de/other/str7_reset.script">str7_reset.script</a></p>
<p>For STR7 I'm using the Yagarto OpenOCD build for Windows (repository
version 717, as described at the beginning of this tutorial). The
str7prg.cfg configuration file is for prorgramming the STR9-comStick.
str7rst.cfg is for resetting it. I'm using a STR711FR2 heard board from
<a href="http://www.sctec.com.br/content/view/101/30/">ScTec</a> to
<b>str7prg.cfg</b> configuration file is for prorgramming the STR9-comStick.
<b>str7rst.cfg</b> is for resetting it (you probably won't need this one). I'm using a STR711FR2 heard board from
<a target="_blank" href="http://www.sctec.com.br/content/view/101/30/">ScTec</a> to
which I attached a few LEDs and a MAX3232 TTL to RS232 converter for
the serial communication. The board comes with its own JTAG adadpter,
but it uses a parallel interface, and since my computer doesn't have
one, I used the <a href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a> from Olimex. To use them, invoke the OpenOCD executable like this:</p>
one, I used the <a target="_blank" href="http://www.olimex.com/dev/arm-usb-tiny.html">ARM-USB-TINY</a> from Olimex. To use them, invoke the OpenOCD executable like this:</p>
<pre><code>openocd-ftd2xx -f str7prg.cfg<br></code></pre>
<p><pre><code>openocd-ftd2xx -f str7prg.cfg<br></code></pre></p>
<p>(note: under Windows, the OpenOCD executable name is often
<p>(<b>note</b>: under Windows, the OpenOCD executable name is often
"openocd-ftd2xx". Under Linux it's simply "openocd". Replace it with
the actualy name with your executable.)
Also, be sure to modify str7_flashprogram.script if your image name is
not main.bin.</p><p></p><p></p><p></p><p> </p>
</div></body></html>
the actualy name with your executable).<br>
Also, be sure to modify <b>str7_flashprogram.script</b> if your image name is
not <b>main.bin</b></p>
</body></html>

View File

@ -1,7 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Language" content="en-us"><title>Product</title>
<meta http-equiv="Content-Language" content="en-us"><title>Tutorials</title>
<link rel="stylesheet" type="text/css" href="../style.css"></head>
<body style="background-color: rgb(255, 255, 255);"><h3><a name="title" href="http://www.eluaproject.net/en/Booting_eLua_from_a_stick"></a><span class="info">eLua Tutorials</span></h3><br></body></html>
<body style="background-color: rgb(255, 255, 255);">
<h3>Tutorials</h3>
<p>This section contains information about different tools and procedures related to <b>eLua</b>:
<ul>
<li>building toolchains that can be used to build <b>eLua</b> itself.</li>
<li>running the standalone <b>eLua</b> (i386) version in different scenarios.</li>
<li>using OpenOCD to program <b>eLua</b> to various hardware platforms.</li>
</ul></p>
</body></html>

View File

@ -48,9 +48,15 @@ There's no universal rule here, it all depends on your board.
</p>
<p>If you're under Windows, make sure you're using a proper telnet client, which basically means "just about everything <b>but</b> the build-in telnet client".
<a target="_blank" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a> is a very good and popular choice.</p>
<a name="pc"><h3>Using standalone eLua on PC</h3></a>
<p>If you build <b>eLua</b> for the i386 platform, you can boot your PC directly in <b>eLua</b>! No underlying OS, nothing but plain <b>eLua</b>. It won't have any actual peripherals to
access, but it can use the <b>term</b> module to run <i>hangman.lua</i> and <i>life.lua</i>, as well as other samples, which makes it a nice demo :) Follow <a href="installing_i386.html">
this link</a> for specific informations about the i386 port. </p>
<a name="shell"><h3><a name="shell"></a>The eLua shell</h3></a>
<p>No matter what's your physical connection (serial or TCP/IP), after you setup the PC-eLua board connection (and press the "RESET" button on your board or simply press ENTER if you're using
the serial connection), you should see the <b>eLua</b> shell prompt (if you enabled the shell in your build, as described <a href="building.html">here</a>). The shell is a simple
<p>No matter what's your physical connection (serial, TCP/IP or you PC's monitor after booting <b>eLua</b>), after you setup the PC-<b>eLua</b> board connection (if applicable) and press
the "RESET" button on your board or simply press ENTER if you're using the serial connection, you should see the <b>eLua</b> shell prompt (if you enabled the shell in your build, as described <a href="building.html">here</a>). The shell is a simple
interactive command interpreter that allows you to:
<ul>
<li>get help on shell usage with the help command</li>

View File

@ -188,6 +188,12 @@ wb_usr.tree =
},
},
},
{
name = {en = "Version History", pt = "Histórico de Versões" },
link = "versionhistory.html",
},
{
name = { en = "", pt = "" }, -- Horizontal Separator
link = ""
@ -249,6 +255,9 @@ wb_usr.tree =
{ name = { en = "Over TCP/IP", pt = "##Over TCP/IP" },
link = "using.html#tcpip",
},
{ name = { en = "On PC", pt = "##On PC" },
link = "using.html#pc",
},
{ name = { en = "The shell", pt = "##The shell" },
link = "using.html#shell",
},
@ -313,43 +322,42 @@ wb_usr.tree =
name = { en = "Examples", pt = "Exemplos" },
link = "examples.html",
},
{
name = { en = "Tutorials", pt = "Tutoriais" },
link = "tutorials.html",
folder =
{
{ name = { en = "Booting on a PC", pt = "Booting on a PC" },
link = "tut_bootpc.html",
},
{ name = { en = "Booting from a Pendrive", pt = "Booting from a Pendriv" },
link = "tut_bootstick.html",
},
{ name = { en = "Toolchain Building", pt = "Toolchain Building" },
link = "tchainbuild.html",
folder =
{
{ name = { en = "ARM7 & ARM9 Toolchains", pt = "ARM 7 & ARM9 Toolchains" },
link = "tc_arm.html",
},
{ name = { en = "ARM Cortex-M3", pt = "ARM Cortex-M3" },
link = "tc_cortex.html",
},
{ name = { en = "i386", pt = "i386" },
link = "tc_386.html",
},
},
},
{ name = { en = "Using OpenOCD", pt = "Using OpenOC" },
link = "tut_openocd.html",
},
},
},
},
{
name = { en = "Tutorials", pt = "Tutoriais" },
link = "tutorials.html",
folder =
{
{ name = { en = "Booting on a PC", pt = "Booting on a PC" },
link = "tut_bootpc.html",
},
{
name = {en = "Version History", pt = "Histórico de Versões" },
link = "versionhistory.html",
{ name = { en = "Booting from a Pendrive", pt = "Booting from a Pendriv" },
link = "tut_bootstick.html",
},
{ name = { en = "Toolchain Building", pt = "Toolchain Building" },
link = "tchainbuild.html",
folder =
{
{ name = { en = "ARM7 & ARM9 Toolchains", pt = "ARM 7 & ARM9 Toolchains" },
link = "tc_arm.html",
},
{ name = { en = "ARM Cortex-M3", pt = "ARM Cortex-M3" },
link = "tc_cortex.html",
},
{ name = { en = "i386", pt = "i386" },
link = "tc_386.html",
},
},
},
{ name = { en = "Using OpenOCD", pt = "Using OpenOC" },
link = "tut_openocd.html",
},
},
},
{
name = { en = "Reference Manual", pt = "Manual de Referência" },
link = "refman.html#genericmodules",

View File

@ -3,31 +3,31 @@ en/tut_bootstick.html
en/dl_binaries.html
en/arch_overview.html
en/status.html
en/arch_con_term.html
en/comunity.html
en/arch_tcpip.html
en/installing_lm3s.html
en/tut_bootpc.html
en/news.html
en/installing_lpc2888.html
en/arch_platform.html
en/overview.html
en/tc_386.html
en/tc_cortex.html
en/faq.html
en/dl_sources.html
en/tutorials.html
en/arch_newport.html
en/arch_coding.html
en/tut_openocd.html
en/refman.html
en/net_ref.html
en/arch_romfs.html
en/arch_newport.html
en/tc_arm.html
en/tchainbuild.html
en/arch_ltr.html
en/installing_avr32.html
en/installing_str7.html
en/installing_at91sam7x.html
en/installing.html
en/tchainbuild.html
en/tutorials.html
en/using.html
en/versionhistory.html
en/toolchains.html
@ -37,6 +37,6 @@ en/doc.html
en/arch.html
en/installing_str9.html
en/installing_stm32.html
en/comunity.html
en/arch_con_term.html
en/installing_i386.html
en/overview.html
en/arch_platform.html

View File

@ -3,31 +3,31 @@ pt/tut_bootstick.html
pt/dl_binaries.html
pt/arch_overview.html
pt/status.html
pt/arch_con_term.html
pt/comunity.html
pt/arch_tcpip.html
pt/installing_lm3s.html
pt/tut_bootpc.html
pt/news.html
pt/installing_lpc2888.html
pt/arch_platform.html
pt/overview.html
pt/tc_386.html
pt/tc_cortex.html
pt/faq.html
pt/dl_sources.html
pt/tutorials.html
pt/arch_newport.html
pt/arch_coding.html
pt/tut_openocd.html
pt/refman.html
pt/net_ref.html
pt/arch_romfs.html
pt/arch_newport.html
pt/tc_arm.html
pt/tchainbuild.html
pt/arch_ltr.html
pt/installing_avr32.html
pt/installing_str7.html
pt/installing_at91sam7x.html
pt/installing.html
pt/tchainbuild.html
pt/tutorials.html
pt/using.html
pt/versionhistory.html
pt/toolchains.html
@ -37,6 +37,6 @@ pt/doc.html
pt/arch.html
pt/installing_str9.html
pt/installing_stm32.html
pt/comunity.html
pt/arch_con_term.html
pt/installing_i386.html
pt/overview.html
pt/arch_platform.html

View File

@ -251,188 +251,189 @@
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link21folder.4" href="en/status.html#platforms">Platforms Supported</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link22folder.4" href="en/status.html#roadmap">Roadmap</a></p>
</div>
<p><img src="wb_img/node.png"><a class="el" name="link23folder" href="en/versionhistory.html">Version History</a></p>
<p class="sep"><img src="wb_img/sepnode.png"></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link23folder.5" class="el" href="en/doc.html">Documentation</a></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link24folder.5" class="el" href="en/doc.html">Documentation</a></p>
<div id="folder.5">
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link24folder.5.1" class="el" href="en/building.html">Building</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link25folder.5.1" class="el" href="en/building.html">Building</a></p>
<div id="folder.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link25folder.5.1" href="en/toolchains.html">Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link26folder.5.1" href="en/toolchains.html">Toolchains</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link26folder.5.2" class="el" href="en/installing.html">Installing</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link27folder.5.2" class="el" href="en/installing.html">Installing</a></p>
<div id="folder.5.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link27folder.5.2" href="en/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link28folder.5.2" href="en/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link29folder.5.2" href="en/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link30folder.5.2" href="en/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link31folder.5.2" href="en/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link32folder.5.2" href="en/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link33folder.5.2" href="en/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link34folder.5.2" href="en/installing_i386.html">i386</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link28folder.5.2" href="en/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link29folder.5.2" href="en/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link30folder.5.2" href="en/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link31folder.5.2" href="en/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link32folder.5.2" href="en/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link33folder.5.2" href="en/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link34folder.5.2" href="en/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link35folder.5.2" href="en/installing_i386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link35folder.5.3" class="el" href="en/using.html">Using</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link36folder.5.3" class="el" href="en/using.html">Using</a></p>
<div id="folder.5.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link36folder.5.3" href="en/using.html#uart">Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link37folder.5.3" href="en/using.html#tcpip">Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link38folder.5.3" href="en/using.html#shell">The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link39folder.5.3" href="en/using.html#cross">Cross-compiling</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link37folder.5.3" href="en/using.html#uart">Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link38folder.5.3" href="en/using.html#tcpip">Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link39folder.5.3" href="en/using.html#pc">On PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link40folder.5.3" href="en/using.html#shell">The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link41folder.5.3" href="en/using.html#cross">Cross-compiling</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link40folder.5" href="en/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link41folder.5.4" class="el" href="en/arch.html">Architecture</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link42folder.5" href="en/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link43folder.5.4" class="el" href="en/arch.html">Architecture</a></p>
<div id="folder.5.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link42folder.5.4.1" class="el" href="en/arch_overview.html">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link44folder.5.4.1" class="el" href="en/arch_overview.html">Overview</a></p>
<div id="folder.5.4.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link43folder.5.4.1" href="en/arch_overview.html#structure">Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link44folder.5.4.1" href="en/arch_overview.html#common">Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link45folder.5.4.1" href="en/arch_overview.html#platform">Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link46folder.5.4.1" href="en/arch_overview.html#platforms">Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link47folder.5.4.1" href="en/arch_overview.html#boot">Booting eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link45folder.5.4.1" href="en/arch_overview.html#structure">Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link46folder.5.4.1" href="en/arch_overview.html#common">Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link47folder.5.4.1" href="en/arch_overview.html#platform">Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link48folder.5.4.1" href="en/arch_overview.html#platforms">Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link49folder.5.4.1" href="en/arch_overview.html#boot">Booting eLua</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link48folder.5.4" href="en/arch_platform.html">Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link49folder.5.4" href="en/arch_romfs.html">ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link50folder.5.4" href="en/arch_newport.html">Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link51folder.5.4" href="en/arch_ltr.html">Modules and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link52folder.5.4" href="en/arch_con_term.html">Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link53folder.5.4" href="en/arch_tcpip.html">TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link54folder.5.4" href="en/arch_coding.html">eLua coding style</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link50folder.5.4" href="en/arch_platform.html">Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link51folder.5.4" href="en/arch_romfs.html">ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link52folder.5.4" href="en/arch_newport.html">Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link53folder.5.4" href="en/arch_ltr.html">Modules and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link54folder.5.4" href="en/arch_con_term.html">Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link55folder.5.4" href="en/arch_tcpip.html">TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link56folder.5.4" href="en/arch_coding.html">eLua coding style</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link55folder.5" href="en/examples.html">Examples</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.5')"><a name="link56folder.5.5" class="el" href="en/tutorials.html">Tutorials</a></p>
<div id="folder.5.5">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link57folder.5.5" href="en/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link58folder.5.5" href="en/tut_bootstick.html">Booting from a Pendrive</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.5.1')"><a name="link59folder.5.5.1" class="el" href="en/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.5.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link60folder.5.5.1" href="en/tc_arm.html">ARM7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link61folder.5.5.1" href="en/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link62folder.5.5.1" href="en/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link63folder.5.5" href="en/tut_openocd.html">Using OpenOCD</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link64folder.5" href="en/versionhistory.html">Version History</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link57folder.5" href="en/examples.html">Examples</a></p>
</div>
<p><img name="imgfolder.6" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6')"><a name="link65folder.6" class="el" href="en/refman.html#genericmodules">Reference Manual</a></p>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link58folder.6" class="el" href="en/tutorials.html">Tutorials</a></p>
<div id="folder.6">
<p><img src="wb_img/blank.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link66folder.6.1" class="el" href="en/refman.html#genericmodules">Generic Modules</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link59folder.6" href="en/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link60folder.6" href="en/tut_bootstick.html">Booting from a Pendrive</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link61folder.6.1" class="el" href="en/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.6.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.1')"><a name="link67folder.6.1.1" class="el" href="en/refman.html#bitmodule">bit</a></p>
<div id="folder.6.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link68folder.6.1.1" href="en/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link69folder.6.1.1" href="en/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link70folder.6.1.1" href="en/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link71folder.6.1.1" href="en/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link72folder.6.1.1" href="en/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link73folder.6.1.1" href="en/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link74folder.6.1.1" href="en/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link75folder.6.1.1" href="en/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link76folder.6.1.1" href="en/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link77folder.6.1.1" href="en/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link78folder.6.1.1" href="en/refman.html#bit_isclear">isclear</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link62folder.6.1" href="en/tc_arm.html">ARM7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link63folder.6.1" href="en/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link64folder.6.1" href="en/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link65folder.6" href="en/tut_openocd.html">Using OpenOCD</a></p>
</div>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link66folder.7" class="el" href="en/refman.html#genericmodules">Reference Manual</a></p>
<div id="folder.7">
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link67folder.7.1" class="el" href="en/refman.html#genericmodules">Generic Modules</a></p>
<div id="folder.7.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link68folder.7.1.1" class="el" href="en/refman.html#bitmodule">bit</a></p>
<div id="folder.7.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link69folder.7.1.1" href="en/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link70folder.7.1.1" href="en/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link71folder.7.1.1" href="en/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link72folder.7.1.1" href="en/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link73folder.7.1.1" href="en/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link74folder.7.1.1" href="en/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link75folder.7.1.1" href="en/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link76folder.7.1.1" href="en/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link77folder.7.1.1" href="en/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link78folder.7.1.1" href="en/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link79folder.7.1.1" href="en/refman.html#bit_isclear">isclear</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.2')"><a name="link79folder.6.1.2" class="el" href="en/refman.html#cpumodule">cpu</a></p>
<div id="folder.6.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link80folder.6.1.2" href="en/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link81folder.6.1.2" href="en/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link82folder.6.1.2" href="en/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link83folder.6.1.2" href="en/refman.html#cpu_read32">reat32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link84folder.6.1.2" href="en/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link85folder.6.1.2" href="en/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link86folder.6.1.2" href="en/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link87folder.6.1.2" href="en/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link88folder.6.1.2" href="en/refman.html#cpu_clockfrequency">clockfrequency</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link80folder.7.1.2" class="el" href="en/refman.html#cpumodule">cpu</a></p>
<div id="folder.7.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link81folder.7.1.2" href="en/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link82folder.7.1.2" href="en/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link83folder.7.1.2" href="en/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link84folder.7.1.2" href="en/refman.html#cpu_read32">reat32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link85folder.7.1.2" href="en/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link86folder.7.1.2" href="en/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link87folder.7.1.2" href="en/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link88folder.7.1.2" href="en/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link89folder.7.1.2" href="en/refman.html#cpu_clockfrequency">clockfrequency</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.3')"><a name="link89folder.6.1.3" class="el" href="en/refman.html#gpiomodule">gpio</a></p>
<div id="folder.6.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link90folder.6.1.3" href="en/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link91folder.6.1.3" href="en/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link92folder.6.1.3" href="en/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link93folder.6.1.3" href="en/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link94folder.6.1.3" href="en/refman.html#gpio_setpinlow">setpinlow</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link90folder.7.1.3" class="el" href="en/refman.html#gpiomodule">gpio</a></p>
<div id="folder.7.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link91folder.7.1.3" href="en/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link92folder.7.1.3" href="en/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link93folder.7.1.3" href="en/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link94folder.7.1.3" href="en/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link95folder.7.1.3" href="en/refman.html#gpio_setpinlow">setpinlow</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.4')"><a name="link95folder.6.1.4" class="el" href="en/refman.html#netmodule">net</a></p>
<div id="folder.6.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link96folder.6.1.4" href="en/net_ref.html#net_setup">to be added ...</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link96folder.7.1.4" class="el" href="en/refman.html#netmodule">net</a></p>
<div id="folder.7.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link97folder.7.1.4" href="en/net_ref.html#net_setup">to be added ...</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.5')"><a name="link97folder.6.1.5" class="el" href="en/refman.html#pwmmodule">pwm</a></p>
<div id="folder.6.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link98folder.6.1.5" href="en/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link99folder.6.1.5" href="en/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link100folder.6.1.5" href="en/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link101folder.6.1.5" href="en/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link102folder.6.1.5" href="en/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link103folder.6.1.5" href="en/refman.html#pwm_getclock">getclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link98folder.7.1.5" class="el" href="en/refman.html#pwmmodule">pwm</a></p>
<div id="folder.7.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link99folder.7.1.5" href="en/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link100folder.7.1.5" href="en/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link101folder.7.1.5" href="en/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link102folder.7.1.5" href="en/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link103folder.7.1.5" href="en/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link104folder.7.1.5" href="en/refman.html#pwm_getclock">getclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.6')"><a name="link104folder.6.1.6" class="el" href="en/refman.html#spimodules">spi</a></p>
<div id="folder.6.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link105folder.6.1.6" href="en/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link106folder.6.1.6" href="en/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link107folder.6.1.6" href="en/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link108folder.6.1.6" href="en/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link109folder.6.1.6" href="en/refman.html#spi_sendrecv">sendrecv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link105folder.7.1.6" class="el" href="en/refman.html#spimodules">spi</a></p>
<div id="folder.7.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link106folder.7.1.6" href="en/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link107folder.7.1.6" href="en/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link108folder.7.1.6" href="en/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link109folder.7.1.6" href="en/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link110folder.7.1.6" href="en/refman.html#spi_sendrecv">sendrecv</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.7')"><a name="link110folder.6.1.7" class="el" href="en/refman.html#sysmodule">sys</a></p>
<div id="folder.6.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link111folder.6.1.7" href="en/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link112folder.6.1.7" href="en/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link113folder.6.1.7" href="en/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link114folder.6.1.7" href="en/refman.html#sys_board">board</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link111folder.7.1.7" class="el" href="en/refman.html#sysmodule">sys</a></p>
<div id="folder.7.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link112folder.7.1.7" href="en/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link113folder.7.1.7" href="en/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link114folder.7.1.7" href="en/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link115folder.7.1.7" href="en/refman.html#sys_board">board</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.8')"><a name="link115folder.6.1.8" class="el" href="en/refman.html#termmodule">term</a></p>
<div id="folder.6.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link116folder.6.1.8" href="en/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link117folder.6.1.8" href="en/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link118folder.6.1.8" href="en/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link119folder.6.1.8" href="en/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link120folder.6.1.8" href="en/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link121folder.6.1.8" href="en/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link122folder.6.1.8" href="en/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link123folder.6.1.8" href="en/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link124folder.6.1.8" href="en/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link125folder.6.1.8" href="en/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link126folder.6.1.8" href="en/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link127folder.6.1.8" href="en/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link128folder.6.1.8" href="en/refman.html#term_inputchar">inputchar</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link116folder.7.1.8" class="el" href="en/refman.html#termmodule">term</a></p>
<div id="folder.7.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link117folder.7.1.8" href="en/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link118folder.7.1.8" href="en/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link119folder.7.1.8" href="en/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link120folder.7.1.8" href="en/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link121folder.7.1.8" href="en/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link122folder.7.1.8" href="en/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link123folder.7.1.8" href="en/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link124folder.7.1.8" href="en/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link125folder.7.1.8" href="en/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link126folder.7.1.8" href="en/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link127folder.7.1.8" href="en/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link128folder.7.1.8" href="en/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link129folder.7.1.8" href="en/refman.html#term_inputchar">inputchar</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.9')"><a name="link129folder.6.1.9" class="el" href="en/refman.html#tmrmodule">tmr</a></p>
<div id="folder.6.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link130folder.6.1.9" href="en/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link131folder.6.1.9" href="en/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link132folder.6.1.9" href="en/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link133folder.6.1.9" href="en/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link134folder.6.1.9" href="en/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link135folder.6.1.9" href="en/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link136folder.6.1.9" href="en/refman.html#tmr_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link130folder.7.1.9" class="el" href="en/refman.html#tmrmodule">tmr</a></p>
<div id="folder.7.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link131folder.7.1.9" href="en/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link132folder.7.1.9" href="en/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link133folder.7.1.9" href="en/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link134folder.7.1.9" href="en/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link135folder.7.1.9" href="en/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link136folder.7.1.9" href="en/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link137folder.7.1.9" href="en/refman.html#tmr_setclock">setclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.1.10')"><a name="link137folder.6.1.10" class="el" href="en/refman.html#uartmodule">uart</a></p>
<div id="folder.6.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link138folder.6.1.10" href="en/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link139folder.6.1.10" href="en/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link140folder.6.1.10" href="en/refman.html#uart_recv">recv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link138folder.7.1.10" class="el" href="en/refman.html#uartmodule">uart</a></p>
<div id="folder.7.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link139folder.7.1.10" href="en/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link140folder.7.1.10" href="en/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link141folder.7.1.10" href="en/refman.html#uart_recv">recv</a></p>
</div>
</div>
<p><img src="wb_img/blank.png"><img name="imgfolder.6.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.2')"><a name="link141folder.6.2" class="el" href="en/refman.html#platdepmodules">Platform Dependent Modules</a></p>
<div id="folder.6.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.6.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.2.1')"><a name="link142folder.6.2.1" class="el" href="en/refman.html#adcmodule">adc</a></p>
<div id="folder.6.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link143folder.6.2.1" href="en/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link144folder.6.2.1" href="en/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link145folder.6.2.1" href="en/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link146folder.6.2.1" href="en/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link147folder.6.2.1" href="en/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link148folder.6.2.1" href="en/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link149folder.6.2.1" href="en/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link150folder.6.2.1" href="en/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link151folder.6.2.1" href="en/refman.html#adc_burst">burst</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link142folder.7.2" class="el" href="en/refman.html#platdepmodules">Platform Dependent Modules</a></p>
<div id="folder.7.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link143folder.7.2.1" class="el" href="en/refman.html#adcmodule">adc</a></p>
<div id="folder.7.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link144folder.7.2.1" href="en/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link145folder.7.2.1" href="en/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link146folder.7.2.1" href="en/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link147folder.7.2.1" href="en/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link148folder.7.2.1" href="en/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link149folder.7.2.1" href="en/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link150folder.7.2.1" href="en/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link151folder.7.2.1" href="en/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link152folder.7.2.1" href="en/refman.html#adc_burst">burst</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.6.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.2.2')"><a name="link152folder.6.2.2" class="el" href="en/refman.html#dispmodule">disp</a></p>
<div id="folder.6.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link153folder.6.2.2" href="en/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link154folder.6.2.2" href="en/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link155folder.6.2.2" href="en/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link156folder.6.2.2" href="en/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link157folder.6.2.2" href="en/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link158folder.6.2.2" href="en/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link159folder.6.2.2" href="en/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link160folder.6.2.2" href="en/refman.html#disp_draw">draw</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link153folder.7.2.2" class="el" href="en/refman.html#dispmodule">disp</a></p>
<div id="folder.7.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link154folder.7.2.2" href="en/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link155folder.7.2.2" href="en/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link156folder.7.2.2" href="en/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link157folder.7.2.2" href="en/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link158folder.7.2.2" href="en/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link159folder.7.2.2" href="en/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link160folder.7.2.2" href="en/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link161folder.7.2.2" href="en/refman.html#disp_draw">draw</a></p>
</div>
</div>
</div>

View File

@ -219,220 +219,221 @@
<body style="margin: 2px; background-color: #F1F1F1" onload="showStartPage()">
<div class="tree" onmouseout="clearLastLink()">
<h3><a name="link0folder.0" class="el" href="pt/news.html">eLua</a></h3>
<p><img name="imgfolder.1" src="wb_img/minusnode.png" onclick="toggleFolder('folder.1')"><a name="link161folder.1" class="el" href="pt/overview.html">Apresentação</a></p>
<p><img name="imgfolder.1" src="wb_img/minusnode.png" onclick="toggleFolder('folder.1')"><a name="link162folder.1" class="el" href="pt/overview.html">Apresentação</a></p>
<div id="folder.1" style="display:block">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link162folder.1" href="pt/overview.html#whatis">O que é eLua ?</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link163folder.1" href="pt/overview.html#features">##Features</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link164folder.1" href="pt/overview.html#audience">Público alvo</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link165folder.1" href="pt/overview.html#authors">Autores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link166folder.1" href="pt/overview.html#contacts">Contatos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link167folder.1" href="pt/overview.html#license">Licença</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link163folder.1" href="pt/overview.html#whatis">O que é eLua ?</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link164folder.1" href="pt/overview.html#features">##Features</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link165folder.1" href="pt/overview.html#audience">Público alvo</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link166folder.1" href="pt/overview.html#authors">Autores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link167folder.1" href="pt/overview.html#contacts">Contatos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link168folder.1" href="pt/overview.html#license">Licença</a></p>
</div>
<p><img name="imgfolder.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2')"><a name="link168folder.2" class="el" href="pt/dl_binaries.html">Downloads</a></p>
<p><img name="imgfolder.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2')"><a name="link169folder.2" class="el" href="pt/dl_binaries.html">Downloads</a></p>
<div id="folder.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link169folder.2" href="pt/dl_binaries.html">Binaries</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2.1')"><a name="link170folder.2.1" class="el" href="pt/dl_sources.html">Fontes</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link170folder.2" href="pt/dl_binaries.html">Binaries</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2.1')"><a name="link171folder.2.1" class="el" href="pt/dl_sources.html">Fontes</a></p>
<div id="folder.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link171folder.2.1" href="pt/dl_sources.html">Versões Oficiais[B</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link172folder.2.1" href="pt/dl_sources.html#svnpublic">SVN Público</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link173folder.2.1" href="pt/dl_sources.html#svndev">Desenvolvedores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link172folder.2.1" href="pt/dl_sources.html">Versões Oficiais[B</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link173folder.2.1" href="pt/dl_sources.html#svnpublic">SVN Público</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link174folder.2.1" href="pt/dl_sources.html#svndev">Desenvolvedores</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link174folder.2" href="pt/dl_old.html">Versões Anteriores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link175folder.2" href="pt/dl_old.html">Versões Anteriores</a></p>
</div>
<p><img name="imgfolder.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3')"><a name="link175folder.3" class="el" href="pt/comunity.html">Comunidade</a></p>
<p><img name="imgfolder.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3')"><a name="link176folder.3" class="el" href="pt/comunity.html">Comunidade</a></p>
<div id="folder.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link176folder.3" href="pt/comunity.html#lists">Listas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link177folder.3" href="pt/comunity.html#forums">##Forums</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link178folder.3" href="pt/comunity.html#credits">Créditos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link177folder.3" href="pt/comunity.html#lists">Listas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link178folder.3" href="pt/comunity.html#forums">##Forums</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link179folder.3" href="pt/comunity.html#credits">Créditos</a></p>
</div>
<p><img src="wb_img/node.png"><a class="el" name="link179folder" href="pt/news.html">Notícias</a></p>
<p><img name="imgfolder.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4')"><a name="link180folder.4" class="el" href="pt/status.html">Status</a></p>
<p><img src="wb_img/node.png"><a class="el" name="link180folder" href="pt/news.html">Notícias</a></p>
<p><img name="imgfolder.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4')"><a name="link181folder.4" class="el" href="pt/status.html">Status</a></p>
<div id="folder.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link181folder.4" href="pt/status.html#platforms">Plataformas Suportadas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link182folder.4" href="pt/status.html#roadmap">Futuro</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link182folder.4" href="pt/status.html#platforms">Plataformas Suportadas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link183folder.4" href="pt/status.html#roadmap">Futuro</a></p>
</div>
<p><img src="wb_img/node.png"><a class="el" name="link184folder" href="pt/versionhistory.html">Histórico de Versões</a></p>
<p class="sep"><img src="wb_img/sepnode.png"></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link183folder.5" class="el" href="pt/doc.html">Documentação</a></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link185folder.5" class="el" href="pt/doc.html">Documentação</a></p>
<div id="folder.5">
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link184folder.5.1" class="el" href="pt/building.html">Building</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link186folder.5.1" class="el" href="pt/building.html">Building</a></p>
<div id="folder.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link185folder.5.1" href="pt/toolchains.html">##Tools</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link187folder.5.1" href="pt/toolchains.html">##Tools</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link186folder.5.2" class="el" href="pt/installing.html">##Installing</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link188folder.5.2" class="el" href="pt/installing.html">##Installing</a></p>
<div id="folder.5.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link187folder.5.2" href="pt/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link188folder.5.2" href="pt/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link189folder.5.2" href="pt/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link190folder.5.2" href="pt/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link191folder.5.2" href="pt/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link192folder.5.2" href="pt/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link193folder.5.2" href="pt/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link194folder.5.2" href="pt/installing_i386.html">i386</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link189folder.5.2" href="pt/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link190folder.5.2" href="pt/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link191folder.5.2" href="pt/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link192folder.5.2" href="pt/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link193folder.5.2" href="pt/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link194folder.5.2" href="pt/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link195folder.5.2" href="pt/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link196folder.5.2" href="pt/installing_i386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link195folder.5.3" class="el" href="pt/using.html">Usando</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link197folder.5.3" class="el" href="pt/using.html">Usando</a></p>
<div id="folder.5.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link196folder.5.3" href="pt/using.html#uart">##Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link197folder.5.3" href="pt/using.html#tcpip">##Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link198folder.5.3" href="pt/using.html#shell">##The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link199folder.5.3" href="pt/using.html#cross">##Cross-compiling</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link198folder.5.3" href="pt/using.html#uart">##Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link199folder.5.3" href="pt/using.html#tcpip">##Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link200folder.5.3" href="pt/using.html#pc">##On PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link201folder.5.3" href="pt/using.html#shell">##The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link202folder.5.3" href="pt/using.html#cross">##Cross-compiling</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link200folder.5" href="pt/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link201folder.5.4" class="el" href="pt/arch.html">##Architecture</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link203folder.5" href="pt/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link204folder.5.4" class="el" href="pt/arch.html">##Architecture</a></p>
<div id="folder.5.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link202folder.5.4.1" class="el" href="pt/arch_overview.html">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link205folder.5.4.1" class="el" href="pt/arch_overview.html">##Overview</a></p>
<div id="folder.5.4.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link203folder.5.4.1" href="pt/arch_overview.html#structure">##Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link204folder.5.4.1" href="pt/arch_overview.html#common">##Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link205folder.5.4.1" href="pt/arch_overview.html#platform">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link206folder.5.4.1" href="pt/arch_overview.html#platforms">##Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link207folder.5.4.1" href="pt/arch_overview.html#boot">##eLua boot process</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link206folder.5.4.1" href="pt/arch_overview.html#structure">##Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link207folder.5.4.1" href="pt/arch_overview.html#common">##Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link208folder.5.4.1" href="pt/arch_overview.html#platform">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link209folder.5.4.1" href="pt/arch_overview.html#platforms">##Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link210folder.5.4.1" href="pt/arch_overview.html#boot">##eLua boot process</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link208folder.5.4" href="pt/arch_platform.html">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link209folder.5.4" href="pt/arch_romfs.html">##ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link210folder.5.4" href="pt/arch_newport.html">##Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link211folder.5.4" href="pt/arch_ltr.html">##Module and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link212folder.5.4" href="pt/arch_con_term.html">##Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link213folder.5.4" href="pt/arch_tcpip.html">##TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link214folder.5.4" href="pt/arch_coding.html">##eLua coding style</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link211folder.5.4" href="pt/arch_platform.html">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link212folder.5.4" href="pt/arch_romfs.html">##ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link213folder.5.4" href="pt/arch_newport.html">##Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link214folder.5.4" href="pt/arch_ltr.html">##Module and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link215folder.5.4" href="pt/arch_con_term.html">##Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link216folder.5.4" href="pt/arch_tcpip.html">##TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link217folder.5.4" href="pt/arch_coding.html">##eLua coding style</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link215folder.5" href="pt/examples.html">Exemplos</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.5')"><a name="link216folder.5.5" class="el" href="pt/tutorials.html">Tutoriais</a></p>
<div id="folder.5.5">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link217folder.5.5" href="pt/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link218folder.5.5" href="pt/tut_bootstick.html">Booting from a Pendriv</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.5.1')"><a name="link219folder.5.5.1" class="el" href="pt/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.5.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link220folder.5.5.1" href="pt/tc_arm.html">ARM 7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link221folder.5.5.1" href="pt/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link222folder.5.5.1" href="pt/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link223folder.5.5" href="pt/tut_openocd.html">Using OpenOC</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link224folder.5" href="pt/versionhistory.html">Histórico de Versões</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link218folder.5" href="pt/examples.html">Exemplos</a></p>
</div>
<p><img name="imgfolder.6" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6')"><a name="link225folder.6" class="el" href="pt/refman.html#genericmodules">Manual de Referência</a></p>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link219folder.6" class="el" href="pt/tutorials.html">Tutoriais</a></p>
<div id="folder.6">
<p><img src="wb_img/blank.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link226folder.6.1" class="el" href="pt/refman.html#genericmodules">Módulos Genéricos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link220folder.6" href="pt/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link221folder.6" href="pt/tut_bootstick.html">Booting from a Pendriv</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link222folder.6.1" class="el" href="pt/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.6.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.1')"><a name="link227folder.6.1.1" class="el" href="pt/refman.html#bitmodule">bit</a></p>
<div id="folder.6.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link228folder.6.1.1" href="pt/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link229folder.6.1.1" href="pt/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link230folder.6.1.1" href="pt/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link231folder.6.1.1" href="pt/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link232folder.6.1.1" href="pt/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link233folder.6.1.1" href="pt/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link234folder.6.1.1" href="pt/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link235folder.6.1.1" href="pt/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link236folder.6.1.1" href="pt/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link237folder.6.1.1" href="pt/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link238folder.6.1.1" href="pt/refman.html#bit_isclear">isclear</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link223folder.6.1" href="pt/tc_arm.html">ARM 7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link224folder.6.1" href="pt/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link225folder.6.1" href="pt/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link226folder.6" href="pt/tut_openocd.html">Using OpenOC</a></p>
</div>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link227folder.7" class="el" href="pt/refman.html#genericmodules">Manual de Referência</a></p>
<div id="folder.7">
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link228folder.7.1" class="el" href="pt/refman.html#genericmodules">Módulos Genéricos</a></p>
<div id="folder.7.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link229folder.7.1.1" class="el" href="pt/refman.html#bitmodule">bit</a></p>
<div id="folder.7.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link230folder.7.1.1" href="pt/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link231folder.7.1.1" href="pt/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link232folder.7.1.1" href="pt/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link233folder.7.1.1" href="pt/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link234folder.7.1.1" href="pt/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link235folder.7.1.1" href="pt/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link236folder.7.1.1" href="pt/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link237folder.7.1.1" href="pt/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link238folder.7.1.1" href="pt/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link239folder.7.1.1" href="pt/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link240folder.7.1.1" href="pt/refman.html#bit_isclear">isclear</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.2')"><a name="link239folder.6.1.2" class="el" href="pt/refman.html#cpumodule">cpu</a></p>
<div id="folder.6.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link240folder.6.1.2" href="pt/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link241folder.6.1.2" href="pt/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link242folder.6.1.2" href="pt/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link243folder.6.1.2" href="pt/refman.html#cpu_read32">read32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link244folder.6.1.2" href="pt/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link245folder.6.1.2" href="pt/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link246folder.6.1.2" href="pt/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link247folder.6.1.2" href="pt/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link248folder.6.1.2" href="pt/refman.html#cpu_clockfrequency">clockfrequency</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link241folder.7.1.2" class="el" href="pt/refman.html#cpumodule">cpu</a></p>
<div id="folder.7.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link242folder.7.1.2" href="pt/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link243folder.7.1.2" href="pt/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link244folder.7.1.2" href="pt/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link245folder.7.1.2" href="pt/refman.html#cpu_read32">read32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link246folder.7.1.2" href="pt/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link247folder.7.1.2" href="pt/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link248folder.7.1.2" href="pt/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link249folder.7.1.2" href="pt/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link250folder.7.1.2" href="pt/refman.html#cpu_clockfrequency">clockfrequency</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.3')"><a name="link249folder.6.1.3" class="el" href="pt/refman.html#gpiomodule">gpio</a></p>
<div id="folder.6.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link250folder.6.1.3" href="pt/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link251folder.6.1.3" href="pt/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link252folder.6.1.3" href="pt/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link253folder.6.1.3" href="pt/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link254folder.6.1.3" href="pt/refman.html#gpio_setpinlow">setpinlow</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link251folder.7.1.3" class="el" href="pt/refman.html#gpiomodule">gpio</a></p>
<div id="folder.7.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link252folder.7.1.3" href="pt/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link253folder.7.1.3" href="pt/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link254folder.7.1.3" href="pt/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link255folder.7.1.3" href="pt/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link256folder.7.1.3" href="pt/refman.html#gpio_setpinlow">setpinlow</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.4')"><a name="link255folder.6.1.4" class="el" href="pt/refman.html#netmodule">net</a></p>
<div id="folder.6.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link256folder.6.1.4" href="pt/net_ref.html#net_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link257folder.7.1.4" class="el" href="pt/refman.html#netmodule">net</a></p>
<div id="folder.7.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link258folder.7.1.4" href="pt/net_ref.html#net_setup">setup</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.5')"><a name="link257folder.6.1.5" class="el" href="pt/refman.html#pwmmodule">pwm</a></p>
<div id="folder.6.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link258folder.6.1.5" href="pt/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link259folder.6.1.5" href="pt/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link260folder.6.1.5" href="pt/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link261folder.6.1.5" href="pt/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link262folder.6.1.5" href="pt/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link263folder.6.1.5" href="pt/refman.html#pwm_getclock">getclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link259folder.7.1.5" class="el" href="pt/refman.html#pwmmodule">pwm</a></p>
<div id="folder.7.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link260folder.7.1.5" href="pt/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link261folder.7.1.5" href="pt/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link262folder.7.1.5" href="pt/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link263folder.7.1.5" href="pt/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link264folder.7.1.5" href="pt/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link265folder.7.1.5" href="pt/refman.html#pwm_getclock">getclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.6')"><a name="link264folder.6.1.6" class="el" href="pt/refman.html#spimodules">spi</a></p>
<div id="folder.6.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link265folder.6.1.6" href="pt/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link266folder.6.1.6" href="pt/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link267folder.6.1.6" href="pt/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link268folder.6.1.6" href="pt/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link269folder.6.1.6" href="pt/refman.html#spi_sendrecv">sendrecv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link266folder.7.1.6" class="el" href="pt/refman.html#spimodules">spi</a></p>
<div id="folder.7.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link267folder.7.1.6" href="pt/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link268folder.7.1.6" href="pt/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link269folder.7.1.6" href="pt/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link270folder.7.1.6" href="pt/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link271folder.7.1.6" href="pt/refman.html#spi_sendrecv">sendrecv</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.7')"><a name="link270folder.6.1.7" class="el" href="pt/refman.html#sysmodule">sys</a></p>
<div id="folder.6.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link271folder.6.1.7" href="pt/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link272folder.6.1.7" href="pt/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link273folder.6.1.7" href="pt/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link274folder.6.1.7" href="pt/refman.html#sys_board">board</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link272folder.7.1.7" class="el" href="pt/refman.html#sysmodule">sys</a></p>
<div id="folder.7.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link273folder.7.1.7" href="pt/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link274folder.7.1.7" href="pt/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link275folder.7.1.7" href="pt/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link276folder.7.1.7" href="pt/refman.html#sys_board">board</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.8')"><a name="link275folder.6.1.8" class="el" href="pt/refman.html#termmodule">term</a></p>
<div id="folder.6.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link276folder.6.1.8" href="pt/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link277folder.6.1.8" href="pt/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link278folder.6.1.8" href="pt/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link279folder.6.1.8" href="pt/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link280folder.6.1.8" href="pt/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link281folder.6.1.8" href="pt/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link282folder.6.1.8" href="pt/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link283folder.6.1.8" href="pt/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link284folder.6.1.8" href="pt/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link285folder.6.1.8" href="pt/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link286folder.6.1.8" href="pt/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link287folder.6.1.8" href="pt/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link288folder.6.1.8" href="pt/refman.html#term_inputchar">inputchar</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link277folder.7.1.8" class="el" href="pt/refman.html#termmodule">term</a></p>
<div id="folder.7.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link278folder.7.1.8" href="pt/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link279folder.7.1.8" href="pt/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link280folder.7.1.8" href="pt/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link281folder.7.1.8" href="pt/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link282folder.7.1.8" href="pt/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link283folder.7.1.8" href="pt/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link284folder.7.1.8" href="pt/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link285folder.7.1.8" href="pt/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link286folder.7.1.8" href="pt/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link287folder.7.1.8" href="pt/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link288folder.7.1.8" href="pt/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link289folder.7.1.8" href="pt/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link290folder.7.1.8" href="pt/refman.html#term_inputchar">inputchar</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1.9')"><a name="link289folder.6.1.9" class="el" href="pt/refman.html#tmrmodule">tmr</a></p>
<div id="folder.6.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link290folder.6.1.9" href="pt/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link291folder.6.1.9" href="pt/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link292folder.6.1.9" href="pt/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link293folder.6.1.9" href="pt/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link294folder.6.1.9" href="pt/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link295folder.6.1.9" href="pt/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link296folder.6.1.9" href="pt/refman.html#tmr_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link291folder.7.1.9" class="el" href="pt/refman.html#tmrmodule">tmr</a></p>
<div id="folder.7.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link292folder.7.1.9" href="pt/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link293folder.7.1.9" href="pt/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link294folder.7.1.9" href="pt/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link295folder.7.1.9" href="pt/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link296folder.7.1.9" href="pt/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link297folder.7.1.9" href="pt/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link298folder.7.1.9" href="pt/refman.html#tmr_setclock">setclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.6.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.1.10')"><a name="link297folder.6.1.10" class="el" href="pt/refman.html#uartmodule">uart</a></p>
<div id="folder.6.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link298folder.6.1.10" href="pt/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link299folder.6.1.10" href="pt/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link300folder.6.1.10" href="pt/refman.html#uart_recv">recv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link299folder.7.1.10" class="el" href="pt/refman.html#uartmodule">uart</a></p>
<div id="folder.7.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link300folder.7.1.10" href="pt/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link301folder.7.1.10" href="pt/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link302folder.7.1.10" href="pt/refman.html#uart_recv">recv</a></p>
</div>
</div>
<p><img src="wb_img/blank.png"><img name="imgfolder.6.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.2')"><a name="link301folder.6.2" class="el" href="pt/refman.html#platdepmodules">Dependentes de Plataforma</a></p>
<div id="folder.6.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.6.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.2.1')"><a name="link302folder.6.2.1" class="el" href="pt/refman.html#adcmodule">adc</a></p>
<div id="folder.6.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link303folder.6.2.1" href="pt/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link304folder.6.2.1" href="pt/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link305folder.6.2.1" href="pt/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link306folder.6.2.1" href="pt/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link307folder.6.2.1" href="pt/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link308folder.6.2.1" href="pt/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link309folder.6.2.1" href="pt/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link310folder.6.2.1" href="pt/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link311folder.6.2.1" href="pt/refman.html#adc_burst">burst</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link303folder.7.2" class="el" href="pt/refman.html#platdepmodules">Dependentes de Plataforma</a></p>
<div id="folder.7.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link304folder.7.2.1" class="el" href="pt/refman.html#adcmodule">adc</a></p>
<div id="folder.7.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link305folder.7.2.1" href="pt/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link306folder.7.2.1" href="pt/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link307folder.7.2.1" href="pt/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link308folder.7.2.1" href="pt/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link309folder.7.2.1" href="pt/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link310folder.7.2.1" href="pt/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link311folder.7.2.1" href="pt/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link312folder.7.2.1" href="pt/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link313folder.7.2.1" href="pt/refman.html#adc_burst">burst</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.6.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.6.2.2')"><a name="link312folder.6.2.2" class="el" href="pt/refman.html#dispmodule">disp</a></p>
<div id="folder.6.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link313folder.6.2.2" href="pt/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link314folder.6.2.2" href="pt/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link315folder.6.2.2" href="pt/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link316folder.6.2.2" href="pt/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link317folder.6.2.2" href="pt/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link318folder.6.2.2" href="pt/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link319folder.6.2.2" href="pt/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link320folder.6.2.2" href="pt/refman.html#disp_draw">draw</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link314folder.7.2.2" class="el" href="pt/refman.html#dispmodule">disp</a></p>
<div id="folder.7.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link315folder.7.2.2" href="pt/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link316folder.7.2.2" href="pt/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link317folder.7.2.2" href="pt/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link318folder.7.2.2" href="pt/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link319folder.7.2.2" href="pt/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link320folder.7.2.2" href="pt/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link321folder.7.2.2" href="pt/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link322folder.7.2.2" href="pt/refman.html#disp_draw">draw</a></p>
</div>
</div>
</div>