]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - doc/html/upgrade-tinyos.html
Update tos-bsl for win32 python
[tinyos-2.x.git] / doc / html / upgrade-tinyos.html
index 0ef16dffef96a687845b5d92adfd017af6473654..a6738b1aa83a24e6b1a68c1d6a9702c6944cdf4d 100644 (file)
@@ -1,20 +1,16 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><style type="text/css">
-<!--
-
-BODY { font-size: 10pt; font-family: Arial, Helvetica, sans-serif; }
-TD { font-size: 10pt; font-family: Arial, Helvetica, sans-serif; }
-
-P { font-size: 10pt; font-family: Arial, Helvetica, sans-serif; }
-P.headline { font-size = 14pt; font-weight=bold; }
-
--->
-</style></head><body>
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+
+  <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.0.2</div>
+    <div class="subtitle">Last updated 30 July 2007</div>
 <p>
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-<tbody><tr><td bgcolor="#eeeeee"><font face="verdana, arial, helvetica, sans-serif" size="3"><b>Upgrading from TinyOS 1.x to TinyOS 2.x</b></font></td>
-</tr></tbody></table>
-</p><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 
 TinyOS 2.x rpm, but also that you upgrade your tools from the toolset
@@ -29,31 +25,33 @@ need to be reconfigured if you switch from TinyOS 2.x to TinyOS
 1.x. The 1.2 toolset is backwards compatible with the 1.x TinyOS tree,
 so switching back and forth requires only a few variable changes. You
 can find those directions <a href="#tinyos1">at the bottom of the page</a>.
-</p><p>
+</p>
+<p>
 There are 3 steps to upgrading from 1.x to 2.x:
-</p><ol>
-  <li> <a href="#external-tools">Upgrade your external tools (compilers). </a>
-  </li><li> <a href="#tinyos-tools">Upgrade your Tinyos-specific tools. </a>
-  </li><li> <a href="#tinyos2">Install the Tinyos 2.x source tree. </a>
-</li></ol>
+</p>
+<ol>
+  <li> <a href="#external-tools">Upgrade your external tools (compilers). </a></li>
+  <li> <a href="#tinyos-tools">Upgrade your Tinyos-specific tools. </a></li>
+  <li> <a href="#tinyos2">Install the Tinyos 2.x source tree. </a></li>
+</ol>
 
-<hr>
 
-<a name="external-tools"><h3> 1. Upgrade your external tools. </h3></a>
+<h1><a name="external-tools">Step 1: Upgrade your external tools.</a></h1>
 The 1.2 toolset uses the same Java JDK and ATT Graphviz versions, so 
 those do not need to be upgraded. What does need to be upgraded are
 your compiler tools. Install the appropriate version of the following 
-(Windows or Linux) with the rpm command 'rpm -Uvh <rpm>'.
-</rpm><p>
+(Windows or Linux) with the rpm command 'rpm -Uvh <i>rpm</i>'.
+<p>
 At this time, we have available compiler toolsets for Atmel AVR and 
 TI MSP430 platforms. 
-</p><p>
+</p>
+<p>
 All of the tools are in the <code>http://www.tinyos.net/dist-1.2.0/</code>
 and the <code>http://www.tinyos.net/dist-2.0.0</code>
 distribution trees, but are linked below for convenience.
+</p>
 
-<!----- AVR external tools -------->
-</p><p><b><em>Atmel AVR Tools</em></b>
+<b><em>Atmel AVR Tools</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b>Tool</b></td>
@@ -94,8 +92,8 @@ distribution trees, but are linked below for convenience.
 </tbody></table>
 <i><font color="red">&#8224;</font>If you receive an rpm error that indicates that you have a newer version already installed, try <code>rpm -Uvh --force</code></i>
 
-<!----- MSP external tools -------->
-</p><p><b><em>TI MSP430 Tools</em></b>
+<p></p>
+<b><em>TI MSP430 Tools</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b>Tool</b></td>
@@ -142,16 +140,15 @@ distribution trees, but are linked below for convenience.
 
 <tr>
   <td>gdb</td>
-<!--  <td><a href="http://www.tinyos.net/dist-2.0.0/tools/windows/msp430tools-gdb-6.0-20050609.cygwin.i386.rpm">msp430tools-gdb-6.0-20050609.cygwin.i386.rpm</a></td> -->
   <td><a href="http://www.tinyos.net/dist-2.0.0/tools/windows/"></a>Not yet available</td>
   <td><a href="http://www.tinyos.net/dist-2.0.0/tools/linux/msp430tools-gdb-6.0-20050609.i386.rpm">msp430tools-gdb-6.0-20050609.i386.rpm</a></td>
 </tr>
 
 </tbody></table>
 
-</p><hr>
-<a name="tinyos-tools"><h3> 2. Upgrade your TInyOS-specific tools. </h3></a>
+<h1><a name="tinyos-tools">Step 2: Upgrade your TinyOS-specific tools.</a></h1>
 
+<p>
 The TinyOS-specific tools are the NesC compiler and a set of tools
 developed in the tinyos-2.x/tools source code repository. They are
 also installed using rpms. Due to file conflicts between the new version
@@ -161,18 +158,21 @@ Also, if you plan on maintaining a tinyos-1.x tree
 simultaneously with a tinyos-2.x tree, the tinyos-tools installed for the
 1.x versions must remain installed so use <code>rpm -ivh</code>. If you are 
 only installing a 2.x tree, you can use <code>rpm -Uvh</code>.
-If you using the Cygwin version recommendedin these install
+If you using the Cygwin version recommended
+in these install
 instructions, you should install the "Recommended" Windows/Cygwin
-nesC RPM (1.2.7b). If you install it and it does not work (e.g., you
-get strange errors when you try to execute it), this may be due
-to a Cygwin version incompatibility: try the "Other" Windows/Cygwin
-RPM (1.2.7a). 
-
-
-<p>
-
-<!----- tinyos-2.x/tinyos rpms  -------->
-</p><p><b><em>TinyOS-specific Tools</em></b>
+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. 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>
+
+<b><em>TinyOS-specific Tools</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b>Tool</b></td>
@@ -184,54 +184,75 @@ RPM (1.2.7a).
 
 <tr>
   <td>NesC</td>
-  <td><a href="http://csl.stanford.edu/~pal/tinyos/nesc-1.2.7b-1.cygwin.i386.rpm">nesc-1.2.7b-1.cygwin.i386.rpm</a></td>
-  <td><a href="http://www.tinyos.net/dist-1.2.0/tinyos/windows/nesc-1.2.7a-1.cygwin.i386.rpm">nesc-1.2.7a-1.cygwin.i386.rpm</a></td>
-  <td><a href="http://www.tinyos.net/dist-1.2.0/tinyos/linux/nesc-1.2.7a-1.i386.rpm">nesc-1.2.7a-1.i386.rpm </a></td>
-  <td><a href=""></a><code>rpm -Uvh</code></td>
+  <td><a href="http://www.tinyos.net/dist-1.2.0/tinyos/windows/nesc-1.2.8a-1.cygwin.i386.rpm">nesc-1.2.8a-1.cygwin.i386.rpm</a></td>
+  <td><a href="http://www.tinyos.net/dist-1.2.0/tinyos/windows/nesc-1.2.8b-1.cygwin.i386.rpm">nesc-1.2.8b-1.cygwin.i386.rpm</a></td>
+  <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>
-  <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.2-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.2-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.2-1.i386.rpm">tinyos-tools-1.2.2-1.i386.rpm</a></td>
-  <td bgcolor="#dddddd"><a href=""></a><code>rpm -ivh --force</code>&nbsp;(1.x tree)<br><code>rpm -Uvh</code>&nbsp;(no 1.x tree)<br></td>
+  <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>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-3.i386.rpm">tinyos-tools-1.2.4-3.i386.rpm</a></td>
+  <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-tools-1.2.4-3.i686.rpm">tinyos-tools-1.2.4-3.i686.rpm</a></td>
+  <td><a href=""></a><code>rpm -ivh --force</code>&nbsp;(1.x tree)<br><code>rpm -Uvh</code>&nbsp;(no 1.x tree)<br></td>
 </tr>
 
 </tbody></table>
 
-</p><hr>
-<a name="tinyos2"><h3> 3. Install the TinyOS 2.x source tree. </h3></a>
+<h1><a name="tinyos2">Step 3: Install the TinyOS 2.x source tree.</a></h1>
 
 Now that the tools are installed, you need only install the tinyos 2.x 
 source tree and then set your environment variables.
 
 <ul>
 <li> Install tinyos-2.x
-<p>
-<!----- TinyOS  -------->
-To preserve your old tinyos-1.x tree, we strongly recommend that you use
+
+<p>If you have an existing 1.x tree, we strongly recommend that you use
 the install (<code>-i</code>) rpm argument when installing the tinyos-2.x rpm rather 
 than the upgrade (<code>-U</code>) argument. The difference is that the <code>-U</code> will 
 first remove the tinyos-1.x tree while <code>-i</code> will not remove previously installed
-files. Said another way, we recommend using <code>rpm -ivh</code>.
+files. Said another way, we recommend using <code>rpm -ivh</code>.</p>
+
+<p>If you have an existing 2.x tree which you want to keep unchanged, then
+you will need to move it to make space for the new one. For example, if you
+have an existing tree in <tt>/opt/tinyos-2.x/</tt>, then you can move it
+to <tt>/opt/tinyos-2.x-old</tt>. Once you have moved it, we recommend
+performing a forced installation of the 2.0 tree.</p>
 
-</p><p><b><em>TinyOS 2.x</em></b>
+<p>If you have an existing 2.x tree which you do not care about, then we
+recommend removing it before installing the new one with a forced install.</p>
+
+<b><em>TinyOS 2.x</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b></b></td>
   <td bgcolor="#dddddd"><b>Windows/Cygwin</b></td>
   <td bgcolor="#dddddd"><b>Linux</b></td>
+  <td bgcolor="#dddddd"><b>Command</b></td>
 </tr>
 
 <tr>
   <td>TinyOS</td>
-  <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/windows/tinyos-2.0.0beta2-3.cygwin.noarch.rpm">tinyos-2.0.0beta2-3.cygwin.noarch.rpm</a></td>
-  <td><a href="http://www.tinyos.net/dist-2.0.0/tinyos/linux/tinyos-2.0.0beta2-3.noarch.rpm">tinyos-2.0.0beta2-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/>
+  </td>      
 </tr>
 
-</tbody></table>
-</p></li><li> Configure your environment
+</tbody></table></li>
+
+<li> Configure your environment
 <p>
 In TinyOS 1.x, much of your environment was set by the rpm installation process
 by copying a tinyos.sh file into /etc/profile.d which was subsequently run anytime
@@ -239,20 +260,23 @@ a shell was started. Because this was deemed unnecessarily invasive, the 2.x rpm
 does not do this. Rather, you need to set these variables yourself. Ideally, you'll
 put them in a shell script that will run when your shell starts, but you needn't 
 put such a script under /etc/profile.d. 
-</p><p>
+</p>
+<p>
 <i>Please take note of the current settings since you'll need those if you want
 to work in your current 1.x tree sometime in the future. </i>
-</p><p>
+</p>
+<p>
 The example
 settings below assume that the tinyos-2.x installation is in /opt/tinyos-2.x.
 Change the settings to be correct for where you've put your tinyos-2.x tree. Note
 that the windows CLASSPATH must be a windows-style path, not a cygwin path. You can 
 generate a windows style path from a cygwin-style path using 'cygpath -w'. For example:
-</p><pre>export CLASSPATH=`cygpath -w $TOSROOT/support/sdk/java/tinyos.jar`
+</p>
+<pre>export CLASSPATH=`cygpath -w $TOSROOT/support/sdk/java/tinyos.jar`
 export CLASSPATH="$CLASSPATH;."
 </pre>
 
-<p><b><em>TinyOS 2.x</em></b>
+<p></p><b><em>TinyOS 2.x</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b>Environment Variable</b></td>
@@ -294,27 +318,47 @@ export CLASSPATH="$CLASSPATH;."
 
 <i><font color="red">&#8224;</font>Only necessary if you're using the MSP430 platform/tools.</i>
 
-</p><p>
+<p>
 In addition to the above environment variables, do the following on Linux machines:
-</p><ol>
+</p>
+
+<ol>
 <li> Change the ownership on your /opt/tinyos-2.x files: <code>chown -R&nbsp;&lt;your uid&gt;&nbsp;/opt/tinyos-2.x
-</code></li><li> Change the permissions on any serial (/dev/ttyS&lt;N&gt;), usb
+</code></li>
+<li> Change the permissions on any serial (/dev/ttyS&lt;N&gt;), usb
 (/dev/tts/usb&lt;N&gt;, /dev/ttyUSB&lt;N&gt;), or parallel (/dev/parport) devices you
-are going to use: <code>chmod 666 /dev/&lt;devicename&gt;<code>
-<!-- 
-<li> Add any users who will be using TinyOS to the uucp, lp, and lock 
-groups: </li>
--->
-</code></code></li></ol>
-
-</li></ul>
-<hr>
-<a name="tinyos1"><h3>Switching back to a TinyOS 1.x tree</h3></a>
-Since the tools are backwardly compatible, you need only change
+are going to use: <code>chmod 666 /dev/&lt;devicename&gt;</code></li>
+</ol></li>
+</ul>
+
+<ul>
+<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:</p>
+
+<pre>
+#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + 0x20)
+#define _SFR_IO16(io_addr) _MMIO_WORD((io_addr) + 0x20)
+</pre>
+
+<p>to</p>
+
+<pre>
+#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr))
+#define _SFR_IO16(io_addr) _MMIO_WORD((io_addr))
+</pre>
+
+<p>If you do not do this, then timers will not work correctly.</p>
+</li>
+</ul>
+
+<h1><a name="tinyos1">Switching back to a TinyOS 1.x tree</a></h1>
+<p>Since the tools are backwardly compatible, you need only change
 your environment variables to point to the 1.x settings. Assuming 
 that your old tree was in /opt/tinyos-1.x, you would use the following 
 values:
-<p><b><em>TinyOS 1.x</em></b>
+</p>
+
+<b><em>TinyOS 1.x</em></b>
 <table border="0">
 <tbody><tr>
   <td bgcolor="#dddddd"><b>Environment Variable</b></td>
@@ -347,4 +391,7 @@ values:
 <td>
 
 </td></tr></tbody></table>
-</p></body></html>
+
+<p>Switching between the two should require switching only these environment
+variables.</p>
+</body></html>