<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Routhcr&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Routhcr&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Routhcr"/>
		<updated>2013-05-22T10:39:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:53:37Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
== Labs ==&lt;br /&gt;
Labs 1-7 are completed.&lt;br /&gt;
&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;br /&gt;
*[http://note.sonots.com/SciSoftware/haartraining.html | Haarwavelets]&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/ Opencv WIKI]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:52:27Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Research on Random Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;br /&gt;
*[http://note.sonots.com/SciSoftware/haartraining.html | Haarwavelets]&lt;br /&gt;
*[http://opencv.willowgarage.com/wiki/ Opencv WIKI]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Research on Random Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;br /&gt;
*[http://note.sonots.com/SciSoftware/haartraining.html | Haarwavelets]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:50:26Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Research on Random Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;br /&gt;
*[[http://note.sonots.com/SciSoftware/haartraining.html | Haarwavelets]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:49:40Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Research on Random Topics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;br /&gt;
*[[http://note.sonots.com/SciSoftware/haartraining.html]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:48:31Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Auto HUD Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
[[ECE597: Auto HUD]]&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE MOST DOCUMENTATION AND WORK WENT THERE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-21T03:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* OpenCV Haar Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
[[user:jacksogc | Greg Jackson]]&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
&lt;br /&gt;
Probably the easiest place to start is by using [http://www.angstrom-distribution.org/narcissus/ narcissus]. Choose beagleboard as the machine type and unstable for the release. In order for highgui to work (necessary for camera capture unless you are using GStreamer), you must build an image with X11 support. Therefore, choose X11 for the user environment. The choice for the X11 desktop environment is not critical, but it would be wise to choose something fairly lightweight, such as Enlightenment. It took several hours for Gnome to configure upon first boot. Once the filesystem has been extracted to a properly formatted SD card with an appropriate kernel on the boot partition (we tested this using 2.6.29), you should be able to boot. Upon boot, you will need to run opkg update. After this, you will need to run opkg install with the following packages:&lt;br /&gt;
&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-dev&lt;br /&gt;
* binutils&lt;br /&gt;
* binutils-dev&lt;br /&gt;
* opencv&lt;br /&gt;
* opencv-dev&lt;br /&gt;
* g++&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ signdetect.cpp -o signdetect -I /usr/include/opencv/ -L /usr/lib -lm -lcv -lhighgui -lcvaux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
=== Gather Samples ===&lt;br /&gt;
Due to the large volume of sample data needed to create a effective Haar Cascade (about 1000 positive images) it is easier to gather video of a positive target and then break apart the video frame by frame and use the results as images. There are 2 two types of images, good and background. Both types of images are important in order for the cascade to be trained accurately.&lt;br /&gt;
=== Create Index File ===&lt;br /&gt;
There are two index files needing to be created in order for the system to train on the images, a background index file creating a list of filelocations, and a positive index file containing the positive file locations, the number of objects in the picture and the rectangular locations for the object.&lt;br /&gt;
==== Creating the Negative Index File ====&lt;br /&gt;
Use the following automated script from within the background images folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
find ./*.jpg -maxdepth 2 -print  &amp;gt; background.idx&lt;br /&gt;
find ./*.png -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.bmp -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.jpeg -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Creating the Positive Index File ====&lt;br /&gt;
Use the following source code to create a training program that allows the user to click on the upper left and lower right of a object to select it and then press a key to return.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Calibrate.cpp&lt;br /&gt;
// Date: 4/20/10&lt;br /&gt;
// Author: Christopher Routh&lt;br /&gt;
// This program brings up the necessary images and allows the user to&lt;br /&gt;
// select correct training spots for objects and generates a index file.&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////////////////////////////////&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;cv.h&amp;gt;&lt;br /&gt;
#include &amp;lt;highgui.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
static CvSize imageSize;&lt;br /&gt;
static CvPoint old_click_pt;&lt;br /&gt;
static CvPoint new_click_pt;&lt;br /&gt;
static std::vector&amp;lt;CvPoint&amp;gt; pointsClicked;&lt;br /&gt;
&lt;br /&gt;
/*function... might want it in some class?*/&lt;br /&gt;
int getdir (std::string dir, std::vector&amp;lt;string&amp;gt; &amp;amp;files)&lt;br /&gt;
{&lt;br /&gt;
    DIR *dp;&lt;br /&gt;
    struct dirent *dirp;&lt;br /&gt;
    if((dp  = opendir(dir.c_str())) == NULL) {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Error(&amp;quot; &amp;lt;&amp;lt; errno &amp;lt;&amp;lt; &amp;quot;) opening &amp;quot; &amp;lt;&amp;lt; dir &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return errno;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    while ((dirp = readdir(dp)) != NULL) {&lt;br /&gt;
        files.push_back(string(dirp-&amp;gt;d_name));&lt;br /&gt;
    }&lt;br /&gt;
    closedir(dp);&lt;br /&gt;
	files.erase(files.begin(), files.begin()+2);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// handle mouse clicks here&lt;br /&gt;
void mouse_callback(int event, int x, int y, int flags, void* obj)&lt;br /&gt;
{&lt;br /&gt;
	if (event == CV_EVENT_LBUTTONDOWN)&lt;br /&gt;
	{&lt;br /&gt;
		cout &amp;lt;&amp;lt; &amp;quot;(x,y) = (&amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;)&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
		// reset old_click_pt&lt;br /&gt;
		old_click_pt.x = new_click_pt.x;&lt;br /&gt;
		old_click_pt.y = new_click_pt.y;&lt;br /&gt;
&lt;br /&gt;
		// get new click point -- note the coordinate change in y&lt;br /&gt;
		new_click_pt.x = x;  // coming in from the window system&lt;br /&gt;
		new_click_pt.y = imageSize.height-y;  // window system and images have different y axes&lt;br /&gt;
		pointsClicked.push_back(cvPoint(new_click_pt.x, new_click_pt.y));			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int getCorrectObjectLocation(string file, vector&amp;lt;CvRect&amp;gt; &amp;amp;results)&lt;br /&gt;
{&lt;br /&gt;
  IplImage* img = 0;&lt;br /&gt;
  // load an image  &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Trying to load: &amp;quot; &amp;lt;&amp;lt; file &amp;lt;&amp;lt; endl; &lt;br /&gt;
  img=cvLoadImage((file.insert(0, &amp;quot;./good/&amp;quot;).c_str()));&lt;br /&gt;
  if(!img){&lt;br /&gt;
    printf(&amp;quot;Could not load image file: %s\n&amp;quot;,(file.insert(0, &amp;quot;./good/&amp;quot;).c_str()));&lt;br /&gt;
    exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // get the image data&lt;br /&gt;
  int height    = img-&amp;gt;height;&lt;br /&gt;
  int width     = img-&amp;gt;width;&lt;br /&gt;
  int step      = img-&amp;gt;widthStep;&lt;br /&gt;
  int channels  = img-&amp;gt;nChannels;&lt;br /&gt;
  uchar* data = (uchar *)img-&amp;gt;imageData;&lt;br /&gt;
  printf(&amp;quot;Processing a %dx%d image with %d channels\n&amp;quot;,height,width,channels); &lt;br /&gt;
&lt;br /&gt;
  // create a window&lt;br /&gt;
  cvNamedWindow(&amp;quot;mainWin&amp;quot;, CV_WINDOW_AUTOSIZE);&lt;br /&gt;
&lt;br /&gt;
  // show the image&lt;br /&gt;
  cvShowImage(&amp;quot;mainWin&amp;quot;, img );&lt;br /&gt;
&lt;br /&gt;
  cvSetMouseCallback( &amp;quot;mainWin&amp;quot;, mouse_callback );&lt;br /&gt;
  // wait for a key&lt;br /&gt;
  cvWaitKey(0);&lt;br /&gt;
&lt;br /&gt;
  int properClicks = pointsClicked.size() % 2;&lt;br /&gt;
  if(properClicks != 0 || pointsClicked.size() == 0){&lt;br /&gt;
  &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Improper Number of Points Clicked: &amp;quot; &amp;lt;&amp;lt; pointsClicked.size() &amp;lt;&amp;lt; &amp;quot; Selected&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return -1;&lt;br /&gt;
&lt;br /&gt;
  }else{&lt;br /&gt;
  &lt;br /&gt;
  //Process new rectangles&lt;br /&gt;
&lt;br /&gt;
for(unsigned int i = 0; i &amp;lt; pointsClicked.size(); i++){&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Recieved Points X: &amp;quot; &amp;lt;&amp;lt; pointsClicked.at(i).x &amp;lt;&amp;lt; &amp;quot; Y: &amp;quot; &amp;lt;&amp;lt; pointsClicked.at(i).y &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for(unsigned int i = 0; i &amp;lt; pointsClicked.size(); i=i+2){&lt;br /&gt;
		CvPoint topLeft = pointsClicked.at(i);&lt;br /&gt;
		CvPoint bottomRight = pointsClicked.at(i+1);		&lt;br /&gt;
		results.push_back( cvRect(topLeft.x,abs(topLeft.y), (bottomRight.x - topLeft.x), abs((topLeft.y - bottomRight.y)) ) );	&lt;br /&gt;
  		cout &amp;lt;&amp;lt; &amp;quot;Rectangle Created --- X: &amp;quot; &amp;lt;&amp;lt; topLeft.x &amp;lt;&amp;lt; &amp;quot; Y: &amp;quot; &amp;lt;&amp;lt; abs(topLeft.y) &amp;lt;&amp;lt; &amp;quot; Width: &amp;quot; &amp;lt;&amp;lt; (bottomRight.x - topLeft.x) &amp;lt;&amp;lt; &amp;quot; Height: &amp;quot; &amp;lt;&amp;lt; abs((topLeft.y - bottomRight.y)) &amp;lt;&amp;lt; endl; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pointsClicked.clear();&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // release the image&lt;br /&gt;
  cvReleaseImage(&amp;amp;img ); &lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  IplImage* img = 0; &lt;br /&gt;
  int height,width,step,channels;&lt;br /&gt;
  uchar *data;&lt;br /&gt;
  int i,j,k;&lt;br /&gt;
&lt;br /&gt;
string dir = string(&amp;quot;./good/&amp;quot;);&lt;br /&gt;
    vector&amp;lt;string&amp;gt; files = vector&amp;lt;string&amp;gt;();&lt;br /&gt;
    getdir(dir,files);&lt;br /&gt;
    vector&amp;lt;CvRect&amp;gt; objectRects = vector&amp;lt;CvRect&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
ofstream vecFile;&lt;br /&gt;
vecFile.open (&amp;quot;./good/signs.idx&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for (unsigned int i = 0;i &amp;lt; files.size();i++) {&lt;br /&gt;
	      int success = getCorrectObjectLocation(files.at(i), objectRects); &lt;br /&gt;
    	if(success != 0){&lt;br /&gt;
	 i--;&lt;br /&gt;
	pointsClicked.clear();&lt;br /&gt;
	}else{&lt;br /&gt;
	&lt;br /&gt;
	vecFile &amp;lt;&amp;lt; &amp;quot;good/&amp;quot; &amp;lt;&amp;lt; files.at(i) &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.size();&lt;br /&gt;
&lt;br /&gt;
	for(int j = 0; j &amp;lt; objectRects.size(); j++)&lt;br /&gt;
	{&lt;br /&gt;
		vecFile &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).y &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).width &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).height;  &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	vecFile &amp;lt;&amp;lt; endl;&lt;br /&gt;
	objectRects.clear();&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
//Close the Vector File&lt;br /&gt;
vecFile.close();&lt;br /&gt;
&lt;br /&gt;
cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; &amp;quot;******  INDEX FILE CREATED ******&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Generate Samples ===&lt;br /&gt;
Using the positive samples the creasamples cammand can apply transforms to the images and add them to the background images creating a wider range of images to train on. The syntax for this command is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: ./createsamples&lt;br /&gt;
  [-info &amp;lt;description_file_name&amp;gt;]&lt;br /&gt;
  [-img &amp;lt;image_file_name&amp;gt;]&lt;br /&gt;
  [-vec &amp;lt;vec_file_name&amp;gt;]&lt;br /&gt;
  [-bg &amp;lt;background_file_name&amp;gt;]&lt;br /&gt;
  [-num &amp;lt;number_of_samples = 1000&amp;gt;]&lt;br /&gt;
  [-bgcolor &amp;lt;background_color = 0&amp;gt;]&lt;br /&gt;
  [-inv] [-randinv] [-bgthresh &amp;lt;background_color_threshold = 80&amp;gt;]&lt;br /&gt;
  [-maxidev &amp;lt;max_intensity_deviation = 40&amp;gt;]&lt;br /&gt;
  [-maxxangle &amp;lt;max_x_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxyangle &amp;lt;max_y_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxzangle &amp;lt;max_z_rotation_angle = 0.500000&amp;gt;]&lt;br /&gt;
  [-show [&amp;lt;scale = 4.000000&amp;gt;]]&lt;br /&gt;
  [-w &amp;lt;sample_width = 24&amp;gt;]&lt;br /&gt;
  [-h &amp;lt;sample_height = 24&amp;gt;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Run the Training Program ===&lt;br /&gt;
Commands differ based upon application and intended sample size, the command my group used was:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opencv-haartraining -data signs_drivedata_rev1 -vec signs.vec -bg background.idx -nstages 20 -nsplits 2 -minhitrate 0.995 -maxfalsealarm .5 -npos 111 -nneg 2239 -w 40 -h 40 -nonsym -mem 512 -mode ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
In order to get access to the display buffer on the beagle, you will need to run the following in U-Boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapfb.mode=1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi omapfb.vram=0:10M,1:10M vram=20M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sources have mentioned setting a value for mmcargs. However, we were not able to get it to work properly until the options were applied '''directly''' to the bootargs variable.&lt;br /&gt;
&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;br /&gt;
&lt;br /&gt;
==Future Directions==&lt;br /&gt;
===GStreamer on the DSP===&lt;br /&gt;
There is a package available for the beagle called gst-dsp, which is a native GStreamer plug-in to give it access to the DSP. Along with gst-opamfb and the dsp-bridge driver, this should allow us to access the DSP directly and output video directly to the framebuffer. OpenCV can interact with GStreamer, so this appears to be a very promising direction for the project. See [http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/ this article] for more information and a demonstration. That article also has a link to a minimal beagle image that provides a native framebuffer video player without requiring X.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-21T03:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* OpenCV Haar Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
[[user:jacksogc | Greg Jackson]]&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
&lt;br /&gt;
Probably the easiest place to start is by using [http://www.angstrom-distribution.org/narcissus/ narcissus]. Choose beagleboard as the machine type and unstable for the release. In order for highgui to work (necessary for camera capture unless you are using GStreamer), you must build an image with X11 support. Therefore, choose X11 for the user environment. The choice for the X11 desktop environment is not critical, but it would be wise to choose something fairly lightweight, such as Enlightenment. It took several hours for Gnome to configure upon first boot. Once the filesystem has been extracted to a properly formatted SD card with an appropriate kernel on the boot partition (we tested this using 2.6.29), you should be able to boot. Upon boot, you will need to run opkg update. After this, you will need to run opkg install with the following packages:&lt;br /&gt;
&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-dev&lt;br /&gt;
* binutils&lt;br /&gt;
* binutils-dev&lt;br /&gt;
* opencv&lt;br /&gt;
* opencv-dev&lt;br /&gt;
* g++&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ signdetect.cpp -o signdetect -I /usr/include/opencv/ -L /usr/lib -lm -lcv -lhighgui -lcvaux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
=== Gather Samples ===&lt;br /&gt;
Due to the large volume of sample data needed to create a effective Haar Cascade (about 1000 positive images) it is easier to gather video of a positive target and then break apart the video frame by frame and use the results as images. There are 2 two types of images, good and background. Both types of images are important in order for the cascade to be trained accurately.&lt;br /&gt;
=== Create Index File ===&lt;br /&gt;
There are two index files needing to be created in order for the system to train on the images, a background index file creating a list of filelocations, and a positive index file containing the positive file locations, the number of objects in the picture and the rectangular locations for the object.&lt;br /&gt;
==== Creating the Negative Index File ====&lt;br /&gt;
Use the following automated script from within the background images folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
find ./*.jpg -maxdepth 2 -print  &amp;gt; background.idx&lt;br /&gt;
find ./*.png -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.bmp -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.jpeg -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Creating the Positive Index File ====&lt;br /&gt;
Use the following source code to create a training program that allows the user to click on the upper left and lower right of a object to select it and then press a key to return.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Calibrate.cpp&lt;br /&gt;
// Date: 4/20/10&lt;br /&gt;
// Author: Christopher Routh&lt;br /&gt;
// This program brings up the necessary images and allows the user to&lt;br /&gt;
// select correct training spots for objects and generates a index file.&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////////////////////////////////&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
#include &amp;lt;cv.h&amp;gt;&lt;br /&gt;
#include &amp;lt;highgui.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dirent.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
static CvSize imageSize;&lt;br /&gt;
static CvPoint old_click_pt;&lt;br /&gt;
static CvPoint new_click_pt;&lt;br /&gt;
static std::vector&amp;lt;CvPoint&amp;gt; pointsClicked;&lt;br /&gt;
&lt;br /&gt;
/*function... might want it in some class?*/&lt;br /&gt;
int getdir (std::string dir, std::vector&amp;lt;string&amp;gt; &amp;amp;files)&lt;br /&gt;
{&lt;br /&gt;
    DIR *dp;&lt;br /&gt;
    struct dirent *dirp;&lt;br /&gt;
    if((dp  = opendir(dir.c_str())) == NULL) {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;Error(&amp;quot; &amp;lt;&amp;lt; errno &amp;lt;&amp;lt; &amp;quot;) opening &amp;quot; &amp;lt;&amp;lt; dir &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        return errno;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    while ((dirp = readdir(dp)) != NULL) {&lt;br /&gt;
        files.push_back(string(dirp-&amp;gt;d_name));&lt;br /&gt;
    }&lt;br /&gt;
    closedir(dp);&lt;br /&gt;
	files.erase(files.begin(), files.begin()+2);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// handle mouse clicks here&lt;br /&gt;
void mouse_callback(int event, int x, int y, int flags, void* obj)&lt;br /&gt;
{&lt;br /&gt;
	if (event == CV_EVENT_LBUTTONDOWN)&lt;br /&gt;
	{&lt;br /&gt;
		cout &amp;lt;&amp;lt; &amp;quot;(x,y) = (&amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot;,&amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;)&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
		// reset old_click_pt&lt;br /&gt;
		old_click_pt.x = new_click_pt.x;&lt;br /&gt;
		old_click_pt.y = new_click_pt.y;&lt;br /&gt;
&lt;br /&gt;
		// get new click point -- note the coordinate change in y&lt;br /&gt;
		new_click_pt.x = x;  // coming in from the window system&lt;br /&gt;
		new_click_pt.y = imageSize.height-y;  // window system and images have different y axes&lt;br /&gt;
		pointsClicked.push_back(cvPoint(new_click_pt.x, new_click_pt.y));			&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int getCorrectObjectLocation(string file, vector&amp;lt;CvRect&amp;gt; &amp;amp;results)&lt;br /&gt;
{&lt;br /&gt;
  IplImage* img = 0;&lt;br /&gt;
  // load an image  &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Trying to load: &amp;quot; &amp;lt;&amp;lt; file &amp;lt;&amp;lt; endl; &lt;br /&gt;
  img=cvLoadImage((file.insert(0, &amp;quot;./good/&amp;quot;).c_str()));&lt;br /&gt;
  if(!img){&lt;br /&gt;
    printf(&amp;quot;Could not load image file: %s\n&amp;quot;,(file.insert(0, &amp;quot;./good/&amp;quot;).c_str()));&lt;br /&gt;
    exit(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // get the image data&lt;br /&gt;
  int height    = img-&amp;gt;height;&lt;br /&gt;
  int width     = img-&amp;gt;width;&lt;br /&gt;
  int step      = img-&amp;gt;widthStep;&lt;br /&gt;
  int channels  = img-&amp;gt;nChannels;&lt;br /&gt;
  uchar* data = (uchar *)img-&amp;gt;imageData;&lt;br /&gt;
  printf(&amp;quot;Processing a %dx%d image with %d channels\n&amp;quot;,height,width,channels); &lt;br /&gt;
&lt;br /&gt;
  // create a window&lt;br /&gt;
  cvNamedWindow(&amp;quot;mainWin&amp;quot;, CV_WINDOW_AUTOSIZE);&lt;br /&gt;
&lt;br /&gt;
  // show the image&lt;br /&gt;
  cvShowImage(&amp;quot;mainWin&amp;quot;, img );&lt;br /&gt;
&lt;br /&gt;
  cvSetMouseCallback( &amp;quot;mainWin&amp;quot;, mouse_callback );&lt;br /&gt;
  // wait for a key&lt;br /&gt;
  cvWaitKey(0);&lt;br /&gt;
&lt;br /&gt;
  int properClicks = pointsClicked.size() % 2;&lt;br /&gt;
  if(properClicks != 0 || pointsClicked.size() == 0){&lt;br /&gt;
  &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Improper Number of Points Clicked: &amp;quot; &amp;lt;&amp;lt; pointsClicked.size() &amp;lt;&amp;lt; &amp;quot; Selected&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return -1;&lt;br /&gt;
&lt;br /&gt;
  }else{&lt;br /&gt;
  &lt;br /&gt;
  //Process new rectangles&lt;br /&gt;
&lt;br /&gt;
for(unsigned int i = 0; i &amp;lt; pointsClicked.size(); i++){&lt;br /&gt;
	cout &amp;lt;&amp;lt; &amp;quot;Recieved Points X: &amp;quot; &amp;lt;&amp;lt; pointsClicked.at(i).x &amp;lt;&amp;lt; &amp;quot; Y: &amp;quot; &amp;lt;&amp;lt; pointsClicked.at(i).y &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for(unsigned int i = 0; i &amp;lt; pointsClicked.size(); i=i+2){&lt;br /&gt;
		CvPoint topLeft = pointsClicked.at(i);&lt;br /&gt;
		CvPoint bottomRight = pointsClicked.at(i+1);		&lt;br /&gt;
		results.push_back( cvRect(topLeft.x,abs(topLeft.y), (bottomRight.x - topLeft.x), abs((topLeft.y - bottomRight.y)) ) );	&lt;br /&gt;
  		cout &amp;lt;&amp;lt; &amp;quot;Rectangle Created --- X: &amp;quot; &amp;lt;&amp;lt; topLeft.x &amp;lt;&amp;lt; &amp;quot; Y: &amp;quot; &amp;lt;&amp;lt; abs(topLeft.y) &amp;lt;&amp;lt; &amp;quot; Width: &amp;quot; &amp;lt;&amp;lt; (bottomRight.x - topLeft.x) &amp;lt;&amp;lt; &amp;quot; Height: &amp;quot; &amp;lt;&amp;lt; abs((topLeft.y - bottomRight.y)) &amp;lt;&amp;lt; endl; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pointsClicked.clear();&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // release the image&lt;br /&gt;
  cvReleaseImage(&amp;amp;img ); &lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  IplImage* img = 0; &lt;br /&gt;
  int height,width,step,channels;&lt;br /&gt;
  uchar *data;&lt;br /&gt;
  int i,j,k;&lt;br /&gt;
&lt;br /&gt;
string dir = string(&amp;quot;./good/&amp;quot;);&lt;br /&gt;
    vector&amp;lt;string&amp;gt; files = vector&amp;lt;string&amp;gt;();&lt;br /&gt;
    getdir(dir,files);&lt;br /&gt;
    vector&amp;lt;CvRect&amp;gt; objectRects = vector&amp;lt;CvRect&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
ofstream vecFile;&lt;br /&gt;
vecFile.open (&amp;quot;./good/signs.idx&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for (unsigned int i = 0;i &amp;lt; files.size();i++) {&lt;br /&gt;
	      int success = getCorrectObjectLocation(files.at(i), objectRects); &lt;br /&gt;
    	if(success != 0){&lt;br /&gt;
	 i--;&lt;br /&gt;
	pointsClicked.clear();&lt;br /&gt;
	}else{&lt;br /&gt;
	&lt;br /&gt;
	vecFile &amp;lt;&amp;lt; &amp;quot;good/&amp;quot; &amp;lt;&amp;lt; files.at(i) &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.size();&lt;br /&gt;
&lt;br /&gt;
	for(int j = 0; j &amp;lt; objectRects.size(); j++)&lt;br /&gt;
	{&lt;br /&gt;
		vecFile &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).y &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).width &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; objectRects.at(j).height;  &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	vecFile &amp;lt;&amp;lt; endl;&lt;br /&gt;
	objectRects.clear();&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
//Close the Vector File&lt;br /&gt;
vecFile.close();&lt;br /&gt;
&lt;br /&gt;
cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; &amp;quot;******  INDEX FILE CREATED ******&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Generate Samples ===&lt;br /&gt;
Using the positive samples the creasamples cammand can apply transforms to the images and add them to the background images creating a wider range of images to train on. The syntax for this command is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: ./createsamples&lt;br /&gt;
  [-info &amp;lt;description_file_name&amp;gt;]&lt;br /&gt;
  [-img &amp;lt;image_file_name&amp;gt;]&lt;br /&gt;
  [-vec &amp;lt;vec_file_name&amp;gt;]&lt;br /&gt;
  [-bg &amp;lt;background_file_name&amp;gt;]&lt;br /&gt;
  [-num &amp;lt;number_of_samples = 1000&amp;gt;]&lt;br /&gt;
  [-bgcolor &amp;lt;background_color = 0&amp;gt;]&lt;br /&gt;
  [-inv] [-randinv] [-bgthresh &amp;lt;background_color_threshold = 80&amp;gt;]&lt;br /&gt;
  [-maxidev &amp;lt;max_intensity_deviation = 40&amp;gt;]&lt;br /&gt;
  [-maxxangle &amp;lt;max_x_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxyangle &amp;lt;max_y_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxzangle &amp;lt;max_z_rotation_angle = 0.500000&amp;gt;]&lt;br /&gt;
  [-show [&amp;lt;scale = 4.000000&amp;gt;]]&lt;br /&gt;
  [-w &amp;lt;sample_width = 24&amp;gt;]&lt;br /&gt;
  [-h &amp;lt;sample_height = 24&amp;gt;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
In order to get access to the display buffer on the beagle, you will need to run the following in U-Boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapfb.mode=1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi omapfb.vram=0:10M,1:10M vram=20M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sources have mentioned setting a value for mmcargs. However, we were not able to get it to work properly until the options were applied '''directly''' to the bootargs variable.&lt;br /&gt;
&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;br /&gt;
&lt;br /&gt;
==Future Directions==&lt;br /&gt;
===GStreamer on the DSP===&lt;br /&gt;
There is a package available for the beagle called gst-dsp, which is a native GStreamer plug-in to give it access to the DSP. Along with gst-opamfb and the dsp-bridge driver, this should allow us to access the DSP directly and output video directly to the framebuffer. OpenCV can interact with GStreamer, so this appears to be a very promising direction for the project. See [http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/ this article] for more information and a demonstration. That article also has a link to a minimal beagle image that provides a native framebuffer video player without requiring X.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-21T03:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* OpenCV Haar Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
[[user:jacksogc | Greg Jackson]]&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
&lt;br /&gt;
Probably the easiest place to start is by using [http://www.angstrom-distribution.org/narcissus/ narcissus]. Choose beagleboard as the machine type and unstable for the release. In order for highgui to work (necessary for camera capture unless you are using GStreamer), you must build an image with X11 support. Therefore, choose X11 for the user environment. The choice for the X11 desktop environment is not critical, but it would be wise to choose something fairly lightweight, such as Enlightenment. It took several hours for Gnome to configure upon first boot. Once the filesystem has been extracted to a properly formatted SD card with an appropriate kernel on the boot partition (we tested this using 2.6.29), you should be able to boot. Upon boot, you will need to run opkg update. After this, you will need to run opkg install with the following packages:&lt;br /&gt;
&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-dev&lt;br /&gt;
* binutils&lt;br /&gt;
* binutils-dev&lt;br /&gt;
* opencv&lt;br /&gt;
* opencv-dev&lt;br /&gt;
* g++&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ signdetect.cpp -o signdetect -I /usr/include/opencv/ -L /usr/lib -lm -lcv -lhighgui -lcvaux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
=== Gather Samples ===&lt;br /&gt;
Due to the large volume of sample data needed to create a effective Haar Cascade (about 1000 positive images) it is easier to gather video of a positive target and then break apart the video frame by frame and use the results as images. There are 2 two types of images, good and background. Both types of images are important in order for the cascade to be trained accurately.&lt;br /&gt;
=== Create Index File ===&lt;br /&gt;
There are two index files needing to be created in order for the system to train on the images, a background index file creating a list of filelocations, and a positive index file containing the positive file locations, the number of objects in the picture and the rectangular locations for the object.&lt;br /&gt;
==== Creating the Negative Index File ====&lt;br /&gt;
Use the following automated script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
find ./*.jpg -maxdepth 2 -print  &amp;gt; background.idx&lt;br /&gt;
find ./*.png -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.bmp -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
find ./*.jpeg -maxdepth 2 -print &amp;gt;&amp;gt; background.idx&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
=== Generate Samples ===&lt;br /&gt;
Using the positive samples the creasamples cammand can apply transforms to the images and add them to the background images creating a wider range of images to train on. The syntax for this command is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: ./createsamples&lt;br /&gt;
  [-info &amp;lt;description_file_name&amp;gt;]&lt;br /&gt;
  [-img &amp;lt;image_file_name&amp;gt;]&lt;br /&gt;
  [-vec &amp;lt;vec_file_name&amp;gt;]&lt;br /&gt;
  [-bg &amp;lt;background_file_name&amp;gt;]&lt;br /&gt;
  [-num &amp;lt;number_of_samples = 1000&amp;gt;]&lt;br /&gt;
  [-bgcolor &amp;lt;background_color = 0&amp;gt;]&lt;br /&gt;
  [-inv] [-randinv] [-bgthresh &amp;lt;background_color_threshold = 80&amp;gt;]&lt;br /&gt;
  [-maxidev &amp;lt;max_intensity_deviation = 40&amp;gt;]&lt;br /&gt;
  [-maxxangle &amp;lt;max_x_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxyangle &amp;lt;max_y_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxzangle &amp;lt;max_z_rotation_angle = 0.500000&amp;gt;]&lt;br /&gt;
  [-show [&amp;lt;scale = 4.000000&amp;gt;]]&lt;br /&gt;
  [-w &amp;lt;sample_width = 24&amp;gt;]&lt;br /&gt;
  [-h &amp;lt;sample_height = 24&amp;gt;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
In order to get access to the display buffer on the beagle, you will need to run the following in U-Boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapfb.mode=1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi omapfb.vram=0:10M,1:10M vram=20M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sources have mentioned setting a value for mmcargs. However, we were not able to get it to work properly until the options were applied '''directly''' to the bootargs variable.&lt;br /&gt;
&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;br /&gt;
&lt;br /&gt;
==Future Directions==&lt;br /&gt;
===GStreamer on the DSP===&lt;br /&gt;
There is a package available for the beagle called gst-dsp, which is a native GStreamer plug-in to give it access to the DSP. Along with gst-opamfb and the dsp-bridge driver, this should allow us to access the DSP directly and output video directly to the framebuffer. OpenCV can interact with GStreamer, so this appears to be a very promising direction for the project. See [http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/ this article] for more information and a demonstration. That article also has a link to a minimal beagle image that provides a native framebuffer video player without requiring X.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-21T03:34:12Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* OpenCV Haar Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
[[user:jacksogc | Greg Jackson]]&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
&lt;br /&gt;
Probably the easiest place to start is by using [http://www.angstrom-distribution.org/narcissus/ narcissus]. Choose beagleboard as the machine type and unstable for the release. In order for highgui to work (necessary for camera capture unless you are using GStreamer), you must build an image with X11 support. Therefore, choose X11 for the user environment. The choice for the X11 desktop environment is not critical, but it would be wise to choose something fairly lightweight, such as Enlightenment. It took several hours for Gnome to configure upon first boot. Once the filesystem has been extracted to a properly formatted SD card with an appropriate kernel on the boot partition (we tested this using 2.6.29), you should be able to boot. Upon boot, you will need to run opkg update. After this, you will need to run opkg install with the following packages:&lt;br /&gt;
&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-dev&lt;br /&gt;
* binutils&lt;br /&gt;
* binutils-dev&lt;br /&gt;
* opencv&lt;br /&gt;
* opencv-dev&lt;br /&gt;
* g++&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ signdetect.cpp -o signdetect -I /usr/include/opencv/ -L /usr/lib -lm -lcv -lhighgui -lcvaux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
=== Gather Samples ===&lt;br /&gt;
Due to the large volume of sample data needed to create a effective Haar Cascade (about 1000 positive images) it is easier to gather video of a positive target and then break apart the video frame by frame and use the results as images. There are 2 two types of images, good and background. Both types of images are important in order for the cascade to be trained accurately.&lt;br /&gt;
=== Generate Samples ===&lt;br /&gt;
Using the positive samples the creasamples cammand can apply transforms to the images and add them to the background images creating a wider range of images to train on. The syntax for this command is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: ./createsamples&lt;br /&gt;
  [-info &amp;lt;description_file_name&amp;gt;]&lt;br /&gt;
  [-img &amp;lt;image_file_name&amp;gt;]&lt;br /&gt;
  [-vec &amp;lt;vec_file_name&amp;gt;]&lt;br /&gt;
  [-bg &amp;lt;background_file_name&amp;gt;]&lt;br /&gt;
  [-num &amp;lt;number_of_samples = 1000&amp;gt;]&lt;br /&gt;
  [-bgcolor &amp;lt;background_color = 0&amp;gt;]&lt;br /&gt;
  [-inv] [-randinv] [-bgthresh &amp;lt;background_color_threshold = 80&amp;gt;]&lt;br /&gt;
  [-maxidev &amp;lt;max_intensity_deviation = 40&amp;gt;]&lt;br /&gt;
  [-maxxangle &amp;lt;max_x_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxyangle &amp;lt;max_y_rotation_angle = 1.100000&amp;gt;]&lt;br /&gt;
  [-maxzangle &amp;lt;max_z_rotation_angle = 0.500000&amp;gt;]&lt;br /&gt;
  [-show [&amp;lt;scale = 4.000000&amp;gt;]]&lt;br /&gt;
  [-w &amp;lt;sample_width = 24&amp;gt;]&lt;br /&gt;
  [-h &amp;lt;sample_height = 24&amp;gt;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
In order to get access to the display buffer on the beagle, you will need to run the following in U-Boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapfb.mode=1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi omapfb.vram=0:10M,1:10M vram=20M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sources have mentioned setting a value for mmcargs. However, we were not able to get it to work properly until the options were applied '''directly''' to the bootargs variable.&lt;br /&gt;
&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;br /&gt;
&lt;br /&gt;
==Future Directions==&lt;br /&gt;
===GStreamer on the DSP===&lt;br /&gt;
There is a package available for the beagle called gst-dsp, which is a native GStreamer plug-in to give it access to the DSP. Along with gst-opamfb and the dsp-bridge driver, this should allow us to access the DSP directly and output video directly to the framebuffer. OpenCV can interact with GStreamer, so this appears to be a very promising direction for the project. See [http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/ this article] for more information and a demonstration. That article also has a link to a minimal beagle image that provides a native framebuffer video player without requiring X.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-21T03:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* OpenCV Haar Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
[[user:jacksogc | Greg Jackson]]&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
&lt;br /&gt;
Probably the easiest place to start is by using [http://www.angstrom-distribution.org/narcissus/ narcissus]. Choose beagleboard as the machine type and unstable for the release. In order for highgui to work (necessary for camera capture unless you are using GStreamer), you must build an image with X11 support. Therefore, choose X11 for the user environment. The choice for the X11 desktop environment is not critical, but it would be wise to choose something fairly lightweight, such as Enlightenment. It took several hours for Gnome to configure upon first boot. Once the filesystem has been extracted to a properly formatted SD card with an appropriate kernel on the boot partition (we tested this using 2.6.29), you should be able to boot. Upon boot, you will need to run opkg update. After this, you will need to run opkg install with the following packages:&lt;br /&gt;
&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-dev&lt;br /&gt;
* binutils&lt;br /&gt;
* binutils-dev&lt;br /&gt;
* opencv&lt;br /&gt;
* opencv-dev&lt;br /&gt;
* g++&lt;br /&gt;
&lt;br /&gt;
You should now be able to compile using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++ signdetect.cpp -o signdetect -I /usr/include/opencv/ -L /usr/lib -lm -lcv -lhighgui -lcvaux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
=== Gather Samples ===&lt;br /&gt;
Due to the large volume of sample data needed to create a effective Haar Cascade (about 1000 positive images) it is easier to gather video of a positive target and then break apart the video frame by frame and use the results as images. There are 2 two types of images, good and background. Both types of images are important in order for the cascade to be trained accurately.&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
In order to get access to the display buffer on the beagle, you will need to run the following in U-Boot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapfb.mode=1024x768MR-16@60 omapfb.debug=y omapdss.def_disp=dvi omapfb.vram=0:10M,1:10M vram=20M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other sources have mentioned setting a value for mmcargs. However, we were not able to get it to work properly until the options were applied '''directly''' to the bootargs variable.&lt;br /&gt;
&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;br /&gt;
&lt;br /&gt;
==Future Directions==&lt;br /&gt;
===GStreamer on the DSP===&lt;br /&gt;
There is a package available for the beagle called gst-dsp, which is a native GStreamer plug-in to give it access to the DSP. Along with gst-opamfb and the dsp-bridge driver, this should allow us to access the DSP directly and output video directly to the framebuffer. OpenCV can interact with GStreamer, so this appears to be a very promising direction for the project. See [http://felipec.wordpress.com/2009/10/13/new-project-gst-dsp-with-beagleboard-demo-image/ this article] for more information and a demonstration. That article also has a link to a minimal beagle image that provides a native framebuffer video player without requiring X.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:22:03Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Auto HUD Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
*SEE PROJECT PAGE&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-05-21T03:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Auto HUD Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
*Created a index file generator which allowed for quicker training times, and multiple users to generate index files and pull them together.&lt;br /&gt;
*Trained Haarwavelet Cascades&lt;br /&gt;
*Created the camera interface and analyzing code.&lt;br /&gt;
*Worked with Gstreamer to get capture independent of X but to no luck so far.&lt;br /&gt;
&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-05-19T18:10:18Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
Greg Jackson&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV (Development Machine)==&lt;br /&gt;
This is a script that will install OpenCV on a debian-based development machine. The script will add the debian testing repositories and install OpenCV and its dependencies. The repositories are then removed to avoid conflicts with existing packages during regular updates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt; /tmp/opencv-temp.list &lt;br /&gt;
echo &amp;quot;deb-src http://mirrors.kernel.org/debian/ testing main&amp;quot; &amp;gt;&amp;gt; /tmp/opencv-temp.list&lt;br /&gt;
sudo mv /tmp/opencv-temp.list /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install -y --allow-unauthenticated libcv4 libcv-dev libhighgui4 libhighgui-dev libcvaux4 libcvaux-dev&lt;br /&gt;
&lt;br /&gt;
sudo rm -f /etc/apt/sources.list.d/opencv-temp.list&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing OpenCV on the Beagle==&lt;br /&gt;
Add information from notes here.&lt;br /&gt;
&lt;br /&gt;
==OpenCV Haar Training==&lt;br /&gt;
&lt;br /&gt;
==Display Buffer Mapping==&lt;br /&gt;
==Pico Projector Integration==&lt;br /&gt;
As of revision C4 of the Beagleboard there is no necessary configuration needed to display native resolution on the projector.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-04-20T20:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: moved ECE597: Auto HUD to ECE597 Project Auto HUD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
Greg Jackson&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Talk:ECE597_Project_Auto_HUD</id>
		<title>Talk:ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Talk:ECE597_Project_Auto_HUD"/>
				<updated>2010-04-20T20:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: moved Talk:ECE597: Auto HUD to Talk:ECE597 Project Auto HUD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assign dates and people to project tasks to create timeline&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597:_Auto_HUD</id>
		<title>ECE597: Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597:_Auto_HUD"/>
				<updated>2010-04-20T20:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: moved ECE597: Auto HUD to ECE597 Project Auto HUD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ECE597 Project Auto HUD]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Talk:ECE597:_Auto_HUD</id>
		<title>Talk:ECE597: Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Talk:ECE597:_Auto_HUD"/>
				<updated>2010-04-20T20:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: moved Talk:ECE597: Auto HUD to Talk:ECE597 Project Auto HUD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:ECE597 Project Auto HUD]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-04-20T20:13:47Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
Greg Jackson&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Determine hardware needed for the project&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup</id>
		<title>ECE597 BeagleBoard DSP Software Setup</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup"/>
				<updated>2010-04-16T01:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: /* Rebuilding the DVSDK software for the target */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
This is an adaptation of [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Software_Setup GSG: OMAP35x_DVEVM Software Setup] for the BeagleBoard.  Presently it's a work-in-progress.  Follow the instructions and make corrections as you go.  Change references to '''DVEVM''' to '''Beagle''' once you've tested a section and know it's correct.  There are several links that pointed to pages on the original wiki.  Fix them if you know how.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Software Overview ==&lt;br /&gt;
To begin developing applications, you need to install the Beagle development environment. This section outlines the steps required to load the Beagle software onto the development host. You will need to download the files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to get started.&lt;br /&gt;
&lt;br /&gt;
The OMAP35x software approach provides interoperable, optimized, production-ready video and audio codecs that leverage DSP and integrated accelerators. These codecs are built into configurable frameworks, and are presented via published APIs within popular operating systems (such as Linux) for rapid software implementation.&lt;br /&gt;
&lt;br /&gt;
The following software is provided in the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page.&lt;br /&gt;
&lt;br /&gt;
* '''TI DVSDK Software.''' This includes demo applications, codec engine software, example codec servers, DVTB and DVSDK documentation. It contains the following files.&lt;br /&gt;
::* Getting Started Guide (this link)&lt;br /&gt;
::* DVSDK Product Release Notes &lt;br /&gt;
::* DVSDK Product Installer (dvsdk_#_##_##_##_Setup.bin)&lt;br /&gt;
&lt;br /&gt;
* '''OMAP3525/OMAP3530 DVSDK Collaterals'''&lt;br /&gt;
::* Linux TSPA DSP Codec Server Installer (cs1omap3530_setupLinux_1_00_01-03.bin)&lt;br /&gt;
::* Linux TSPA DSP Codec Server Release Notes&lt;br /&gt;
::* Demonstration Multimedia Files-containing audio and video clips (data_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* DVSDK OMAP3525/3530 Demo Overlay containing prebuilt DVSDK Binaries/Multimedia files. This should be added to an existing PSP file system (overlay_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - suitable for NFS mount (nfs_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - JFFS2 file system format [NAND flash] (rootfs_dvsdk_#_##_##_##.jffs2)&lt;br /&gt;
::* I don't know if these will work on the Beagle:&lt;br /&gt;
::** Prebuilt Kernel image for OMAP3525 and OMAP3530 default configuration (uImage-omap35x-evm.bin - Note that this is not a binary installer but needs to be renamed to uImage-omap35x-evm to use it for booting on OMAP3x EVM)&lt;br /&gt;
::** Prebuilt u-boot image for OMAP3525 and OMAP3530 default configuration (u-boot-omap35x-evm.bin)&lt;br /&gt;
 &lt;br /&gt;
* '''Linux Platform Support Package''' &lt;br /&gt;
::* PSP Release Notes&lt;br /&gt;
::* PSP User Guide&lt;br /&gt;
::* PSP Data Sheet&lt;br /&gt;
::* PSP Product Installer(AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.bin) - This installation file contains the linux source and binaries for OMAP35x platform and the necessary tools required for development on Linux for OMAP35x platform. This also contains the target file system&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Command prompts in this guide'''&lt;br /&gt;
&lt;br /&gt;
Commands are preceded by prompts that indicate the environment where the command is to be typed. For example: &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;host $&amp;lt;/tt&amp;gt; : Indicates command to be typed into the shell window of the host Linux workstation. &lt;br /&gt;
;&amp;lt;tt&amp;gt;Beagle #&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the U-Boot shell in a console window connected to the EVM board&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;s serial port. (see [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program Setup Terminal Program] for EVM instructions.  We need Beagle instructions).&lt;br /&gt;
;&amp;lt;tt&amp;gt;target $&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the Linux shell in the terminal window connected to the Beagle board's serial port.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The document lists down various commands that needs to be executed on the target or on&lt;br /&gt;
the u-boot prompt for various operations required through out the document. Kindly note that a&lt;br /&gt;
direct copy and paste of these commands might result in insertion of lines for a single command.&lt;br /&gt;
Hence it would not work on the u-boot prompt or the target. Kindly ensure that you copy the long&lt;br /&gt;
commands into notepad, remove the line spaces between them and add a space wherever you&lt;br /&gt;
have removed the line spaces, before recopying and pasting it on the command prompts.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Preparing to install'''  ==&lt;br /&gt;
&lt;br /&gt;
On a host system, copy the following .bin files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to a temporary location with at least 2 GB free space. Since you can delete the installation files after installing the software, a directory like /tmp is recommended.&lt;br /&gt;
&lt;br /&gt;
(I have copies of these that you can sftp from '''afs.rose-hulman.edu'''.  They are in '''users/faculty/yoder/Public/beagle/downloads'''.)&lt;br /&gt;
&lt;br /&gt;
*AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&lt;br /&gt;
*dvsdk_#_##_##_##_Setup.bin &lt;br /&gt;
*xdctools_setuplinux_#_##_##.bin&lt;br /&gt;
*bios_setuplinux_#_##_##.bin&lt;br /&gt;
*TI-C6x-CGT-v#.#.##.#.bin&lt;br /&gt;
*cs1omap3530_setupLinux_#_##_##-##.bin&lt;br /&gt;
*overlay_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*rootfs_dvsdk_#_##_##_##.jffs2&lt;br /&gt;
*data_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&lt;br /&gt;
Ensure all the .bin files are set with executable permissions.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chmod +x *.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the software ==&lt;br /&gt;
&lt;br /&gt;
Installing the software used by the DVEVM involves performing the following steps: &lt;br /&gt;
&lt;br /&gt;
*[[#Installing the Target Linux Software|Installing the Target Linux Software]] &lt;br /&gt;
*[[#Installing the DVSDK Software|Installing the DVSDK Software]] &lt;br /&gt;
*[[#Installing the A/V demo files|Installing the A/V demo files]]&lt;br /&gt;
*[[#Installing the toolchain|Installing the toolchain]] &lt;br /&gt;
*[[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Installing the Target Linux Software ===&lt;br /&gt;
&lt;br /&gt;
This section explains how to install Linux for use on the target board.&lt;br /&gt;
&lt;br /&gt;
Note that separate versions of Linux are used by the target and your host Linux workstation. The following Linux host operating systems have been used with the Beagle.&lt;br /&gt;
&lt;br /&gt;
*	Ubuntua 9.10, x86 32 bit&lt;br /&gt;
&lt;br /&gt;
To install the Linux software, follow these steps:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz file (where ##.##.##.## is the current version number) from the temporary location that it was copied to your home directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mv AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz /home/&amp;lt;useracct&amp;gt;&lt;br /&gt;
host $ cd&lt;br /&gt;
host $ tar xvzf  AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In future, all references in the document will assume that the user has installed the OMAP35x SDK using his user account and hence will refer to the OMAP35x SDK installation path as /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' The Linux Support Package (LSP) is a multi-platform LSP and is not configured for a particular platform. As shipped, this LSP cannot be used to build the demo or example applications. It must first be copied to a user area and configured/built for the Beagle. Please see the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section for instructions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the DVSDK Software ===&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software includes demos, example software, Codec Engine components, DSP/BIOS Link, xDAIS and xDM header files, Local Power Manager Module, Framework Components and a contiguous memory allocator for Linux (CMEM). The DVSDK also contains the Digital Video Test Bench that enables testing the codecs and LSP with various configurations that are not possible with the Out of the Box demos.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The installers for XDC, DSP/BIOS and Code Generation Tools (codegen) have a different default installation location. However, we strongly recommend that you change the default installation locations to place the components together (if you have not already installed the Linux versions of these components elsewhere). This simplifies the build setup steps.&lt;br /&gt;
&lt;br /&gt;
To install the DVSDK software using the DVSDK Linux installer, follow these steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in using a user account. In the following steps, we refer to the home directory as &amp;quot;~&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DVSDK installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./dvsdk_#_##_##_##_Setup.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
The installer will start as a GUI application.  Follow the instructions in the dialog boxes. You’ll be asked to agree to the End User License Agreement.&lt;br /&gt;
When you are prompted for an installation location, use the default installation location, that points to /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##. This location will be used as the DVSDK installation folder through out this document.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the XDC installer that you previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./xdctools_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default installation location. Instead, install the software in the directory created in the previous step. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&lt;br /&gt;
&lt;br /&gt;
NOTE:  When prompted select '''Typical''' for the type of Setup.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DSP/BIOS installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./bios_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default location. Instead, install the software in the directory created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/bios_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Codec Server installer that you have previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./cs1omap3530_setupLinux_#_##_##-##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Code Generation Tools installer that you previously downloaded from the DVSDK download page. The download link looked like TI-C6x-CGT-v#.#.##.#.bin; however the file you downloaded looked like ti_cgt_c6000_#.#.#_setup_linux_x86.bin.  Run this file.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./ti_cgt_c6000_#.#.#_setup_linux_x86.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. If you are installing it under the DVSDK installation folder created in step 2, create a new folder under the dvsdk installation folder and then proceed to install. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##, where #_#_## is the version number. &lt;br /&gt;
&amp;lt;li&amp;gt;Remember to set the environment variable as directed by the installer. For example: &lt;br /&gt;
csh: (in the .cshrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ setenv C6X_C_DIR /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
ksh or bash: (in the .bashrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ export C6X_C_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can now delete the .bin files that you loaded into the temporary directory.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' You can uninstall these components by using the uninstall file in the respective installation directories. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_#_#&lt;br /&gt;
host $ ./uninstall &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the A/V demo files ===&lt;br /&gt;
&lt;br /&gt;
'''These are very big, so I skipped them.  --may'''&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software installer, by itself does not contain the media files used by the demos. You can download the data files from DVSDK download page. Please use the steps mentioned below for extracting the media files into the desired location. &lt;br /&gt;
&lt;br /&gt;
The Download page contains the Audio/Video files used by the demo. After following the instructions in the previous section, follow these instructions to install the A/V files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Go to the DVSDK directory that you set up previously. For example&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/dvsdk/dvsdk_#_##_##_##/clips&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the A/V data which you have downloaded from Download page to your DVSDK clips directory.For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cp data_dvsdk_#_##_##_##.tar.gz .&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the A/V data files. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ tar -xvzf data_dvsdk_#_##_##_##.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now you can delete the tar file from the clips folder.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the toolchain ===&lt;br /&gt;
&lt;br /&gt;
This guide assumes use of the LITE version of the CodeSourcery toolchain.&lt;br /&gt;
&lt;br /&gt;
==== Toolchain version to be used for DVSDK v3.01 ====&lt;br /&gt;
The toolchain used is ARM GNU/Linux EABI 2009q1.  It can be downloaded from [http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 here]&lt;br /&gt;
&lt;br /&gt;
[[Image:Codesourcery 2009q1.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
To install the toolchain, follow the sequence below. These are to be executed on the Linux host platform. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir –p /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cd /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ tar -jxvf  arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
$ rm arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I haven't tested these sections on use NFS ===&lt;br /&gt;
&lt;br /&gt;
==== Exporting a Shared File System for Target Access ====&lt;br /&gt;
&lt;br /&gt;
Although the board’s NAND flash contains a file system, during development it is more convenient to have the target board NFS mount a file system on a host Linux workstation. Once you test the application, you can store it on the board’s flash for a standalone demonstration. &lt;br /&gt;
&lt;br /&gt;
Before the board can mount a target file system, you must export that target file system on the host Linux workstation. The file system uses an NFS (Network File System) server. The exported file system will contain the target file system and your executables.&lt;br /&gt;
&lt;br /&gt;
To export the file system from your NFS server, perform the following steps. You only need to perform these steps once.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in with a user account on the host Linux workstation. (In the following steps, we refer to the home user directory as &amp;quot;~&amp;quot;.)&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the following commands to prepare a location for the OMAP35x EVM target file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir -p workdir/filesys&lt;br /&gt;
host $ cd workdir/filesys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch user to &amp;quot;root&amp;quot; on the host Linux workstation.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su &lt;br /&gt;
password:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There will be a prompt for entering the password as shown above. Type the root password, for getting the root permissions&lt;br /&gt;
&amp;lt;li&amp;gt;If you have already prepared a directory tree to use for the NFS root file-system (see Section [[#Rebuilding the NFS Image |Rebuilding the NFS Image]]) you can proceed to the next step.  Otherwise, copy the prepared version(nfs_dvsdk_#_##_##_##.tar.gz) from the OMAP3530 DVSDK from the Download page to a new directory created in step 2. Perform the following commands. &lt;br /&gt;
'''Note:'''Un-tar the file with root permissions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cp /tmp/nfs_dvsdk_#_##_##_##.tar.gz .&lt;br /&gt;
$ tar –xvzf nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you can write into the opt folder in the file system by setting the permissions of the opt folder within the target file system with your user account. Perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, if you want to have permissions to write or create folders within the target file system that you want to export as NFS, perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure the NFS server is configured and functioning properly. Add the following line to the /etc/exports file of the server. Ensure you have root permission before editing this file.&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/&amp;lt;useracct&amp;gt;/workdir/filesys 	*(rw,no_root_squash,no_all_squash,sync)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE:  On some systems you may wish to add the '''no_subtree_check''' option to avoid warnings like:&lt;br /&gt;
  exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export &amp;lt;export listed here&amp;gt;.&lt;br /&gt;
    Assuming default behaviour ('no_subtree_check').&lt;br /&gt;
    NOTE: this default has changed since nfs-utils version 1.0.x&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Then issue the following command to notify the NFS server about the new exported directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /usr/sbin/exportfs –a&lt;br /&gt;
''' For Redhat Linux''' &lt;br /&gt;
host $ /sbin/service nfs restart&lt;br /&gt;
''' For Ubuntu''' &lt;br /&gt;
host $ /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that the server firewall is turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables status&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the firewall is running, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you exit from having the root permissions after completing all the above steps&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ exit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Testing the shared file system  ====&lt;br /&gt;
&lt;br /&gt;
To test your NFS setup, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the IP address of your host Linux workstations as follows. Look for the IP address associated with the eth0 Ethernet port.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /sbin/ifconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal emulation window to connect to the EVM board via RS-232 using the instructions in the [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]] topic. If you have a Windows workstation, you can use HyperTerminal. If you have a Linux workstation, you might use Minicom. (You may need to turn on line wrap.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Power on the EVM board, and abort the automatic boot sequence by pressing a key in the console window. This gets you into the U-Boot prompt where you can configure how U-Boot will boot the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set the following environment variables in the console window:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv nfshost &amp;lt;ip address of nfs host&amp;gt; &lt;br /&gt;
EVM # setenv rootpath &amp;lt;directory to mount&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK Releases from 3.00.00.36 upto and including 3.00.01.42, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=88M&lt;br /&gt;
                       omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK release 3.00.02.44, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=99M&lt;br /&gt;
                       mpurate=600 omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;setenv bootargs&amp;lt;/tt&amp;gt; command should be typed on a single line. Also note that you should avoid using the numeric keypad to enter numbers, as it can sometimes insert extra invisible characters. These environment variables must be typed in perfectly including capitals, if anything is typoed you will likely run into boot errors. &lt;br /&gt;
&lt;br /&gt;
The ''&amp;lt;directory to mount&amp;gt;'' must match what you specified in Step 5 of the [[#Exporting a shared file system for target access| Exporting a shared file system for target access]] section. For example, &amp;lt;tt&amp;gt;/home/&amp;lt;user&amp;gt;/workdir/filesys&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
'''Hints:''' If the kernel version stored in the NAND flash on the EVM is out of date you may wish to [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Flashing_the_New_Linux_Kernel | flash the latest kernel image]] (using the uImage file in the /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/images/kernel directory) or [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Booting_via_TFTP_using_NFS_file_system | boot using TFTP]]&lt;br /&gt;
&lt;br /&gt;
'''Hints:''' You may want to use the &amp;lt;tt&amp;gt;printenv&amp;lt;/tt&amp;gt; command to print a list of your environment variables. You can also save these setenv commands in a .txt file from which you can paste them in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Save the environment so that you don't have to retype these commands every time you cycle power on the EVM board:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # saveenv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Boot the board using NFS:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can now log in as &amp;quot;root&amp;quot; with no password required.&lt;br /&gt;
&lt;br /&gt;
See the [[GSG:_OMAP35x DVEVM Additional Procedures#Alternate boot methods| Alternate boot methods]] section for information about booting with TFTP, NFS, or the board's NAND flash.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes on using production codecs  ===&lt;br /&gt;
&lt;br /&gt;
As part of the OMAP35x DVSDK installation, you received a number of codecs: &lt;br /&gt;
&lt;br /&gt;
* MPEG4 Simple Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* H.264 Base Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* MPEG2 Main Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* Sequential JPEG Decoder. This decoder is compliant with IIMGDEC1 Interface&lt;br /&gt;
* MPEG4 Simple Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* H.264 Base Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* JPEG Encoder. This encoder is compliant with IIMGENC1 Interface&lt;br /&gt;
* Advance Audio Codec (AAC) Decoder. This decoder supports both AAC-HE and AAC-LC configurations. It is compliant with IAUDDEC1 interface&lt;br /&gt;
* G.711 Speech Decoder. This decoder is compliant with ISPHDEC1 interface&lt;br /&gt;
* G.711 Speech Encoder. This encoder is compliant with ISPHENC1 interface&lt;br /&gt;
&lt;br /&gt;
NOTE: Though the standalone codec server contain JPEG decode, the DVSDK decode demos do not support playback of JPEG streams. In order to evaluate these decoders, use Digital Video Test Bench (DVTB) which is included in the OMAP3530 DVSDK. The media files for MPEG2 MP and JPEG format streams are not available as part of the DVSDK installation, but they are available as part of data_dvsdk_#_##_##_##.tar.gz that can be downloaded from the OMAP software update site http://www.ti.com/omapsoftwareupdates &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the build/development environment ==&lt;br /&gt;
To set up the development and build environment, follow these steps: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in to your '''user''' account (and not as root) on the NFS host system. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Add the /host/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin directory to your path.  This is typically done by adding an additional line to your shell resource file (~/.bashrc).  For the path given above, the line to add to your .bashrc file is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin:$PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds the CodeSourcery tools to your path and allows you to execute the tools using arm-none-linux-gnueabi-gcc (or other tools in the tool chain) from any directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Remember to use the following command after modifying your .bashrc file. The source command essentially executes the .bashrc script so that the path you just added to it is added to your environment variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ source .bashrc&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can test that the toolchain is installed correctly by starting a new shell and using the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc –v&amp;lt;/pre&amp;gt; &lt;br /&gt;
When you execute this command, you will get an output like the one shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Using built-in specs.&lt;br /&gt;
Target: arm-none-linux-gnueabi&lt;br /&gt;
Configured with: /scratch/sandra/lite/src/gcc-4.2/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion=Sourcery G++ Lite 2008q1-126 --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/libc --enable-poison-system-directories --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin&lt;br /&gt;
Thread model: posix&lt;br /&gt;
gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Writing a simple program and running it on the EVM ===&lt;br /&gt;
Make sure you have performed the steps in the [[#Exporting a shared file system for target access | Exporting a shared file system for target access ]] section and the [[#Setting up the build/development environment|Setting up the build/development environment]] section before continuing with the steps in this section. &lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the NFS host system as user (not as root): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mkdir –p ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Create a file called hello.c with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
printf(&amp;quot;Welcome to OMAP35x World!\n&amp;quot;);&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Build the new C file: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc hello.c -o hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the target board. You may use either the target's console window (see [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]]) or a telnet session. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move to the new directory on the target: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;target $ cd /opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Run the new executable: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./hello&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output should be: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Welcome to OMAP35x World!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rebuilding the Software ==&lt;br /&gt;
This section describes how to rebuild pieces of the software delivery.  Ensure that the toolchain setup and install has been completed (see [[#Installing the Toolchain|Installing the Toolchain]]).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding U-boot ===&lt;br /&gt;
Rebuilding the U-boot is described in more detail in the LSP User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Copy the U-Boot source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/u-boot directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/src/u-boot/u-boot-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the U-Boot source archive by performing the command given below.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd workdir/opt&lt;br /&gt;
host $ tar -zxvf u-boot-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To configure U-Boot for building, issue the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd uboot-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build U-Boot, run the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting U-Boot image named u-boot.bin will be in the current directory, ready to be loaded on the target.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Linux Kernel ===&lt;br /&gt;
Rebuilding the kernel is described in more detail in the User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Note that building the kernel requires using mkimage, a host side utility built by the u-boot makefile.  If you have not already done so please build u-boot using the instructions in the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_U-boot | Rebuilding U-Boot section]].  You will need to build U-boot and place mkimage in your Path.  A command like below can be used. If you are using a bash shell, kindly add the following in the .bashrc file in your user account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/&amp;lt;path_to_uboot&amp;gt;/tools:$PATH&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Copy the Linux kernel source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src directory into your working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/kernel/linux-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Un-tar the Linux kernel source archive by performing the commands given below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf linux-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In order to prepare the kernel for building, follow these commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you need to make changes to the default configuration, perform the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm menuconfig&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build the kernel, run the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage modules&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting kernel image uImage will be placed under arch/arm/boot and is ready to be loaded on the target.&lt;br /&gt;
&lt;br /&gt;
Once the modules are built they must be installed on the target file system in order to be used. The following command will install the modules to the target file system and create the modules dependency file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su root&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH=&amp;lt;target filesys dir&amp;gt; modules_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if you have been following the Getting Started Guide you should have created a target file system at /home/&amp;lt;useracct&amp;gt;/workdir/filesys. In the above command you should replace &amp;lt;target filesys dir&amp;gt; with /home/&amp;lt;useracct&amp;gt;/workdir/filesys. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DVSDK software for the target ===&lt;br /&gt;
To place demo files in the /opt/dvsdk directory, you need to rebuild the DVSDK software. To do this, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you have not already done so, rebuild the Linux kernel as described in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to dvsdk_#_##_##_##.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the Rules.make file in the dvsdk_#_##_##_## directory. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ nano Rules.make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the following directory definitions. If you installed components in the default locations, the directory definitions may already be correct, but you should verify them in any case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Set PLATFORM to match your EVM board as follows (Note that this variable is case sensitive):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PLATFORM=omap3530&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set DVSDK_INSTALL_DIR to the top-level DVSDK installation directory as follows, note that by default ${HOME} refers to your /home/&amp;lt;''useracct''&amp;gt; directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DVSDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Modify the following variable as needed to match the location of XDCtools on your Linux host. We recommend that XDCtools be installed in the /home/&amp;lt;''useracct''&amp;gt;/dvsdk/dvsdk_#_##_##_## directory, but you may have installed it elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XDC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure EXEC_DIR points to the opt directory on the NFS exported file system as follows. Refer [[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] for setting up the NFS exported file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;EXEC_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt/dvsdk/omap3530&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure UBOOT_INSTALL_DIR is defined as follows so it points to where you copied the uboot source in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_U-boot | Rebuilding U-Boot section]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;UBOOT_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/uboot-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure LINUXKERNEL_INSTALL_DIR is defined as follows so it points to where you copied the Linux kernel tree in the Building a New Linux Kernel section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;LINUXKERNEL_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure OMAP3503_SDK_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;OMAP3503_SDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEC_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the path of the CSTOOL_DIR to point to the location where you have installed the CodeSourcery tool-chain. (Refer [[#Installing the Toolchain|Installing the Toolchain]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CSTOOL_DIR=/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEGEN_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Note''' PSP_INSTALL_DIR donot need to be updated.They will be pointing to DVSDK installation directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the path of all component installation directories to match the location where you want to point to. The default locations specified will choose the component versions as installed as part of the DVSDK installation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The top level DVSDK Makefile re-builds the kernel modules required by the DVSDK demonstration software (CMEM and LPM) and hence it is very important to at least perform the following commands (in case you have not performed the steps in [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel]]), after extracting the Linux kernel source code in your work directory, whose path is provided in the top level DVSDK Rules.make. Refer section [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel ]] for more details on “Rebuilding the Linux Kernel”.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Once the installation is complete please use the following commands to verify the paths set in Rules.make and components installed in DVSDK are proper.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make check&lt;br /&gt;
host $ make info&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;While in the same directory that contains Rules.make, use the following commands to build the DVSDK demo applications and put the resulting binaries on the target file system specified by EXEC_DIR.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clean&lt;br /&gt;
host $ make all&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Note :''' The '''make all''' command builds only the DVSDK demos, its dependent components and DVTB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Additional commands for cleaning and building all the components are as mentioned below.&lt;br /&gt;
*'''Note :''' The PSP examples under AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/examples have to be extracted before using below commands&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clobber&lt;br /&gt;
host $ make everything&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For information on individually building the components please use the folowing command&lt;br /&gt;
*'''Note:'''Certain components have dependency on other components.So please make sure you have executed the '''make all''' command before proceeding for individual component build.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The dependencies for indivdual component builds are not addressed in the top level DVSDK Makefile. If you perform 'make clobber' or 'make clean' and then try building indivdual components like 'make dmai', the build will fail. Alternatively, if you perform 'make clobber' and then perform 'make everything', the build will go through. In addition to that, if you try cleaning the individual component and then build the same again, the build will go through. For example, after performing 'make everything', performing 'make dmai_clean' followed by 'make dmai' will work.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DSP side server executables ===&lt;br /&gt;
&lt;br /&gt;
The DSP side codec libraries are available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_## directory or if you have installed it in a different location specified by CODEC_INSTALL_DIR&lt;br /&gt;
&lt;br /&gt;
The top level Makefile and the config.bld files are provided under the top level directory mentioned above. The codec binaries, header files as well as documents are RTSC packaged and available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/codecs folder.&lt;br /&gt;
&lt;br /&gt;
Ensure that the path settings for the DSP side code generation tools are set properly in the config.bld file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C64P.rootDir = /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_# OR &lt;br /&gt;
C64P.rootDir=java.lang.System.getenv(&amp;quot;CODEGEN_INSTALL_DIR&amp;quot;); &lt;br /&gt;
cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&lt;br /&gt;
host $ make clean&lt;br /&gt;
host $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rebuilt server executable can be found in the /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/server/bin directory and is named cs.x64P.&lt;br /&gt;
&lt;br /&gt;
The DSP side server executables can also be built from the DVSDK installation directory itself by following the below commands.&lt;br /&gt;
&lt;br /&gt;
Ensure that DSP side code generation tools are set properly in the Rules.make in DVSDK installation directory &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re-building the Servers from DVSDK installation directory can be done using the following commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make codecs_clean&lt;br /&gt;
host $ make codecs&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Initial NAND X-loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the X-Loader source archive from OMAP35x-PSP-SDK-##.##.##.##/src/boot-strap directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp x-loader-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the X-Loader source archive by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf x-loader-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure X-Loader for OMAP35x EVM target:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd xloader-##.##.##.##&lt;br /&gt;
host $ make omap3evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build X-Loader, run the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command produces the x-load.bin file, but in order for the X-Loader to be loaded by the OMAP35x ROM bootloader, it needs to be signed with the signGP program from the AM35x-OMAP35x-PSP-SDK-##.##.##.##/host-tools/linux directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/host_tools/linux/signGP x-load.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting signed X-loader is named x-load.bin.ift and should be ready for the target.&lt;br /&gt;
For MMC/SD Card boot loading this file must be called MLO.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cp x-load.bin.ift MLO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Target-side UART Loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the UART loader dnld_util_target.tar.bz2 file from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/utils directory into your working directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp dnld-util-target.tar.bz2 ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the UART loader by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ tar -jxvf dnld_util_target.tar.bz2&lt;br /&gt;
host $ cd dnld_util_target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the following command to build it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting binary is called dnld_startup_omap3_evm.bin.  This file is used with DownloadUtility.exe for UART peripheral boot.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the NFS Image ===&lt;br /&gt;
&lt;br /&gt;
Kindly refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_NFS_Image]] (part of AM35x Getting Started Guide),for rebuilding NFS for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
The OMAP3535/OMAP3530 DVSDK installer has the script to (re)build the NFS image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the NFS image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
The following command removes the old the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will create the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will remove the NFS creation logs and the temporary NFS directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above command requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Full Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_Full_Ramdisk_Image]] (part of AM35x Getting Started Guide),for rebuilding full ramdisk image for AM35x SDK. This will contain different set of demos and sample applications.&lt;br /&gt;
&lt;br /&gt;
The full ramdisk image cannot be built to include the OMAP3530 DVSDK demos as the ramdisk size requirement exceeds 40MB after the image is un-tarred and the bootargs given in step 5 in Section [[GSG:_OMAP35x DVEVM Additional Procedures#Running the Re-flash Procedure|Running the Re-flash Procedure]] will not work&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Minimal Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup]] (part of AM35x Getting Started Guide),for rebuilding minimal ramdisk image for AM35x SDK. The minimal ramdisk image does not contain any demos or examples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the JFFS2 File-System Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_JFFS2_File-System_Image]] (part of AM35x Getting Started Guide),for rebuilding jffs2 image for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
&lt;br /&gt;
The OMAP3525/OMAP3530 DVSDK installer has the pre-built JFFS2 root file system image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Check if the linux distribution on the host PC contains the mkfs.jffs2 utility. If not, download the binary from ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2. Place this binary under /sbin directory in the Linux host development PC and ensure to include /sbin to the PATH environment variable in the .bashrc file.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the JFFS2 root file system image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]]. Then, perform the following steps.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Clean the old file system images:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the JFFS2 Image (This requires building the NFS image to create the JFFS2 image from):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_jffs2 MKJFFS2=&amp;lt;your_jffs2_install_path&amp;gt; DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clean up the temporary NFS file system directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS and JFFS2 root file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz and rootfs_dvsdk_#_##_##_##.jffs2 files created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What's next? ==&lt;br /&gt;
&lt;br /&gt;
The next chapter of this Getting Started Guide is [[GSG: OMAP35x DVEVM Additional Procedures]].&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup</id>
		<title>ECE597 BeagleBoard DSP Software Setup</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup"/>
				<updated>2010-04-16T01:16:58Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
This is an adaptation of [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Software_Setup GSG: OMAP35x_DVEVM Software Setup] for the BeagleBoard.  Presently it's a work-in-progress.  Follow the instructions and make corrections as you go.  Change references to '''DVEVM''' to '''Beagle''' once you've tested a section and know it's correct.  There are several links that pointed to pages on the original wiki.  Fix them if you know how.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Software Overview ==&lt;br /&gt;
To begin developing applications, you need to install the Beagle development environment. This section outlines the steps required to load the Beagle software onto the development host. You will need to download the files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to get started.&lt;br /&gt;
&lt;br /&gt;
The OMAP35x software approach provides interoperable, optimized, production-ready video and audio codecs that leverage DSP and integrated accelerators. These codecs are built into configurable frameworks, and are presented via published APIs within popular operating systems (such as Linux) for rapid software implementation.&lt;br /&gt;
&lt;br /&gt;
The following software is provided in the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page.&lt;br /&gt;
&lt;br /&gt;
* '''TI DVSDK Software.''' This includes demo applications, codec engine software, example codec servers, DVTB and DVSDK documentation. It contains the following files.&lt;br /&gt;
::* Getting Started Guide (this link)&lt;br /&gt;
::* DVSDK Product Release Notes &lt;br /&gt;
::* DVSDK Product Installer (dvsdk_#_##_##_##_Setup.bin)&lt;br /&gt;
&lt;br /&gt;
* '''OMAP3525/OMAP3530 DVSDK Collaterals'''&lt;br /&gt;
::* Linux TSPA DSP Codec Server Installer (cs1omap3530_setupLinux_1_00_01-03.bin)&lt;br /&gt;
::* Linux TSPA DSP Codec Server Release Notes&lt;br /&gt;
::* Demonstration Multimedia Files-containing audio and video clips (data_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* DVSDK OMAP3525/3530 Demo Overlay containing prebuilt DVSDK Binaries/Multimedia files. This should be added to an existing PSP file system (overlay_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - suitable for NFS mount (nfs_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - JFFS2 file system format [NAND flash] (rootfs_dvsdk_#_##_##_##.jffs2)&lt;br /&gt;
::* I don't know if these will work on the Beagle:&lt;br /&gt;
::** Prebuilt Kernel image for OMAP3525 and OMAP3530 default configuration (uImage-omap35x-evm.bin - Note that this is not a binary installer but needs to be renamed to uImage-omap35x-evm to use it for booting on OMAP3x EVM)&lt;br /&gt;
::** Prebuilt u-boot image for OMAP3525 and OMAP3530 default configuration (u-boot-omap35x-evm.bin)&lt;br /&gt;
 &lt;br /&gt;
* '''Linux Platform Support Package''' &lt;br /&gt;
::* PSP Release Notes&lt;br /&gt;
::* PSP User Guide&lt;br /&gt;
::* PSP Data Sheet&lt;br /&gt;
::* PSP Product Installer(AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.bin) - This installation file contains the linux source and binaries for OMAP35x platform and the necessary tools required for development on Linux for OMAP35x platform. This also contains the target file system&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Command prompts in this guide'''&lt;br /&gt;
&lt;br /&gt;
Commands are preceded by prompts that indicate the environment where the command is to be typed. For example: &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;host $&amp;lt;/tt&amp;gt; : Indicates command to be typed into the shell window of the host Linux workstation. &lt;br /&gt;
;&amp;lt;tt&amp;gt;Beagle #&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the U-Boot shell in a console window connected to the EVM board&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;s serial port. (see [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program Setup Terminal Program] for EVM instructions.  We need Beagle instructions).&lt;br /&gt;
;&amp;lt;tt&amp;gt;target $&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the Linux shell in the terminal window connected to the Beagle board's serial port.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The document lists down various commands that needs to be executed on the target or on&lt;br /&gt;
the u-boot prompt for various operations required through out the document. Kindly note that a&lt;br /&gt;
direct copy and paste of these commands might result in insertion of lines for a single command.&lt;br /&gt;
Hence it would not work on the u-boot prompt or the target. Kindly ensure that you copy the long&lt;br /&gt;
commands into notepad, remove the line spaces between them and add a space wherever you&lt;br /&gt;
have removed the line spaces, before recopying and pasting it on the command prompts.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Preparing to install'''  ==&lt;br /&gt;
&lt;br /&gt;
On a host system, copy the following .bin files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to a temporary location with at least 2 GB free space. Since you can delete the installation files after installing the software, a directory like /tmp is recommended.&lt;br /&gt;
&lt;br /&gt;
(I have copies of these that you can sftp from '''afs.rose-hulman.edu'''.  They are in '''users/faculty/yoder/Public/beagle/downloads'''.)&lt;br /&gt;
&lt;br /&gt;
*AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&lt;br /&gt;
*dvsdk_#_##_##_##_Setup.bin &lt;br /&gt;
*xdctools_setuplinux_#_##_##.bin&lt;br /&gt;
*bios_setuplinux_#_##_##.bin&lt;br /&gt;
*TI-C6x-CGT-v#.#.##.#.bin&lt;br /&gt;
*cs1omap3530_setupLinux_#_##_##-##.bin&lt;br /&gt;
*overlay_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*rootfs_dvsdk_#_##_##_##.jffs2&lt;br /&gt;
*data_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&lt;br /&gt;
Ensure all the .bin files are set with executable permissions.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chmod +x *.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the software ==&lt;br /&gt;
&lt;br /&gt;
Installing the software used by the DVEVM involves performing the following steps: &lt;br /&gt;
&lt;br /&gt;
*[[#Installing the Target Linux Software|Installing the Target Linux Software]] &lt;br /&gt;
*[[#Installing the DVSDK Software|Installing the DVSDK Software]] &lt;br /&gt;
*[[#Installing the A/V demo files|Installing the A/V demo files]]&lt;br /&gt;
*[[#Installing the toolchain|Installing the toolchain]] &lt;br /&gt;
*[[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Installing the Target Linux Software ===&lt;br /&gt;
&lt;br /&gt;
This section explains how to install Linux for use on the target board.&lt;br /&gt;
&lt;br /&gt;
Note that separate versions of Linux are used by the target and your host Linux workstation. The following Linux host operating systems have been used with the Beagle.&lt;br /&gt;
&lt;br /&gt;
*	Ubuntua 9.10, x86 32 bit&lt;br /&gt;
&lt;br /&gt;
To install the Linux software, follow these steps:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz file (where ##.##.##.## is the current version number) from the temporary location that it was copied to your home directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mv AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz /home/&amp;lt;useracct&amp;gt;&lt;br /&gt;
host $ cd&lt;br /&gt;
host $ tar xvzf  AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In future, all references in the document will assume that the user has installed the OMAP35x SDK using his user account and hence will refer to the OMAP35x SDK installation path as /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' The Linux Support Package (LSP) is a multi-platform LSP and is not configured for a particular platform. As shipped, this LSP cannot be used to build the demo or example applications. It must first be copied to a user area and configured/built for the Beagle. Please see the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section for instructions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the DVSDK Software ===&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software includes demos, example software, Codec Engine components, DSP/BIOS Link, xDAIS and xDM header files, Local Power Manager Module, Framework Components and a contiguous memory allocator for Linux (CMEM). The DVSDK also contains the Digital Video Test Bench that enables testing the codecs and LSP with various configurations that are not possible with the Out of the Box demos.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The installers for XDC, DSP/BIOS and Code Generation Tools (codegen) have a different default installation location. However, we strongly recommend that you change the default installation locations to place the components together (if you have not already installed the Linux versions of these components elsewhere). This simplifies the build setup steps.&lt;br /&gt;
&lt;br /&gt;
To install the DVSDK software using the DVSDK Linux installer, follow these steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in using a user account. In the following steps, we refer to the home directory as &amp;quot;~&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DVSDK installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./dvsdk_#_##_##_##_Setup.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
The installer will start as a GUI application.  Follow the instructions in the dialog boxes. You’ll be asked to agree to the End User License Agreement.&lt;br /&gt;
When you are prompted for an installation location, use the default installation location, that points to /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##. This location will be used as the DVSDK installation folder through out this document.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the XDC installer that you previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./xdctools_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default installation location. Instead, install the software in the directory created in the previous step. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&lt;br /&gt;
&lt;br /&gt;
NOTE:  When prompted select '''Typical''' for the type of Setup.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DSP/BIOS installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./bios_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default location. Instead, install the software in the directory created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/bios_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Codec Server installer that you have previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./cs1omap3530_setupLinux_#_##_##-##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Code Generation Tools installer that you previously downloaded from the DVSDK download page. The download link looked like TI-C6x-CGT-v#.#.##.#.bin; however the file you downloaded looked like ti_cgt_c6000_#.#.#_setup_linux_x86.bin.  Run this file.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./ti_cgt_c6000_#.#.#_setup_linux_x86.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. If you are installing it under the DVSDK installation folder created in step 2, create a new folder under the dvsdk installation folder and then proceed to install. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##, where #_#_## is the version number. &lt;br /&gt;
&amp;lt;li&amp;gt;Remember to set the environment variable as directed by the installer. For example: &lt;br /&gt;
csh: (in the .cshrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ setenv C6X_C_DIR /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
ksh or bash: (in the .bashrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ export C6X_C_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can now delete the .bin files that you loaded into the temporary directory.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' You can uninstall these components by using the uninstall file in the respective installation directories. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_#_#&lt;br /&gt;
host $ ./uninstall &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the A/V demo files ===&lt;br /&gt;
&lt;br /&gt;
'''These are very big, so I skipped them.  --may'''&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software installer, by itself does not contain the media files used by the demos. You can download the data files from DVSDK download page. Please use the steps mentioned below for extracting the media files into the desired location. &lt;br /&gt;
&lt;br /&gt;
The Download page contains the Audio/Video files used by the demo. After following the instructions in the previous section, follow these instructions to install the A/V files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Go to the DVSDK directory that you set up previously. For example&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/dvsdk/dvsdk_#_##_##_##/clips&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the A/V data which you have downloaded from Download page to your DVSDK clips directory.For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cp data_dvsdk_#_##_##_##.tar.gz .&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the A/V data files. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ tar -xvzf data_dvsdk_#_##_##_##.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now you can delete the tar file from the clips folder.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the toolchain ===&lt;br /&gt;
&lt;br /&gt;
This guide assumes use of the LITE version of the CodeSourcery toolchain.&lt;br /&gt;
&lt;br /&gt;
==== Toolchain version to be used for DVSDK v3.01 ====&lt;br /&gt;
The toolchain used is ARM GNU/Linux EABI 2009q1.  It can be downloaded from [http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 here]&lt;br /&gt;
&lt;br /&gt;
[[Image:Codesourcery 2009q1.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
To install the toolchain, follow the sequence below. These are to be executed on the Linux host platform. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir –p /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cd /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ tar -jxvf  arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
$ rm arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I haven't tested these sections on use NFS ===&lt;br /&gt;
&lt;br /&gt;
==== Exporting a Shared File System for Target Access ====&lt;br /&gt;
&lt;br /&gt;
Although the board’s NAND flash contains a file system, during development it is more convenient to have the target board NFS mount a file system on a host Linux workstation. Once you test the application, you can store it on the board’s flash for a standalone demonstration. &lt;br /&gt;
&lt;br /&gt;
Before the board can mount a target file system, you must export that target file system on the host Linux workstation. The file system uses an NFS (Network File System) server. The exported file system will contain the target file system and your executables.&lt;br /&gt;
&lt;br /&gt;
To export the file system from your NFS server, perform the following steps. You only need to perform these steps once.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in with a user account on the host Linux workstation. (In the following steps, we refer to the home user directory as &amp;quot;~&amp;quot;.)&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the following commands to prepare a location for the OMAP35x EVM target file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir -p workdir/filesys&lt;br /&gt;
host $ cd workdir/filesys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch user to &amp;quot;root&amp;quot; on the host Linux workstation.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su &lt;br /&gt;
password:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There will be a prompt for entering the password as shown above. Type the root password, for getting the root permissions&lt;br /&gt;
&amp;lt;li&amp;gt;If you have already prepared a directory tree to use for the NFS root file-system (see Section [[#Rebuilding the NFS Image |Rebuilding the NFS Image]]) you can proceed to the next step.  Otherwise, copy the prepared version(nfs_dvsdk_#_##_##_##.tar.gz) from the OMAP3530 DVSDK from the Download page to a new directory created in step 2. Perform the following commands. &lt;br /&gt;
'''Note:'''Un-tar the file with root permissions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cp /tmp/nfs_dvsdk_#_##_##_##.tar.gz .&lt;br /&gt;
$ tar –xvzf nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you can write into the opt folder in the file system by setting the permissions of the opt folder within the target file system with your user account. Perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, if you want to have permissions to write or create folders within the target file system that you want to export as NFS, perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure the NFS server is configured and functioning properly. Add the following line to the /etc/exports file of the server. Ensure you have root permission before editing this file.&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/&amp;lt;useracct&amp;gt;/workdir/filesys 	*(rw,no_root_squash,no_all_squash,sync)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE:  On some systems you may wish to add the '''no_subtree_check''' option to avoid warnings like:&lt;br /&gt;
  exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export &amp;lt;export listed here&amp;gt;.&lt;br /&gt;
    Assuming default behaviour ('no_subtree_check').&lt;br /&gt;
    NOTE: this default has changed since nfs-utils version 1.0.x&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Then issue the following command to notify the NFS server about the new exported directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /usr/sbin/exportfs –a&lt;br /&gt;
''' For Redhat Linux''' &lt;br /&gt;
host $ /sbin/service nfs restart&lt;br /&gt;
''' For Ubuntu''' &lt;br /&gt;
host $ /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that the server firewall is turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables status&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the firewall is running, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you exit from having the root permissions after completing all the above steps&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ exit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Testing the shared file system  ====&lt;br /&gt;
&lt;br /&gt;
To test your NFS setup, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the IP address of your host Linux workstations as follows. Look for the IP address associated with the eth0 Ethernet port.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /sbin/ifconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal emulation window to connect to the EVM board via RS-232 using the instructions in the [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]] topic. If you have a Windows workstation, you can use HyperTerminal. If you have a Linux workstation, you might use Minicom. (You may need to turn on line wrap.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Power on the EVM board, and abort the automatic boot sequence by pressing a key in the console window. This gets you into the U-Boot prompt where you can configure how U-Boot will boot the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set the following environment variables in the console window:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv nfshost &amp;lt;ip address of nfs host&amp;gt; &lt;br /&gt;
EVM # setenv rootpath &amp;lt;directory to mount&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK Releases from 3.00.00.36 upto and including 3.00.01.42, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=88M&lt;br /&gt;
                       omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK release 3.00.02.44, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=99M&lt;br /&gt;
                       mpurate=600 omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;setenv bootargs&amp;lt;/tt&amp;gt; command should be typed on a single line. Also note that you should avoid using the numeric keypad to enter numbers, as it can sometimes insert extra invisible characters. These environment variables must be typed in perfectly including capitals, if anything is typoed you will likely run into boot errors. &lt;br /&gt;
&lt;br /&gt;
The ''&amp;lt;directory to mount&amp;gt;'' must match what you specified in Step 5 of the [[#Exporting a shared file system for target access| Exporting a shared file system for target access]] section. For example, &amp;lt;tt&amp;gt;/home/&amp;lt;user&amp;gt;/workdir/filesys&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
'''Hints:''' If the kernel version stored in the NAND flash on the EVM is out of date you may wish to [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Flashing_the_New_Linux_Kernel | flash the latest kernel image]] (using the uImage file in the /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/images/kernel directory) or [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Booting_via_TFTP_using_NFS_file_system | boot using TFTP]]&lt;br /&gt;
&lt;br /&gt;
'''Hints:''' You may want to use the &amp;lt;tt&amp;gt;printenv&amp;lt;/tt&amp;gt; command to print a list of your environment variables. You can also save these setenv commands in a .txt file from which you can paste them in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Save the environment so that you don't have to retype these commands every time you cycle power on the EVM board:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # saveenv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Boot the board using NFS:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can now log in as &amp;quot;root&amp;quot; with no password required.&lt;br /&gt;
&lt;br /&gt;
See the [[GSG:_OMAP35x DVEVM Additional Procedures#Alternate boot methods| Alternate boot methods]] section for information about booting with TFTP, NFS, or the board's NAND flash.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes on using production codecs  ===&lt;br /&gt;
&lt;br /&gt;
As part of the OMAP35x DVSDK installation, you received a number of codecs: &lt;br /&gt;
&lt;br /&gt;
* MPEG4 Simple Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* H.264 Base Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* MPEG2 Main Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* Sequential JPEG Decoder. This decoder is compliant with IIMGDEC1 Interface&lt;br /&gt;
* MPEG4 Simple Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* H.264 Base Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* JPEG Encoder. This encoder is compliant with IIMGENC1 Interface&lt;br /&gt;
* Advance Audio Codec (AAC) Decoder. This decoder supports both AAC-HE and AAC-LC configurations. It is compliant with IAUDDEC1 interface&lt;br /&gt;
* G.711 Speech Decoder. This decoder is compliant with ISPHDEC1 interface&lt;br /&gt;
* G.711 Speech Encoder. This encoder is compliant with ISPHENC1 interface&lt;br /&gt;
&lt;br /&gt;
NOTE: Though the standalone codec server contain JPEG decode, the DVSDK decode demos do not support playback of JPEG streams. In order to evaluate these decoders, use Digital Video Test Bench (DVTB) which is included in the OMAP3530 DVSDK. The media files for MPEG2 MP and JPEG format streams are not available as part of the DVSDK installation, but they are available as part of data_dvsdk_#_##_##_##.tar.gz that can be downloaded from the OMAP software update site http://www.ti.com/omapsoftwareupdates &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the build/development environment ==&lt;br /&gt;
To set up the development and build environment, follow these steps: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in to your '''user''' account (and not as root) on the NFS host system. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Add the /host/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin directory to your path.  This is typically done by adding an additional line to your shell resource file (~/.bashrc).  For the path given above, the line to add to your .bashrc file is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin:$PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds the CodeSourcery tools to your path and allows you to execute the tools using arm-none-linux-gnueabi-gcc (or other tools in the tool chain) from any directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Remember to use the following command after modifying your .bashrc file. The source command essentially executes the .bashrc script so that the path you just added to it is added to your environment variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ source .bashrc&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can test that the toolchain is installed correctly by starting a new shell and using the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc –v&amp;lt;/pre&amp;gt; &lt;br /&gt;
When you execute this command, you will get an output like the one shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Using built-in specs.&lt;br /&gt;
Target: arm-none-linux-gnueabi&lt;br /&gt;
Configured with: /scratch/sandra/lite/src/gcc-4.2/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion=Sourcery G++ Lite 2008q1-126 --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/libc --enable-poison-system-directories --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin&lt;br /&gt;
Thread model: posix&lt;br /&gt;
gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Writing a simple program and running it on the EVM ===&lt;br /&gt;
Make sure you have performed the steps in the [[#Exporting a shared file system for target access | Exporting a shared file system for target access ]] section and the [[#Setting up the build/development environment|Setting up the build/development environment]] section before continuing with the steps in this section. &lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the NFS host system as user (not as root): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mkdir –p ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Create a file called hello.c with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
printf(&amp;quot;Welcome to OMAP35x World!\n&amp;quot;);&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Build the new C file: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc hello.c -o hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the target board. You may use either the target's console window (see [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]]) or a telnet session. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move to the new directory on the target: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;target $ cd /opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Run the new executable: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./hello&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output should be: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Welcome to OMAP35x World!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rebuilding the Software ==&lt;br /&gt;
This section describes how to rebuild pieces of the software delivery.  Ensure that the toolchain setup and install has been completed (see [[#Installing the Toolchain|Installing the Toolchain]]).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding U-boot ===&lt;br /&gt;
Rebuilding the U-boot is described in more detail in the LSP User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Copy the U-Boot source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/u-boot directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/src/u-boot/u-boot-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the U-Boot source archive by performing the command given below.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd workdir/opt&lt;br /&gt;
host $ tar -zxvf u-boot-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To configure U-Boot for building, issue the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd uboot-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build U-Boot, run the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting U-Boot image named u-boot.bin will be in the current directory, ready to be loaded on the target.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Linux Kernel ===&lt;br /&gt;
Rebuilding the kernel is described in more detail in the User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Note that building the kernel requires using mkimage, a host side utility built by the u-boot makefile.  If you have not already done so please build u-boot using the instructions in the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_U-boot | Rebuilding U-Boot section]].  You will need to build U-boot and place mkimage in your Path.  A command like below can be used. If you are using a bash shell, kindly add the following in the .bashrc file in your user account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/&amp;lt;path_to_uboot&amp;gt;/tools:$PATH&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Copy the Linux kernel source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src directory into your working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/kernel/linux-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Un-tar the Linux kernel source archive by performing the commands given below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf linux-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In order to prepare the kernel for building, follow these commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you need to make changes to the default configuration, perform the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm menuconfig&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build the kernel, run the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage modules&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting kernel image uImage will be placed under arch/arm/boot and is ready to be loaded on the target.&lt;br /&gt;
&lt;br /&gt;
Once the modules are built they must be installed on the target file system in order to be used. The following command will install the modules to the target file system and create the modules dependency file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su root&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH=&amp;lt;target filesys dir&amp;gt; modules_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if you have been following the Getting Started Guide you should have created a target file system at /home/&amp;lt;useracct&amp;gt;/workdir/filesys. In the above command you should replace &amp;lt;target filesys dir&amp;gt; with /home/&amp;lt;useracct&amp;gt;/workdir/filesys. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DVSDK software for the target ===&lt;br /&gt;
To place demo files in the /opt/dvsdk directory, you need to rebuild the DVSDK software. To do this, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you have not already done so, rebuild the Linux kernel as described in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to dvsdk_#_##_##_##.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the Rules.make file in the dvsdk_#_##_##_## directory. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ vi Rules.make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the following directory definitions. If you installed components in the default locations, the directory definitions may already be correct, but you should verify them in any case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Set PLATFORM to match your EVM board as follows (Note that this variable is case sensitive):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PLATFORM=omap3530&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set DVSDK_INSTALL_DIR to the top-level DVSDK installation directory as follows, note that by default ${HOME} refers to your /home/&amp;lt;''useracct''&amp;gt; directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DVSDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Modify the following variable as needed to match the location of XDCtools on your Linux host. We recommend that XDCtools be installed in the /home/&amp;lt;''useracct''&amp;gt;/dvsdk/dvsdk_#_##_##_## directory, but you may have installed it elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XDC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure EXEC_DIR points to the opt directory on the NFS exported file system as follows. Refer [[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] for setting up the NFS exported file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;EXEC_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt/dvsdk/omap3530&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure UBOOT_INSTALL_DIR is defined as follows so it points to where you copied the uboot source in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_U-boot | Rebuilding U-Boot section]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;UBOOT_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/uboot-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure LINUXKERNEL_INSTALL_DIR is defined as follows so it points to where you copied the Linux kernel tree in the Building a New Linux Kernel section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;LINUXKERNEL_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure OMAP3503_SDK_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;OMAP3503_SDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEC_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the path of the CSTOOL_DIR to point to the location where you have installed the CodeSourcery tool-chain. (Refer [[#Installing the Toolchain|Installing the Toolchain]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CSTOOL_DIR=/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEGEN_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Note''' PSP_INSTALL_DIR donot need to be updated.They will be pointing to DVSDK installation directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the path of all component installation directories to match the location where you want to point to. The default locations specified will choose the component versions as installed as part of the DVSDK installation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The top level DVSDK Makefile re-builds the kernel modules required by the DVSDK demonstration software (CMEM and LPM) and hence it is very important to at least perform the following commands (in case you have not performed the steps in [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel]]), after extracting the Linux kernel source code in your work directory, whose path is provided in the top level DVSDK Rules.make. Refer section [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel ]] for more details on “Rebuilding the Linux Kernel”.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Once the installation is complete please use the following commands to verify the paths set in Rules.make and components installed in DVSDK are proper.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make check&lt;br /&gt;
host $ make info&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;While in the same directory that contains Rules.make, use the following commands to build the DVSDK demo applications and put the resulting binaries on the target file system specified by EXEC_DIR.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clean&lt;br /&gt;
host $ make all&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Note :''' The '''make all''' command builds only the DVSDK demos, its dependent components and DVTB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Additional commands for cleaning and building all the components are as mentioned below.&lt;br /&gt;
*'''Note :''' The PSP examples under AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/examples have to be extracted before using below commands&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clobber&lt;br /&gt;
host $ make everything&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For information on individually building the components please use the folowing command&lt;br /&gt;
*'''Note:'''Certain components have dependency on other components.So please make sure you have executed the '''make all''' command before proceeding for individual component build.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The dependencies for indivdual component builds are not addressed in the top level DVSDK Makefile. If you perform 'make clobber' or 'make clean' and then try building indivdual components like 'make dmai', the build will fail. Alternatively, if you perform 'make clobber' and then perform 'make everything', the build will go through. In addition to that, if you try cleaning the individual component and then build the same again, the build will go through. For example, after performing 'make everything', performing 'make dmai_clean' followed by 'make dmai' will work.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DSP side server executables ===&lt;br /&gt;
&lt;br /&gt;
The DSP side codec libraries are available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_## directory or if you have installed it in a different location specified by CODEC_INSTALL_DIR&lt;br /&gt;
&lt;br /&gt;
The top level Makefile and the config.bld files are provided under the top level directory mentioned above. The codec binaries, header files as well as documents are RTSC packaged and available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/codecs folder.&lt;br /&gt;
&lt;br /&gt;
Ensure that the path settings for the DSP side code generation tools are set properly in the config.bld file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C64P.rootDir = /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_# OR &lt;br /&gt;
C64P.rootDir=java.lang.System.getenv(&amp;quot;CODEGEN_INSTALL_DIR&amp;quot;); &lt;br /&gt;
cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&lt;br /&gt;
host $ make clean&lt;br /&gt;
host $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rebuilt server executable can be found in the /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/server/bin directory and is named cs.x64P.&lt;br /&gt;
&lt;br /&gt;
The DSP side server executables can also be built from the DVSDK installation directory itself by following the below commands.&lt;br /&gt;
&lt;br /&gt;
Ensure that DSP side code generation tools are set properly in the Rules.make in DVSDK installation directory &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re-building the Servers from DVSDK installation directory can be done using the following commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make codecs_clean&lt;br /&gt;
host $ make codecs&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Initial NAND X-loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the X-Loader source archive from OMAP35x-PSP-SDK-##.##.##.##/src/boot-strap directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp x-loader-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the X-Loader source archive by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf x-loader-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure X-Loader for OMAP35x EVM target:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd xloader-##.##.##.##&lt;br /&gt;
host $ make omap3evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build X-Loader, run the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command produces the x-load.bin file, but in order for the X-Loader to be loaded by the OMAP35x ROM bootloader, it needs to be signed with the signGP program from the AM35x-OMAP35x-PSP-SDK-##.##.##.##/host-tools/linux directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/host_tools/linux/signGP x-load.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting signed X-loader is named x-load.bin.ift and should be ready for the target.&lt;br /&gt;
For MMC/SD Card boot loading this file must be called MLO.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cp x-load.bin.ift MLO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Target-side UART Loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the UART loader dnld_util_target.tar.bz2 file from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/utils directory into your working directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp dnld-util-target.tar.bz2 ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the UART loader by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ tar -jxvf dnld_util_target.tar.bz2&lt;br /&gt;
host $ cd dnld_util_target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the following command to build it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting binary is called dnld_startup_omap3_evm.bin.  This file is used with DownloadUtility.exe for UART peripheral boot.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the NFS Image ===&lt;br /&gt;
&lt;br /&gt;
Kindly refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_NFS_Image]] (part of AM35x Getting Started Guide),for rebuilding NFS for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
The OMAP3535/OMAP3530 DVSDK installer has the script to (re)build the NFS image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the NFS image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
The following command removes the old the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will create the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will remove the NFS creation logs and the temporary NFS directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above command requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Full Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_Full_Ramdisk_Image]] (part of AM35x Getting Started Guide),for rebuilding full ramdisk image for AM35x SDK. This will contain different set of demos and sample applications.&lt;br /&gt;
&lt;br /&gt;
The full ramdisk image cannot be built to include the OMAP3530 DVSDK demos as the ramdisk size requirement exceeds 40MB after the image is un-tarred and the bootargs given in step 5 in Section [[GSG:_OMAP35x DVEVM Additional Procedures#Running the Re-flash Procedure|Running the Re-flash Procedure]] will not work&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Minimal Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup]] (part of AM35x Getting Started Guide),for rebuilding minimal ramdisk image for AM35x SDK. The minimal ramdisk image does not contain any demos or examples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the JFFS2 File-System Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_JFFS2_File-System_Image]] (part of AM35x Getting Started Guide),for rebuilding jffs2 image for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
&lt;br /&gt;
The OMAP3525/OMAP3530 DVSDK installer has the pre-built JFFS2 root file system image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Check if the linux distribution on the host PC contains the mkfs.jffs2 utility. If not, download the binary from ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2. Place this binary under /sbin directory in the Linux host development PC and ensure to include /sbin to the PATH environment variable in the .bashrc file.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the JFFS2 root file system image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]]. Then, perform the following steps.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Clean the old file system images:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the JFFS2 Image (This requires building the NFS image to create the JFFS2 image from):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_jffs2 MKJFFS2=&amp;lt;your_jffs2_install_path&amp;gt; DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clean up the temporary NFS file system directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS and JFFS2 root file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz and rootfs_dvsdk_#_##_##_##.jffs2 files created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What's next? ==&lt;br /&gt;
&lt;br /&gt;
The next chapter of this Getting Started Guide is [[GSG: OMAP35x DVEVM Additional Procedures]].&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup</id>
		<title>ECE597 BeagleBoard DSP Software Setup</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_BeagleBoard_DSP_Software_Setup"/>
				<updated>2010-04-16T01:06:47Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
This is an adaptation of [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Software_Setup GSG: OMAP35x_DVEVM Software Setup] for the BeagleBoard.  Presently it's a work-in-progress.  Follow the instructions and make corrections as you go.  Change references to '''DVEVM''' to '''Beagle''' once you've tested a section and know it's correct.  There are several links that pointed to pages on the original wiki.  Fix them if you know how.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Software Overview ==&lt;br /&gt;
To begin developing applications, you need to install the Beagle development environment. This section outlines the steps required to load the Beagle software onto the development host. You will need to download the files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to get started.&lt;br /&gt;
&lt;br /&gt;
The OMAP35x software approach provides interoperable, optimized, production-ready video and audio codecs that leverage DSP and integrated accelerators. These codecs are built into configurable frameworks, and are presented via published APIs within popular operating systems (such as Linux) for rapid software implementation.&lt;br /&gt;
&lt;br /&gt;
The following software is provided in the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page.&lt;br /&gt;
&lt;br /&gt;
* '''TI DVSDK Software.''' This includes demo applications, codec engine software, example codec servers, DVTB and DVSDK documentation. It contains the following files.&lt;br /&gt;
::* Getting Started Guide (this link)&lt;br /&gt;
::* DVSDK Product Release Notes &lt;br /&gt;
::* DVSDK Product Installer (dvsdk_#_##_##_##_Setup.bin)&lt;br /&gt;
&lt;br /&gt;
* '''OMAP3525/OMAP3530 DVSDK Collaterals'''&lt;br /&gt;
::* Linux TSPA DSP Codec Server Installer (cs1omap3530_setupLinux_1_00_01-03.bin)&lt;br /&gt;
::* Linux TSPA DSP Codec Server Release Notes&lt;br /&gt;
::* Demonstration Multimedia Files-containing audio and video clips (data_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* DVSDK OMAP3525/3530 Demo Overlay containing prebuilt DVSDK Binaries/Multimedia files. This should be added to an existing PSP file system (overlay_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - suitable for NFS mount (nfs_dvsdk_#_##_##_##.tar.gz)&lt;br /&gt;
::* Complete DVSDK file system including Pre-built DVSDK Binaries [overlay] and self starting DVSDK demos - JFFS2 file system format [NAND flash] (rootfs_dvsdk_#_##_##_##.jffs2)&lt;br /&gt;
::* I don't know if these will work on the Beagle:&lt;br /&gt;
::** Prebuilt Kernel image for OMAP3525 and OMAP3530 default configuration (uImage-omap35x-evm.bin - Note that this is not a binary installer but needs to be renamed to uImage-omap35x-evm to use it for booting on OMAP3x EVM)&lt;br /&gt;
::** Prebuilt u-boot image for OMAP3525 and OMAP3530 default configuration (u-boot-omap35x-evm.bin)&lt;br /&gt;
 &lt;br /&gt;
* '''Linux Platform Support Package''' &lt;br /&gt;
::* PSP Release Notes&lt;br /&gt;
::* PSP User Guide&lt;br /&gt;
::* PSP Data Sheet&lt;br /&gt;
::* PSP Product Installer(AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.bin) - This installation file contains the linux source and binaries for OMAP35x platform and the necessary tools required for development on Linux for OMAP35x platform. This also contains the target file system&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
'''Command prompts in this guide'''&lt;br /&gt;
&lt;br /&gt;
Commands are preceded by prompts that indicate the environment where the command is to be typed. For example: &lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;host $&amp;lt;/tt&amp;gt; : Indicates command to be typed into the shell window of the host Linux workstation. &lt;br /&gt;
;&amp;lt;tt&amp;gt;Beagle #&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the U-Boot shell in a console window connected to the EVM board&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;s serial port. (see [http://wiki.davincidsp.com/index.php/GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program Setup Terminal Program] for EVM instructions.  We need Beagle instructions).&lt;br /&gt;
;&amp;lt;tt&amp;gt;target $&amp;lt;/tt&amp;gt; : Indicates commands to be typed into the Linux shell in the terminal window connected to the Beagle board's serial port.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The document lists down various commands that needs to be executed on the target or on&lt;br /&gt;
the u-boot prompt for various operations required through out the document. Kindly note that a&lt;br /&gt;
direct copy and paste of these commands might result in insertion of lines for a single command.&lt;br /&gt;
Hence it would not work on the u-boot prompt or the target. Kindly ensure that you copy the long&lt;br /&gt;
commands into notepad, remove the line spaces between them and add a space wherever you&lt;br /&gt;
have removed the line spaces, before recopying and pasting it on the command prompts.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Preparing to install'''  ==&lt;br /&gt;
&lt;br /&gt;
On a host system, copy the following .bin files from the [http://focus.ti.com/docs/toolsw/folders/print/linuxdvsdk-omap.html Download] page to a temporary location with at least 2 GB free space. Since you can delete the installation files after installing the software, a directory like /tmp is recommended.&lt;br /&gt;
&lt;br /&gt;
(I have copies of these that you can sftp from '''afs.rose-hulman.edu'''.  They are in '''users/faculty/yoder/Public/beagle/downloads'''.)&lt;br /&gt;
&lt;br /&gt;
*AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&lt;br /&gt;
*dvsdk_#_##_##_##_Setup.bin &lt;br /&gt;
*xdctools_setuplinux_#_##_##.bin&lt;br /&gt;
*bios_setuplinux_#_##_##.bin&lt;br /&gt;
*TI-C6x-CGT-v#.#.##.#.bin&lt;br /&gt;
*cs1omap3530_setupLinux_#_##_##-##.bin&lt;br /&gt;
*overlay_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
*rootfs_dvsdk_#_##_##_##.jffs2&lt;br /&gt;
*data_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&lt;br /&gt;
Ensure all the .bin files are set with executable permissions.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chmod +x *.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the software ==&lt;br /&gt;
&lt;br /&gt;
Installing the software used by the DVEVM involves performing the following steps: &lt;br /&gt;
&lt;br /&gt;
*[[#Installing the Target Linux Software|Installing the Target Linux Software]] &lt;br /&gt;
*[[#Installing the DVSDK Software|Installing the DVSDK Software]] &lt;br /&gt;
*[[#Installing the A/V demo files|Installing the A/V demo files]]&lt;br /&gt;
*[[#Installing the toolchain|Installing the toolchain]] &lt;br /&gt;
*[[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Installing the Target Linux Software ===&lt;br /&gt;
&lt;br /&gt;
This section explains how to install Linux for use on the target board.&lt;br /&gt;
&lt;br /&gt;
Note that separate versions of Linux are used by the target and your host Linux workstation. The following Linux host operating systems have been used with the Beagle.&lt;br /&gt;
&lt;br /&gt;
*	Ubuntua 9.10, x86 32 bit&lt;br /&gt;
&lt;br /&gt;
To install the Linux software, follow these steps:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz file (where ##.##.##.## is the current version number) from the temporary location that it was copied to your home directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mv AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz /home/&amp;lt;useracct&amp;gt;&lt;br /&gt;
host $ cd&lt;br /&gt;
host $ tar xvzf  AM35x-OMAP35x-PSP-SDK-setuplinux-##.##.##.##.tgz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In future, all references in the document will assume that the user has installed the OMAP35x SDK using his user account and hence will refer to the OMAP35x SDK installation path as /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' The Linux Support Package (LSP) is a multi-platform LSP and is not configured for a particular platform. As shipped, this LSP cannot be used to build the demo or example applications. It must first be copied to a user area and configured/built for the Beagle. Please see the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section for instructions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the DVSDK Software ===&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software includes demos, example software, Codec Engine components, DSP/BIOS Link, xDAIS and xDM header files, Local Power Manager Module, Framework Components and a contiguous memory allocator for Linux (CMEM). The DVSDK also contains the Digital Video Test Bench that enables testing the codecs and LSP with various configurations that are not possible with the Out of the Box demos.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The installers for XDC, DSP/BIOS and Code Generation Tools (codegen) have a different default installation location. However, we strongly recommend that you change the default installation locations to place the components together (if you have not already installed the Linux versions of these components elsewhere). This simplifies the build setup steps.&lt;br /&gt;
&lt;br /&gt;
To install the DVSDK software using the DVSDK Linux installer, follow these steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in using a user account. In the following steps, we refer to the home directory as &amp;quot;~&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DVSDK installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./dvsdk_#_##_##_##_Setup.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
The installer will start as a GUI application.  Follow the instructions in the dialog boxes. You’ll be asked to agree to the End User License Agreement.&lt;br /&gt;
When you are prompted for an installation location, use the default installation location, that points to /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##. This location will be used as the DVSDK installation folder through out this document.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the XDC installer that you previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./xdctools_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default installation location. Instead, install the software in the directory created in the previous step. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&lt;br /&gt;
&lt;br /&gt;
NOTE:  When prompted select '''Typical''' for the type of Setup.&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the DSP/BIOS installer that you previously downloaded from the DVSDK download page. For example: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./bios_setuplinux_#_##_##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, do not use the default location. Instead, install the software in the directory created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/bios_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Codec Server installer that you have previously downloaded from the DVSDK download page. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./cs1omap3530_setupLinux_#_##_##-##.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##_##&lt;br /&gt;
&amp;lt;li&amp;gt;Execute the Code Generation Tools installer that you previously downloaded from the DVSDK download page. The download link looked like TI-C6x-CGT-v#.#.##.#.bin; however the file you downloaded looked like ti_cgt_c6000_#.#.#_setup_linux_x86.bin.  Run this file.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ ./ti_cgt_c6000_#.#.#_setup_linux_x86.bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
When you are prompted for an installation location, install it in the location as specified or under the directory as created in step 2. If you are installing it under the DVSDK installation folder created in step 2, create a new folder under the dvsdk installation folder and then proceed to install. For example, /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##, where #_#_## is the version number. &lt;br /&gt;
&amp;lt;li&amp;gt;Remember to set the environment variable as directed by the installer. For example: &lt;br /&gt;
csh: (in the .cshrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ setenv C6X_C_DIR /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
ksh or bash: (in the .bashrc file)&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ export C6X_C_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/include:/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_#/lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can now delete the .bin files that you loaded into the temporary directory.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''Note:''' You can uninstall these components by using the uninstall file in the respective installation directories. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_#_#&lt;br /&gt;
host $ ./uninstall &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the A/V demo files ===&lt;br /&gt;
&lt;br /&gt;
'''These are very big, so I skipped them.  --may'''&lt;br /&gt;
&lt;br /&gt;
The TI DVSDK software installer, by itself does not contain the media files used by the demos. You can download the data files from DVSDK download page. Please use the steps mentioned below for extracting the media files into the desired location. &lt;br /&gt;
&lt;br /&gt;
The Download page contains the Audio/Video files used by the demo. After following the instructions in the previous section, follow these instructions to install the A/V files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Go to the DVSDK directory that you set up previously. For example&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/dvsdk/dvsdk_#_##_##_##/clips&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the A/V data which you have downloaded from Download page to your DVSDK clips directory.For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cp data_dvsdk_#_##_##_##.tar.gz .&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the A/V data files. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ tar -xvzf data_dvsdk_#_##_##_##.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now you can delete the tar file from the clips folder.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing the toolchain ===&lt;br /&gt;
&lt;br /&gt;
This guide assumes use of the LITE version of the CodeSourcery toolchain.&lt;br /&gt;
&lt;br /&gt;
==== Toolchain version to be used for DVSDK v3.01 ====&lt;br /&gt;
The toolchain used is ARM GNU/Linux EABI 2009q1.  It can be downloaded from [http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 here]&lt;br /&gt;
&lt;br /&gt;
[[Image:Codesourcery 2009q1.JPG|thumb|center|500px]]&lt;br /&gt;
&lt;br /&gt;
To install the toolchain, follow the sequence below. These are to be executed on the Linux host platform. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir –p /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ cd /home/&amp;lt;useracct&amp;gt;/toolchain&lt;br /&gt;
$ tar -jxvf  arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
$ rm arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I haven't tested these sections on use NFS ===&lt;br /&gt;
&lt;br /&gt;
==== Exporting a Shared File System for Target Access ====&lt;br /&gt;
&lt;br /&gt;
Although the board’s NAND flash contains a file system, during development it is more convenient to have the target board NFS mount a file system on a host Linux workstation. Once you test the application, you can store it on the board’s flash for a standalone demonstration. &lt;br /&gt;
&lt;br /&gt;
Before the board can mount a target file system, you must export that target file system on the host Linux workstation. The file system uses an NFS (Network File System) server. The exported file system will contain the target file system and your executables.&lt;br /&gt;
&lt;br /&gt;
To export the file system from your NFS server, perform the following steps. You only need to perform these steps once.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in with a user account on the host Linux workstation. (In the following steps, we refer to the home user directory as &amp;quot;~&amp;quot;.)&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the following commands to prepare a location for the OMAP35x EVM target file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir -p workdir/filesys&lt;br /&gt;
host $ cd workdir/filesys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch user to &amp;quot;root&amp;quot; on the host Linux workstation.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su &lt;br /&gt;
password:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There will be a prompt for entering the password as shown above. Type the root password, for getting the root permissions&lt;br /&gt;
&amp;lt;li&amp;gt;If you have already prepared a directory tree to use for the NFS root file-system (see Section [[#Rebuilding the NFS Image |Rebuilding the NFS Image]]) you can proceed to the next step.  Otherwise, copy the prepared version(nfs_dvsdk_#_##_##_##.tar.gz) from the OMAP3530 DVSDK from the Download page to a new directory created in step 2. Perform the following commands. &lt;br /&gt;
'''Note:'''Un-tar the file with root permissions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ cp /tmp/nfs_dvsdk_#_##_##_##.tar.gz .&lt;br /&gt;
$ tar –xvzf nfs_dvsdk_#_##_##_##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you can write into the opt folder in the file system by setting the permissions of the opt folder within the target file system with your user account. Perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alternatively, if you want to have permissions to write or create folders within the target file system that you want to export as NFS, perform the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ chown -R &amp;lt;useracct&amp;gt; /home/&amp;lt;useracct&amp;gt;/workdir/filesys&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure the NFS server is configured and functioning properly. Add the following line to the /etc/exports file of the server. Ensure you have root permission before editing this file.&lt;br /&gt;
&amp;lt;pre&amp;gt;/home/&amp;lt;useracct&amp;gt;/workdir/filesys 	*(rw,no_root_squash,no_all_squash,sync)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE:  On some systems you may wish to add the '''no_subtree_check''' option to avoid warnings like:&lt;br /&gt;
  exportfs: /etc/exports [3]: Neither 'subtree_check' or 'no_subtree_check' specified for export &amp;lt;export listed here&amp;gt;.&lt;br /&gt;
    Assuming default behaviour ('no_subtree_check').&lt;br /&gt;
    NOTE: this default has changed since nfs-utils version 1.0.x&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Then issue the following command to notify the NFS server about the new exported directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /usr/sbin/exportfs –a&lt;br /&gt;
''' For Redhat Linux''' &lt;br /&gt;
host $ /sbin/service nfs restart&lt;br /&gt;
''' For Ubuntu''' &lt;br /&gt;
host $ /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that the server firewall is turned off:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables status&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the firewall is running, disable it:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /etc/init.d/iptables stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure you exit from having the root permissions after completing all the above steps&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ exit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Testing the shared file system  ====&lt;br /&gt;
&lt;br /&gt;
To test your NFS setup, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the IP address of your host Linux workstations as follows. Look for the IP address associated with the eth0 Ethernet port.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ /sbin/ifconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Open a terminal emulation window to connect to the EVM board via RS-232 using the instructions in the [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]] topic. If you have a Windows workstation, you can use HyperTerminal. If you have a Linux workstation, you might use Minicom. (You may need to turn on line wrap.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Power on the EVM board, and abort the automatic boot sequence by pressing a key in the console window. This gets you into the U-Boot prompt where you can configure how U-Boot will boot the Linux kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set the following environment variables in the console window:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv nfshost &amp;lt;ip address of nfs host&amp;gt; &lt;br /&gt;
EVM # setenv rootpath &amp;lt;directory to mount&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK Releases from 3.00.00.36 upto and including 3.00.01.42, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=88M&lt;br /&gt;
                       omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''For DVSDK release 3.00.02.44, use the following bootargs:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # setenv bootargs &amp;quot;console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=99M&lt;br /&gt;
                       mpurate=600 omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;setenv bootargs&amp;lt;/tt&amp;gt; command should be typed on a single line. Also note that you should avoid using the numeric keypad to enter numbers, as it can sometimes insert extra invisible characters. These environment variables must be typed in perfectly including capitals, if anything is typoed you will likely run into boot errors. &lt;br /&gt;
&lt;br /&gt;
The ''&amp;lt;directory to mount&amp;gt;'' must match what you specified in Step 5 of the [[#Exporting a shared file system for target access| Exporting a shared file system for target access]] section. For example, &amp;lt;tt&amp;gt;/home/&amp;lt;user&amp;gt;/workdir/filesys&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
'''Hints:''' If the kernel version stored in the NAND flash on the EVM is out of date you may wish to [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Flashing_the_New_Linux_Kernel | flash the latest kernel image]] (using the uImage file in the /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/images/kernel directory) or [[GSG:_OMAP35x_DVEVM_Additional_Procedures#Booting_via_TFTP_using_NFS_file_system | boot using TFTP]]&lt;br /&gt;
&lt;br /&gt;
'''Hints:''' You may want to use the &amp;lt;tt&amp;gt;printenv&amp;lt;/tt&amp;gt; command to print a list of your environment variables. You can also save these setenv commands in a .txt file from which you can paste them in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Save the environment so that you don't have to retype these commands every time you cycle power on the EVM board:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # saveenv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Boot the board using NFS:&lt;br /&gt;
&amp;lt;pre&amp;gt;EVM # boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can now log in as &amp;quot;root&amp;quot; with no password required.&lt;br /&gt;
&lt;br /&gt;
See the [[GSG:_OMAP35x DVEVM Additional Procedures#Alternate boot methods| Alternate boot methods]] section for information about booting with TFTP, NFS, or the board's NAND flash.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes on using production codecs  ===&lt;br /&gt;
&lt;br /&gt;
As part of the OMAP35x DVSDK installation, you received a number of codecs: &lt;br /&gt;
&lt;br /&gt;
* MPEG4 Simple Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* H.264 Base Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* MPEG2 Main Profile Decoder. This decoder is compliant with IVIDDEC2 Interface&lt;br /&gt;
* Sequential JPEG Decoder. This decoder is compliant with IIMGDEC1 Interface&lt;br /&gt;
* MPEG4 Simple Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* H.264 Base Profile Encoder. This decoder is compliant with IVIDENC1 Interface&lt;br /&gt;
* JPEG Encoder. This encoder is compliant with IIMGENC1 Interface&lt;br /&gt;
* Advance Audio Codec (AAC) Decoder. This decoder supports both AAC-HE and AAC-LC configurations. It is compliant with IAUDDEC1 interface&lt;br /&gt;
* G.711 Speech Decoder. This decoder is compliant with ISPHDEC1 interface&lt;br /&gt;
* G.711 Speech Encoder. This encoder is compliant with ISPHENC1 interface&lt;br /&gt;
&lt;br /&gt;
NOTE: Though the standalone codec server contain JPEG decode, the DVSDK decode demos do not support playback of JPEG streams. In order to evaluate these decoders, use Digital Video Test Bench (DVTB) which is included in the OMAP3530 DVSDK. The media files for MPEG2 MP and JPEG format streams are not available as part of the DVSDK installation, but they are available as part of data_dvsdk_#_##_##_##.tar.gz that can be downloaded from the OMAP software update site http://www.ti.com/omapsoftwareupdates &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the build/development environment ==&lt;br /&gt;
To set up the development and build environment, follow these steps: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Log in to your '''user''' account (and not as root) on the NFS host system. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Add the /host/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin directory to your path.  This is typically done by adding an additional line to your shell resource file (~/.bashrc).  For the path given above, the line to add to your .bashrc file is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=“/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;/bin:$PATH”&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This adds the CodeSourcery tools to your path and allows you to execute the tools using arm-none-linux-gnueabi-gcc (or other tools in the tool chain) from any directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Remember to use the following command after modifying your .bashrc file. The source command essentially executes the .bashrc script so that the path you just added to it is added to your environment variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ source .bashrc&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can test that the toolchain is installed correctly by starting a new shell and using the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc –v&amp;lt;/pre&amp;gt; &lt;br /&gt;
When you execute this command, you will get an output like the one shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Using built-in specs.&lt;br /&gt;
Target: arm-none-linux-gnueabi&lt;br /&gt;
Configured with: /scratch/sandra/lite/src/gcc-4.2/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion=Sourcery G++ Lite 2008q1-126 --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/libc --enable-poison-system-directories --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/sandra/lite/linux/install/arm-none-linux-gnueabi/bin&lt;br /&gt;
Thread model: posix&lt;br /&gt;
gcc version 4.2.3 (Sourcery G++ Lite 2008q1-126)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Writing a simple program and running it on the EVM ===&lt;br /&gt;
Make sure you have performed the steps in the [[#Exporting a shared file system for target access | Exporting a shared file system for target access ]] section and the [[#Setting up the build/development environment|Setting up the build/development environment]] section before continuing with the steps in this section. &lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the NFS host system as user (not as root): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ mkdir –p ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~/workdir/filesys/opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Create a file called hello.c with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
printf(&amp;quot;Welcome to OMAP35x World!\n&amp;quot;);&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Build the new C file: &lt;br /&gt;
&amp;lt;pre&amp;gt;host $ arm-none-linux-gnueabi-gcc hello.c -o hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Perform the following steps on the target board. You may use either the target's console window (see [[GSG:_OMAP35x_DVEVM_Hardware_Setup#Setup_Terminal_Program | Setup Terminal Program]]) or a telnet session. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Move to the new directory on the target: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;target $ cd /opt/hello&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Run the new executable: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;./hello&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output should be: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Welcome to OMAP35x World!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rebuilding the Software ==&lt;br /&gt;
This section describes how to rebuild pieces of the software delivery.  Ensure that the toolchain setup and install has been completed (see [[#Installing the Toolchain|Installing the Toolchain]]).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding U-boot ===&lt;br /&gt;
Rebuilding the U-boot is described in more detail in the LSP User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Copy the U-Boot source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/u-boot directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/src/u-boot/u-boot-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the U-Boot source archive by performing the command given below.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd workdir/opt&lt;br /&gt;
host $ tar -zxvf u-boot-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To configure U-Boot for building, issue the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd uboot-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build U-Boot, run the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting U-Boot image named u-boot.bin will be in the current directory, ready to be loaded on the target.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Linux Kernel ===&lt;br /&gt;
Rebuilding the kernel is described in more detail in the User’s Guide available at&lt;br /&gt;
AM35x-OMAP35x-PSP-SDK-##.##.##.##/docs/omap3530/UserGuide-##.##.##.##.pdf&lt;br /&gt;
&lt;br /&gt;
Note that building the kernel requires using mkimage, a host side utility built by the u-boot makefile.  If you have not already done so please build u-boot using the instructions in the [[ECE597 BeagleBoard DSP Software Setup #Rebuilding_U-boot | Rebuilding U-Boot section]].  You will need to build U-boot and place mkimage in your Path.  A command like below can be used. If you are using a bash shell, kindly add the following in the .bashrc file in your user account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=/&amp;lt;path_to_uboot&amp;gt;/tools:$PATH&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Copy the Linux kernel source archive from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src directory into your working directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/kernel/linux-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Un-tar the Linux kernel source archive by performing the commands given below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf linux-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In order to prepare the kernel for building, follow these commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you need to make changes to the default configuration, perform the following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm menuconfig&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Once ready to build the kernel, run the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage modules&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The resulting kernel image uImage will be placed under arch/arm/boot and is ready to be loaded on the target.&lt;br /&gt;
&lt;br /&gt;
Once the modules are built they must be installed on the target file system in order to be used. The following command will install the modules to the target file system and create the modules dependency file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ su root&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH=&amp;lt;target filesys dir&amp;gt; modules_install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if you have been following the Getting Started Guide you should have created a target file system at /home/&amp;lt;useracct&amp;gt;/workdir/filesys. In the above command you should replace &amp;lt;target filesys dir&amp;gt; with /home/&amp;lt;useracct&amp;gt;/workdir/filesys. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DVSDK software for the target ===&lt;br /&gt;
To place demo files in the /opt/dvsdk directory, you need to rebuild the DVSDK software. To do this, follow these steps: &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If you have not already done so, rebuild the Linux kernel as described in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_the_Linux_Kernel | Rebuilding the Linux Kernel]] section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to dvsdk_#_##_##_##.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the Rules.make file in the dvsdk_#_##_##_## directory. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ vi Rules.make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the following directory definitions. If you installed components in the default locations, the directory definitions may already be correct, but you should verify them in any case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Set PLATFORM to match your EVM board as follows (Note that this variable is case sensitive):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PLATFORM=omap3530&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set DVSDK_INSTALL_DIR to the top-level DVSDK installation directory as follows, note that by default ${HOME} refers to your /home/&amp;lt;''useracct''&amp;gt; directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DVSDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Modify the following variable as needed to match the location of XDCtools on your Linux host. We recommend that XDCtools be installed in the /home/&amp;lt;''useracct''&amp;gt;/dvsdk/dvsdk_#_##_##_## directory, but you may have installed it elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XDC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/xdctools_#_##_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure EXEC_DIR points to the opt directory on the NFS exported file system as follows. Refer [[#Exporting a Shared File System for Target Access|Exporting a Shared File System for Target Access]] for setting up the NFS exported file system.&lt;br /&gt;
&amp;lt;pre&amp;gt;EXEC_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/filesys/opt/dvsdk/omap3530&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure UBOOT_INSTALL_DIR is defined as follows so it points to where you copied the uboot source in the [[GSG:_OMAP35x_DVEVM_Software_Setup#Rebuilding_U-boot | Rebuilding U-Boot section]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;UBOOT_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/uboot-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure LINUXKERNEL_INSTALL_DIR is defined as follows so it points to where you copied the Linux kernel tree in the Building a New Linux Kernel section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;LINUXKERNEL_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure OMAP3503_SDK_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;OMAP3503_SDK_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-##.##.##.##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEC_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEC_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the path of the CSTOOL_DIR to point to the location where you have installed the CodeSourcery tool-chain. (Refer [[#Installing the Toolchain|Installing the Toolchain]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CSTOOL_DIR=/home/&amp;lt;useracct&amp;gt;/toolchain/&amp;lt;toolchain_version&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Make sure CODEGEN_INSTALL_DIR is defined as follows. (If you have installed it in a different location, ensure you set the correct path).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''Note''' PSP_INSTALL_DIR donot need to be updated.They will be pointing to DVSDK installation directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Check the path of all component installation directories to match the location where you want to point to. The default locations specified will choose the component versions as installed as part of the DVSDK installation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The top level DVSDK Makefile re-builds the kernel modules required by the DVSDK demonstration software (CMEM and LPM) and hence it is very important to at least perform the following commands (in case you have not performed the steps in [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel]]), after extracting the Linux kernel source code in your work directory, whose path is provided in the top level DVSDK Rules.make. Refer section [[#Rebuilding the Linux Kernel | Rebuilding the Linux Kernel ]] for more details on “Rebuilding the Linux Kernel”.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt/linux-##.##.##.##&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_defconfig&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Once the installation is complete please use the following commands to verify the paths set in Rules.make and components installed in DVSDK are proper.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make check&lt;br /&gt;
host $ make info&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;While in the same directory that contains Rules.make, use the following commands to build the DVSDK demo applications and put the resulting binaries on the target file system specified by EXEC_DIR.&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clean&lt;br /&gt;
host $ make all&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Note :''' The '''make all''' command builds only the DVSDK demos, its dependent components and DVTB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Additional commands for cleaning and building all the components are as mentioned below.&lt;br /&gt;
*'''Note :''' The PSP examples under AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/examples have to be extracted before using below commands&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make clobber&lt;br /&gt;
host $ make everything&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For information on individually building the components please use the folowing command&lt;br /&gt;
*'''Note:'''Certain components have dependency on other components.So please make sure you have executed the '''make all''' command before proceeding for individual component build.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The dependencies for indivdual component builds are not addressed in the top level DVSDK Makefile. If you perform 'make clobber' or 'make clean' and then try building indivdual components like 'make dmai', the build will fail. Alternatively, if you perform 'make clobber' and then perform 'make everything', the build will go through. In addition to that, if you try cleaning the individual component and then build the same again, the build will go through. For example, after performing 'make everything', performing 'make dmai_clean' followed by 'make dmai' will work.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the DSP side server executables ===&lt;br /&gt;
&lt;br /&gt;
The DSP side codec libraries are available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_## directory or if you have installed it in a different location specified by CODEC_INSTALL_DIR&lt;br /&gt;
&lt;br /&gt;
The top level Makefile and the config.bld files are provided under the top level directory mentioned above. The codec binaries, header files as well as documents are RTSC packaged and available under /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/codecs folder.&lt;br /&gt;
&lt;br /&gt;
Ensure that the path settings for the DSP side code generation tools are set properly in the config.bld file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C64P.rootDir = /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_# OR &lt;br /&gt;
C64P.rootDir=java.lang.System.getenv(&amp;quot;CODEGEN_INSTALL_DIR&amp;quot;); &lt;br /&gt;
cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##&lt;br /&gt;
host $ make clean&lt;br /&gt;
host $ make &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rebuilt server executable can be found in the /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cs1omap3530_#_##_##/packages/ti/sdo/server/bin directory and is named cs.x64P.&lt;br /&gt;
&lt;br /&gt;
The DSP side server executables can also be built from the DVSDK installation directory itself by following the below commands.&lt;br /&gt;
&lt;br /&gt;
Ensure that DSP side code generation tools are set properly in the Rules.make in DVSDK installation directory &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CODEGEN_INSTALL_DIR=/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/cg6x_#_#_##&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re-building the Servers from DVSDK installation directory can be done using the following commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##&lt;br /&gt;
host $ make codecs_clean&lt;br /&gt;
host $ make codecs&lt;br /&gt;
host $ make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Initial NAND X-loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the X-Loader source archive from OMAP35x-PSP-SDK-##.##.##.##/src/boot-strap directory into your working directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp x-loader-##.##.##.##.tar.gz ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the X-Loader source archive by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/workdir/opt&lt;br /&gt;
host $ tar -zxvf x-loader-##.##.##.##.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure X-Loader for OMAP35x EVM target:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd xloader-##.##.##.##&lt;br /&gt;
host $ make omap3evm_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build X-Loader, run the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command produces the x-load.bin file, but in order for the X-Loader to be loaded by the OMAP35x ROM bootloader, it needs to be signed with the signGP program from the AM35x-OMAP35x-PSP-SDK-##.##.##.##/host-tools/linux directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ /home/&amp;lt;useracct&amp;gt;/AM35x-OMAP35x-PSP-SDK-#.##.##.##/host_tools/linux/signGP x-load.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting signed X-loader is named x-load.bin.ift and should be ready for the target.&lt;br /&gt;
For MMC/SD Card boot loading this file must be called MLO.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cp x-load.bin.ift MLO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Target-side UART Loader ===&lt;br /&gt;
&lt;br /&gt;
Copy the UART loader dnld_util_target.tar.bz2 file from AM35x-OMAP35x-PSP-SDK-##.##.##.##/src/utils directory into your working directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd ~&lt;br /&gt;
host $ mkdir –p workdir/opt&lt;br /&gt;
host $ cp dnld-util-target.tar.bz2 ~/workdir/opt/.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un-tar the UART loader by performing the following command.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ tar -jxvf dnld_util_target.tar.bz2&lt;br /&gt;
host $ cd dnld_util_target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the following command to build it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting binary is called dnld_startup_omap3_evm.bin.  This file is used with DownloadUtility.exe for UART peripheral boot.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the NFS Image ===&lt;br /&gt;
&lt;br /&gt;
Kindly refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_NFS_Image]] (part of AM35x Getting Started Guide),for rebuilding NFS for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
The OMAP3535/OMAP3530 DVSDK installer has the script to (re)build the NFS image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the NFS image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
The following command removes the old the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will create the NFS tarball image:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following command will remove the NFS creation logs and the temporary NFS directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above command requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rebuilding the Full Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_Full_Ramdisk_Image]] (part of AM35x Getting Started Guide),for rebuilding full ramdisk image for AM35x SDK. This will contain different set of demos and sample applications.&lt;br /&gt;
&lt;br /&gt;
The full ramdisk image cannot be built to include the OMAP3530 DVSDK demos as the ramdisk size requirement exceeds 40MB after the image is un-tarred and the bootargs given in step 5 in Section [[GSG:_OMAP35x DVEVM Additional Procedures#Running the Re-flash Procedure|Running the Re-flash Procedure]] will not work&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the Minimal Ramdisk Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup]] (part of AM35x Getting Started Guide),for rebuilding minimal ramdisk image for AM35x SDK. The minimal ramdisk image does not contain any demos or examples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rebuilding the JFFS2 File-System Image ===&lt;br /&gt;
&lt;br /&gt;
Refer to the [[GSG:_AM35x_EVM_Software_Setup#Rebuilding_the_JFFS2_File-System_Image]] (part of AM35x Getting Started Guide),for rebuilding jffs2 image for AM35x SDK. This will contain different set of demos and sample applications. &lt;br /&gt;
&lt;br /&gt;
The OMAP3525/OMAP3530 DVSDK installer has the pre-built JFFS2 root file system image that includes the OMAP3525/OMAP3530 DVSDK demos under ~/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Check if the linux distribution on the host PC contains the mkfs.jffs2 utility. If not, download the binary from ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2. Place this binary under /sbin directory in the Linux host development PC and ensure to include /sbin to the PATH environment variable in the .bashrc file.&lt;br /&gt;
&lt;br /&gt;
In order to rebuild the JFFS2 root file system image with OMAP3530 DVSDK demos, make sure you have performed the steps in Section [[#GSG: _OMAP35x DVEVM Software Setup|OMAP35x DVEVM Software Setup]] and Section [[#Rebuilding the DVSDK Software for the target|Rebuilding the DVSDK Software for the target]]. Then, perform the following steps.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Also ensure that you have copied the overlay_dvsdk_#_##_##_##.tar.gz file to your /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs folder.&lt;br /&gt;
&lt;br /&gt;
Clean the old file system images:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_old_rootfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the JFFS2 Image (This requires building the NFS image to create the JFFS2 image from):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make omap3530_dvsdk_jffs2 MKJFFS2=&amp;lt;your_jffs2_install_path&amp;gt; DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clean up the temporary NFS file system directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host $ cd /home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs&lt;br /&gt;
host $ sudo make –f targetfs_make clean_nfs DVSDKVER=&amp;lt;your version number #_##_##_##&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For any clarification about the procedure please perform the below command&lt;br /&gt;
&amp;lt;pre&amp;gt;host $ make –f targetfs_make help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands requires the users to have sudo access. The linux host would prompt for the user password and the user needs to enter his password for the make to continue.&lt;br /&gt;
&lt;br /&gt;
The user can make sure he has sudo access by including the following line in /etc/sudoers file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;useracct&amp;gt;	ALL=(ALL)	ALL&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Executing above commands will create the new NFS and JFFS2 root file system with the DVSDK demo executables and all the media files required by the demonstrations.&lt;br /&gt;
You will see nfs_dvsdk_#_##_##_##.tar.gz and rootfs_dvsdk_#_##_##_##.jffs2 files created under the current folder ('''/home/&amp;lt;useracct&amp;gt;/dvsdk/dvsdk_#_##_##_##/targetfs''').&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What's next? ==&lt;br /&gt;
&lt;br /&gt;
The next chapter of this Getting Started Guide is [[GSG: OMAP35x DVEVM Additional Procedures]].&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Auto_HUD</id>
		<title>ECE597 Project Auto HUD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Auto_HUD"/>
				<updated>2010-03-23T01:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Project Overview==&lt;br /&gt;
The goal of this project is to use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest. &lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:routhcr | Chris Routh]]&lt;br /&gt;
&lt;br /&gt;
[[user:collinjc | J. Cody Collins]]&lt;br /&gt;
&lt;br /&gt;
Greg Jackson&lt;br /&gt;
&lt;br /&gt;
Keqiong Xin&lt;br /&gt;
&lt;br /&gt;
==Steps==&lt;br /&gt;
* Create Minimal Linux Image that can run OpenCV and run the display&lt;br /&gt;
* Work on getting a camera functioning on the beagle board&lt;br /&gt;
* OpenCV running nativly on beagle with min config&lt;br /&gt;
* OpenCV working on video stream&lt;br /&gt;
* Projector working on Beagle&lt;br /&gt;
* Car integration (power)&lt;br /&gt;
* Algorithm development&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2010-03-23T00:27:17Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Projects you would like to do ==&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [[ECE597 Google PowerMeter]]&lt;br /&gt;
| Google has a [http://www.google.com/powermeter project] to view and manage home electricity usage. This project would involve designing the hardware to measure the power usage and the Beagle software in interface with it.  The Beagle would talk to the local home network via a wireless link and the home owner would configure the Beagle via a web page served on the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius &amp;lt;br&amp;gt; Steven Stark &amp;lt;br&amp;gt; Paul Morrison&lt;br /&gt;
| Audio MBox&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| 3D Chess with Networking&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; Greg Jackson &amp;lt;br&amp;gt; Keqiong Xin&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| Adding Sense to Beagle (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Executable_and_Linkable_Format_(ELF)</id>
		<title>Executable and Linkable Format (ELF)</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Executable_and_Linkable_Format_(ELF)"/>
				<updated>2010-03-19T19:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: Created page with 'Category:ECE597  In computing, the '''Executable and Linkable Format''' ('''ELF''', formerly called '''Extensible Linking Format''') is a common standard file format for exec…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
&lt;br /&gt;
In computing, the '''Executable and Linkable Format''' ('''ELF''', formerly called '''Extensible Linking Format''') is a common standard file format for executables, object code, shared libraries, and core dumps.  First published in the  System V application binary interface|Application Binary Interface specification,&amp;lt;ref&amp;gt;''[http://www.sco.com/developers/devspecs/gabi41.pdf System V Application Binary Interface]'' Edition 4.1 (1997-03-18)&amp;lt;/ref&amp;gt; and later in the Tool Interface Standard,&amp;lt;ref&amp;gt;Tool Interface Standard (TIS) ''[http://refspecs.freestandards.org/elf/elf.pdf Executable and Linking Format (ELF) Specification] Version 1.2'' (May 1995)&amp;lt;/ref&amp;gt; it was quickly accepted among different vendors of Unix systems. In 1999 it was chosen as the standard binary file format for Unix and Unix-like systems on x86 by the 86open project.&lt;br /&gt;
&lt;br /&gt;
Unlike many proprietary executable file formats, ELF is very flexible and extensible, and it is not bound to any particular processor or Instruction set architecture|architecture.  This has allowed it to be adopted by many different operating systems on many different platforms.&lt;br /&gt;
&lt;br /&gt;
The ELF format has replaced older executable formats such as a.out and COFF in many Unix-like operating systems such as Linux, Solaris (operating system), IRIX, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, Syllable Desktop (operating system), and HP-UX (except for 32-bit PA-RISC programs which continue to use System Object Model (file format)).  ELF has also seen some adoption in non-Unix operating systems, such as the Itanium version of OpenVMS, BeOS Revision 4 and later for x86 architecture (where it replaced the Portable Executable format; the PowerPC version stayed with Preferred Executable Format), and Haiku (operating system).  The PlayStation Portable, PlayStation 2, PlayStation 3, Wii, Nintendo DS and GP2X consoles also use ELF. AmigaOS 4 and MorphOS also running on PowerPC machines, use ELF. On the Amiga platform the ELF executable has replaced the previous [[Amiga Hunk#Extended Hunk format|EHF]] (Extended Hunk Format) which was used on Amigas equipped with PPC processor expansion cards. The Symbian OS v9 uses E32Image&amp;lt;ref&amp;gt;''[http://wiki.forum.nokia.com/index.php/E32Image Symbian OS executable file format]''&amp;lt;/ref&amp;gt; format that is based on ELF file format.&lt;br /&gt;
&lt;br /&gt;
Most Sony Ericsson (for example, the Sony Ericsson W800, Sony Ericsson W610i, Sony Ericsson W300, etc.), some Siemens (SGOLD and SGOLD2 platforms: from Siemens C65 to S75 and BenQ-Siemens E71/BenQ-Siemens EL71) and Motorola (for example, the E398, Motorola SLVR L7, v360, Motorola_RAZR_V3#V3i and all phone LTE2 which has the patch applied) phones can run ELF files through the use of a Patch (computing) that adds Assembly Language to the main firmware (known as the ''ELFPack'', in the underground modding culture).&lt;br /&gt;
&lt;br /&gt;
The ELF file format is also used as a generic object and executable format for binary images used with embedded processors{{Citation needed|date=June 2008}}.&lt;br /&gt;
&lt;br /&gt;
== ELF file layout ==&lt;br /&gt;
[[Image:Elf-layout--en.png|link=http://en.wikipedia.org/wiki/File:Elf-layout--en.png|thumb|200px]]&lt;br /&gt;
&lt;br /&gt;
Each ELF file is made up of one ELF header, followed by file data.  The file data can include:&lt;br /&gt;
&lt;br /&gt;
* Program header table, describing zero or more segments&lt;br /&gt;
* Section header table, describing zero or more sections&lt;br /&gt;
* Data referred to by entries in the program header table, or the section header table&lt;br /&gt;
&lt;br /&gt;
The segments contain information that is necessary for runtime execution of the file, while sections contain important data for linking and relocation. Each byte in the entire file is taken by no more than one section at a time, but there can be orphan bytes, which are not covered by a section. In the normal case of a Unix executable one or more sections are enclosed in one segment.&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;readelf&amp;lt;/code&amp;gt; is a Unix binary utility that displays information about one or more ELF files.  A GNU General Public License implementation is provided by GNU Binutils.&lt;br /&gt;
*&amp;lt;code&amp;gt;elfdump&amp;lt;/code&amp;gt; is a command for viewing ELF information in an elf file, available under Solaris and [[FreeBSD]].&lt;br /&gt;
*&amp;lt;code&amp;gt;[[objdump]]&amp;lt;/code&amp;gt; provides a wide range of information about ELF files and other object formats. &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt; uses the [[Binary File Descriptor library]] as a back-end to structure the ELF data.&lt;br /&gt;
*&amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; is a Unix binary utility that displays information about the [[Instruction set architecture|architecture]] of ELF files.&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
&lt;br /&gt;
* Generic:&lt;br /&gt;
** ''[http://www.sco.com/developers/devspecs/gabi41.pdf System V Application Binary Interface]'' Edition 4.1 (1997-03-18)&lt;br /&gt;
** ''[http://www.sco.com/developers/gabi/latest/contents.html System V ABI Update]'' (October 2009)&lt;br /&gt;
** ''[http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf ELF-64 Object File Format]'' Version 1.5 Draft 2 (May 1998)&lt;br /&gt;
* AMD64:&lt;br /&gt;
** ''[http://www.x86-64.org/documentation/abi.pdf System V ABI, AMD64 Supplement]''&lt;br /&gt;
* ARM architecture:&lt;br /&gt;
** ''[http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044b/IHI0044B_aaelf.pdf ELF for the ARM Architecture]''&lt;br /&gt;
* IA32:&lt;br /&gt;
** ''[http://www.sco.com/developers/devspecs/abi386-4.pdf System V ABI, IA32 Supplement]''&lt;br /&gt;
* IA64:&lt;br /&gt;
** ''[http://refspecs.freestandards.org/IA64conventions.pdf Itanium Software Conventions and Runtime Guide]'' (September 2000)&lt;br /&gt;
* M32R:&lt;br /&gt;
** ''[http://www.linux-m32r.org/cmn/m32r/M32R-elf-abi.pdf M32R ELF ABI Supplement]'' Version 1.2 (2004-08-26)&lt;br /&gt;
* MIPS architecture:&lt;br /&gt;
** ''[http://www.sco.com/developers/devspecs/mipsabi.pdf System V ABI, MIPS RISC Processor Supplement]''&lt;br /&gt;
** ''[http://sources.redhat.com/ml/binutils/2003-06/msg00436.html MIPS EABI documentation]'' (2003-06-11)&lt;br /&gt;
* Motorola 6800:&lt;br /&gt;
** ''[http://www.uclibc.org/cgi-bin/viewcvs.cgi/trunk/docs/psABI-m8-16.pdf?rev=10808 Motorola 8 and 16 bit Embedded ABI]''&lt;br /&gt;
* PA-RISC:&lt;br /&gt;
* PowerPC:&lt;br /&gt;
** ''[http://refspecs.freestandards.org/elf/elfspec_ppc.pdf System V ABI, PPC Supplement]&lt;br /&gt;
** ''[http://ftp.twaren.net/Unix/Sourceware/binutils/ppc-docs/ppc-eabi-1995-01.pdf PowerPC Embedded Application Binary Interface] 32-Bit Implementation'' (1995-10-01)&lt;br /&gt;
** ''[http://www.linuxbase.org/spec/ELF/ppc64/PPC-elf64abi-1.9.html 64-bit PowerPC ELF Application Binary Interface Supplement]'' Version 1.9 (2004)&lt;br /&gt;
* SPARC:&lt;br /&gt;
** ''[http://www.sparc.org/standards/psABI3rd.pdf System V ABI, SPARC Supplement]''&lt;br /&gt;
* S/390:&lt;br /&gt;
** ''[http://www.linux-foundation.org/spec/ELF/zSeries/lzsabi0_s390/book1.html S/390 ELF ABI Supplement]&lt;br /&gt;
* zSeries:&lt;br /&gt;
** ''[http://www.linux-foundation.org/spec/ELF/zSeries/lzsabi0_zSeries.pdf zSeries ELF ABI Supplement]''&lt;br /&gt;
* Symbian OS 9:&lt;br /&gt;
** ''[http://wiki.forum.nokia.com/index.php/E32Image_file_format_on_Symbian_OS_9 E32Image file format on Symbian OS 9]''&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Elf-layout--en.png</id>
		<title>File:Elf-layout--en.png</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Elf-layout--en.png"/>
				<updated>2010-03-19T19:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Elf-layout--en.svg</id>
		<title>File:Elf-layout--en.svg</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Elf-layout--en.svg"/>
				<updated>2010-03-19T19:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-03-19T18:40:52Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;br /&gt;
= Auto HUD Project =&lt;br /&gt;
= Research on Random Topics =&lt;br /&gt;
*[[Executable and Linkable Format (ELF)]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Routhcr</id>
		<title>User:Routhcr</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Routhcr"/>
				<updated>2010-03-18T01:41:11Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: Created page with 'Category:ECE597 = Introduction = Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
= Introduction =&lt;br /&gt;
Welcome to my user page, this is a work in progress but I plan for it to be the primary place to see my research and current projects.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2010-03-12T21:09:33Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Projects you would like to do ==&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Team Names&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [[ECE597 Google PowerMeter]]&lt;br /&gt;
| Google has a [http://www.google.com/powermeter project] to view and manage home electricity usage. This project would involve designing the hardware to measure the power usage and the Beagle software in interface with it.  The Beagle would talk to the local home network via a wireless link and the home owner would configure the Beagle via a web page served on the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius &amp;lt;br&amp;gt; Steven Stark &amp;lt;br&amp;gt; Paul Morrison&lt;br /&gt;
| Audio MBox&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| David Baty&lt;br /&gt;
| IRLP Node&lt;br /&gt;
| [http://www.irlp.net/ IRLP (Internet Radio Linking Project)] is an amateur radio project to allow the linking of repeaters across the world over the internet.  It requires very little hardware, but due to an antiquated interface board and is typically run on old desktop hardware that uses significantly more power than a beagle board.  All of the software already runs on Linux, but would require some porting.  Interface hardware would also have to be designed, but if DTMF (dial tone) decoding is done in software, this external board would be very simple.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most&lt;br /&gt;
| Open Source Slingbox&lt;br /&gt;
| The [http://slingbox.com/ Slingbox] is a device that allows &amp;quot;place-shifting&amp;quot; of television through streaming.  The idea is to create a similar device using the Beagle and a USB DTV tuner.  It could implement a [[UPnP]] server and perform on-the-fly transcoding using [http://gstreamer.org/ GStreamer] (with [http://www.freedesktop.org/wiki/GstOpenMAX DSP] [[BeagleBoard/gst-openmax|acceleration]]).  Hopefully [[UPnP#NAT_Traversal|UPnP NAT traversal]] could be used to automatically open a port for external access as well, enabling &amp;quot;place-shifting&amp;quot;.  [[DLNA Open Source Projects]] are relevant, particularly [http://live.gnome.org/Rygel Rygel].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597: MythTV/DSP Pico Projector]]&lt;br /&gt;
| Have the Beagleboard act as a MythTV/portable video playback node.  This may require work with the DSP acceleration of FFMPEG/Gstreamer.  Additionally, interfacing with a Pico Projector to allow for portable media enjoyment.  If MythTV support is not practical, simple localized video playback with DSP acceleration will be used.&lt;br /&gt;
|-&lt;br /&gt;
|Chris Routh &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; Greg Jackson &amp;lt;br&amp;gt; Keqiong Xin&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&lt;br /&gt;
| Fast Boot&lt;br /&gt;
| See [[BeagleBoard/GSoC/Ideas#Fast_Linux_boot]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Exercise_22_Cross-Compiling</id>
		<title>EBC Exercise 22 Cross-Compiling</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Exercise_22_Cross-Compiling"/>
				<updated>2010-03-11T20:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE597]]&lt;br /&gt;
[[Category: BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
This class is about developing software for embedded Linux.  The [http://elinux.org/Main_Page eLinux site] is a good source for embedded Linux in general.  There are many ongoing embedded efforts going on many platforms.  Poke around the site a while to get a feel for what's happening.&lt;br /&gt;
&lt;br /&gt;
We are going to use the [http://www.angstrom-distribution.org Ångström Distribution].  It's available many platforms.  Look around the site, you may recognize some of them.&lt;br /&gt;
&lt;br /&gt;
Instructions for building Ångström are given [http://www.angstrom-distribution.org/building-angstrom here]; however I'm going to present a Beagle-tuned version of those instructions on this page.&lt;br /&gt;
&lt;br /&gt;
== Step 1 - get Open Embedded metadata ==&lt;br /&gt;
&lt;br /&gt;
First install &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; by running the following on your host computer.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install git-core&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then run the following to load the meta data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export OETREE=&amp;quot;${HOME}/oe&amp;quot;&lt;br /&gt;
mkdir -p ${OETREE} &amp;amp;&amp;amp; cd ${OETREE}&lt;br /&gt;
git clone git://git.openembedded.org/openembedded.git openembedded&lt;br /&gt;
cd openembedded&lt;br /&gt;
git checkout origin/stable/2009 -b stable/2009&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If &amp;lt;code&amp;gt;git://git.openembedded.org/openembedded.git&amp;lt;/code&amp;gt; does not work, you can also try &amp;lt;code&amp;gt;http://repo.or.cz/r/openembedded.git&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
The first git transfers some 336,000 object and takes about 18 minutes with the network running at 600 some KiB/s.  Keep an eye on it, mine stopped about 23% in and I had to restart it.  The second git takes almost no time.&lt;br /&gt;
&lt;br /&gt;
Now run the following to update the metadata:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ${OETREE}/openembedded &lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You've created a directory called &amp;lt;code&amp;gt;oe&amp;lt;/code&amp;gt;.  Go explore around it to see what is there.  Be sure to look in &amp;lt;code&amp;gt;oe/openembedded/recipes&amp;lt;/code&amp;gt;.  These folders contain instructions on where to get and how to build various things.  Look in &amp;lt;code&amp;gt;recipes/linux&amp;lt;/code&amp;gt;.  Here are instructions for building various Linux kernels.  We'll be using &amp;lt;code&amp;gt;linux-omap-2.6.*&amp;lt;/code&amp;gt;.  What's the highest version you can find?&lt;br /&gt;
&lt;br /&gt;
== Step 2 - Installing bitbake and friends ==&lt;br /&gt;
&lt;br /&gt;
bitbake is the workhorse that knows where to get everything and how to compile it.  The following will install bitbake and additional programs that bitbake needs.  This may take 5 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install bitbake&lt;br /&gt;
sudo apt-get install g++&lt;br /&gt;
sudo apt-get install help2man diffstat texi2html cvs texinfo subversion gawk&lt;br /&gt;
sudo apt-get autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are running Ubuntu you will have to also do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /bin&lt;br /&gt;
sudo mv sh sh.old&lt;br /&gt;
sudo ln -s bash sh&lt;br /&gt;
sudo sh -c &amp;quot;echo 0 &amp;gt; /proc/sys/vm/mmap_min_addr&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finally edit the file &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gedit /etc/sysctl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the following at the end and save.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is for bitbake&lt;br /&gt;
vm.mmap_min_addr = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now you should be ready to run bitbake.&lt;br /&gt;
&lt;br /&gt;
{{Give&lt;br /&gt;
|title=Psyco JIT compiler&lt;br /&gt;
|tip=bitbake suggest loading a compiler.  Load and test the compiler.  If it's worth using, write instructions.&lt;br /&gt;
}}&lt;br /&gt;
The Psyco Python JIT compiler should help speed up compilation times at the expense of memory use .  It only works on 32-bit systems. To install, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install python-psyco&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 - Setting up for the BeagleBoard ==&lt;br /&gt;
&lt;br /&gt;
Now let's setup &amp;lt;code&amp;gt;local.conf&amp;lt;/code&amp;gt; for our needs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p ${OETREE}/build/conf&lt;br /&gt;
cp ${OETREE}/openembedded/contrib/angstrom/local.conf ${OETREE}/build/conf/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Open &amp;lt;code&amp;gt;${OETREE}/build/conf/local.conf&amp;lt;/code&amp;gt; in your favourite editor and add the following to the end of the file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MACHINE ?= &amp;quot;beagleboard&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also, look at this block of lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Make use of SMP and fast disks&lt;br /&gt;
PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&lt;br /&gt;
BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can tell it how many parallel threads to run.  If you have several cores on your machine, make this number big.  If you have only one core, you might be better performance setting it to 1.  More details are [http://wiki.openembedded.org/index.php/Advanced_configuration here].&lt;br /&gt;
&lt;br /&gt;
To save you a lot of time, it is useful to disable locale generation for all but the one you need.  Add this to local.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 - Start building ==&lt;br /&gt;
&lt;br /&gt;
We need a small script to setup the environment, so download [http://www.rose-hulman.edu/~yoder/eLinux/files/source-me.txt source-me.txt] to ${OETREE}.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Go to the OpenEmbedded folder&lt;br /&gt;
cd ${OETREE}/openembedded &lt;br /&gt;
&lt;br /&gt;
#Make sure it's up to date&lt;br /&gt;
git pull --rebase&lt;br /&gt;
&lt;br /&gt;
#Set environment variables&lt;br /&gt;
cd ${OETREE}&lt;br /&gt;
source source-me.txt &lt;br /&gt;
&lt;br /&gt;
#Start building&lt;br /&gt;
bitbake nano&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will take a while.  bitbake is installing everything that is needed to compile the system.  This includes cross compilers, assemblers, source, everything.  I started at 10am and ended around 5:30pm.  It was running on just one of the two cores on my laptop.  How long did it take on your machine?  I notice that an additional 600M of disk space is being used.&lt;br /&gt;
&lt;br /&gt;
{{Give&lt;br /&gt;
|title=Keep track of you running times and configurations.&lt;br /&gt;
|tip=We'll use this data to see what the best settings are.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|+ Initial &amp;lt;tt&amp;gt;bitbake nano&amp;lt;/tt&amp;gt; runtime&lt;br /&gt;
! Processor&lt;br /&gt;
! Settings&lt;br /&gt;
! Run Time&lt;br /&gt;
|-&lt;br /&gt;
| T2600@2.16 GHz&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;2&amp;quot;&amp;lt;br&amp;gt;Psyco? Yes.&lt;br /&gt;
| 2.5 hours&lt;br /&gt;
|-&lt;br /&gt;
| E8400@3.00 GHz&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| All Locals 1.4 hours &amp;lt;br&amp;gt; US only 43 Minutes&lt;br /&gt;
|-&lt;br /&gt;
| E5410@2.33 GHz (&amp;amp;times;2)&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| 56.08 minutes&lt;br /&gt;
|-&lt;br /&gt;
| E5410@2.33 GHz (&amp;amp;times;2)&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j8&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;8&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| 57.83 minutes&lt;br /&gt;
|-&lt;br /&gt;
| E5410@2.33 GHz (&amp;amp;times;2)&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j4&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;8&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| 53.86 minutes&lt;br /&gt;
|-&lt;br /&gt;
| E5410@2.33 GHz (&amp;amp;times;2)&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j7&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;7&amp;quot;&amp;lt;br&amp;gt;Psyco? No.&lt;br /&gt;
| ''pending''&lt;br /&gt;
|-&lt;br /&gt;
| T7600@2.33GHz (&amp;amp;times;2)&lt;br /&gt;
| PARALLEL_MAKE = &amp;quot;-j1&amp;quot;&amp;lt;br&amp;gt;BB_NUMBER_THREADS = &amp;quot;1&amp;quot;&amp;lt;br&amp;gt;Psyco? No (64-bit).&lt;br /&gt;
| 5412.14user 1446.15system 2:10:04elapsed 87%CPU (0avgtext+0avgdata 0maxresident)k&amp;lt;br&amp;gt;559896inputs+16591944outputs (2435major+323453596minor)pagefaults 0swaps&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 5 - Building a complete image ==&lt;br /&gt;
&lt;br /&gt;
Up to this point all we have done is load all the infrastructure needed and compiled the simple '''nano''' text editor.  We don't even have the kernel yet. Do the following to build a basic console image.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bitbake console-image&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''This bitbake took 7 hours and 15 minutes.'''  There are now some 7,700 directories with 67,000 files in the &amp;lt;code&amp;gt;oe&amp;lt;/code&amp;gt; directory.  An additional 1.5G of disk space is in use.&lt;br /&gt;
&lt;br /&gt;
How did I know to use '''console-image'''?  I ran the following to find what images were out there:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
locate image | grep /oe/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This found every file with '''image''' in the name it that also had '''/oe/''' in the path.  From this I see that '''oe/openembedded/recipes/images''' has a bunch of files ending in '''-image'''.  Take a look at '''console-image.bb''' and see what you can figure out.&lt;br /&gt;
&lt;br /&gt;
== Step 6 - Loading your SD card ==&lt;br /&gt;
&lt;br /&gt;
The output of the bitbake command will ultimately be found under the &amp;lt;code&amp;gt;$OE_HOME/angstrom-dev/deploy/glibc/images/beagleboard&amp;lt;/code&amp;gt;. In there you can find at least two interesting files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
console-image-beagleboard.tar.bz2&lt;br /&gt;
uImage-beagleboard.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The console image represents a full and self-contained file system, *including* a kernel. The uImage-beagleboard.bin is a Linux kernel image suitable for loading by the U-boot bootloader.&lt;br /&gt;
&lt;br /&gt;
* Rename '''uImage-beagleboard.bin''' as '''uImage''' and load on your SD as before ([[Getting your Beagle running]]).  &lt;br /&gt;
* Also load '''console-image-beagleboard.tar.bz2''' on the 2&amp;lt;sup&amp;gt;nd&amp;lt;/sup&amp;gt; partition like you did before.  Did you notice it untar's very quickly?  Why?&lt;br /&gt;
* Boot and explore.  What's there?  What's missing?&lt;br /&gt;
&lt;br /&gt;
Congratulations you've just build Linux from source.  Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
beagleboard login: root&lt;br /&gt;
root@beagleboard:~# cd /sys/class&lt;br /&gt;
root@beagleboard:/sys/class# ls -F&lt;br /&gt;
bdi/          hwmon/        misc/         scsi_generic/ usb_device/&lt;br /&gt;
block/        i2c-adapter/  mmc_host/     scsi_host/    usb_endpoint/&lt;br /&gt;
bluetooth/    i2c-dev/      mtd/          sound/        usb_host/&lt;br /&gt;
bmi/          ieee80211/    net/          spi_master/   usbmon/&lt;br /&gt;
display/      input/        regulator/    spidev/       vc/&lt;br /&gt;
firmware/     leds/         rtc/          thermal/      vtconsole/&lt;br /&gt;
gpio/         mdio_bus/     scsi_device/  tty/&lt;br /&gt;
graphics/     mem/          scsi_disk/    ubi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a list of low-level devices on the Beagle that you can access as files.  Try:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:/sys/class# cd leds/&lt;br /&gt;
root@beagleboard:/sys/class/leds# ls -F&lt;br /&gt;
beagleboard::usr0@ beagleboard::usr1@&lt;br /&gt;
root@beagleboard:/sys/class/leds# cd beagleboard\:\:usr0&lt;br /&gt;
root@beagleboard:/sys/devices/platform/leds-gpio/leds/beagleboard::usr0# cat trigger&lt;br /&gt;
none nand-disk mmc0 mmc1 [heartbeat]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a list of values you can assign to trigger.  Notice LED0 is blinking on and off right now. Try:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:/sys/devices/platform/leds-gpio/leds/beagleboard::usr0# echo none &amp;gt; trigger&lt;br /&gt;
root@beagleboard:/sys/devices/platform/leds-gpio/leds/beagleboard::usr0# echo 1 &amp;gt; brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
What happens?  Play around.  [http://groups.google.com/group/beagleboard/msg/c623a16637625685?hl=en Here] are instructions on reading the '''USER''' switch.  Try it.  Can you make the LEDs blink in response to the button being pressed?&lt;br /&gt;
&lt;br /&gt;
== Step 7 - Building a complete Beagle demo image ==&lt;br /&gt;
&lt;br /&gt;
Now let's build the how demo we were running before.  We'll do this via bitbake, but argument do we give it?  Try looking in &amp;lt;code&amp;gt;oe/openembedded/recipes/images&amp;lt;/code&amp;gt;, do you see a recipe that might work?  Hint:  It has beagle in the name.  Here's what I tried.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
time bitbake beagle????-image&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Replace ???? with the recipe name you found.  I added the '''time''' command so I could see how long it takes to run.  My run took some 7.5 hours.&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2010-03-09T01:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Routhcr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| 2-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Elliot Simon&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| J. Cody Collins&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Steven Stark&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Brian Embry&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Qiang Jiang&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Jessica Lipscomb&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Chris Routh&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Routhcr</name></author>	</entry>

	</feed>