2090 lines
		
	
	
	
		
			69 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			2090 lines
		
	
	
	
		
			69 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 | 
						|
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 | 
						|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 | 
						|
<head>
 | 
						|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 | 
						|
<meta name="generator" content="AsciiDoc 8.2.7" />
 | 
						|
<style type="text/css">
 | 
						|
/* Debug borders */
 | 
						|
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
 | 
						|
/*
 | 
						|
  border: 1px solid red;
 | 
						|
*/
 | 
						|
}
 | 
						|
 | 
						|
body {
 | 
						|
  margin: 1em 5% 1em 5%;
 | 
						|
}
 | 
						|
 | 
						|
a {
 | 
						|
  color: blue;
 | 
						|
  text-decoration: underline;
 | 
						|
}
 | 
						|
a:visited {
 | 
						|
  color: fuchsia;
 | 
						|
}
 | 
						|
 | 
						|
em {
 | 
						|
  font-style: italic;
 | 
						|
  color: navy;
 | 
						|
}
 | 
						|
 | 
						|
strong {
 | 
						|
  font-weight: bold;
 | 
						|
  color: #083194;
 | 
						|
}
 | 
						|
 | 
						|
tt {
 | 
						|
  color: navy;
 | 
						|
}
 | 
						|
 | 
						|
h1, h2, h3, h4, h5, h6 {
 | 
						|
  color: #527bbd;
 | 
						|
  font-family: sans-serif;
 | 
						|
  margin-top: 1.2em;
 | 
						|
  margin-bottom: 0.5em;
 | 
						|
  line-height: 1.3;
 | 
						|
}
 | 
						|
 | 
						|
h1, h2, h3 {
 | 
						|
  border-bottom: 2px solid silver;
 | 
						|
}
 | 
						|
h2 {
 | 
						|
  padding-top: 0.5em;
 | 
						|
}
 | 
						|
h3 {
 | 
						|
  float: left;
 | 
						|
}
 | 
						|
h3 + * {
 | 
						|
  clear: left;
 | 
						|
}
 | 
						|
 | 
						|
div.sectionbody {
 | 
						|
  font-family: serif;
 | 
						|
  margin-left: 0;
 | 
						|
}
 | 
						|
 | 
						|
hr {
 | 
						|
  border: 1px solid silver;
 | 
						|
}
 | 
						|
 | 
						|
p {
 | 
						|
  margin-top: 0.5em;
 | 
						|
  margin-bottom: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
ul, ol, li > p {
 | 
						|
  margin-top: 0;
 | 
						|
}
 | 
						|
 | 
						|
pre {
 | 
						|
  padding: 0;
 | 
						|
  margin: 0;
 | 
						|
}
 | 
						|
 | 
						|
span#author {
 | 
						|
  color: #527bbd;
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-weight: bold;
 | 
						|
  font-size: 1.1em;
 | 
						|
}
 | 
						|
span#email {
 | 
						|
}
 | 
						|
span#revision {
 | 
						|
  font-family: sans-serif;
 | 
						|
}
 | 
						|
 | 
						|
div#footer {
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-size: small;
 | 
						|
  border-top: 2px solid silver;
 | 
						|
  padding-top: 0.5em;
 | 
						|
  margin-top: 4.0em;
 | 
						|
}
 | 
						|
div#footer-text {
 | 
						|
  float: left;
 | 
						|
  padding-bottom: 0.5em;
 | 
						|
}
 | 
						|
div#footer-badges {
 | 
						|
  float: right;
 | 
						|
  padding-bottom: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div#preamble,
 | 
						|
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
 | 
						|
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
 | 
						|
div.admonitionblock {
 | 
						|
  margin-right: 10%;
 | 
						|
  margin-top: 1.5em;
 | 
						|
  margin-bottom: 1.5em;
 | 
						|
}
 | 
						|
div.admonitionblock {
 | 
						|
  margin-top: 2.5em;
 | 
						|
  margin-bottom: 2.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.content { /* Block element content. */
 | 
						|
  padding: 0;
 | 
						|
}
 | 
						|
 | 
						|
/* Block element titles. */
 | 
						|
div.title, caption.title {
 | 
						|
  color: #527bbd;
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-weight: bold;
 | 
						|
  text-align: left;
 | 
						|
  margin-top: 1.0em;
 | 
						|
  margin-bottom: 0.5em;
 | 
						|
}
 | 
						|
div.title + * {
 | 
						|
  margin-top: 0;
 | 
						|
}
 | 
						|
 | 
						|
td div.title:first-child {
 | 
						|
  margin-top: 0.0em;
 | 
						|
}
 | 
						|
div.content div.title:first-child {
 | 
						|
  margin-top: 0.0em;
 | 
						|
}
 | 
						|
div.content + div.title {
 | 
						|
  margin-top: 0.0em;
 | 
						|
}
 | 
						|
 | 
						|
div.sidebarblock > div.content {
 | 
						|
  background: #ffffee;
 | 
						|
  border: 1px solid silver;
 | 
						|
  padding: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.listingblock {
 | 
						|
  margin-right: 0%;
 | 
						|
}
 | 
						|
div.listingblock > div.content {
 | 
						|
  border: 1px solid silver;
 | 
						|
  background: #f4f4f4;
 | 
						|
  padding: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.quoteblock {
 | 
						|
  padding-left: 2.0em;
 | 
						|
}
 | 
						|
div.quoteblock > div.attribution {
 | 
						|
  padding-top: 0.5em;
 | 
						|
  text-align: right;
 | 
						|
}
 | 
						|
 | 
						|
div.verseblock {
 | 
						|
  padding-left: 2.0em;
 | 
						|
}
 | 
						|
div.verseblock > div.content {
 | 
						|
  white-space: pre;
 | 
						|
}
 | 
						|
div.verseblock > div.attribution {
 | 
						|
  padding-top: 0.75em;
 | 
						|
  text-align: left;
 | 
						|
}
 | 
						|
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
 | 
						|
div.verseblock + div.attribution {
 | 
						|
  text-align: left;
 | 
						|
}
 | 
						|
 | 
						|
div.admonitionblock .icon {
 | 
						|
  vertical-align: top;
 | 
						|
  font-size: 1.1em;
 | 
						|
  font-weight: bold;
 | 
						|
  text-decoration: underline;
 | 
						|
  color: #527bbd;
 | 
						|
  padding-right: 0.5em;
 | 
						|
}
 | 
						|
div.admonitionblock td.content {
 | 
						|
  padding-left: 0.5em;
 | 
						|
  border-left: 2px solid silver;
 | 
						|
}
 | 
						|
 | 
						|
div.exampleblock > div.content {
 | 
						|
  border-left: 2px solid silver;
 | 
						|
  padding: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.imageblock div.content { padding-left: 0; }
 | 
						|
div.imageblock img { border: 1px solid silver; }
 | 
						|
span.image img { border-style: none; }
 | 
						|
 | 
						|
dl {
 | 
						|
  margin-top: 0.8em;
 | 
						|
  margin-bottom: 0.8em;
 | 
						|
}
 | 
						|
dt {
 | 
						|
  margin-top: 0.5em;
 | 
						|
  margin-bottom: 0;
 | 
						|
  font-style: normal;
 | 
						|
}
 | 
						|
dd > *:first-child {
 | 
						|
  margin-top: 0.1em;
 | 
						|
}
 | 
						|
 | 
						|
ul, ol {
 | 
						|
    list-style-position: outside;
 | 
						|
}
 | 
						|
div.olist > ol {
 | 
						|
  list-style-type: decimal;
 | 
						|
}
 | 
						|
div.olist2 > ol {
 | 
						|
  list-style-type: lower-alpha;
 | 
						|
}
 | 
						|
 | 
						|
div.tableblock > table {
 | 
						|
  border: 3px solid #527bbd;
 | 
						|
}
 | 
						|
thead {
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-weight: bold;
 | 
						|
}
 | 
						|
tfoot {
 | 
						|
  font-weight: bold;
 | 
						|
}
 | 
						|
 | 
						|
div.hlist {
 | 
						|
  margin-top: 0.8em;
 | 
						|
  margin-bottom: 0.8em;
 | 
						|
}
 | 
						|
div.hlist td {
 | 
						|
  padding-bottom: 15px;
 | 
						|
}
 | 
						|
td.hlist1 {
 | 
						|
  vertical-align: top;
 | 
						|
  font-style: normal;
 | 
						|
  padding-right: 0.8em;
 | 
						|
}
 | 
						|
td.hlist2 {
 | 
						|
  vertical-align: top;
 | 
						|
}
 | 
						|
 | 
						|
@media print {
 | 
						|
  div#footer-badges { display: none; }
 | 
						|
}
 | 
						|
 | 
						|
div#toctitle {
 | 
						|
  color: #527bbd;
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-size: 1.1em;
 | 
						|
  font-weight: bold;
 | 
						|
  margin-top: 1.0em;
 | 
						|
  margin-bottom: 0.1em;
 | 
						|
}
 | 
						|
 | 
						|
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
 | 
						|
  margin-top: 0;
 | 
						|
  margin-bottom: 0;
 | 
						|
}
 | 
						|
div.toclevel2 {
 | 
						|
  margin-left: 2em;
 | 
						|
  font-size: 0.9em;
 | 
						|
}
 | 
						|
div.toclevel3 {
 | 
						|
  margin-left: 4em;
 | 
						|
  font-size: 0.9em;
 | 
						|
}
 | 
						|
div.toclevel4 {
 | 
						|
  margin-left: 6em;
 | 
						|
  font-size: 0.9em;
 | 
						|
}
 | 
						|
/* Workarounds for IE6's broken and incomplete CSS2. */
 | 
						|
 | 
						|
div.sidebar-content {
 | 
						|
  background: #ffffee;
 | 
						|
  border: 1px solid silver;
 | 
						|
  padding: 0.5em;
 | 
						|
}
 | 
						|
div.sidebar-title, div.image-title {
 | 
						|
  color: #527bbd;
 | 
						|
  font-family: sans-serif;
 | 
						|
  font-weight: bold;
 | 
						|
  margin-top: 0.0em;
 | 
						|
  margin-bottom: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.listingblock div.content {
 | 
						|
  border: 1px solid silver;
 | 
						|
  background: #f4f4f4;
 | 
						|
  padding: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
div.quoteblock-attribution {
 | 
						|
  padding-top: 0.5em;
 | 
						|
  text-align: right;
 | 
						|
}
 | 
						|
 | 
						|
div.verseblock-content {
 | 
						|
  white-space: pre;
 | 
						|
}
 | 
						|
div.verseblock-attribution {
 | 
						|
  padding-top: 0.75em;
 | 
						|
  text-align: left;
 | 
						|
}
 | 
						|
 | 
						|
div.exampleblock-content {
 | 
						|
  border-left: 2px solid silver;
 | 
						|
  padding-left: 0.5em;
 | 
						|
}
 | 
						|
 | 
						|
/* IE6 sets dynamically generated links as visited. */
 | 
						|
div#toc a:visited { color: blue; }
 | 
						|
 | 
						|
/* Because IE6 child selector is broken. */
 | 
						|
div.olist2 ol {
 | 
						|
  list-style-type: lower-alpha;
 | 
						|
}
 | 
						|
div.olist2 div.olist ol {
 | 
						|
  list-style-type: decimal;
 | 
						|
}
 | 
						|
</style>
 | 
						|
<title>WinAVR User Manual - 20081205</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div id="header">
 | 
						|
<h1>WinAVR User Manual - 20081205</h1>
 | 
						|
<span id="author">Eric B. Weddington</span><br />
 | 
						|
<span id="email"><tt><<a href="mailto:arcanum@users.sf.net">arcanum@users.sf.net</a>></tt></span><br />
 | 
						|
</div>
 | 
						|
<div id="preamble">
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>WinAVR is a suite of executable, open source software
 | 
						|
development tools for the Atmel AVR series of RISC microprocessors hosted on
 | 
						|
the Windows platform. It includes the GNU GCC compiler for C and C++.</p></div>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
<h2 id="_1_0_what_s_new">1.0 What's New</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>Below is just a sample of what's new.</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
New version of GNU Binutils: 2.19
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
New version of GCC: 4.3.2
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
New version of AVR-LibC: 1.6.4
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
New version of Programmers Notepad: 2.0.8.718
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
New devices supported:
 | 
						|
</p>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
ATxmega64A3
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
ATxmega128A3
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
ATxmega256A3
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
ATxmega256A3B
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
ATmega32U6
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Various bugs fixed.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
</div>
 | 
						|
<h2 id="_2_0_winavr_installation">2.0 WinAVR Installation</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>This section describes various information and notes about the installation of
 | 
						|
WinAVR.</p></div>
 | 
						|
<h3 id="_2_1_manifest">2.1 Manifest</h3><div style="clear:left"></div>
 | 
						|
<div class="olist"><ol>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Binutils 2.19
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Binary utilities for AVR target (including assembler, linker, etc.).</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Compiler Collection (GCC) 4.3.2
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>C language and C++ language compiler for AVR target. There are
 | 
						|
caveats for using the C++ compiler. See the installed avr-libc
 | 
						|
User Manual in the <InstallDir>\doc directory.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
avr-libc 1.6.4
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>C Standard Library for AVR.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
AVR-Ada 0.5.2
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Run Time System for the Ada compiler.</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>(Removed temporarily)</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
AVRDUDE 5.5
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>avrdude is an open source programmer software that is user extensible.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Debugger (GDB) / Insight 6.8
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>GDB is a command-line debugger. Insight is GDB with a GUI!</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
AVaRICE 2.7
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>avarice is a program for interfacing the Atmel JTAG ICE to GDB and users
 | 
						|
can debug their AVR. Use it in conjunction with GDB.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SimulAVR 0.1.2.5
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>simulavr is used in conjunction with GDB to provide AVR simulation.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SRecord 1.38
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>SRecord is a collection of powerful tools for manipulating EPROM load files.
 | 
						|
It reads and writes numerous EPROM file formats, and can perform many
 | 
						|
different manipulations.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
MFile
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>An automatic makefile generator for AVR GCC.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Programmers Notepad 2.0.8.718
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Programming editor and IDE. This editor includes the Scintilla editor
 | 
						|
component.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
LibUSB 0.1.12.1 and device drivers
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>This is a USB library that is linked into AVRDUDE and AVaRICE to allow them
 | 
						|
to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers
 | 
						|
for these devices are also included.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Cygwin DLLs
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Certain DLLs from the Cygwin project are required for specific included
 | 
						|
packages. See the Build Notes section for which packages require which DLL.</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>NOTE: Not all executables require these Cygwin DLLs.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Many native Win32 GNU programs and utilities including make and bash.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Tofrodos 1.6
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>A command-line text file line-ending convertor.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
A Makefile Template for you to use in your projects.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Documentation for the various projects.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Source code patches used to build the various projects.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ol></div>
 | 
						|
<h3 id="_2_2_layout">2.2 Layout</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Listed below are some directories you might want to know about.</p></div>
 | 
						|
<div class="para"><p><tt><install></tt> = The directory where you installed WinAVR.</p></div>
 | 
						|
<div class="vlist"><dl>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\bin</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    The AVR software development programs. This directory should be in your
 | 
						|
    <tt>PATH</tt> environment variable. This includes:
 | 
						|
</p>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Binutils
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GCC
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
avrdude
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Debugger (GDB)
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Insight
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
AVaRICE
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SimulAVR
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SRecord
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Various required DLLs
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\utils\bin</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    A collection of Unix programs built for the Windows
 | 
						|
    platform. The programs make and sh (bash) reside here. This directory
 | 
						|
    should be in your PATH environment variable.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\avr\lib</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    avr-libc libraries, startup files, linker scripts,
 | 
						|
    and stuff.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\avr\include</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    avr-libc header files. This is where, for
 | 
						|
    example, #include <string.h> comes from.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\avr\include\avr</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    avr-libc header files specific to the AVR
 | 
						|
    microprocessor. This is where, for example, #include <avr/io.h> comes
 | 
						|
    from.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\lib</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    GCC libraries, other libraries,headers and stuff.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\libexec</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    GCC program components
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\doc</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Various documentation. Before asking, RTFM! :-)
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\doc\avr-libc\examples</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Example projects with source code. Have fun!
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\sample</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Sample makefile (see below). Batch files to use in
 | 
						|
    compiling from AVR Studio 3.x (see below).
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\pn</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Programmers Notepad
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\mfile</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    MFile
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\source</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Documentation on where to find the source code for the
 | 
						|
    various projects and source code patches that were used to build the tools.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\utils\bin</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Utility programs, mainly from Unix-land that are used in building the
 | 
						|
    software, such as the shell (sh.exe), make.exe, and other programs called
 | 
						|
    from a Makefile.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<strong><tt><install>\utils\libusb\bin</tt></strong>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    LibUSB programs and drivers.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
</dl></div>
 | 
						|
<h3 id="_2_3_tt_path_tt_environment_variable">2.3 <tt>PATH</tt> Environment Variable</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>There are two directories in WinAVR that contain executable programs.
 | 
						|
If <tt><install></tt> is your install directory then these two directories are:</p></div>
 | 
						|
<div class="para"><p><tt><install>\bin</tt><br />
 | 
						|
<tt><install>\utils\bin</tt></p></div>
 | 
						|
<div class="para"><p>The <tt><install>\bin</tt> directory contains the software development toolset
 | 
						|
proper. This includes GNU binutils, GCC, and other programs.</p></div>
 | 
						|
<div class="para"><p>The <tt><install>\utils\bin</tt> contains many miscellaneous Unix or GNU programs
 | 
						|
that are built for Windows. This includes sh (bash) and make among a host of
 | 
						|
other things.</p></div>
 | 
						|
<div class="para"><p>For your operating system to easily locate these directories, they must be put
 | 
						|
at the <strong>beginning</strong> of the <tt>PATH</tt> environment variable. WinAVR can do this
 | 
						|
automatically upon installation, if you selected this option. The reason for
 | 
						|
putting these directories at the beginning of the <tt>PATH</tt> environment variable
 | 
						|
is for the correct make program to be called. There have been reports from
 | 
						|
users that have Borland tools installed and the Borland make program is started
 | 
						|
rather than GNU make correctly started.</p></div>
 | 
						|
<div class="para"><p>These programs are put into two seperate directories in case you want to use
 | 
						|
a different set of utility programs than the set that comes with WinAVR.</p></div>
 | 
						|
<div class="para"><p>If you do not wish to use the utilities that comes with WinAVR, remove the
 | 
						|
<tt><install>\utils\bin</tt> directory from your PATH environment variable.</p></div>
 | 
						|
<div class="para"><p>For Windows 95 and 98 users, see the autoexec.bat file in the root drive
 | 
						|
where your OS is installed. This is usually in C:\.</p></div>
 | 
						|
<div class="para"><p>For all other Windows users, the WinAVR installer modifies this registry key:
 | 
						|
<tt>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path</tt></p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Important</div>
 | 
						|
</td>
 | 
						|
<td class="content">On Windows NT/2K/XP you must have Administrator priviledges for
 | 
						|
the installer to automatically put these directories in your <tt>PATH</tt> environment
 | 
						|
variable.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<h3 id="_2_4_registry_keys">2.4 Registry Keys</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>WinAVR installs a minimal amount of registry keys. These keys are installed
 | 
						|
to inform of the installation path, the uninstaller, and for GCC to find
 | 
						|
other parts of the compiler as needed. Below are the specific keys that are
 | 
						|
installed.</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Installation Location::
 | 
						|
    This registry key will be added to provide the location of the WinAVR
 | 
						|
    installation:
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\SOFTWARE\WinAVR\{VERSION}`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>with {VERSION} being replaced by the version number of WinAVR. Formerly,
 | 
						|
the key above without {VERSION} was equal to the install location.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GCC Component Paths::
 | 
						|
    There are some keys that are installed that are used to help GCC find installed component programs:
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\GCC`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\BINUTILS`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\G++`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>with {VERSION} being replaced by the version number of WinAVR.
 | 
						|
Each of these keys points to the WinAVR install location for that version
 | 
						|
of WinAVR.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
PATH Environment Variable::
 | 
						|
    The registry key:
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>may be modified (if selected at installation time) to add two directories to the
 | 
						|
PATH environment variable.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Uninstaller::
 | 
						|
    There are several registry keys written under:
 | 
						|
</p>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>`HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR-{VERSION}`</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="literalblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>with {VERSION} being replaced by the version number of WinAVR.
 | 
						|
These registry keys are used to register the uninstaller with Windows.</tt></pre>
 | 
						|
</div></div>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
<h3 id="_2_5_libusb_win32">2.5 LibUSB-Win32</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>LibUSB-Win32 is a USB library that is linked into AVRDUDE and AVaRICE to allow
 | 
						|
them to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers
 | 
						|
for these devices are also included. LibUSB is installed under:</p></div>
 | 
						|
<div class="para"><p><tt><install>\utils\libusb\bin</tt></p></div>
 | 
						|
<div class="para"><p>The drivers for the JTAG ICE mkII and the AVRISP mkII are also located in the
 | 
						|
above directory.</p></div>
 | 
						|
<div class="para"><p>To install the LibUSB-Win32 drivers (when AVR Studio is not installed):
 | 
						|
- Plug in your Atmel device (JTAG ICE mkII or AVRISP mkII).
 | 
						|
- When Windows asks to locate drivers for this device, select "Install from
 | 
						|
a list or specific location". Press Next.
 | 
						|
- Uncheck the checkbox, "Search removable media".
 | 
						|
- Check the checkbox "Include this location in the search" and select the
 | 
						|
location of the drivers in the directory specified above. Press Next.
 | 
						|
The driver will then be installed.</p></div>
 | 
						|
<div class="para"><p>AVR Studio can install and use the USB drivers from Jungo (which is included as
 | 
						|
part of the AVR Studio installation). However, the Jungo drivers and the
 | 
						|
LibUSB-Win32 drivers are mutually exclusive; if one set is installed the other
 | 
						|
set will not work.</p></div>
 | 
						|
<div class="para"><p>You can uninstall the driver by plugging in the device (and making sure it is
 | 
						|
powered on), use the Device Manager to find and select the device (under Jungo
 | 
						|
or LibUSB-Win32, depending on which driver is installed), right click and select
 | 
						|
"Uninstall". Then, install the other driver according to the correct procedures.</p></div>
 | 
						|
<div class="para"><p>LibUSB also has a "filter" driver that is available, however, using this is
 | 
						|
not recommended by the LibUSB author.</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_3_0_toolset_background">3.0 Toolset Background</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>WinAVR is a collection of executable software development tools for the
 | 
						|
Atmel AVR processor hosted on Windows.</p></div>
 | 
						|
<div class="para"><p>These software development tools include:</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Compilers
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Assembler
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Linker
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Librarian
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
File converter
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Other file utilities
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
C Library
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Programmer software
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Debugger
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
In-Circuit Emulator software
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Editor / IDE
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Many support utilities
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
<h3 id="_3_1_the_toolset_and_open_source">3.1 The Toolset and Open Source</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Each of the tools included in WinAVR is Open Source and/or Free Software. Each
 | 
						|
tool has it's own project, usually hosted on
 | 
						|
<a href="http://sourceforge.net/">SourceForge</a> or <a href="http://savannah.gnu.org/">Savannah</a>,
 | 
						|
with their own project maintainers and developers who all volunteer their time
 | 
						|
and energy to creating these tools. Look in the Links section below to find out
 | 
						|
the websites of each of these projects.</p></div>
 | 
						|
<div class="para"><p>Especially note many of these programs come from the Unix and Linux
 | 
						|
platforms. These programs have been ported to the Windows platform but
 | 
						|
generally behave for a Unix-like environment. If you are not used to a
 | 
						|
Unix-like environment it can possibly be frustrating. Read as much
 | 
						|
documentation as you can. Look at examples. Search the Internet. Many links
 | 
						|
are also provided in this manual.</p></div>
 | 
						|
<div class="para"><p>Also remember that this software is updated and improved continually by many
 | 
						|
people who volunteer their precious time to provide some of the best software
 | 
						|
for absolutely no cost or obligation to you. Volunteers are always welcome in
 | 
						|
furthering any of these projects!</p></div>
 | 
						|
<h3 id="_3_2_compiler">3.2 Compiler</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>The compiler in WinAVR is the GNU Compiler Collection, or
 | 
						|
<a href="http://gcc.gnu.org/">GCC</a>. This compiler is incredibly flexible and can be
 | 
						|
hosted on many platforms, it can target many different different processors /
 | 
						|
operating systems (back-ends), and can be configured for multiple different
 | 
						|
languages (front-ends).</p></div>
 | 
						|
<div class="para"><p>The GCC included in WinAVR is targeted for the AVR processor, is built to
 | 
						|
execute on the Windows platform, and is configured to compile C, or C++.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Caution</div>
 | 
						|
</td>
 | 
						|
<td class="content">There are caveats on using C++. See the avr-libc FAQ.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>Because this GCC is targeted for the AVR, the main executable that is
 | 
						|
created is prefixed with the target name: <tt>avr-gcc.exe</tt>. It is also referred to
 | 
						|
as AVR GCC.</p></div>
 | 
						|
<div class="para"><p><tt>avr-gcc</tt> is just a "driver" program only. The compiler itself is called
 | 
						|
<tt>cc1.exe</tt> for C, or <tt>cc1plus.exe</tt> for C++.  Also, the preprocessor <tt>cpp.exe</tt>
 | 
						|
will usually automatically be prepended with the target name: <tt>avr-cpp.exe</tt>.
 | 
						|
The actual set of component programs called is usually derived from the suffix
 | 
						|
of each source code file being processed.</p></div>
 | 
						|
<div class="para"><p>GCC compiles a high-level computer language into assembly, and that is all. It
 | 
						|
cannot work alone. GCC is coupled with another project, GNU Binutils, which
 | 
						|
provides the assembler, linker, librarian and more. Since GCC is just a "driver"
 | 
						|
program, it can automatically call the assembler and linker directly to build
 | 
						|
the final program.</p></div>
 | 
						|
<h3 id="_3_3_assembler_linker_librarian_and_more">3.3 Assembler, Linker, Librarian and More</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p><a href="http://sources.redhat.com/binutils/">GNU Binutils</a> is a collection of binary
 | 
						|
utilities. This also includes the assembler, as. Sometimes you will see it
 | 
						|
referenced as GNU as or gas. Binutils includes the linker, ld; the librarian
 | 
						|
or archiver, ar. There are many other programs included that provide various
 | 
						|
functionality.</p></div>
 | 
						|
<div class="para"><p>Note that while the assembler uses the same mnemonics as proposed by
 | 
						|
Atmel, the "glue" (pseudo-ops, operators, expression syntax) is derived from
 | 
						|
the common assembler syntax used in Unix assemblers, so it is not directly
 | 
						|
compatible to Atmel assembler source files.</p></div>
 | 
						|
<div class="para"><p>Binutils is configured for the AVR target and each of the programs is prefixed
 | 
						|
with the target name. So you have programs such as:</p></div>
 | 
						|
<div class="vlist"><dl>
 | 
						|
<dt>
 | 
						|
<tt>avr-as</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    The Assembler.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-ld</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    The Linker.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-ar</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Create, modify, and extract from archives (libraries).
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-ranlib</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Generate index to archive (library) contents.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-objcopy</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Copy and translate object files.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-objdump</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Display information from object files including disassembly.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-size</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    List section sizes and total size.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-nm</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    List symbols from object files.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-strings</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    List printable strings from files.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-strip</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Discard symbols.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-readelf</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Display the contents of ELF format files.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-addr2line</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Convert addresses to file and line.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<tt>avr-c++filt</tt>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Filter to demangle encoded C++ symbols.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
</dl></div>
 | 
						|
<div class="para"><p>See the binutils user manual for more information on what each program can do.</p></div>
 | 
						|
<h3 id="_3_4_c_library">3.4 C Library</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p><a href="http://www.nongnu.org/avr-libc/">avr-libc</a> is the Standard C Library for
 | 
						|
AVR GCC. It contains many of the standard C routines, and many non-standard
 | 
						|
routines that are specific and useful for the AVR processor.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Note</div>
 | 
						|
</td>
 | 
						|
<td class="content">The actual library is currently split into two main parts, libc.a and
 | 
						|
libm.a, where the latter contains mathematical functions (everything mentioned
 | 
						|
in <math.h>, and a bit more). Thus it is a good idea to always include the
 | 
						|
<tt>-lm</tt> linker option. The WinAVR Makefile Template automatically includes the
 | 
						|
<tt>-lm</tt> linker option. Also, there are additional libraries which allow a
 | 
						|
customization of the printf and scanf function families.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>avr-libc also contains the most documentation on how to use (and build) the
 | 
						|
entire toolset, including code examples. The avr-libc user manual also
 | 
						|
contains the FAQ on using the toolset.</p></div>
 | 
						|
<h3 id="_3_5_making_your_software">3.5 Making Your Software</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>There is one program that brings all of this together. This program is
 | 
						|
<tt>GNU make</tt>. The <tt>make</tt> program reads and interprets a makefile. A makefile is a
 | 
						|
text file that you write that lists and controls how something is made. It is
 | 
						|
most often used to control how software is made.</p></div>
 | 
						|
<div class="para"><p>Each of these programs are Command Line Interface (CLI) tools. They are
 | 
						|
controlled by parameters or switches that are added to the command line. Or,
 | 
						|
in the case of make, by text files that are written and used as input.</p></div>
 | 
						|
<div class="para"><p>Most commercial software development toolsets have an Integrated
 | 
						|
Development Environment (IDE). This consists of a graphical user-interface
 | 
						|
(GUI) that contains a programming editor and graphical front-ends to
 | 
						|
compiler, assembler, linker, standard C library, and librarian programs. These
 | 
						|
front-ends consist of dialog boxes which allow you to set build options and a
 | 
						|
way of creating a list of files that are in a "project". These graphical
 | 
						|
front-ends hide and encapsulate the real command-line compiler, assembler,
 | 
						|
linker, and standard library that are in the background of any software
 | 
						|
development toolset.</p></div>
 | 
						|
<div class="para"><p>WinAVR is a collection of open-source, software development tools from various
 | 
						|
projects. WinAVR does not have a complete graphical IDE like a commerical
 | 
						|
toolset, yet. Because of this, learning to build software under GCC means that
 | 
						|
it would be best to learn how to use the <tt>make</tt> program and learn how to write
 | 
						|
makefiles. Learn the common flags that are used to control GCC which in turn
 | 
						|
can control <tt>gas</tt> and <tt>ld</tt>. You can learn a lot by looking at the Makefile
 | 
						|
Template that comes with WinAVR and looking up all the programs and flags in the
 | 
						|
included user manuals.</p></div>
 | 
						|
<h3 id="_3_6_programming">3.6 Programming</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>After creating your software, you'll want to program your device. You can do
 | 
						|
this by using the program <tt>avrdude</tt> which can interface with various hardware
 | 
						|
devices to program your processor.</p></div>
 | 
						|
<div class="para"><p><tt>avrdude</tt> is a very flexible package. All the information about AVR processors
 | 
						|
and various hardware programmers is stored in a text database. This database
 | 
						|
can be modified by any user to add new hardware or to add an AVR processor
 | 
						|
if it is not already listed.</p></div>
 | 
						|
<h3 id="_3_7_debugging">3.7 Debugging</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Debugging encompasses both simulation and emulation. Both are available in
 | 
						|
WinAVR.</p></div>
 | 
						|
<div class="para"><p>The GNU Debugger (<tt>GDB</tt>) is the main package that can be used for general
 | 
						|
debugging. <tt>GDB</tt> is a command-line program only. <tt>Insight</tt> is GDB plus a GUI
 | 
						|
written in Tcl/Tk. Both <tt>GDB</tt> and <tt>Insight</tt> are configured for the AVR and the
 | 
						|
main executables are prefixed with the target name: <tt>avr-gdb</tt>, and
 | 
						|
<tt>avr-insight</tt>. There is now also a "text mode" GUI for GDB: <tt>avr-gdbtui</tt>.</p></div>
 | 
						|
<div class="para"><p>To do emulation with the JTAG ICE, GDB / Insight requires a "helper" program
 | 
						|
called <tt>avarice</tt> which is also included.</p></div>
 | 
						|
<div class="para"><p>To do simulation, GDB / Insight requires a different "helper" program called
 | 
						|
<tt>simulavr</tt> which is also included.</p></div>
 | 
						|
<div class="para"><p>There are also alternatives for simulation. Atmel offers a free package called
 | 
						|
<tt>AVR Studio</tt> which can also do simulation. The latest version of <tt>AVR Studio</tt>
 | 
						|
is 4.13. Note that <tt>AVR Studio</tt> is currently free to the public, but it is not
 | 
						|
Open Source.</p></div>
 | 
						|
<div class="para"><p>See the section, 5.0 Debugging, Simulating, and Emulating, for detailed
 | 
						|
information on debugging.</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_4_0_setting_up_a_project">4.0 Setting Up a Project</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<h3 id="_4_1_where_s_the_gui_ide">4.1 Where's the GUI / IDE?</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>You won't find a typical GUI / IDE like you might be used to with other
 | 
						|
commercial cross-compilers, or like native compilers on Windows. Each of the
 | 
						|
tools in WinAVR are from their own projects. In this case, an editor or IDE
 | 
						|
is just another component in the toolset. And, everybody has their own
 | 
						|
favourite they want to use. WinAVR allows flexibility.</p></div>
 | 
						|
<div class="para"><p>WinAVR comes with an editor / IDE called Programmers Notepad. This is an
 | 
						|
Open Source editor with some IDE capabilites. Because the compiler and
 | 
						|
associated utilities are all command-line driven, you are free to use
 | 
						|
whatever editor / IDE you want to provided it can call command-line
 | 
						|
programs. See below for more information on Programmers Notepad.</p></div>
 | 
						|
<div class="para"><p>There is current work going on to continually improve the IDE capabilities
 | 
						|
of Programmers Notepad. Let us know if you're interested in volunteering
 | 
						|
to help on these projects.</p></div>
 | 
						|
<h3 id="_4_2_programmers_notepad">4.2 Programmers Notepad</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p><a href="http://www.pnotepad.org/">Programmers Notepad (PN)</a> is an Open Source editor
 | 
						|
with some IDE features. Version 2.x is is a complete rewrite of version 1.
 | 
						|
Many new features are still being added.</p></div>
 | 
						|
<div class="para"><p>PN contains the Open Source <a href="http://www.scintilla.org/">Scintilla</a> editor
 | 
						|
component as the basis for its editor.</p></div>
 | 
						|
<div class="para"><p>PN can call any command-line tool and capture it's output. This is ideal for
 | 
						|
calling the make utility, which executes your makefile, which in turn calls
 | 
						|
the compiler, linker, and other utilities used to build your software. PN will
 | 
						|
then capture the output and display it in a window. You can also click on any
 | 
						|
GCC warning or error and PN will automatically open the file and go to the
 | 
						|
line where the warning or error occurred.</p></div>
 | 
						|
<div class="para"><p>To set up tools, go to the Tools menu up top, select Options, then select Tools
 | 
						|
on the left side menu. The best Scheme to add tools is under
 | 
						|
"(None - Global Tools)". After you add your tool, it will appear in the
 | 
						|
Main Menu under Tools.</p></div>
 | 
						|
<h3 id="_4_3_make_makefiles_and_the_makefile_template">4.3 Make, Makefiles, and the Makefile Template</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>make is a program that is widely used to build software. make reads and
 | 
						|
executes makefiles, which are descriptions of how to build something.
 | 
						|
Makefiles typical do things such as group files together, set lists of
 | 
						|
compiler and linker flags, list rules of how to compile source code to
 | 
						|
object code, how to link object files, how to convert files from one
 | 
						|
type to another, and many other things.</p></div>
 | 
						|
<div class="para"><p>When you set up your project, add a makefile to control how to build your
 | 
						|
software. When you use Programmers Notepad, or other IDE, set it up to
 | 
						|
call make and have it execute your project's makefile.</p></div>
 | 
						|
<div class="para"><p>Three Makefile Templates are included in WinAVR, which provides a lot of
 | 
						|
functionality already written for you. There is the standard Makefile Template
 | 
						|
(Makefile) that has always been included with WinAVR. And there are two new
 | 
						|
Makefile Templates, one to generate a library instead of an application
 | 
						|
(Makefile.lib) and another Makefile Template that enables whole program
 | 
						|
optimization (Makefile.wpo). You can can copy any of these templates to your
 | 
						|
project's directory and easily modify it to fit your project.
 | 
						|
These Makefile Templates can be found in the
 | 
						|
<tt><install>\sample</tt> directory. Copy any of these templates and rename them to
 | 
						|
<tt>Makefile</tt>.</p></div>
 | 
						|
<div class="para"><p>WinAVR also includes the <a href="http://www.sax.de/~joerg/mfile/">MFile</a> utility.
 | 
						|
MFile is a automatic makefile generator for AVR GCC written in Tcl/Tk and can
 | 
						|
run on various platforms including Windows, FreeBSD, Linux, etc. You can
 | 
						|
use this utility to help you quickly generate a makefile for your project
 | 
						|
based on some simple menu input. MFile for the Windows platform uses the WinAVR
 | 
						|
Makefile Template for it's template.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Note</div>
 | 
						|
</td>
 | 
						|
<td class="content">I HIGHLY RECOMMEND THAT YOU BECOME FAMILIAR WITH THE MAKE PROGRAM
 | 
						|
AND WRITING MAKEFILES! PLEASE READ THE MAKE USER MANUAL!</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>For more information on the make program and writing makefiles, see the make
 | 
						|
user manual that is included or see Links below for GNU Manuals Online.</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_5_0_debugging_simulating_and_emulating">5.0 Debugging, Simulating, and Emulating</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Note</div>
 | 
						|
</td>
 | 
						|
<td class="content">The term "debugging" is a generic term and can mean either simulation or
 | 
						|
emulation below.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>There are several different ways to go about debugging, simulating, and
 | 
						|
emulating. Each solution has their own requirements and may involve various
 | 
						|
tradeoffs.</p></div>
 | 
						|
<div class="para"><p>There are open source applications that can be used for simulation and
 | 
						|
emulation, and they are included with WinAVR. Use <tt>GDB</tt> or <tt>Insight</tt>, with the
 | 
						|
<tt>simulavr</tt> back-end for simulating, or with the <tt>avarice</tt> back-end to emulate
 | 
						|
using the Atmel JTAG ICE.</p></div>
 | 
						|
<div class="para"><p>There is a free application from Atmel that can be used for simulation or
 | 
						|
emulation: AVR Studio. The latest version as of this writing is 4.11. AVR Studio
 | 
						|
can be downloaded from the Atmel web site.</p></div>
 | 
						|
<div class="para"><p>There are also a number of commercial simulators, such as VMLab or Proteus VSM.</p></div>
 | 
						|
<div class="para"><p>In general, debugging is dependent upon:</p></div>
 | 
						|
<div class="olist"><ol>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
The application used to debug.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
The file format used.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
The type of debugging information generated in the object code.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ol></div>
 | 
						|
<div class="para"><p>Many times the application that is being used, determines the file format, and
 | 
						|
the type of debugging information that needs to be generated.</p></div>
 | 
						|
<div class="para"><p>This version of the compiler can generate both <strong>DWARF2</strong> and <strong>stabs</strong> debugging
 | 
						|
information.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Note</div>
 | 
						|
</td>
 | 
						|
<td class="content">The compiler will currently default to generating DWARF2 debugging info.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>If you are using the WinAVR Makefile Template, or using MFile, there is a line
 | 
						|
in the makefile that controls the type of debug information that is generated:</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>DEBUG = dwarf-2</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>To generate stabs information change this line to:</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>DEBUG = stabs</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Tip</div>
 | 
						|
</td>
 | 
						|
<td class="content">MFile can change this setting automatically through a menu option.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>This line in the makefile changes the <tt>-g</tt> compiler switch that is sent to GCC.
 | 
						|
See the GCC user manual for more information.</p></div>
 | 
						|
<div class="para"><p>The compiler will build your software and automatically output an ELF file.</p></div>
 | 
						|
<h3 id="_5_1_gdb_insight_simulavr_or_avarice">5.1 GDB/Insight + simulavr or avarice</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>The GNU Debugger (GDB) can be used, with other programs, to simulate or
 | 
						|
emulate your AVR program. Insight is GDB with a GUI (written in Tcl/Tk).
 | 
						|
Insight also has a console window which provides the traditional
 | 
						|
command-line interface to GDB. The terms <em>GDB</em> and <em>Insight</em> will be used
 | 
						|
interchangably.</p></div>
 | 
						|
<div class="para"><p>Use <tt>avarice</tt> with GDB for use with your JTAG In-Circuit Emulator (ICE).</p></div>
 | 
						|
<div class="para"><p>Use <tt>simulavr</tt> with GDB for simulation.</p></div>
 | 
						|
<div class="para"><p>See each of the package's documentation for more information on usage.</p></div>
 | 
						|
<div class="para"><div class="title">Requirements</div><p>File Format: ELF<br />
 | 
						|
Debugging Information: DWARF-2 (preferred) or stabs</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Tip</div>
 | 
						|
</td>
 | 
						|
<td class="content">There is a <a href="http://winavr.sourceforge.net/document.html">tutorial on how to use GDB and avarice</a>
 | 
						|
at the WinAVR web site.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Tip</div>
 | 
						|
</td>
 | 
						|
<td class="content">If you use <tt>avarice</tt>, when you specify a serial port to use with the —jtag
 | 
						|
flag, you must specify it in the form of:</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>--jtag /dev/comX</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>where <strong>X</strong> is the COM port number you are using. This is due to the fact that
 | 
						|
avarice is linked to the Cygwin DLL, which requires a Unix-type format for
 | 
						|
the COM port number.</p></div>
 | 
						|
<h3 id="_5_2_avr_studio">5.2 AVR Studio</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>AVR Studio 4.10 and above has a new parser component that can read ELF files
 | 
						|
natively. These ELF files must contain DWARF2 debugging information.</p></div>
 | 
						|
<div class="para"><div class="title">Requirements (for AVR Studio version 4.10 and greater)</div><p>File Format: ELF<br />
 | 
						|
Debugging Information: DWARF-2</p></div>
 | 
						|
<h3 id="_5_3_commercial_simulators">5.3 Commercial Simulators</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Certain commercial simulators have more requirements to use their products.
 | 
						|
Namely, you must compile your software with the <tt>stabs</tt> debugging information,
 | 
						|
and you must convert your ELF file to either the <strong>COFF</strong> format or to the
 | 
						|
<strong>Atmel Extended COFF</strong> format.</p></div>
 | 
						|
<div class="para"><div class="title">Requirements (dependent upon application used)</div><p>File Format: COFF / Atmel Extended COFF<br />
 | 
						|
Debugging Information: stabs</p></div>
 | 
						|
<div class="para"><p>The GNU Binutils program objcopy (avr-objcopy) has been patched where it can
 | 
						|
now convert from ELF to either of these formats. Note that the converter is
 | 
						|
a beta release.</p></div>
 | 
						|
<div class="para"><p>The usage of avr-objcopy to convert ELF/stabs debugging
 | 
						|
information into AVR COFF debugging information is (long lines wrapped
 | 
						|
with backslashes):</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>avr-objcopy \
 | 
						|
        --debugging \
 | 
						|
        -O $(FORMAT) \
 | 
						|
        --change-section-address .data-0x800000 \
 | 
						|
        --change-section-address .bss-0x800000 \
 | 
						|
        --change-section-address .noinit-0x800000 \
 | 
						|
        --change-section-address .eeprom-0x810000 \
 | 
						|
        $(filename).elf $(filename).cof</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>where <tt>$(FORMAT)</tt> should either be <tt>coff-avr</tt> (COFF format that matches
 | 
						|
the older Atmel AVR COFF documentation, as understood by AVR Studio 3,
 | 
						|
early versions of AVR Studio 4, and also by VMLab), or <tt>coff-ext-avr</tt>
 | 
						|
(current AVR Extended COFF specification, as understood by AVR
 | 
						|
Studio 4.07+; adds long filenames and structure debugging).</p></div>
 | 
						|
<div class="para"><p>There might be some warnings when you run the above, like</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Warning: file {standard input} not found in symbol table, ignoring
 | 
						|
Warning: ignoring function __vectors() outside any compilation unit
 | 
						|
Warning: ignoring function __bad_interrupt() outside any compilation unit</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>Perhaps more of them if your avr-libc has been installed with
 | 
						|
debugging symbols (the default WinAVR installation strips debugging
 | 
						|
symbols from the installed library files). There should be no other
 | 
						|
warning normally.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Note</div>
 | 
						|
</td>
 | 
						|
<td class="content">The avr-objcopy usage describe above is in the Makefile Template that is
 | 
						|
included with WinAVR and in the MFile template. You should only have to call
 | 
						|
<em>make coff</em> to convert to AVR COFF, or call <em>make extcoff</em> to convert to
 | 
						|
AVR Extended COFF.</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>As Atmel has now moved towards the ELF file format with DWARF-2 debugging
 | 
						|
information, the (E)COFF conversion is deprecated. Thus, there is currently no
 | 
						|
ongoing development on the COFF converter. There are a few known bugs in it, in
 | 
						|
particular it is known that using forward struct references can crash
 | 
						|
the converter. Unfortunately, fixing this bug would be close to a
 | 
						|
whole rewrite of it. As a workaround, just avoid forward struct references.</p></div>
 | 
						|
<div class="para"><p>Instead of writing:</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>typedef struct foo *foo_p;
 | 
						|
struct foo {
 | 
						|
    foo_p next;
 | 
						|
    int something;
 | 
						|
};</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>reorder it to:</p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>struct foo {
 | 
						|
    struct foo *next;
 | 
						|
    int something;
 | 
						|
};
 | 
						|
typedef struct foo *foo_p;</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>That strategy is known to work around that particular bug.</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_6_0_useful_additions">6.0 Useful Additions</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<h3 id="_6_1_operating_systems">6.1 Operating Systems</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>While an Operating System, or RTOS, isn't necessary to write software for
 | 
						|
the AVR, there may be times when it is desirable. Below, are some links for
 | 
						|
free or open source operating systems / kernels for the AVR. Note that this
 | 
						|
may not be a complete list.</p></div>
 | 
						|
<div class="vlist"><dl>
 | 
						|
<dt>
 | 
						|
<a href="http://www.barello.net/avrx/">AvrX</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    AvrX is a Real-Time Multitasking Kernel.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.ethernut.de/en/">EtherNut - Nut/OS</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Ethernut is an Open Source Hardware and Software Project for building
 | 
						|
    Embedded Ethernet Devices. It contains Nut/OS which is an intentionally
 | 
						|
    simple RTOS for the ATmega128, which provides a minimum of services to run
 | 
						|
    Nut/Net, the TCP/IP stack.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.freertos.org/">FreeRTOS</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    FreeRTOS is a portable, open source, mini Real Time Scheduler (or mini
 | 
						|
    RTOS kernel).
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://webs.cs.berkeley.edu/tos/">TinyOS</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    TinyOS is a component-based runtime environment designed to provide
 | 
						|
    support for deeply embedded systems which require concurrency intensive
 | 
						|
    operations while constrained by minimal hardware resources.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.sics.se/~adam/contiki/">Contiki</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Contiki is an Internet-enabled operating system and desktop environment
 | 
						|
    for a number of smallish systems.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.shift-right.com/xmk/index.html">XMK - eXtreme Minimal Kernel</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    XMK is a preemptive multitasking scheduler/kernel for 8bit
 | 
						|
    microcontrollers. Its goal is to provide a bare bones RTOS with a small
 | 
						|
    enough footprint (RAM+ROM) to run on 8bit microcontrollers.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://picoos.sourceforge.net/">pico OS</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    pico OS is a highly configurable and very fast real time operating system
 | 
						|
    (RTOS). It targets a wide range of architectures, from very small 8 bit
 | 
						|
    processors and microcontrollers up to very huge platforms. An AVR port is
 | 
						|
    available.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://usmartx.sourceforge.net/">uSmartX</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    uSmartX is a non-preemptive, multitasking, priority based RTOS. It features
 | 
						|
    mechanisms for inter-task communication and basic task and time control
 | 
						|
    functions.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=725">Super Simple Tasker (SST)</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    This is an implementation of a lightweight scheduler so called "Super
 | 
						|
    Simple Tasker" - SST. The idea is taken from the Robert Ward's article -
 | 
						|
    "Practical Real-Time Techniques" <a href="http://www.quantum-leaps.com/resources/Ward03.pdf">http://www.quantum-leaps.com/resources/Ward03.pdf</a>.
 | 
						|
    The SST allows to significantly reduce needs for precious RAM and ROM and
 | 
						|
    still allows to keep a real time characteristic of the scheduler (e.g.
 | 
						|
    tasks prioritization and preemption).
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://sourceforge.net/projects/chibios/">ChibiOS/RT</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    ChibiOS/RT is a compact and fast RTOS designed for embedded applications.
 | 
						|
    It offers threads, mutexes, semaphores, messages, events, timers, flexible
 | 
						|
    I/O with timeout capability.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
</dl></div>
 | 
						|
<h3 id="_6_2_other">6.2 Other</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Here are some links to free or open source components that may be useful.</p></div>
 | 
						|
<div class="vlist"><dl>
 | 
						|
<dt>
 | 
						|
<a href="http://www.sics.se/~adam/uip/">uIP - TCP/IP Stack for Embedded Microcontrollers</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    uIP is an implementation of the TCP/IP protocol stack intended for small
 | 
						|
    8-bit and 16-bit microcontrollers. It provides the necessary protocols for
 | 
						|
    Internet communication, with a very small code footprint and RAM
 | 
						|
    requirements - the uIP code size is on the order of a few kilobytes and RAM
 | 
						|
    usage is on the order of a few hundred bytes.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.sics.se/~adam/pt/">Protothreads</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    Protothreads are extremely lightweight stackless threads designed for
 | 
						|
    severely memory constrained systems such as small embedded systems or
 | 
						|
    sensor network nodes. Protothreads provide linear code execution for
 | 
						|
    event-driven systems implemented in C. Protothreads can be used with or
 | 
						|
    without an underlying operating system.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
</dl></div>
 | 
						|
</div>
 | 
						|
<h2 id="_7_0_finding_help">7.0 Finding Help</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>WinAVR is a packaged collection of software devlopment tools built from open
 | 
						|
source projects.</p></div>
 | 
						|
<div class="para"><p>There is a large community of people who use these tools. There are a number
 | 
						|
of these people who volunteer their time to help other people with problems
 | 
						|
or questions. And then there are other people who also volunteer their time
 | 
						|
to contribute to these open source projects.</p></div>
 | 
						|
<div class="para"><p>The main places to find help is the Documenation and Online Sources. Please
 | 
						|
try and find the answer in the documentation first before asking for help
 | 
						|
online.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Tip</div>
 | 
						|
</td>
 | 
						|
<td class="content">If you need to ask for help online, please read this first:
 | 
						|
<a href="http://catb.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart Way</a></td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<h3 id="_7_1_documentation">7.1 Documentation</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>The first and best place to find help is in the documentation! WinAVR includes
 | 
						|
the user manuals for many of the software tools that are shipped in the
 | 
						|
package.</p></div>
 | 
						|
<div class="para"><p>The documentation for any particular package may come in different formats
 | 
						|
depending upon what is available from that package and available space
 | 
						|
in the WinAVR installation. The different documentation formats that you'll
 | 
						|
find in WinAVR are:</p></div>
 | 
						|
<div class="olist"><ol>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
HTML - Hyper Text Markup Language. Requires a web browser to view.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
PDF - Portable Document Format. Requires a PDF viewer such as Acrobat.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ol></div>
 | 
						|
<div class="para"><p>Additionally many user manuals can also be found online, especially packages
 | 
						|
that are part of the GNU project. You can find links to many of these in the
 | 
						|
Links section below.</p></div>
 | 
						|
<div class="para"><p>For packages that have HTML, and PDF documentation, look in your
 | 
						|
<tt><install>\doc</tt> directory.</p></div>
 | 
						|
<div class="para"><p>WinAVR installs on your desktop two shortcuts. One is to the HTML
 | 
						|
documentation on avr-libc that is installed locally. The other shortcut is
 | 
						|
to the GNU Manuals online (which requires Internet connection).</p></div>
 | 
						|
<h3 id="_7_2_online_sources">7.2 Online Sources</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>I'll say it again:</p></div>
 | 
						|
<div class="para"><p>Please try and find the answer in the documentation first before asking for
 | 
						|
help online.</p></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Tip</div>
 | 
						|
</td>
 | 
						|
<td class="content">If you need to ask for help online, please read this first:
 | 
						|
<a href="http://catb.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart Way</a></td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>Help for the AVR software development toolset (and specifically AVR GCC) can
 | 
						|
be found at:</p></div>
 | 
						|
<div class="vlist"><dl>
 | 
						|
<dt>
 | 
						|
<a href="http://www.avrfreaks.net">AVR Freaks</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    All AVR, all the time! This site has several forums including a general
 | 
						|
    AVR Forum and an AVR GCC Forum specifically for discussion of the GCC
 | 
						|
    compiler for the AVR. They also have an Academy which contains user's
 | 
						|
    projects. This gives you access to a lot of sample code, libraries, and
 | 
						|
    various AVR projects.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://savannah.nongnu.org/mail/?group=avr">avr-gcc mailing list</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    The avr-gcc list is intended as a forum for dicussion about the following:
 | 
						|
    Bugs, Programming technique, Installation and distributions, Hints and
 | 
						|
    tips, Other avr-gcc related stuff. Note that all of the developers of the
 | 
						|
    toolset are subscribed to this list!
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
<dt>
 | 
						|
<a href="http://www.mikrocontroller.net/">Mikrocontroller.net</a>
 | 
						|
</dt>
 | 
						|
<dd>
 | 
						|
<p>
 | 
						|
    For native German speakers. They have a forum for the AVR GCC compiler.
 | 
						|
</p>
 | 
						|
</dd>
 | 
						|
</dl></div>
 | 
						|
<div class="para"><p>Help for other projects and tools included in WinAVR can usually be found at
 | 
						|
the individual project's web page which usually includes links to their
 | 
						|
mailing lists.</p></div>
 | 
						|
<div class="para"><p>If you need help, do not contact the WinAVR developers personally! Use these
 | 
						|
web sites and mailing lists first!</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_8_0_toolset_bugs">8.0 Toolset Bugs</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>You can fill out a relevant tracker on the
 | 
						|
<a href="http://sourceforge.net/projects/winavr/">WinAVR SourceForge project page</a>, if you
 | 
						|
have one of the following:</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
a bug in the packaging
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
a bug in the installation
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
any suggestions for a new tool to be added
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
any suggestions for improvements to the overall package
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
<div class="admonitionblock">
 | 
						|
<table><tr>
 | 
						|
<td class="icon">
 | 
						|
<div class="title">Important</div>
 | 
						|
</td>
 | 
						|
<td class="content">IF THERE ARE BUGS IN THE SOFTWARE TOOLS THEMSELVES, THE MAINTAINERS
 | 
						|
OF THE INDIVIDUAL SOFTWARE PROJECTS SHOULD BE NOTIFIED IN THE APPROPRIATE
 | 
						|
MANNER, NOT ME, OR THE WINAVR PROJECT!!!!</td>
 | 
						|
</tr></table>
 | 
						|
</div>
 | 
						|
<div class="para"><p>Generally, if you encounter a bug with a library routine or a bug with a
 | 
						|
specifc AVR processor or header file, notify the avr-libc project first
 | 
						|
(see Links below). They will let you know if the bug is truly in the avr-libc
 | 
						|
project, or if it should be passed on to the GCC project. If the bug is in
 | 
						|
GCC, go to their web page (see Links below) on how to report bugs to GCC.</p></div>
 | 
						|
<div class="para"><p>For bugs with Programmer's Notepad 2, see it's SourceForge web site
 | 
						|
(see Links) to issue a Bug Tracker, or email it's author (see Credits).</p></div>
 | 
						|
<div class="para"><p>For bugs with avrdude, see it's Project page (see Links).</p></div>
 | 
						|
<div class="para"><p>For bugs with simulavr, see it's Project page (see Links).</p></div>
 | 
						|
<div class="para"><p>For bugs with avarice, see it's Project page (see Links).</p></div>
 | 
						|
<div class="para"><p>For bugs with GDB, see it's web page (see Links).</p></div>
 | 
						|
<div class="para"><p>For bugs with Insight, see it's web page (see Links).</p></div>
 | 
						|
<div class="para"><p>For bugs with SRecord, see it's Home page (see Links).</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_9_0_winavr_faq">9.0 WinAVR FAQ</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p>This FAQ is specific to the WinAVR package and installation. For a programming
 | 
						|
issues, see the avr-libc FAQ in the avr-libc documentation included in the
 | 
						|
WinAVR package or the
 | 
						|
<a href="http://www.nongnu.org/avr-libc/user-manual/">avr-libc user manual online</a>.</p></div>
 | 
						|
<div class="para"><p>#1) <em>When I run a program, why do I get the error "You have multiple copies of cygwin1.dll on your system."?</em></p></div>
 | 
						|
<div class="para"><p>Certain packages in WinAVR are built with Cygwin and are linked to their
 | 
						|
emulation library: cygwin1.dll. If you also have Cygwin installed seperately,
 | 
						|
these programs will find the cygwin1.dll that is shipped and included with
 | 
						|
WinAVR, and will also find the cygwin1.dll in your Cygwin installation. If
 | 
						|
these versions are different, you will get this error.</p></div>
 | 
						|
<div class="para"><p>WinAVR must ship the cygwin1.dll file to support it's packages, as most people
 | 
						|
do not have Cygwin installed on their system and it's not fair to ask people to
 | 
						|
install such a huge package as a prerequisite.</p></div>
 | 
						|
<div class="para"><p>Unfortunately, the <a href="http://cygwin.com/faq.html">Cygwin FAQ</a> says that the only
 | 
						|
way around this is to remove other copies of cygwin1.dll. This would mean
 | 
						|
either uninstalling Cygwin so the WinAVR programs work, or perhaps renaming
 | 
						|
the cygwin1.dll found in the <tt><install>\bin</tt> directory so the WinAVR programs
 | 
						|
will use the cygwin1.dll that is in the Cygwin installation. However, if you do
 | 
						|
the latter, note that the version of cygwin1.dll you have in your Cygwin
 | 
						|
installation is probably different than the version of cygwin1.dll that was
 | 
						|
used to build the WinAVR programs. In this case, use at your own risk.</p></div>
 | 
						|
<div class="para"><p>#2) <em>I have any of the following warnings when I create a COFF file, what should I do?</em></p></div>
 | 
						|
<div class="listingblock">
 | 
						|
<div class="content">
 | 
						|
<pre><tt>Warning: file {standard input} not found in symbol table, ignoring
 | 
						|
Warning: ignoring function __vectors() outside any compilation unit
 | 
						|
Warning: ignoring function __bad_interrupt() outside any compilation unit
 | 
						|
Discarding local symbol outside any compilation unit: .__do_copy_data_start
 | 
						|
Discarding local symbol outside any compilation unit: .__do_copy_data_loop</tt></pre>
 | 
						|
</div></div>
 | 
						|
<div class="para"><p>Nothing. These warnings can be ignored.</p></div>
 | 
						|
<div class="para"><p>#3) <em>I use WinAVR with AVR Studio. I get an error when avr-objcopy is creating the load file for the EEPROM. It says there are no sections to be copied.</em></p></div>
 | 
						|
<div class="para"><p>avr-objcopy is a part of GNU Binutils. In GNU Binutils 2.17 or later, the objcopy
 | 
						|
program was changed to return an error when there are no sections to be copied.
 | 
						|
This is different than previous versions of the objcopy program. This is not
 | 
						|
really an error, as it is ok if there are no sections to be copied.</p></div>
 | 
						|
<div class="para"><p>The Makefile has to be aware of this new behaviour and to not accept this as
 | 
						|
a real error. Use the WinAVR Makefile Template as the basis of your Makefile, or
 | 
						|
use AVR Studio 4.13 (soon to be released, if not already) which has changed how
 | 
						|
it generates its internal Makefile on GCC projects to correctly account for this.</p></div>
 | 
						|
</div>
 | 
						|
<h2 id="_10_0_winavr_project">10.0 WinAVR Project</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<h3 id="_10_1_build_notes">10.1 Build Notes</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>The contained packages are built either in the Cygwin environment, or the
 | 
						|
MinGW environment. Some, but not all, packages are dependendent upon one or
 | 
						|
more Cygwin DLLs, which are included in WinAVR.</p></div>
 | 
						|
<div class="olist"><ol>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GNU Binutils: MinGW.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GCC: MinGW.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
avr-libc: MinGW.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
avrdude: Cygwin.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
GDB/Insight: MinGW.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
AVaRICE: Cygwin. Requires: cygwin1.dll,
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SimulAVR: Cygwin. Requires: cygwin1.dll.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
SRecord: MinGW.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ol></div>
 | 
						|
<div class="para"><p>DLL Versions:</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
cygwin1.dll: 1.5.23-2
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
<div class="para"><p>Programmer's Notepad 2 was built by the author, Simon Steele (see Credits).
 | 
						|
Tofrodos was built by the author, Christopher Heng (see Credits).</p></div>
 | 
						|
<h3 id="_10_2_credits">10.2 Credits</h3><div style="clear:left"></div>
 | 
						|
<div class="para"><p>Thank you to everyone who uses WinAVR!</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
WinAVR software devleopment toolset distribution built by
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
<div class="para"><p>Eric B. Weddington<br />
 | 
						|
<a href="mailto:arcanum@users.sourceforge.net">email</a></p></div>
 | 
						|
<div class="para"><p>One person cannot do all of this alone. There are many, many people involved
 | 
						|
in making this package what it is. I am deeply indebted to those people. Below
 | 
						|
is an attempt at a list of credits. Any omissions are my fault and corrections
 | 
						|
are solicited.</p></div>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Joerg Wunsch for helping this project in
 | 
						|
  innummerable ways including writing the AVR COFF patch for binutils; patches
 | 
						|
  for GCC to help with debugging and binary constants; being the resident guru
 | 
						|
  on AVR Freaks; writing portions of this manual; reviewing all of my wacky
 | 
						|
  ideas; building SRecord; getting me in contact with the right people at the
 | 
						|
  right time ;-) ; spending the time to take me on a beautiful hike near his
 | 
						|
  home town; and for tolerating me over the years.
 | 
						|
  I don't know why he does it, but I am eternally grateful. :-)
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to major contributers to the AVR toolset: Denis Chertykov,
 | 
						|
  Marek Michalkiewicz, Theodore (Ted) A. Roth, Joerg Wunsch, Michael Stumpf,
 | 
						|
  Reiner Patommel, Brian S. Dean, Scott Finneran, David Gay, Jason Kyle,
 | 
						|
  Bjoern Haase, Anatoly Sokolov, Dmitry Xmelkov.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Thanks to Brian Dessent and Dave Murphy (wintermute) for help in getting
 | 
						|
  the toolchain to work on Windows Vista. Thanks to Dave Murphy for the patch
 | 
						|
  for Insight.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Bjoern Haase for taking the time and effort to put
 | 
						|
  together the patches to add support for the ATmega256x devices and for the
 | 
						|
  last minute phone call with Joerg to resolve the last problem!
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Colin O'Flynn for writing a tutorial on how to install
 | 
						|
  and configure WinAVR, writing a tutorial on how to use Insight, for testing
 | 
						|
  WinAVR, all around assistance, and helping on avrdude.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Torleif Sandnes for all his help in getting WinAVR
 | 
						|
  to work in AVR Studio in all its various ways.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Thanks to SourceForge for hosting the WinAVR project.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Simon Steele for permission to include Programmers
 | 
						|
  Notepad in WinAVR. Programmer's Notepad is written and built by Simon Steele.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Native Win32 Unix programs from:
 | 
						|
</p>
 | 
						|
<div class="ilist"><ul>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Karl M. Syring <a href="http://www.weihenstephan.de/~syring/win32/UnxUtils.html">http://www.weihenstephan.de/~syring/win32/UnxUtils.html</a>
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
<a href="http://www.morpheus.demon.co.uk/">http://www.morpheus.demon.co.uk/</a> (bison and flex)
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
<a href="http://www.mingw.org/">MinGW</a>
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Tofrodos 1.6 is written and built by Chistopher Heng
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Thanks to the following people for additional material for the
 | 
						|
  Makefile Template: Tim Henigan, Peter Fleury, Joerg Wunsch, Reiner Patommel,
 | 
						|
  Sander Pool, Frederik Rouleau, Markus Pfaff, and Carlos Lamas.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Special Thanks to Markus Assfalg for all his input in doing AVR COFF
 | 
						|
  pre-alpha tests and to Svenn-Ivar Svendsen from Atmel Norway, who
 | 
						|
  willingly answered questions regarding Atmel's COFF specs.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to Torleif Sandness of Atmel, the principal developer of
 | 
						|
  Atmel's ELF parser for AVR Studio, for really pioneering that area.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Thanks to members of the AVR COFF Alpha Testing team, which include:
 | 
						|
  Wallace White, Markus Assfalg, Volkmar Dierkes, Marc Wetzel, Andrew Ghali,
 | 
						|
  Omer Sinan KAYA, Eric Weddington.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Thanks to Atmel and to Advanced Micro Tools (AMTools), makers of
 | 
						|
  the VMLAB debugger tool, for assistance in the endeavour of writing
 | 
						|
  the AVR COFF patch.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Special thanks to Nick Moore for designing the WinAVR logos!
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Special thanks to <a href="http://www.tulsawebdev.com">Brian Brill</a> for helping
 | 
						|
  to move around some large files for the first release; to Ted Roth
 | 
						|
  for hosting the first WinAVR release on the avr-libc web site.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
Very Special Thanks to <strong>Ted Roth</strong> and <strong>Joerg Wunsch</strong> for putting up with me
 | 
						|
  when I was starting out.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
<li>
 | 
						|
<p>
 | 
						|
And a Very Special Thank You to Atmel Corporation.
 | 
						|
</p>
 | 
						|
</li>
 | 
						|
</ul></div>
 | 
						|
</div>
 | 
						|
<h2 id="_11_0_links">11.0 Links</h2>
 | 
						|
<div class="sectionbody">
 | 
						|
<div class="para"><p><a href="http://sourceforge.net/projects/winavr">WinAVR Project</a><br />
 | 
						|
<a href="http://winavr.sourceforge.net/">WinAVR Home Page</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sourceforge.net">SourceForge</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.avrfreaks.net">AVR Freaks</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/mail/?group=avr">avr-gcc mailing list</a><br />
 | 
						|
<a href="http://savannah.nongnu.org/mail/?group=avr">avr-chat mailing list</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.atmel.com">Atmel</a> <tt>
 | 
						|
<a href="http://www.atmel.com/products/avr/">Atmel AVR microcontrollers</a> </tt>
 | 
						|
<a href="http://www.atmel.com/dyn/products/tools.asp?family_id=607">Atmel's AVR Tools and Software</a><br />
 | 
						|
<a href="http://www.atmel.no/beta_ware/">Atmel Norway's AVR Tools Beta Site</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.gnu.org/">GNU Project</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.gnu.org/manual/">GNU Manuals Online</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sources.redhat.com/binutils/">GNU Binutils</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.gnu.org/software/gcc/">GNU Compiler Collection (GCC)</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.gnu.org/software/gcc/onlinedocs/">GCC Manuals Online</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/projects/avr-libc/">avr-libc</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/projects/avrdude/">avrdude</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sourceforge.net/projects/avrdude-gui">avrdude-gui</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/projects/uisp/">uisp</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sources.redhat.com/gdb/">GNU Debugger (GDB)</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sources.redhat.com/insight/">Insight</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sourceforge.net/projects/avarice">avarice</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/projects/simulavr/">simulavr</a></p></div>
 | 
						|
<div class="para"><p><a href="http://avr-ada.sourceforge.net/">AVR-Ada</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.sax.de/~joerg/mfile/">MFile</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.pnotepad.org/">Programmers Notepad</a><br />
 | 
						|
<a href="http://www.scintilla.org/">Scintilla</a></p></div>
 | 
						|
<div class="para"><p><a href="http://srecord.sourceforge.net/">SRecord</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.splint.org/">Splint</a></p></div>
 | 
						|
<div class="para"><p><a href="http://libusb-win32.sourceforge.net/">LibUSB-Win32</a></p></div>
 | 
						|
<div class="para"><p><a href="http://reality.sgiweb.org/davea/dwarf.html">dwarfdump</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.cs.utah.edu/~regehr/stacktool/">stacktool</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.barello.net/avrx/">AvrX</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.ethernut.de/en/">EtherNut - Nut/OS</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.freertos.org/">FreeRTOS</a></p></div>
 | 
						|
<div class="para"><p><a href="http://webs.cs.berkeley.edu/tos/">TinyOS</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.sics.se/~adam/contiki/">Contiki</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sourceforge.net/projects/xmk">XMK - eXtreme Minimal Kernel</a></p></div>
 | 
						|
<div class="para"><p><a href="http://picoos.sourceforge.net/">Pico OS</a></p></div>
 | 
						|
<div class="para"><p><a href="http://usmartx.sourceforge.net/">uSmartX</a></p></div>
 | 
						|
<div class="para"><p><a href="http://libtom.org/?page=features&newsitems=5&whatfile=crypt">LibTomCrypt</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.sics.se/~adam/uip/">uIP - TCP/IP Stack for Embedded Microcontrollers</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.sics.se/~adam/pt/">Protothreads</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.thefreecountry.com/">Tofrodos</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.gnu.org/software/make/">GNU Make</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.mingw.org/">MinGW</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.cygwin.com/">Cygwin</a></p></div>
 | 
						|
<div class="para"><p><a href="http://savannah.nongnu.org/projects/freeice">Free ICE</a></p></div>
 | 
						|
<div class="para"><p><a href="http://pymite.python-hosting.com/">Pymite</a></p></div>
 | 
						|
<div class="para"><p><a href="http://sourceforge.net/projects/nanovm">NanoVM</a></p></div>
 | 
						|
<div class="para"><p><a href="http://www.catb.org/~esr/jargon/">Jargon</a></p></div>
 | 
						|
</div>
 | 
						|
<div id="footer">
 | 
						|
<div id="footer-text">
 | 
						|
Last updated 2008-12-04 12:43:29 MDT
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</body>
 | 
						|
</html>
 |