<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6125613833723663356</id><updated>2011-12-27T03:39:38.402-08:00</updated><title type='text'>FriendlyARM</title><subtitle type='html'>FriendlyARM mini2440 HowTos</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-991555471412366563</id><published>2011-12-27T03:39:00.000-08:00</published><updated>2011-12-27T03:39:38.410-08:00</updated><title type='text'>New videos</title><content type='html'>Finally I succeeded setting up  the development environment for building QtEmbedded 4.6.3 application using QtCreator. My intention was to make complete video tutorial on all the process from installing the tools to compiling a "hello world" application and running it on FriendlyARM. Lack of time doesn't allow me to complete it. That's why I decided to publish my video "notes". They have been on YouTube for some time. They are just record of my desktop with no comment. Also here are my text notes I made during the installation process. Hope somebody might find them usefull.&lt;br /&gt;&lt;br /&gt;Here are the videos:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ONPAQBAMyYE"&gt;How to install the cross-copiler for mini2440 on host PC (Video 1) &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=-_YzWgGJgKU&amp;amp;feature=related"&gt;How to compile QtEmbedded 4.6.3 for mini2440 (Video 2) &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=8LuNaCGDCqg&amp;amp;feature=related"&gt;Install QtCreator and set it up for QtEmbedded. (Video 3) &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------&lt;br /&gt;**** PC Installation ****&lt;br /&gt;1. Install the cross-compiler to&amp;nbsp; /usr/local/arm/4.3.2&lt;br /&gt;&amp;nbsp;In&amp;nbsp; PATH variable add folder /usr/local/arm/4.3.2/bin&lt;br /&gt;&lt;br /&gt;2. Compile QtEmbedded 4.6.3 on PC. The result of the compilation are the libraries for ARM (libQtCore.so.4.6.3, libQtGui.so.4.6.3 и т.н) and tools for PC like qmake, uic, moc etc. Do it as root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1 Unzip arm-qte-463-20100802tar.gz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.2 Enter the&amp;nbsp; arm-qte-4.6.3 folder and run configuration script (config-options file shown in Video 2):&lt;br /&gt;&lt;br /&gt;./configure -prefix /qtbuild/ -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb-qt-kbd-usb -confirm-license -qt-mouse-tslib&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The -prefix option determines location of the compiled files. I this case it is /qtbuild&lt;br /&gt;&lt;span style="background-color: #990000; color: white;"&gt;Important: Use exactly this version! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.3 Compile (takes more than an hour):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $ make (or gmake)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $ make install (or gmake install) &lt;br /&gt;&lt;br /&gt;3. Install IDE QtCreator&lt;br /&gt;Make qt-sdk-linux-x86-opensource-2009.05.bin executable:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LinuxHost&amp;gt;chmod +x qt-sdk-linux-x86-opensource-2009.05.bin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LinuxHost&amp;gt;./qt-sdk-linux-x86-opensource-2009.05.bin&lt;br /&gt;&lt;br /&gt;4. Configure QtCreator with path to qmake. The qmake tool uses the project file .pro to generate&amp;nbsp; Makefile&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From &lt;b&gt;Tools-Options&lt;/b&gt; in &lt;b&gt;QMake location&lt;/b&gt; add path /qtbuild/bin/qmake and click&amp;nbsp; &lt;b&gt;rebuild&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;5. Examples - in folder arm-qte-4.6.3/qt-everywhere-opensource-src-4.6.3 there is en example. Open the&amp;nbsp; .pro file in QtCreator&amp;nbsp; and&amp;nbsp; build it.&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** Configure FriendlyARM ***&lt;br /&gt;The last FriendlyARM came with QtEmbedded 4.6.3 и tslib. If the board is older instead just install the file system rootfs_qtopia_qt4_20110305.img (option "y" in DWN) Doing this you don't have to upload the libraries to FriendlyARM. &lt;br /&gt;&lt;br /&gt;This is done in Windows. Next step is to configure IP address and password with &lt;b&gt;passwd&lt;/b&gt; command from console.&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** GLOBAL VARIABLES ***&lt;br /&gt;&lt;br /&gt;For applications to be abble to access the libraries global variables have to be set. Set them to use already installed in the file system libraries so you do not have to upload compiled QtEmbedded and tslib libraries. That's why using exactly 4.6.3 version is important.&lt;br /&gt;&lt;br /&gt;Remark: check the fluidlauncher to see how you can make variables set on start&lt;br /&gt;&lt;br /&gt;export USER LOGNAME PS1 PATH&lt;br /&gt;export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6.3-arm&lt;br /&gt;export LD_LIBRARY_PATH=$QTDIR/lib&lt;br /&gt;export TSLIB_CONSOLEDEVICE=none&lt;br /&gt;export TSLIB_FBDEVICE=/dev/fb0&lt;br /&gt;export TSLIB_TSDEVICE=/dev/input/event0&lt;br /&gt;export TSLIB_CALIBFILE=/etc/pointercal&lt;br /&gt;export TSLIB_CONFFILE=/usr/local/etc/ts.conf&lt;br /&gt;export QWS_SIZE=800x480&lt;br /&gt;export QWS_DISPLAY="LinuxFb:mmWidth135:mmHeight155"&lt;br /&gt;export QWS_MOUSE_PROTO="Tslib:/dev/input/event0"&lt;br /&gt;export TSLIB_PLUGINDIR=/usr/local/lib/ts&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Remark:Change the display size if necessary. This settings is for 7".&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** fonts **&lt;br /&gt;transfer from PC from /qtbuild/lib/fonts/ fonts to&lt;br /&gt;&amp;nbsp;FriendlyARM&amp;nbsp; /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/fonts&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** TSLIB ***&lt;br /&gt;When try to run Qt4 application from console if there is no link to tslibrary an error mesage is shown:&lt;br /&gt;error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory&lt;br /&gt;&lt;br /&gt;Make symbol link:&lt;br /&gt;ln -s /usr/local/lib/libts-0.0.so.0 /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/libts-0.0.so.0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** Screen Calibration ***&lt;br /&gt;/usr/local/bin/ts_calibrate - this is the application for calibration&lt;br /&gt;//it can be run from qtopia&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;*** runnin the application ***&lt;br /&gt;Diasble the Qtopia and run the application with qws option. It makes the application responsible for writing to the frame buffer.&amp;nbsp; &lt;br /&gt;/myapp -qws&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-991555471412366563?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/991555471412366563/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2011/12/new-videos.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/991555471412366563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/991555471412366563'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2011/12/new-videos.html' title='New videos'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-9149062978104730415</id><published>2011-09-14T11:17:00.000-07:00</published><updated>2011-09-14T11:17:04.428-07:00</updated><title type='text'>The display turns white</title><content type='html'>I had problem with my FriendlyARM board. The display turned bright white occasionally. &lt;br /&gt;The problem started to occure more and more often. It appeared that the problem is in the ribbon cable between the board and the display. About 0.8V are lost along the way. After connecting the display directly to the power from CON8 on the board there are no more display troubles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-9149062978104730415?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/9149062978104730415/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2011/09/display-turns-white.html#comment-form' title='1 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/9149062978104730415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/9149062978104730415'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2011/09/display-turns-white.html' title='The display turns white'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-4996764820830179519</id><published>2011-08-30T02:31:00.000-07:00</published><updated>2011-08-30T02:31:04.643-07:00</updated><title type='text'>HowTo videos</title><content type='html'>I found two very good videos on YouTube:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=WrrtUEo5x8k"&gt;How to install qtopia on the mini2440 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ghzRuwEAWdo&amp;amp;feature=channel_video_title"&gt;Guide to compile and install programs on the mini2440 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-4996764820830179519?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/4996764820830179519/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2011/08/howto-videos.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/4996764820830179519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/4996764820830179519'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2011/08/howto-videos.html' title='HowTo videos'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-8185229899119939230</id><published>2011-06-17T08:12:00.000-07:00</published><updated>2011-06-17T08:19:16.459-07:00</updated><title type='text'>Creating web interface (part 2)</title><content type='html'>This Example shows how to access GPIO pins via web interface.&lt;br /&gt;&lt;br /&gt;First you need to install on mini2440 linux kernel with GPIO support.&lt;br /&gt;Unfortunately FriendlyARM comes with kernel without GPIO and SPI support.&lt;br /&gt;If you decide to try to compile kernel take a look at "Kernel Tweaking" link below. There is a good explanation how to do it. &lt;br /&gt;The other option is to download already compiled kernel from &lt;br /&gt;&lt;a href="http://rapidshare.com/files/409529369/zImage-2.6.32.2-mini2440_gpio_spi.html"&gt;http://rapidshare.com/files/409529369/zImage-2.6.32.2-mini2440_gpio_spi.html&lt;/a&gt;&lt;br /&gt;It is for 7" display but for this example only network access to mini2440 is needed.&lt;br /&gt;I'm not going to explain how to upload the kernel image. It's shown in the board's manual.&lt;br /&gt;&lt;br /&gt;HOW TO CONTROL GPIO FROM THE COMMAND LINE:&lt;br /&gt;When the new kernel is uploaded let's first check the access to GPIO from the command line.&lt;br /&gt;Telnet to mini2440 and go to sys/class/gpio folder:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;$ telnet 192.168.1.230&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM /]# cd sys/class/gpio/&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# ls&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;export&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpiochip0&amp;nbsp;&amp;nbsp;&amp;nbsp; gpiochip128&amp;nbsp; gpiochip160&amp;nbsp; gpiochip192&amp;nbsp; gpiochip224&amp;nbsp; gpiochip32&amp;nbsp;&amp;nbsp; gpiochip64&amp;nbsp;&amp;nbsp; gpiochip96&amp;nbsp;&amp;nbsp; unexport&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Folders gpiochip0 , gpiochip128 .... represent GPIO drivers for each port. Ports are named A,B,C....&lt;br /&gt;Check the port for each gpiochipX:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# cat gpiochip0/label &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;GPIOA&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# cat gpiochip32/label &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;GPIOB&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# cat gpiochip192/label &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;GPIOG&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Each pin has it's corresponding access number. For example buzzer is connected to GPB0 ( Port B pin 0) and port B is accessible from gpiochip32 so the number to access the buzzer is 32.&lt;br /&gt;Led1 is connected go GPB5. It's access number is 32+5 = 37 &lt;br /&gt;Buttons are connected to port G - gpiochip192&lt;br /&gt;&lt;br /&gt;Function&amp;nbsp;&amp;nbsp;&amp;nbsp; Port&amp;nbsp;&amp;nbsp;&amp;nbsp; Access number&lt;br /&gt;Buzzer&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GPB0&amp;nbsp;&amp;nbsp;&amp;nbsp; 32&lt;br /&gt;Led1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPB5&amp;nbsp;&amp;nbsp;&amp;nbsp; 37&lt;br /&gt;Led2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPB6&amp;nbsp;&amp;nbsp;&amp;nbsp; 38&lt;br /&gt;Led3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPB7&amp;nbsp;&amp;nbsp;&amp;nbsp; 39&lt;br /&gt;Led4&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPB8&amp;nbsp;&amp;nbsp;&amp;nbsp; 40&lt;br /&gt;Btn1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG0&amp;nbsp;&amp;nbsp;&amp;nbsp; 192&lt;br /&gt;Btn2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG3&amp;nbsp;&amp;nbsp;&amp;nbsp; 195&lt;br /&gt;Btn3&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG5&amp;nbsp;&amp;nbsp;&amp;nbsp; 197&lt;br /&gt;Btn4&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG6&amp;nbsp;&amp;nbsp;&amp;nbsp; 198&lt;br /&gt;Btn5&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG7&amp;nbsp;&amp;nbsp;&amp;nbsp; 199&lt;br /&gt;Btn6&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPG11&amp;nbsp;&amp;nbsp;&amp;nbsp; 203&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now open access to the buzzer. :&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# echo 32&amp;nbsp; &amp;gt; export&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# ls&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;export&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpiochip0&amp;nbsp;&amp;nbsp;&amp;nbsp; gpiochip128&amp;nbsp; gpiochip160&amp;nbsp; gpiochip192&amp;nbsp; gpiochip224&amp;nbsp; gpiochip32&amp;nbsp;&amp;nbsp; gpiochip64&amp;nbsp;&amp;nbsp; gpiochip96&amp;nbsp;&amp;nbsp; unexport&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A new link gpio32 appeared now. Let's check the current direction and make it an output:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# cat gpio32/direction &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;in&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# echo "high" &amp;gt; gpio32/direction &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# cat gpio32/direction &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;out&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Turn the buzzer on and off:&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# echo "1" &amp;gt; gpio32/value &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# echo "0" &amp;gt; gpio32/value &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Close the access:&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;[root@FriendlyARM gpio]# echo 32&amp;nbsp; &amp;gt; unexport&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CONTROL GPIO FROM WEB INTERFACE:&lt;br /&gt;First stop the Led player as shown on one of previous posts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The project consists from the following files:&lt;br /&gt;access_num.h &amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; definitions of GPIO driver access numbers &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;gpio.h gpio.cpp - &amp;nbsp;&amp;nbsp;&amp;nbsp; class for control of GPIO. Each instance is for control of one pin&lt;br /&gt;&lt;br /&gt;readbtn.cpp&amp;nbsp;&amp;nbsp;&amp;nbsp; - &amp;nbsp;&amp;nbsp;&amp;nbsp; CGI program that reads the state of the six board buttons and shows &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; it in table on a web page. The page is automatically refreshed each&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; two seconds.&lt;br /&gt;&lt;br /&gt;ledbuzz.cpp&amp;nbsp;&amp;nbsp;&amp;nbsp; - &amp;nbsp;&amp;nbsp;&amp;nbsp; CGI program that reads the query string sent to the web server and &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; turns on/off the LEDs and the Buzzer.Then the state of the four board&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; leds and the buzzer are shown on a web page as checkboxes. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; The user can change the&amp;nbsp;&amp;nbsp;&amp;nbsp; checkboxes. When submit button is pressed &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; the new states are sent to the web server using GET method and the &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; same program is called again.&lt;br /&gt;download the project folder from: &lt;br /&gt;&lt;a href="https://rapidshare.com/files/3267170017/webcontrol.zip"&gt;https://rapidshare.com/files/3267170017/webcontrol.zip&lt;/a&gt;&lt;br /&gt;&lt;a href="https://rapidshare.com/#%21download%7C560tg%7C3267170017%7Cwebcontrol.zip%7C16"&gt;https://rapidshare.com/#!download|560tg|3267170017|webcontrol.zip|16&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;compile with command:&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;$ arm-linux-g++ gpio.cpp ledbuzz.cpp -o ledbuzz.cgi&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;$ arm-linux-g++ gpio.cpp readbtn.cpp -o readbtn.cgi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note: In the project folder there are already compiled binaries ledbuzz.cgi and readbtn.cgi&lt;br /&gt;&lt;br /&gt;upload ledbuzz.cgi and readbtn.cgi to the board to /www/cgi-bin folder and give them executable attribute&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;# chmod a+x ledbuzz.cgi &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;# chmod a+x readbtn.cgi &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run them from the command line. You should get HTML output&lt;br /&gt;&lt;br /&gt;There is no index.html. Open CGIs from PC web browser directly:&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;http://192.168.1.230/cgi-bin/ledbuzz.cgi&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #fff2cc;"&gt;http://192.168.1.230/cgi-bin/readbtn.cgi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LINKS:&lt;br /&gt;Access to GPIO pins explained&lt;br /&gt;&lt;a href="http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO"&gt;http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kernel Tweaking&lt;br /&gt;&lt;a href="http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html"&gt;http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: yellow;"&gt;P.S. If you find this articles useful please pay some attention to the ads.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: yellow;"&gt;Some of them might be interresting to you too. Thanks.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-8185229899119939230?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/8185229899119939230/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2011/06/creating-web-interface-part-2.html#comment-form' title='4 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/8185229899119939230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/8185229899119939230'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2011/06/creating-web-interface-part-2.html' title='Creating web interface (part 2)'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-2035096379443290611</id><published>2011-06-11T05:32:00.000-07:00</published><updated>2011-06-11T05:40:15.169-07:00</updated><title type='text'>Creating web interface</title><content type='html'>&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;FriendlyARM comes with installed Boa web server.&amp;nbsp; &lt;br /&gt;Web interface can be very useful feature for real life applications.&amp;nbsp; &lt;br /&gt;It might be used for editing and storing settings to a file or to access the real world - ADC, GPIO, SPI, Serial. &lt;br /&gt;&lt;br /&gt;The purpose of this tutorial is to show the basics of creating a simple web interface using CGI in C. &lt;br /&gt;&lt;br /&gt;All that you need is mini2440 board with or without LCD and PC with GCC cross-compiler&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;a href="http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.4.3.tgz"&gt;http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.4.3.tgz&lt;/a&gt;&lt;br /&gt;On my mini2440 I have SD card installed. If&amp;nbsp; you do not have any you have to make some changes to the code. &lt;br /&gt;&lt;br /&gt;Example 1: &lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;The example consists of the following files:&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;index.html&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;template.html&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;savefile.c&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;showfile.c&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;This web interface opens &lt;i&gt;example.txt&lt;/i&gt; text file from the flash and shows it on a web page.&amp;nbsp; &lt;br /&gt;The user can edit it and store it back. &lt;br /&gt;&lt;br /&gt;The first file is &lt;i&gt;index.html&lt;/i&gt;. When you type the IP address of the FriendlyARM board into a web browser Boa&amp;nbsp; &lt;br /&gt;searches for &lt;i&gt;index.html&lt;/i&gt; in /www&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;i&gt;index.html: &lt;/i&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="background-color: white; color: black; font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;span style="font-size: small;"&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;HEAD&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TITLE&amp;gt;REDIRECTING...&amp;lt;/TITLE&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv="Refresh" content="3;url=./cgi-bin/showfile.cgi"&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/HEAD&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;lt;BODY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redirecting in 3 seconds...&lt;br /&gt;&amp;nbsp; &amp;lt;/BODY&amp;gt;&lt;br /&gt;&amp;lt;/HTML&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: white; color: black; font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;The only purpose of this web page is to redirect the browser to another URL and in particular this is the &lt;i&gt;showfile.cgi &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;What is CGI? This is a program. It might be a script file or an executable written in no matter what programming language. &lt;br /&gt;You can write CGI in C,Basic or even Assembler. This executable is called by the web server.&amp;nbsp; &lt;br /&gt;CGI program captures data reading environment variables and the output data is sent to the console.&amp;nbsp; &lt;br /&gt;The web server captures this output and sends it back to the client's browser. &lt;br /&gt;&lt;br /&gt;Two CGI programs are used in this example - &lt;i&gt;showfile.cgi&lt;/i&gt; and &lt;i&gt;savefile.cgi &lt;/i&gt;&lt;br /&gt;When the web server calls &lt;i&gt;showfile.cgi&lt;/i&gt; it reads file&lt;i&gt; template.html&lt;/i&gt; from flash and sends it's contents to the console. &lt;br /&gt;The contents of &lt;i&gt;example.txt&lt;/i&gt; are sent between &amp;lt;/TEXTAREA&amp;gt; and &amp;lt;/TEXTAREA&amp;gt; tags.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;template.html&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;&lt;b&gt;&lt;span style="background-color: white; color: black;"&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;HEAD&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TITLE&amp;gt;EDIT TEXT FILE&amp;lt;/TITLE&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/HEAD&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;lt;BODY&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FORM name="input" action="./savefile.cgi" method= "get"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TEXTAREA NAME=textarea ROWS=10 COLS=60&amp;gt;&lt;br /&gt;&amp;lt;!-- /TEXTAREA --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;INPUT type="submit" value="Submit" /&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;INPUT type="reset" value="Undo changes" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/FORM&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;lt;/BODY&amp;gt;&lt;br /&gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;showfile.c &lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="background-color: white; color: black;"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main() &lt;br /&gt;{&lt;br /&gt;//Open template.html file. If unable to open show error web page and return&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE * htmlTemplate;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; htmlTemplate =&amp;nbsp; fopen("/sdcard/html/template.html","r");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(htmlTemplate == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%s%c%c\n",&amp;nbsp;&amp;nbsp;&amp;nbsp; "Content-Type:text/html;charset=iso-8859-1",13,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;ERROR!&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BODY&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;H3&amp;gt;ERROR: Unable to open template.html!&amp;lt;/H3&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;//Open example.txt file. If it doesn't exist a new empty file will be created.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE * textFile;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textFile =&amp;nbsp; fopen("/sdcard/example.txt","a+");&lt;br /&gt;&lt;br /&gt;//start sending template.html to the console&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char row[1000]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Set-Cookie:MY_COOKIE=ThisIsCookieJustForFun\n"); //This line is only to demonstrate how to set cookie &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%s%c%c\n",&amp;nbsp;&amp;nbsp;&amp;nbsp; "Content-Type:text/html;charset=iso-8859-1",13,10);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(fgets(row,999,htmlTemplate))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf(row);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(strstr(row,"&amp;lt;TEXTAREA") != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(textFile != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {//send example.txt to the console&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while(fgets(row,999,textFile))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf(row);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;/TEXTAREA&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(htmlTemplate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(textFile);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;savefile.c &lt;/u&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main() &lt;br /&gt;{&lt;br /&gt;//Open example.txt file. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE * textFile;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textFile =&amp;nbsp; fopen("/sdcard/example.txt","w");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char * query;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query = getenv("QUERY_STRING");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%s%c%c\n",&amp;nbsp;&amp;nbsp;&amp;nbsp; "Content-Type:text/html;charset=iso-8859-1",13,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;FILE SAVED&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BODY&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(textFile != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {// save file to disk&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //cut the beginning if it starts with "textarea="&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(strstr(query,"textarea=") != NULL) fprintf(textFile,&amp;amp;query[9]); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else fprintf(textFile,query);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;H3&amp;gt;File example.txt was saved to SD card&amp;lt;/H3&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else printf("&amp;lt;H3&amp;gt;Failed to save example.txt. Reason - unable to open file for writing.&amp;lt;/H3&amp;gt;\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("QUERY_STRING:%s&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;\n",query);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;a href=\"./showfile.cgi\"&amp;gt;Return to edit example.txt&amp;lt;/a&amp;gt;\n");&lt;br /&gt;&lt;br /&gt;//Nex code is just for fun. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;HR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt; Now let's read some environment variables just for fun&amp;lt;BR&amp;gt;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *envvar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("HTTP_COOKIE");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;HTTP_COOKIE=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("SERVER_SOFTWARE");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;SERVER_SOFTWARE=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("SERVER_NAME");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;SERVER_NAME=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("GATEWAY_INTERFACE");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;GATEWAY_INTERFACE=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("SERVER_PROTOCOL");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;SERVER_PROTOCOL=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("SERVER_PORT");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;SERVER_PORT=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("REQUEST_METHOD");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;REQUEST_METHOD=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("SCRIPT_NAME");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;SCRIPT_NAME=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("REMOTE_ADDR");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;REMOTE_ADDR=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("CONTENT_TYPE");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;CONTENT_TYPE=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("CONTENT_LENGTH");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;CONTENT_LENGTH=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("HTTP_USER_AGENT");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;HTTP_USER_AGENT=%s",envvar);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; envvar=getenv("HTTP_REFERER");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;BR&amp;gt;HTTP_REFERER=%s",envvar);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(textFile);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;                                                                              &lt;/i&gt;&lt;br /&gt;Compile it with command &lt;br /&gt;&lt;i style="background-color: #fff2cc;"&gt;arm-linux-gcc showfile.c -o showfile.cgi &lt;br /&gt;arm-linux-gcc savefile.c -o savefile.cgi &lt;/i&gt;&lt;span style="background-color: #fff2cc;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When "Submit" is clicked on the web page content of the text area is sent back to the web server &lt;br /&gt;and savefile.cgi is called. (Note the FORM tag in &lt;i&gt;template.html&lt;/i&gt;) &lt;br /&gt;Used method is "GET" and data is retrieved from the environment variable QUERY_STRING. &lt;br /&gt;If "POST" method is used reading data is read from stdin. &lt;br /&gt;NOTE: When data is sent back to server some special characters are encoded to %XX format. They have to be decoded before saving them to file. To keep this example simple I omitted this step. &lt;br /&gt;&lt;br /&gt;Only for demonstration a cookie MY_COOKIE is set and reading some environment variables is implemented. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Upload files to the board: &lt;br /&gt;index.html&amp;nbsp;&amp;nbsp;&amp;nbsp; -- /www &lt;br /&gt;showfile.cgi&amp;nbsp; -- /www/cgi-bin &lt;br /&gt;savefile.cgi&amp;nbsp; -- /www/cgi-bin &lt;br /&gt;template.html -- /sdcard/html &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;change permissions to execute cgi files with: &lt;br /&gt;&lt;i style="background-color: #fff2cc;"&gt;[root@FriendlyARM cgi-bin]# chmod a+x showfile.cgi &lt;br /&gt;[root@FriendlyARM cgi-bin]# chmod a+x savefile.cgi &lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: white; color: black;"&gt;&lt;span style="font-size: small;"&gt;If you miss to do it you will get error&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b&gt;&amp;nbsp; 502 Bad Gateway &lt;br /&gt;&amp;nbsp;&amp;nbsp; The CGI was not CGI/1.1 compliant. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LINKS: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;HTML Tutorial &lt;br /&gt;&lt;a href="http://www.w3schools.com/html/default.asp"&gt;http://www.w3schools.com/html/default.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More on CGI &lt;br /&gt;&lt;a href="http://www.jmarshall.com/easy/cgi/"&gt;http://www.jmarshall.com/easy/cgi/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;cgic: an ANSI C library for CGI Programming &lt;br /&gt;&lt;a href="http://www.boutell.com/cgic/"&gt;http://www.boutell.com/cgic/&lt;/a&gt;&lt;br /&gt;Excellent library that can save you a lot of typing. &lt;br /&gt;&lt;br /&gt;iniParser: stand-alone ini parser library in ANSI C &lt;br /&gt;&lt;a href="http://ndevilla.free.fr/iniparser/"&gt;http://ndevilla.free.fr/iniparser/&lt;/a&gt;&lt;br /&gt;This is excellent library if you have to save and retrieve data from ini files.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-2035096379443290611?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/2035096379443290611/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2011/06/creating-web-interface.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2035096379443290611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2035096379443290611'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2011/06/creating-web-interface.html' title='Creating web interface'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-5989356713514289211</id><published>2010-12-20T00:22:00.000-08:00</published><updated>2010-12-20T00:22:50.203-08:00</updated><title type='text'>Uploading new font</title><content type='html'>It is possible to upload True Type Font&amp;nbsp; to the FriendlyARM&lt;br /&gt;&lt;br /&gt;1. Upload the ttf file to &lt;i&gt;/opt/Qtopia/lib/fonts&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2. Edit the file &lt;i&gt;fontdir&lt;/i&gt; which is text file and on a new board is empty.&lt;br /&gt;Add a line with&amp;nbsp; format:&lt;br /&gt;&lt;pre class="highlightedCode brush: cpp"&gt;&lt;span style="font-size: small;"&gt;name file renderer italic weight size flags&lt;/span&gt;&lt;/pre&gt;&lt;pre class="highlightedCode brush: cpp"&gt;&amp;nbsp;&lt;/pre&gt;&lt;table class="generic"&gt;&lt;thead&gt;&lt;tr class="qt-style topAlign"&gt;&lt;th&gt;Field&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt; &lt;tbody&gt;&lt;tr class="odd topAlign"&gt;&lt;td&gt;&lt;b&gt;name&lt;/b&gt;&lt;/td&gt;&lt;td&gt;The name of the font format, e.g.,&lt;tt&gt;Helvetica&lt;/tt&gt;, &lt;tt&gt;Times&lt;/tt&gt;, etc.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even topAlign"&gt;&lt;td&gt;&lt;b&gt;file&lt;/b&gt;&lt;/td&gt;&lt;td&gt;The name of the file containing the font, e.g., &lt;tt&gt;helvR0810.bdf&lt;/tt&gt;, &lt;tt&gt;verdana.ttf&lt;/tt&gt;, etc.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd topAlign"&gt;&lt;td&gt;&lt;b&gt;renderer&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Specifies the font engine that should be used to render the font, currently only the &lt;a href="http://doc.qt.nokia.com/main-snapshot/qt-embedded-fonts.html#freetype"&gt;FreeType&lt;/a&gt; font engine (&lt;tt&gt;FT&lt;/tt&gt;) is supported.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even topAlign"&gt;&lt;td&gt;&lt;b&gt;italic&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Specifies whether the font is italic or not; the accepted values are &lt;tt&gt;y&lt;/tt&gt; or &lt;tt&gt;n&lt;/tt&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd topAlign"&gt;&lt;td&gt;&lt;b&gt;weight&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Specifies the font's weight: &lt;tt&gt;50&lt;/tt&gt; is normal, &lt;tt&gt;75&lt;/tt&gt; is bold, etc.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even topAlign"&gt;&lt;td&gt;&lt;b&gt;size&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Specifies the font size, i.e., point size * 10. For example, a value of 120 means 12pt. A value of 0 means that the font is scalable.&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd topAlign"&gt;&lt;td&gt;&lt;b&gt;flags&lt;/b&gt;&lt;/td&gt;&lt;td&gt;The following flag is supported:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;s&lt;/tt&gt;: smooth (anti-aliased)&lt;/li&gt;&lt;/ul&gt;All other flags are ignored.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;pre class="highlightedCode brush: cpp"&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;For example to use Hebar for applications with cyrillic interface I add:&lt;br /&gt;&lt;i&gt;&lt;span style="background-color: #ffe599;"&gt;hebar hen.ttf FT n 50 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="background-color: white;"&gt;Now without restart the font is accessible from Settings-Appearance-Font&amp;nbsp;&lt;/span&gt;&lt;i&gt;&lt;span style="background-color: #ffe599;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="background-color: #ffe599;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-5989356713514289211?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/5989356713514289211/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/12/uploading-new-font.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/5989356713514289211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/5989356713514289211'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/12/uploading-new-font.html' title='Uploading new font'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-2717078416095254147</id><published>2010-12-19T23:49:00.000-08:00</published><updated>2011-08-15T11:44:57.656-07:00</updated><title type='text'>Stop the LED player!</title><content type='html'>If you need to use those GPIO pins connected to onboard LEDs the LED player should be stopped. To do this telnet to the board and with &lt;i&gt;vi&lt;/i&gt; open this script file &lt;i&gt;/etc/init.d/rcS&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #ffe599;"&gt;[root@FriendlyARM init.d]# vi rcS&lt;/span&gt;&lt;br /&gt;(The beginning of the file omitted)&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;------------------------------------------------------------------------------------------------------------------- &lt;br /&gt;&lt;i&gt;syslogd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;/etc/rc.d/init.d/netd start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;echo "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;gt; /dev/tty1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;echo "Starting networking..." &amp;gt; /dev/tty1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;sleep 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;/etc/rc.d/init.d/httpd start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;echo "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;gt; /dev/tty1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;echo "Starting web server..." &amp;gt; /dev/tty1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;sleep 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span style="background-color: #ffd966;"&gt;#/etc/rc.d/init.d/leds start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comment out these lines!&lt;/span&gt;&lt;br style="background-color: #ffd966;" /&gt;&lt;span style="background-color: #ffd966;"&gt;#echo "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;gt; /dev/tty1&lt;/span&gt;&lt;br style="background-color: #ffd966;" /&gt;&lt;span style="background-color: #ffd966;"&gt;#echo "Starting leds service..." &amp;gt; /dev/tty1&lt;/span&gt;&lt;br style="background-color: #ffd966;" /&gt;&lt;span style="background-color: #ffd966;"&gt;#echo "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="background-color: #ffd966;" /&gt;&lt;span style="background-color: #ffd966;"&gt;#sleep 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="background-color: #ffd966;" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;/sbin/ifconfig lo 127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;/etc/init.d/ifconfig-eth0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;/bin/qtopia &amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;echo "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;gt; /dev/tty1&lt;br /&gt;echo "Starting Qtopia, please waiting..." &amp;gt; /dev/tty1&lt;/i&gt;&lt;br /&gt;-------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Thats it. You can also remove&amp;nbsp; "sleep 1" and win two seconds faster boot time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-2717078416095254147?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/2717078416095254147/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/12/stop-that-led-player.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2717078416095254147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2717078416095254147'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/12/stop-that-led-player.html' title='Stop the LED player!'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-2839890080828148908</id><published>2010-07-28T01:21:00.000-07:00</published><updated>2010-07-28T01:21:40.126-07:00</updated><title type='text'>Demo application - serial port and GPIO control.</title><content type='html'>These days I've made a project for my FriendlyARM 7" board.&amp;nbsp; &lt;br /&gt;It demonstrates RS232 data transmission/reception and access to the GPIO pins. To test the serial port I used a serial-to-usb cable. The project seems to work as intended so I decided to share it:&lt;br /&gt;&lt;a href="http://rapidshare.com/files/409529027/stivlib_serial_gpio_demo_25JUL2010.zip.html"&gt;http://rapidshare.com/files/409529027/stivlib_serial_gpio_demo_25JUL2010.zip.html&lt;/a&gt;&lt;br /&gt;It can be used as starting point for learning.&amp;nbsp; The code may be modified and used freely without any waranty. &lt;br /&gt;&lt;br /&gt;The whole working folder is included in the archive. Here are the files:&lt;br /&gt;&lt;br /&gt;stivlib.pro - the Project file. This is a text file. Source and header files are described in it. If new files have to be added to the project&amp;nbsp; they must be described in this file &lt;br /&gt;&lt;br /&gt;&lt;i&gt;stivlib.png&lt;/i&gt; - image file used for icone of the desktop launcher&lt;br /&gt;&lt;i&gt;stivlib.desktop&lt;/i&gt; - text file. This is the desktop launcher.&lt;br /&gt;&lt;i&gt;stivlib&lt;/i&gt; - binary file. Compiled execteable. &lt;br /&gt;In the previous post was described how to upload these files to the board. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;serialport.h serialport.cpp&lt;/i&gt; - SerialPort class. It allows sending and recieving serial data and also control of RTS,CTS,DSR,DTR,DCD and RI pins.&lt;br /&gt;&lt;i&gt;gpio.h gpio.cpp&lt;/i&gt; - GPIO class. Each instance of this class controls one pin of the GPIO header. Refer to the documentation for the pin functions.&amp;nbsp; For example pin 31 controls the buzzer.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;MainWindow.ui &lt;/i&gt;- xml file generated by Qt Creator. May be modified with text editor.&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;MainWindow.h MainWindow.cpp&lt;/i&gt; - here is defined the class of the main form dialog frmMainWindow. Connection between the SIGNALS and SLOTS are implemented here. These files are automaticaly generated with &lt;i&gt;formuic&lt;/i&gt; script.&amp;nbsp;&amp;nbsp; Do not modify them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;MainWindowImp.h MainWindowImp.cpp &lt;/i&gt;- In these files frmMainWindowImplementation class inherits frmMainWindow. The functionalyty of the application is implemented in this class. &lt;br /&gt;&lt;br /&gt;main.cpp - it contains macroses for generating the application.&lt;br /&gt;&lt;br /&gt;formuic - this script runs uic - user interface compiler. This script should be run each time modifications to MainForm.ui are made. New &lt;i&gt;MainWindow.h MainWindow.cpp &lt;/i&gt;will be generated&lt;br /&gt;&lt;br /&gt;build - this script runs the compiler and bilds the application&lt;br /&gt;&lt;br /&gt;Makefile - the Mkefile is automaticaly generated. Do not modify it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To have access to the GPIO the driver must be included to the linux kernel.&lt;br /&gt;This is a link to compiled image with included drivers for GPIO and SPI. I have not tested the SPI yet.&amp;nbsp; It's for 7" display!&lt;br /&gt;&lt;a href="http://rapidshare.com/files/409529369/zImage-2.6.32.2-mini2440_gpio_spi.html"&gt;http://rapidshare.com/files/409529369/zImage-2.6.32.2-mini2440_gpio_spi.html&lt;/a&gt;&lt;br /&gt;Great thanks to Eric Brombaugh for his page which helped me to compile and upload the kernel.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html"&gt;http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-2839890080828148908?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/2839890080828148908/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/07/demo-application-serial-port-and-gpio.html#comment-form' title='9 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2839890080828148908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2839890080828148908'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/07/demo-application-serial-port-and-gpio.html' title='Demo application - serial port and GPIO control.'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-2651851171837512218</id><published>2010-07-18T04:20:00.000-07:00</published><updated>2010-07-18T12:45:18.799-07:00</updated><title type='text'>Uploading the application and creating the launcher</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_7zqJObaqs7Q/TELjT1daM8I/AAAAAAAAAAk/52h0lgoqvbQ/s1600/P7140184.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_7zqJObaqs7Q/TELjT1daM8I/AAAAAAAAAAk/52h0lgoqvbQ/s320/P7140184.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Qtopia file system:&lt;br /&gt;/opt/Qtopia/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--apps/&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |-Application/&amp;nbsp; --each folder is a desktop tab.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |-FriendlyARM/&amp;nbsp;&amp;nbsp;&amp;nbsp; in these folders are .desktop files &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |-Games/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |-Settings/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--pics/&amp;nbsp;&amp;nbsp; -applications icone folder&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--bin/&amp;nbsp;&amp;nbsp;&amp;nbsp; -applications executables&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--help/&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.Preparation&lt;/b&gt;&lt;br /&gt;Prepare a .png file for desktop icon of your application. &lt;br /&gt;Place it into the project folder and give it the same name as the binary file:stivlib.png&lt;br /&gt;Create the stivlib.desctop file. This is a text file with the following content:&lt;br /&gt;&lt;br /&gt;[Desktop Entry]&lt;br /&gt;Version=1.0&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Name=StivLib &lt;br /&gt;Comment=An Example Program&lt;br /&gt;Exec=stivlib&lt;br /&gt;Icon=stivlib&lt;br /&gt;Type=Application&lt;br /&gt;GenericName[en_US]=&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Connect your PC to FriendlyARM witn network cable, and open a terminal.&lt;/b&gt;&lt;br /&gt;FriendlyARM board comes with preset IP 192.168.1.230.&lt;br /&gt;Set your IP address, telnet to FriendlyARM and set root password:&lt;br /&gt;&lt;br /&gt;# &lt;span style="background-color: #ffe599;"&gt;su&lt;/span&gt;&lt;br /&gt;# &lt;span style="background-color: #ffe599;"&gt;ifconfig eth0 192.168.1.1 netmask 255.255.255.0&lt;/span&gt;&lt;br /&gt;# &lt;span style="background-color: #ffe599;"&gt;telnet 192.168.1.230&lt;/span&gt;&lt;br /&gt;Trying 192.168.1.230...&lt;br /&gt;Connected to 192.168.1.230.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Kernel 2.6.32.2-FriendlyARM on (/dev/pts/0)&lt;br /&gt;FriendlyARM login: &lt;span style="background-color: #ffe599;"&gt;root&lt;/span&gt;&lt;br /&gt;[root@FriendlyARM /]#&lt;span style="background-color: #ffe599;"&gt; passwd&lt;/span&gt;&lt;br /&gt;Changing password for root&lt;br /&gt;New password:&lt;br /&gt;Retype password:&lt;br /&gt;Password for root changed by root&lt;br /&gt;[root@FriendlyARM /]#&lt;br /&gt;&lt;br /&gt;3. Make a folder into /opt/Qtopia/apps for your applications. &lt;br /&gt;These folders appear like desktop tabs.&lt;br /&gt;&lt;br /&gt;[root@FriendlyARM /]#&lt;span style="background-color: #ffe599;"&gt; cd /opt/Qtopia/apps&lt;/span&gt;&lt;br /&gt;[root@FriendlyARM apps]# &lt;span style="background-color: #ffe599;"&gt;ls &lt;/span&gt;&lt;br /&gt;Applications&amp;nbsp; FriendlyARM&amp;nbsp;&amp;nbsp; Games&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings&lt;br /&gt;[root@FriendlyARM apps]#&lt;span style="background-color: #ffe599;"&gt; mkdir STIV&lt;/span&gt;&lt;br /&gt;[root@FriendlyARM apps]# &lt;span style="background-color: #ffe599;"&gt;ls&lt;/span&gt;&lt;br /&gt;Applications&amp;nbsp; FriendlyARM&amp;nbsp;&amp;nbsp; Games&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STIV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings&lt;br /&gt;[root@FriendlyARM apps]#&lt;span style="background-color: #ffe599;"&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Upload binary file to FriendlyARM using ftp&lt;/b&gt;. &lt;b&gt;Upload the icone file and the .desktop file&lt;/b&gt;&lt;br /&gt;Go to your project folder where is your binary file.&lt;br /&gt;&lt;br /&gt;# &lt;span style="background-color: #ffe599;"&gt;ftp 192.168.1.230&lt;/span&gt;&lt;br /&gt;Connected to 192.168.1.230.&lt;br /&gt;220 FriendlyARM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.&lt;br /&gt;Name (192.168.1.230:svilen): &lt;span style="background-color: #ffe599;"&gt;root&lt;/span&gt;&lt;br /&gt;331 Password required for root.&lt;br /&gt;Password:&lt;br /&gt;230 User root logged in.&lt;br /&gt;Remote system type is UNIX.&lt;br /&gt;Using binary mode to transfer files.&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;cd opt/Qtopia/bin&lt;/span&gt;&lt;br /&gt;250 CWD command successful.&lt;br /&gt;ftp&amp;gt;&lt;span style="background-color: #ffe599;"&gt; send stivlib&lt;/span&gt;&lt;br /&gt;local: stivlib remote: stivlib&lt;br /&gt;200 PORT command successful.&lt;br /&gt;150 Opening BINARY mode data connection for 'stivlib'.&lt;br /&gt;226 Transfer complete.&lt;br /&gt;41481 bytes sent in 0.25 secs (162.7 kB/s)&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;cd ..&lt;/span&gt;&lt;br /&gt;250 CWD command successful.&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;cd pics&lt;/span&gt;&lt;br /&gt;250 CWD command successful.&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;send stivlib.png&lt;/span&gt;&lt;br /&gt;local: stivlib.png remote: stivlib.png&lt;br /&gt;200 PORT command successful.&lt;br /&gt;150 Opening BINARY mode data connection for 'stivlib.png'.&lt;br /&gt;226 Transfer complete.&lt;br /&gt;2743 bytes sent in 0.00 secs (62295.6 kB/s)&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;cd ..&lt;/span&gt;&lt;br /&gt;250 CWD command successful.&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;cd apps/STIV&lt;/span&gt;&lt;br /&gt;250 CWD command successful.&lt;br /&gt;ftp&amp;gt; &lt;span style="background-color: #ffe599;"&gt;send stivlib.desktop &lt;/span&gt;&lt;br /&gt;local: stivlib.desktop remote: stivlib.desktop&lt;br /&gt;200 PORT command successful.&lt;br /&gt;150 Opening BINARY mode data connection for 'stivlib.desktop'.&lt;br /&gt;226 Transfer complete.&lt;br /&gt;146 bytes sent in 0.00 secs (9505.2 kB/s)&lt;br /&gt;ftp&amp;gt;&lt;span style="background-color: #ffe599;"&gt; bye&lt;/span&gt;&lt;br /&gt;221 Goodbye.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.Now telnet again to FriendlyARM to change the attributes of the uploaded file.&lt;/b&gt;&lt;br /&gt;It shoul become executable&lt;br /&gt;&lt;br /&gt;#&lt;span style="background-color: #ffe599;"&gt; telnet 192.168.1.230&lt;/span&gt;&lt;br /&gt;Trying 192.168.1.230...&lt;br /&gt;Connected to 192.168.1.230.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;Kernel 2.6.32.2-FriendlyARM on (/dev/pts/0)&lt;br /&gt;FriendlyARM login: &lt;span style="background-color: #ffe599;"&gt;root&lt;/span&gt;&lt;br /&gt;Password: &lt;br /&gt;[root@FriendlyARM /]# &lt;span style="background-color: #ffe599;"&gt;cd /opt/Qtopia/bin/&lt;/span&gt;&lt;br /&gt;[root@FriendlyARM bin]# &lt;span style="background-color: #ffd966;"&gt;chmod a+x stivlib &lt;/span&gt;&lt;br /&gt;[root@FriendlyARM bin]# &lt;span style="background-color: #ffe599;"&gt;ls&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Restart the board. &lt;br /&gt;&lt;br /&gt;Useful links:&lt;br /&gt;Read about Qtopia filesystem standarts on http://doc.trolltech.com/qtopia2.2/html/files.html&lt;br /&gt;vi editor quick refference http://www.digilife.be/quickreferences/QRC/vi%20Quick%20Reference.pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-2651851171837512218?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/2651851171837512218/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/07/uploading-application-and-creating.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2651851171837512218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2651851171837512218'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/07/uploading-application-and-creating.html' title='Uploading the application and creating the launcher'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7zqJObaqs7Q/TELjT1daM8I/AAAAAAAAAAk/52h0lgoqvbQ/s72-c/P7140184.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-6873700962449065983</id><published>2010-07-12T01:14:00.000-07:00</published><updated>2011-06-26T12:51:13.450-07:00</updated><title type='text'>Hello World with GUI application for FrienndlyARM Tutorial</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_7zqJObaqs7Q/TDrEDxyhawI/AAAAAAAAAAc/E8bHCn1Zlyw/s1600/pic1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://1.bp.blogspot.com/_7zqJObaqs7Q/TDrEDxyhawI/AAAAAAAAAAc/E8bHCn1Zlyw/s640/pic1.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here are the steps of creating a simple "Hello world" GUI application for FriendlyARM board.&amp;nbsp;&amp;nbsp; You should have development tools ARM-Linux GCC 4.3.2 and ARM-Qtopia 2.2.0 already installed.&amp;nbsp; If you don't have them yet you can download them from here: &lt;a href="http://www.friendlyarm.net/downloads"&gt;http://www.friendlyarm.net/downloads&lt;/a&gt;&lt;br /&gt;My PC is working under Ubuntu 8.04. and the path of Qtopia installation is /usr/local.&amp;nbsp; I know that my environment is not quite correctly set.That's why I do some steps as root and source some environment variables from file setQpeEnv. But it works.&lt;br /&gt;&lt;br /&gt;Here are the steps: &lt;br /&gt;&lt;b&gt;1. With Qt Designer create the main form.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;Remark:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;Qt Designer comes with the "ARM-Qtopia 2.2.0". It's executable is:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;/usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/designer&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;The screenshot above is from this tool.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #990000;"&gt;&lt;span style="font-size: small;"&gt;Do not try newer versions of Qt Creator. They are not compatible.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;From File-New select "Dialog" template.&amp;nbsp;&lt;b&gt; &lt;/b&gt;Change the "name" property to frmMainWindow. This will be the name of the form class.&amp;nbsp; Save it as MainWindow.ui. This is an XML file. You can view and edit it's contents with text editor.&amp;nbsp; For example if you want to add tabs to TabWidget this is the only option. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Create a script file "build" for building the application with following content: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;#!/bin/bash &lt;br /&gt;source /usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv&amp;nbsp; &lt;br /&gt;qmake -spec /usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -o Makefile *.pro&amp;nbsp; &lt;br /&gt;make clean &lt;br /&gt;make &lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;3.Create a script file "formuic" for compiling the .ui form file with the following content &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;echo MAIN FORM &lt;br /&gt;echo HEADER &lt;br /&gt;/usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/uic -o MainWindow.h MainWindow.ui &lt;br /&gt;echo CLASS &lt;br /&gt;/usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/uic -i MainWindow.h -o&amp;nbsp; MainWindow.cpp MainWindow.ui&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Open a terminal window and go to the project folder. Run the script: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./formuic &lt;br /&gt;The uic tool (user interface compiler) takes the .ui file.&amp;nbsp; &lt;br /&gt;When MainWindow.ui is compiled two source files are created - a header and cpp. They content the form class "frmMainWindow". &lt;br /&gt;&amp;nbsp;&lt;b&gt;&lt;br /&gt;4. Create two files main.cpp , MainWindowImp.h and MainWindowImp.cpp with the following contents: &lt;/b&gt;&lt;br /&gt;main.cpp&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;#include &amp;lt;qtopia/qpeapplication.h&lt;qtopia qpeapplication.h=""&gt;&amp;gt;&lt;br /&gt;#include "MainWindowImp.h" &lt;mainwindowimp.h&gt; &lt;br /&gt;&lt;br /&gt;QTOPIA_ADD_APPLICATION("stivlib",frmMainWindowImplementation) &lt;br /&gt;QTOPIA_MAIN &lt;/mainwindowimp.h&gt;&lt;/qtopia&gt;&lt;/span&gt;&lt;/blockquote&gt;QTOPIA_ADD_APPLICATION macro takes two parameters. The first is "stivlib"&amp;nbsp; - the name of the project.&amp;nbsp; The second frmMainWindowImplementation is the name of the class from MainWindowImp.h &lt;br /&gt;&lt;br /&gt;MainWindowImp.h &lt;br /&gt;In this file a new class frmMainWindowImplementation is defined which inherits the form class frmMainWindow.&amp;nbsp; This is done because each time you make changes to you form with Qt Designer and the .ui file is compiled any changes made in MainWindow.h and MainWindow.cpp will be lost. All the functional implementations like new variables definitions and new methods should be done in this new class.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;/**************************************************************************** &lt;br /&gt;** Created: Sun Jul 11 18:05:02 2010 &lt;br /&gt;**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by:&amp;nbsp; Svilen Stavrev &lt;br /&gt;** Implementation Class for the main form &lt;br /&gt;****************************************************************************/ &lt;br /&gt;#ifndef FRMMAINWINDOWIMP_H &lt;br /&gt;#define FRMMAINWINDOWIMP_H &lt;br /&gt;&lt;br /&gt;#include "MainWindow.h" &lt;br /&gt;&lt;br /&gt;class frmMainWindowImplementation : public frmMainWindow &lt;br /&gt;{&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Q_OBJECT &lt;br /&gt;&lt;br /&gt;public: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; frmMainWindowImplementation( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 )&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; : frmMainWindow(parent,name,modal,fl) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Constructor &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}; &lt;br /&gt;#endif // FRMMAINWINDOW_H &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;MainWindowImp.cpp &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;/************************************************ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;** Created: Sun Jul 11 18:05:02 2010 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by:&amp;nbsp; Svilen Stavrev &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;** Implementation Class for the main form &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;************************************************/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;#include "MainWindowImp.h" &lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;5. Generate the .pro (project) file using the qmake tool: &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $su &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #source&amp;nbsp; /usr/local/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #qmake -project &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;A project file stivlib.pro has been created. &lt;br /&gt;Open it with the text editor and add these lines: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;TARGET=stivlib&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #cc0000; font-size: x-small;"&gt;&amp;lt;-- This is the exact name of the target executable file. No extension .bin will be added &lt;/span&gt;&lt;br /&gt;CONFIG += qtopiaapp &lt;br /&gt;CONFIG -= buildQuicklaunch &lt;/blockquote&gt;&lt;b&gt;5. Build the application &lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #./build &lt;/blockquote&gt;Voila! The binary file stivlib is now in the project folder.&amp;nbsp; &lt;br /&gt;On my next post I'll show how to upload it to the FriendlyARM board and how to create a desktop launcher.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-6873700962449065983?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/6873700962449065983/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/07/hello-world-with-gui-application-for.html#comment-form' title='22 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/6873700962449065983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/6873700962449065983'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/07/hello-world-with-gui-application-for.html' title='Hello World with GUI application for FrienndlyARM Tutorial'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7zqJObaqs7Q/TDrEDxyhawI/AAAAAAAAAAc/E8bHCn1Zlyw/s72-c/pic1.bmp' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6125613833723663356.post-2689775959509323093</id><published>2010-05-27T12:46:00.001-07:00</published><updated>2010-07-12T01:18:50.289-07:00</updated><title type='text'>Test</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_7zqJObaqs7Q/S_7MY4qCPyI/AAAAAAAAAAM/Pou08BcP-Tw/s1600/20090625-s3img_16609868_11740_1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5476038924826722082" src="http://2.bp.blogspot.com/_7zqJObaqs7Q/S_7MY4qCPyI/AAAAAAAAAAM/Pou08BcP-Tw/s320/20090625-s3img_16609868_11740_1.jpg" style="cursor: pointer; float: left; height: 320px; margin: 0pt 10px 10px 0pt; width: 320px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6125613833723663356-2689775959509323093?l=farm2440.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://farm2440.blogspot.com/feeds/2689775959509323093/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://farm2440.blogspot.com/2010/05/test-2.html#comment-form' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2689775959509323093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6125613833723663356/posts/default/2689775959509323093'/><link rel='alternate' type='text/html' href='http://farm2440.blogspot.com/2010/05/test-2.html' title='Test'/><author><name>s_stavrev</name><uri>http://www.blogger.com/profile/05899748365172217140</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-syW-FEeZFh4/TftyPXvDAmI/AAAAAAAAABE/vR35phxc8cU/s220/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7zqJObaqs7Q/S_7MY4qCPyI/AAAAAAAAAAM/Pou08BcP-Tw/s72-c/20090625-s3img_16609868_11740_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
