<html>
<head>
- <title>Installing TinyOS 2.0</title>\r
+ <title>Installing TinyOS 2.0.2</title>\r
<link href="../stylesheets/tutorial.css" rel="stylesheet" type="text/css">\r
</head>
<body>
- <div class="title">Upgrading from TinyOS 1.x to TinyOS 2.x</div>
- <div class="subtitle">Last updated 5 November 2006</div>
+ <div class="title">Upgrading from TinyOS 1.x to TinyOS 2.0.2</div>
+ <div class="subtitle">Last updated 30 July 2007</div>
<p>
This document describes how to upgrade your TinyOS 1.x environment to
a TinyOS 2.x environment. This requires that you not only install the
If you using the Cygwin version recommended
in these install
instructions, you should install the "Recommended" Windows/Cygwin
-nesC RPM.
-Try installing it and if it does not work (e.g., you
-get strange errors when you try to execute it), this may be due
+nesC RPM.
+If you
+get strange errors when you try to compile TinyOS programs,
+such as the error message "the procedure entry point basename could not be located
+in the dynamic link library cygwin1.dll", this is likely due
to a Cygwin version incompatibility: try the "Other" Windows/Cygwin
-RPM (1.2.7a).
+RPM. If you are using Cygwin and installing the nesC RPM
+causes an error that the RPM was built for Cygwin, add the <tt>--ignoreos</tt>
+option.
+
+
<p>
<td><a href="http://www.tinyos.net/dist-1.2.0/tinyos/linux/nesc-1.2.8a-1.i386.rpm">nesc-1.2.8a-1.i386.rpm </a></td>
<td><a href=""></a><code>rpm -Uvh</code><br><code>rpm -Uvh --ignoreos</code> (if Cygwin complains)</td>
</tr>
-
+<tr></tr>
+<tr>
+ <td bgcolor="#dddddd"><b>Tool</b></td>
+ <td bgcolor="#dddddd"><b>Windows/Cygwin</b></td>
+ <td bgcolor="#dddddd"><b>32-bit Linux</b></td>
+ <td bgcolor="#dddddd"><b>64-bit Linux</b></td>
+ <td bgcolor="#dddddd"><b>Command</b></td>
+</tr>
<tr>
- <td bgcolor="#dddddd">tinyos-tools</td>
- <td bgcolor="#dddddd"><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-tools-1.2.3-1.cygwin.i386.rpm">tinyos-tools-1.2.2-1.cygwin.i386.rpm</a></td>
- <td bgcolor="#dddddd"><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-tools-1.2.3-1.cygwin.i386.rpm">tinyos-tools-1.2.2-1.cygwin.i386.rpm</a></td>
- <td bgcolor="#dddddd"><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-tools-1.2.3-1.i386.rpm">tinyos-tools-1.2.2-1.i386.rpm</a></td>
- <td bgcolor="#dddddd"><a href=""></a><code>rpm -ivh --force</code> (1.x tree)<br><code>rpm -Uvh</code> (no 1.x tree)<br></td>
+ <td>tinyos-tools</td>
+ <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-tools-1.2.4-2.cygwin.i386.rpm">tinyos-tools-1.2.4-2.cygwin.i386.rpm</a></td>
+ <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-tools-1.2.4-2.i386.rpm">tinyos-tools-1.2.4-2.i386.rpm</a></td>
+ <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-tools-1.2.4-2.i686.rpm">tinyos-tools-1.2.4-2.i686.rpm</a></td>
+ <td><a href=""></a><code>rpm -ivh --force</code> (1.x tree)<br><code>rpm -Uvh</code> (no 1.x tree)<br></td>
</tr>
</tbody></table>
<tr>
<td>TinyOS</td>
- <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-2.0.0-3.cygwin.noarch.rpm">tinyos-2.0.0-3.cygwin.noarch.rpm</a></td>
- <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-2.0.0-3.noarch.rpm">tinyos-2.0.0-3.noarch.rpm</a></td>
+ <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-2.0.2-2.cygwin.noarch.rpm">tinyos-2.0.2-2.cygwin.noarch.rpm</a></td>
+ <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-2.0.2-2.noarch.rpm">tinyos-2.0.2-2.noarch.rpm</a></td>
<td><tt>rpm -Uvh</tt> (to upgrade)<br>
<tt>rpm -ivh</tt> (to install)<br>
<tt>rpm -ivh --force</tt> (to force install)<br>
groups: </li>
-->
</code></code></li></ol>
+<li><p>Finally, if you have installed TinyOS 2.0.1, there is a bug in TOSSIM (which will be fixed in 2.0.2).
+The bug is in file <tt>tos/chips/atm128/sim/atm128_sim.h</tt>. Change these lines 22 and 23 from:
+
+<pre>
+#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + 0x20)
+#define _SFR_IO16(io_addr) _MMIO_WORD((io_addr) + 0x20)
+</pre>
+
+to
+
+<pre>
+#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr))
+#define _SFR_IO16(io_addr) _MMIO_WORD((io_addr))
+</pre>
+
+If you do not do this, then timers will not work correctly.
</li></ul>
<a name="tinyos1"><h1>Switching back to a TinyOS 1.x tree</h1></a>