<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="Module.2003-11-22.1829">
  <name>1.2 - Introduction to the IAR Workbench IDE</name>
  <metadata>
  <md:version>1.1</md:version>
  <md:created>2006/05/18 11:06:41.536 GMT-5</md:created>
  <md:revised>2006/05/18 10:54:57.885 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="nanand">
      <md:firstname>Naren</md:firstname>
      
      <md:surname>Anand</md:surname>
      <md:email>nanand@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="nanand">
      <md:firstname>Naren</md:firstname>
      
      <md:surname>Anand</md:surname>
      <md:email>nanand@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>ez430</md:keyword>
    <md:keyword>IAR</md:keyword>
    <md:keyword>IDE</md:keyword>
    <md:keyword>MSP430</md:keyword>
    <md:keyword>Workbench</md:keyword>
  </md:keywordlist>

  <md:abstract>A quickstart tutorial to the IAR Workbench IDE.  Learn how to create a project, edit files, build solutions, and use the debugger.</md:abstract>
</metadata>

  <content>
    

    <section id="Goals">
    <name>Goals</name>
    <para id="Motivations">To develop applications to run on the ez430 chip, we use the IAR Embedded Workbench IDE (integrated development environment).  Not only does this application provide a powerful code editor, but it also allows a simple one-click deployment of the source code onto the MSP chip using USB as well as hardware debugging capabilities that allow you to trace through actual stack calls.  This module is intended to give you an introduction to the IAR Workbench application so that you may create and develop your own ez430 applications.    
    </para>   
    </section>

    <section id="createproject">
    <name>Create a Project</name>
    <para id="createwizard">The very first thing you must do before you can start downloading any code onto the MSP, is to create a project in Workbench that will contain all of the relevant files for your application.  When you open Workbench you should see the following window (This window is equivalent to selecting <emphasis>File-&gt;New-&gt;Workspace</emphasis> and then <emphasis>Project-&gt;Create New Project</emphasis>.  This window may also be reached through Help-&gt;Startup Screen):

   
    <figure id="beginingwindow">
      <name>Startup Screen</name>
      <media type="image/jpeg" src="1beginingwindow.png"/>
      <caption>
      Select "Create new project in current workspace" to begin.  
      </caption>
    </figure>

Next, the following window will appear:

    <figure id="projectselectwindow"><name>Project Template Selection</name>
      <media type="image/jpeg" src="2projectselectwindow.png"/>
      <caption>
      Here we select the language in which we shall write our code.  Select the 'C' file and then the 'main' option.  In one lab, we will program in assembly; for that lab, select the "asm" option.  
      </caption>
    </figure>


Now a Windows Save dialog should appear.  Give your project a name and save it in its own <emphasis>seperate folder</emphasis>.  A project is not only a C file that contains your code but also several other files (a project file with the ".eww" extention, a project settings folder, a debug folder which contains compiled code outputted by Workbench etc).  Keeping the files for your current project in their own folder will help you stay organized.  If you save and close your project, opening it again is as simple as opening this folder, and doubleclicking on the Workbench project file, which has a ".eww" extention.    </para> 
</section>

<section id="configProject">
  <name>Configure Project Options</name>
    <para id="OptionSetup">Now, we must configure the project options.  Make sure the project is selected in the "Files" pane to the left of the screen (the project is the top of the workspace's file tree).  Then select <emphasis>Project-&gt;Options</emphasis> to get the following screen and make the indicated selections: 
 
      <figure id="optConfigGen"><name>Project Options Setup: General Options</name>
      <media type="image/jpeg" src="3optionssetupwindow.png"/>
      <caption>
      Make sure you choose the right processor for your application!  Here, I've selected the MSP4302013 (a member of the ez430 series) since that is the chip I plan to use.     
      </caption></figure>

Now select the "Debugger" option and make the following selections:

<figure id="optConfigDebug"><name>Project Options Setup: Debugger</name>
      <media type="image/jpeg" src="4optionsetupdebug.png"/>
      <caption>
      Here we must select to use the FET (Flash Emulation Tool) Debugger to run our code.      
      </caption></figure>

Finally select the "FET Debugger" option and make the following selections:
   
<figure id="optConfigFET"><name>Project Options Setup: FET Debugger</name>
      <media type="image/jpeg" src="5optionsetupFETdebugger.png"/>
      <caption>
      Now we select the "Verify Download" check box and the "TI USB FET" radio button (while leaving other options as they are) so that our program is properly transferred to the chip.   
      </caption></figure>

Your project is created, saved, and now you may write your code.  Only one project may be open at a time.  </para>
    </section>

    <section id="addfiles">
    <name>Adding Files to the Project</name>
    <para id="addfilesproj">If your project consists of multiple files, you will need to add them to the current project.  To add a file to your project, choose <emphasis>Project-&gt;Add Files</emphasis>.      </para>
    </section>






    <section id="runprogram">
    <name>Run Your Program!</name>
    <para id="startdebug">This is the part you've been waiting for:  actually testing your program!  Use the <emphasis>Project-&gt;Debug</emphasis> menu item to load the currently active project and set your program running.  You can also set any breakpoints beforehand; by default, the very first line of executed code is set as a breakpoint.  Now that you have started the debug process, the layout of the Workbench program changes slightly.  A Debug menu and the "Disassembly", the assembly/machine code instructions at their specific memory addresses on the ez430, appear.  To continue the execution of the program, select <emphasis>Debug-&gt;Go</emphasis>.  If you would like to set breakpoints (in order to view the "path" of program execution or the values of specific variables or registers at a certain point during the program execution) click to the left of a line of code such that a red 'X' appears. 
    </para>

    <para id="pause">You can pause the debugger when the target is running if you would like to look at the value of certain variables.  Select <emphasis>Debug-&gt;Break</emphasis> and open a watch window to examine the value of certain variables.  It is suggested that you copy the variables you are interested in to temporary global variables.  Because local variables go out of scope, it is uncertain if their correct value is maintained when the debugger is paused.  
    </para>

    <para id="stop">Debugging can be stopped using <emphasis>Debug-&gt;Stop</emphasis>.  At this point, the watch window will not display your variable values.  At this point, you may make any modifications to your program as necessary and restart the debugger from the beginning.  
    </para><para id="element-283">All of the necessary commands have shortcut icons as the following diagram shows:

<figure id="shortcut">
<name>Workbench: Debug View</name>
      <media type="image/jpeg" src="toolbarAfter.png"/>
<caption>The program layout during debugging</caption>
</figure>


<emphasis>Legend:</emphasis>

<list type="enumerated" id="legend"><item><emphasis>Make/Debug</emphasis>- This button will compile, load, and run the code onto the chip.  This process happens rather rapidly so if the execution of this seems to hang, then something is wrong.  Usually disconnecting the tool and/or restarting Workbench solves this problem.  Don't forget to save first!</item>
<item><emphasis>Go</emphasis>- This button is for the Go command in the debug menu; it tells the program to continue execution until the next breakpoint.  The buttons to its left are other ways of traversing through breakpoints that you may experiment with.</item>  
<item><emphasis>Stop Debug</emphasis>- Selecting this will end the debugging process.  If you want to modify your code then you must stop debugging first.</item>
<item><emphasis>Dissassembly</emphasis>- This is a map of the memory space of the ez430 and where your code has been placed (in its compiled form).</item> 
<item><emphasis>Current Location</emphasis>- The Green Arrow/Green Highlighting indicates the current instruction being executed.</item>  </list>
</para>
    </section>

    <section id="go">
    <name>Good luck!</name>
    <para id="goodluck">You're all set to start using the CrossStudio compiler to write embedded microcontroller code.  Save often and remember that disconnecting and reconnecting or  restarting the program will solve almost all interface problems that you encounter.  Don't worry if breakpoints seem a little confusing now.  We will go into more depth shortly and a good bit of practice is necessary to use them effectively.      
    </para>
    </section>

  </content>
  
</document>
