<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JEFFREY&#039;s Log</title>
	<atom:link href="http://jeffrey.co.in/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeffrey.co.in/blog</link>
	<description>Blog about My Life, Open Hardware, Free Software</description>
	<lastBuildDate>Sun, 06 May 2012 10:02:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BlueBoard LPC1768 Header board review</title>
		<link>http://jeffrey.co.in/blog/2012/05/blueboard-lpc1768-header-board-review/</link>
		<comments>http://jeffrey.co.in/blog/2012/05/blueboard-lpc1768-header-board-review/#comments</comments>
		<pubDate>Sun, 06 May 2012 10:00:13 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Circuit]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=496</guid>
		<description><![CDATA[Above shown is a BlueBoard LPC1768 header board. I got this board from NGX technologies. This board contains an ARM cortex M3 based LPC1768 microcontroller from NXP (Philips). NGX technologies has similar ARM development boards which can be purchased from &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2012/05/blueboard-lpc1768-header-board-review/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://www.jeffrey.co.in/images/lpc1768.JPG" alt="BlueBoard LPC1768" /></p>
<p>Above shown is a BlueBoard LPC1768 header board. I got this board from <a href="http://www.ngxtech.com/">NGX technologies</a>. This board contains an ARM cortex M3 based LPC1768 microcontroller from NXP (Philips). NGX technologies has similar ARM development boards which can be purchased from their <a href="http://shop.ngxtechnologies.com/">webshop</a>.</p>
<p>NGX technologies BlueBoard LPC1768 header board is of size 95mm x 55mm size. It has an power connector to connect DC power. The board can also be powered using its mini USB port. It also contains an LED and a switch(other than the rest switch) for basic operation. All the pins of the controller can be accessed through the header pin port. It also contains an JTAG port for debugging the ARM microcontroller. There is also an EEPROM chip to store information which is independent of the power.</p>
<p>The greatest advantage of this board is that it can be flashed using its USB port. There is no seperate flashing tool hardware or software needed. Just plug the board into the USB port and press a button sequence. The board will appear as an mass storage device(like our USB pen drives). The compiled bin just has to be pasted into the drive. Once the reset button is pressed, the new compiled software will start to work. More information can be found from here.</p>
<p>These type of header boards are really helpful when you want to prototype your designs. Its really hard for a newbie or even time consuming for an expert to design a PCB for the microcontroller and then start development. This board contains all the basic circuit to bring up the microcontroller and start development.</p>
<p>Some useful links<br />
1) Google code page(contains complete source code and hardware design): <a href="http://code.google.com/p/blueboard-lpc1768/">http://code.google.com/p/blueboard-lpc1768/</a><br />
2) Product page(Contains more information about this products and various tools): <a href="http://shop.ngxtechnologies.com/product_info.php?cPath=21&amp;products_id=65">http://shop.ngxtechnologies.com/product_info.php?cPath=21&amp;products_id=65</a><br />
3) Documents form NXP for LPC1768: <a href="http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1768">http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC1768</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2012/05/blueboard-lpc1768-header-board-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How are devices reverse engineered</title>
		<link>http://jeffrey.co.in/blog/2011/11/how-are-devices-reverse-engineered/</link>
		<comments>http://jeffrey.co.in/blog/2011/11/how-are-devices-reverse-engineered/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 21:06:37 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Reverse engineering]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=487</guid>
		<description><![CDATA[This post contains mail written by me to the famous hacker Héctor Martín. The mail was regarding the basic steps in reverse engineering devices. -- MAIL BEGIN -- &#62; 1) After opening a device, how do you understand which chip &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/11/how-are-devices-reverse-engineered/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">This post contains mail written by me to the famous hacker <a href="http://marcansoft.com/blog/">Héctor Martín</a>. The mail was regarding the basic steps in reverse engineering devices.</p>
<p style="text-align: justify;">-- MAIL BEGIN --<br />
&gt; 1) After opening a device, how do you understand which chip is the CPU ?</p>
<p style="text-align: justify;">This is usually fairly obvious from the layout and the connectivity on the board. It really depends on the device, but it's usually one of the larger chips, and may be connected to Flash memory, and/or to a quartz crystal. On larger devices it will have its own power supply, while on smaller ones the only telltale might be that it's connected to most parts of the board. And of course, often you can just look up the part numbers and figure out what most chips are.</p>
<p style="text-align: justify;">&gt; 2) How are the firmwares extracted from the devices ? Is there a general principle ?</p>
<p style="text-align: justify;">This depends heavily on the device. It can be as easy as connecting to a debug serial port and getting a text-based console into a bootloader that lets you dump the flash. Or it can be as hard as requiring a clock/power glitching setup in order to dump an internal mask ROM buried inside the CPU. Usually if the flash is external, you can remove it and dump it externally, or there might be a JTAG port through which you can read/write it. Microcontrollers with embedded flash usually have programming ports but the code is usually protected from readout; these are nearly impossible to dump unless you know of a specific vulnerability in the particular chip's protection.</p>
<p style="text-align: justify;">&gt; 3) After getting a firmware dump how do you read it ?</p>
<p style="text-align: justify;">If you know the CPU architecture in use, you run it through a disassembler and see if it makes sense. If you don't know the architecture, you can try some educated guesses. After a while you learn to recognize some popular CPU architectures from a simple hex dump (e.g. ARM code sticks out like a sore thumb due to the condition code field, which means that every 32-bit word almost always starts with 'E'). You can just use GNU binutils (objdump) to disassemble code (usually), but the IDA disassembler by Hex-Rays is quite popular in the reverse engineering community (albeit quite pricey). Sometimes the CPU architecture is unknown. I know some crazy people who can eventually make sense of an unknown binary and figure out what the opcodes mean, but I'm not one of them.</p>
<p style="text-align: justify;">And sometimes if the firmware has very high entropy (it looks like "garbage" - no patterns, you learn to recognize this too) it usually means it's either encrypted or compressed, so you might look to see whether you can find an offset after which there's valid compressed data using a popular algorithm (zlib, LZMA, etc...). If it's encrypted sometimes there are blockwise patterns (e.g. duplicated 16byte or 8byte blocks) that often mean it's encrypted using a block cipher in ECB mode.</p>
<p style="text-align: justify;">-- MAIL END --</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/11/how-are-devices-reverse-engineered/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My new Buffalo NAS</title>
		<link>http://jeffrey.co.in/blog/2011/10/my-new-buffalo-nas/</link>
		<comments>http://jeffrey.co.in/blog/2011/10/my-new-buffalo-nas/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:45:04 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[GNUduino]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[hacking devices]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=480</guid>
		<description><![CDATA[Below shown is my new LS-CH1.0TL LinkStation Live 1TB Buffalo-NAS purchased from MediaMarkt (Germany). It supports one of my favourite feature - Its a hackable device! Flashing a new GNU/Linux firmware. Buffalo-NAS is based on GNU/Linux and also they provide &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/10/my-new-buffalo-nas/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Below shown is my new <a href="http://www.buffalotech.com/products/network-storage/home-and-small-office/linkstation-live-ls-chl/">LS-CH1.0TL LinkStation Live 1TB Buffalo-NAS</a> purchased from MediaMarkt (Germany).</p>
<p><img src="http://jeffrey.co.in/images/P1030756.jpg" alt="My Buffalo-NAS with DLINK ethernet switch and Lenovo Laptop" width="802" height="540" /></p>
<p>It supports one of my favourite feature - Its a hackable device! Flashing a new GNU/Linux firmware. Buffalo-NAS is based on GNU/Linux and also they provide its sourcecode in the <a href="http://www.buffalotech.com/support/downloads/linkstation-live-ls-chl/">downloads section webpage</a>.</p>
<p>Also there is an dedicated hack portal for the Buffalo-NAS. Below is the link<br />
Buffalo NAS-Central - <a href="http://buffalo.nas-central.org/wiki/Main_Page">http://buffalo.nas-central.org/wiki/Main_Page</a></p>
<p>I will post some hacks in my web log as I proceed.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/10/my-new-buffalo-nas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Track Every Watt(TEW)</title>
		<link>http://jeffrey.co.in/blog/2011/05/track-every-watttew/</link>
		<comments>http://jeffrey.co.in/blog/2011/05/track-every-watttew/#comments</comments>
		<pubDate>Thu, 26 May 2011 01:41:22 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[GNUduino]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[TrackEveryWatt]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=473</guid>
		<description><![CDATA[Track every Watt(TEW) is one of the new Open Hardware based project which I am working on for the past few weeks. Track Every Watt is a pluggable device which can be used to measure power consumed by an electrical &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/05/track-every-watttew/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Track every Watt(TEW) is one of the new Open Hardware based project which I am working on for the past few weeks. Track Every Watt is a pluggable device which can be used to measure power consumed by an electrical appliance. The device to be measured is connected to the TEW which has an LCD display which shows power consumed and also some additional information. TEW was inspired from <a href="http://www.p3international.com/products/special/p4400/p4400-ce.html">Kill A Watt</a> which is a device that can only measure devices with voltage rating  110V. TEW has a voltage rating of 230V and this is the reason why I started this project.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://jeffrey.co.in/images/P1010783.jpg" alt="TEW ProtoType" width="580" height="434" /></p>
<p>Track Every Watt can display additional information such as Voltage(V), Current(A), Watts(W), Volt-Amp(VA), Frequency(Hz), Power Factor(PF), Kilo Watt Hour(KWH), Time Elapsed. It uses an Analog Devices Energing Metering IC <a href="http://www.analog.com/en/analog-to-digital-converters/energy-measurement/ade7763/products/product.html">ADE7763</a>. There is also an <a href="www.analog.com/static/imported-files/application_notes/an564.pdf">application note AN-564</a> for this IC.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/05/track-every-watttew/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ATMEGA32U2 board using gEDA</title>
		<link>http://jeffrey.co.in/blog/2011/03/atmega32u2-board-using-geda/</link>
		<comments>http://jeffrey.co.in/blog/2011/03/atmega32u2-board-using-geda/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 12:58:30 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Circuit]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[atmega32u2]]></category>
		<category><![CDATA[atmel]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=463</guid>
		<description><![CDATA[Two years before I had designed a mini development board for AT90USB162. There was a small mistake in that board. It didn't have the 1MFD capacitor connected across the UCAP (PIN 27) and ground. Because of that the board was &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/03/atmega32u2-board-using-geda/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Two years before I had designed a <a href="http://jeffrey.co.in/blog/2009/09/at90usb162-mini-development-board/">mini development board for AT90USB162</a>. There was a small mistake in that board. It didn't have the 1MFD capacitor connected across the UCAP (PIN 27) and ground. Because of that the board was not detected while connected via USB. Last month I thought of repairing that board and do some USB projects. I ordered samples of ATMEGA32U2 from <a href="http://www.atmel.com/">ATMEL</a>. Thanks ATMEL for the samples.</p>
<p>Today I did a small hacking on the board. I added the capacitor as needed by USB. Now the board is working fine. There came the next problem. GCC-AVR version which I had, didn't support ATMEGA32U2. Also for loading the hex into the controller, I used the <a href="http://dfu-programmer.sourceforge.net/">dfu-programmer</a>. Since I had installed it from the Ubuntu repository, dfu-programmer was of older version and it also didn't support ATMEGA32U2.</p>
<p>After a few Google search, I found that if you compile for AT90USB162, the hex generated is supported by ATMEGA32U2. So I wrote the C code and compiled it for AT90USB162. Next task was to make the dfu-programmer to work. The only solution was to get the latest code and compile it. Below shown is the way to compile the dfu-programmer from source</p>
<p><code>$ mkdir dfu-programmer<br />
$ svn co https://dfu-programmer.svn.sourceforge.net/svnroot/dfu-programmer/trunk/ dfu-programmer<br />
$ cd dfu-programmer/dfu-programmer<br />
$ ./bootstrap.sh<br />
$ ./configure<br />
$ make</code></p>
<p>Once installed, flashing the controller is very easy. First we have to bring the controller into USB bootloader mode. For that first press and hold the RESET button. Then press and hold the HWB button. Now release the RESET button and then release the HWB button. This will bring the controller into USB bootloader mode. Now we can issue the following instructions to flash the controller.</p>
<p><code>$ dfu-programmer atmega32u2 erase<br />
$ dfu-programmer atmega32u2 flash blink.hex<br />
$ dfu-programmer atmega32u2 reset</code></p>
<p>This is an Open Hardware project and I will soon post the schematic and PCB layout once adding the missing capacitor in the old design. Below shown is the snap shot of the board.<br />
<img src="http://jeffrey.co.in/images/ATMEGA32U2.jpg" alt="ATMEGA32U2 gEDA PCB" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/03/atmega32u2-board-using-geda/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hardware hack for Phoenix-MDK</title>
		<link>http://jeffrey.co.in/blog/2011/02/hardware-hack-for-phoenix-mdk/</link>
		<comments>http://jeffrey.co.in/blog/2011/02/hardware-hack-for-phoenix-mdk/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 12:43:48 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Circuit]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[atmega32]]></category>
		<category><![CDATA[Phoenix]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=435</guid>
		<description><![CDATA[Please don't forget to read this post before coming here. For the newly developed Phoenix-MDK, I suggested few hardware modifications. Among them was the hardware modification for resetting the Phoenix-MDK through software i.e the user doesn't have to press the &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/02/hardware-hack-for-phoenix-mdk/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Please don't forget to read <a href="http://jeffrey.co.in/blog/2011/02/experiments-with-phoenix-mdk/">this</a> post before coming here.</p>
<p>For the newly developed Phoenix-MDK, I suggested few hardware modifications. Among them was the hardware modification for resetting the Phoenix-MDK through software i.e the user doesn't have to press the reset button on the board to load a new program. I copied the design of software resetting from Arduino project.</p>
<p>The plan was to reset the controller using two pins i.e there was a pin (RTS) coming from the FTDI chip connected via a 100Kohm resistor to the reset pin of the ATMega32 and also a pin (DTR) from FTDI chip connected via a 100Kohm resistor to the PD2 pin of ATMega32. The two 100Kohm resistor was for current limit. So when the user wants to flash a software, he has to hold the PD2 down (because bootloader will wait for code from serial port only if this pin is low), send LOW pulse on RESET. Then Avrdude loads the code, take PD2 high and then send a Reset pulse again.</p>
<p>When I checked the Arduino design, they were only using the RESET pin to load the software using Avrdude. Arduino bootloader loaded the code in the following manner - Send a reset pulse. The bootloader will wait for the software from serial port . If the data is coming, then they will write the flash memory using that data or else they will jump to the main code.  The greatest advantage over here was of using only one pin (DTR) of the FTDI chip to load the software.</p>
<p>I adapted the same design to the Phoenix-MDK. Now The other pin (RTS) need not be used i.e the DTR pin of FTDI chip was connected to the RESET pin of ATMega32 via 100nF capacitor. So we saved one pin (PD2) of ATMega32 which is not used in the new design.</p>
<p>The below python code can flash code to Phoenix-MDK (written by Pramode).<br />
<code>import serial, time<br />
import os, sys<br />
fd = serial.Serial(port='/dev/ttyUSB0', baudrate=19200)<br />
print fd<br />
fd.setDTR(1)<br />
time.sleep(.1)<br />
fd.setDTR(0)<br />
cmd = 'avrdude -b 19200 -P /dev/ttyUSB0 -pm32 -c stk500v1 -U ' + sys.argv[1]<br />
os.system(cmd)</code></p>
<p>Usage:<br />
1) Save the above code as load.py<br />
2) Write the code which you want to run on ATMega32 and Compile the code using avr-gcc.<br />
<strong>avr-gcc -mmcu=atmega32 -Os <em>filename.c</em></strong><em></em><br />
3) Convert a.out to hex file<br />
<strong> avr-objcopy -j .text -j .data -O ihex a.out a.hex</strong><br />
4) Load the hex to Phoenix-MDK<br />
<strong>python load.py a.hex</strong></p>
<p><img src="http://jeffrey.co.in/images/pMDK-hackFront.jpg" alt="Phoenix-MDK Hacked" alt="" width="690" height="520" /></p>
<p><img src="http://jeffrey.co.in/images/pMDK-hackBack.jpg" alt="Phoenix-MDK Hacked" alt="" width="690" height="520" /></p>
<p><em>Update: I will soon upload the pics of newly developed Phoenix-MDK .</em></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/02/hardware-hack-for-phoenix-mdk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Experiments with Phoenix-MDK</title>
		<link>http://jeffrey.co.in/blog/2011/02/experiments-with-phoenix-mdk/</link>
		<comments>http://jeffrey.co.in/blog/2011/02/experiments-with-phoenix-mdk/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 18:48:05 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[avrdude]]></category>
		<category><![CDATA[Phoenix]]></category>
		<category><![CDATA[serial bootloaders]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=426</guid>
		<description><![CDATA[Today I got a chance to do some hacks on Phoenix-MDK. There was a need of a bootloader for this board. Along with that, we should be able to program the board without hitting any reset switch. The first thing &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2011/02/experiments-with-phoenix-mdk/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Today I got a chance to do some hacks on <a href="www.iuac.res.in/~elab/phoenix/PMDK/index.html">Phoenix-MDK</a>. There was a need of a bootloader for this board. Along with that, we should be able to program the board without hitting any reset switch. The first thing which came into my mind was the <a href="http://www.arduino.cc">arduino</a> boards. They had all the above mentioned features. So I started understanding how the arduino board works, which boot loader is used inside, how reset can be triggered through software etc.</p>
<p>The bootloader used in arduino's are the <a href="http://code.google.com/p/optiboot/">optiboot</a> which has a very small footprint (around 512kb) and it was using the serial protocol STK500 for its communication. So I took the optiboot and made some modifications. But it failed. I don't know where I went wrong and also I bricked one ATMega32 chip.</p>
<p>I had one more ATMega32 chip with me. But this time I was really careful not to brick again a chip. It was really hard to find a bootloader. After a long search I found this page which really helped me a lot - <a href="http://wiki.edwindertien.nl/doku.php?id=software:bootloaders">http://wiki.edwindertien.nl/doku.php?id=software:bootloaders</a></p>
<p>The bootloader can be obtained from <a href="http://wiki.edwindertien.nl/lib/exe/fetch.php?media=software:atmegaboot-32.zip">http://wiki.edwindertien.nl/lib/exe/fetch.php?media=software:atmegaboot-32.zip</a>. Phoenix-MDK uses 8MHz crystal. So I had to modify a line in the makefile which contains the clock frequency to AVR_FREQ = 8000000L . Thats all. I gave a make and got the hex file.</p>
<p>Below are the steps for flashing the bootloader and using it.</p>
<p>1) Flashing the bootloader using parallel programmer<br />
flashing the hex:<br />
<em><strong>avrdude -c dapa -patmega32 -U flash:w:ATmegaBOOT_168_atmega32.hex</strong></em><br />
flashing the fuse:<br />
<em><strong>avrdude -c dapa -patmega32 -U lfuse:w:0xff:m -U hfuse:w:0xda:m</strong></em><br />
2) Testing the bootloader<br />
<em><strong>avrdude -b 19200 -P /dev/ttyUSB0 -pm32 -c stk500v1 -n</strong></em><br />
This should give a proper response.<br />
3)Uploading a hex file using the serial bootloader<br />
<em><strong>avrdude -b 19200 -P /dev/ttyUSB0 -pm32 -c stk500v1 -U flash:w:a.hex</strong></em></p>
<p>For the above code to work on Phoenix-MDK, I also had to do some hardware hack. Now the DTR pin is connected to the reset pin so that reset can be done by software. I have to find a software way to reset the chip.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2011/02/experiments-with-phoenix-mdk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LPC2148 (ARM 7) Test bench setup</title>
		<link>http://jeffrey.co.in/blog/2010/11/lpc2148-arm-7-test-bench-setup/</link>
		<comments>http://jeffrey.co.in/blog/2010/11/lpc2148-arm-7-test-bench-setup/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 07:09:48 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Circuit]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[gEDA]]></category>
		<category><![CDATA[microcontroller]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=415</guid>
		<description><![CDATA[This is my LPC2148 (ARM 7) test bench setup. The LPC2148 header board was bought from Rhydo Labz. You cannot directly power up and start to use. It lacks communication interface. To flash the controller, you need a serial port &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2010/11/lpc2148-arm-7-test-bench-setup/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="LPC2148 ARM7" src="http://jeffrey.co.in/images/P1010596.jpg" alt="" width="690" height="517" /></p>
<p>This is my LPC2148 (ARM 7) test bench setup.</p>
<p>The LPC2148 header board was bought from <a href="http://www.rhydolabz.com">Rhydo Labz</a>. You cannot directly power up and start to use. It lacks communication interface. To flash the controller, you need a serial port or a JTAG port. Since this board doesn't have these port connectors, you need to solder them. So it might be hard for a newbie.</p>
<p>Instead of this board, you can try the <a href="http://shop.ngxtechnologies.com/product_info.php?products_id=28">BlueBoard</a> which has all the port connectors. I will recommend this for a newbie. I hope that board is worth for its price.</p>
<p>The next thing which you need is a power supply to power the board. You can build your own power supply (If someone needs to know how to build a power supply, I will write a tutorial. But please put a comment in this post saying that you need the tutorial.) ,or you can buy 5V DC power supply (adapters).</p>
<p>Once the board is powered up, it can start to execute your code in its memory. But a fresh controller wont be having any code in its memory to execute. You need a programmer to load the code into its memory. But the LPC series controllers have built-in serial boot-loaders. These boot-loaders can get the code from  the serial port and write into its flash memory. So you don't need a programmer.</p>
<p>To program the controller using the serial boot-loader, you just need to connect the controller to the host PC and the host PC needs to run a serial programmer software. You can get a lot of serial programmer software for LPC controllers. Some of them are</p>
<p>So thats all. Power up the board and connect the serial port to the controller. Run the serial programmer software in the PC. You controller will execute the code flashed into its memory.</p>
<p>But wait. From where you can get the hex file to flash into its memory? Its simple. You just need a cross-compiler. To the cross-compiler, you just need to feed your C source file. It will compile and give you *.out files, which later can be converted into *.hex files.</p>
<p>I will soon try to post a wiki page about how to compile and flash the code into the memory.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2010/11/lpc2148-arm-7-test-bench-setup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cooking GNUduino</title>
		<link>http://jeffrey.co.in/blog/2010/10/cooking-gnuduino/</link>
		<comments>http://jeffrey.co.in/blog/2010/10/cooking-gnuduino/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 21:25:38 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Circuit]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[GNUduino]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[gEDA]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[pcb]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=402</guid>
		<description><![CDATA[Today I fabricated the PCB for GNUduino (Arduino made with gEDA). I used screen printing to transfer the PCB layout. Screen printing is another way to transfer the PCB layout to the copper clad instead of the conventional toner transfer &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2010/10/cooking-gnuduino/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p>Today I fabricated the PCB for <a href="http://www.jeffrey.co.in/projects/gnuduino">GNUduino</a> (Arduino made with gEDA). I used screen printing to transfer the PCB layout. Screen printing is another way to transfer the PCB layout to the copper clad instead of the conventional toner transfer method. <a href="http://github.com/jeffreyantony/GNUduino">Download GNUduino  design files</a></p>
<p>The PCB was successfully fabricated and  also  tested the LED blink sketch. Everything is working fine.</p>
<p>NOTE: The below shown are only prototype's to verify the design. High quality PCB's cab be made with the design files.</p>
<p>Here are some snapshots</p>
<p style="text-align: center;"><strong>The screen printed copper clad's</strong></p>
<p style="text-align: center;"><strong></strong><a href="http://jeffrey.co.in/images/P1010565.jpg"><img class="aligncenter" src="http://jeffrey.co.in/images/P1010565.jpg" alt="screen printed copper clad's of GNUduino" width="536" height="401" /></a></p>
<p style="text-align: center;"><strong>Etching the PCB</strong></p>
<p style="text-align: center;"><strong></strong><img class="aligncenter" src="http://jeffrey.co.in/images/P1010567.jpg" alt="Etching GNUduino" width="536" height="401" /></p>
<p style="text-align: center;"><strong>After drilling holes</strong></p>
<p style="text-align: center;"><strong> </strong><img src="http://jeffrey.co.in/images/P1010575.jpg" alt="Drill holes in GNUduino" width="536" height="401" /></p>
<p style="text-align: center;"><strong>GNUduino is ready</strong></p>
<p style="text-align: center;"><img class="aligncenter" src="http://jeffrey.co.in/images/P1010592.jpg" alt="GNUduino - Arduino made with gEDA" width="536" height="401" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2010/10/cooking-gnuduino/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>GNUduino &#8211; Arduino made with gEDA</title>
		<link>http://jeffrey.co.in/blog/2010/10/gnuduino-arduino-made-with-geda/</link>
		<comments>http://jeffrey.co.in/blog/2010/10/gnuduino-arduino-made-with-geda/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 04:13:25 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GNUduino]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[open hardware]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[gEDA]]></category>

		<guid isPermaLink="false">http://jeffrey.co.in/blog/?p=398</guid>
		<description><![CDATA[GNUduino is an Arduino board (Arduino Single-Sided Serial Board Version 3) redrawn using gEDA. GNUduino functions same as that of an Arduino board (It's just a clone of Arduino ). When I saw the existing Arduino boards, I felt there &#8230; <p><a class="btn small" href="http://jeffrey.co.in/blog/2010/10/gnuduino-arduino-made-with-geda/">Continue reading <span class="meta-nav">&#8594;</span></a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jeffrey.co.in/projects/gnuduino">GNUduino</a> is an <a href="http://www.arduino.cc">Arduino</a> board (Arduino Single-Sided Serial Board Version 3) redrawn using <a href="http://www.gpleda.org">gEDA</a>. GNUduino functions same as that of an Arduino board (It's just a clone of Arduino ).</p>
<p>When I saw the existing Arduino boards, I felt there is still a freedom missing. The existing Arduino boards are designed using a proprietary CAD tool. But GNUduino is free from those. It is designed using a complete free Schematic and PCB CAD tool named gEDA. This is my first <a href="http://en.wikipedia.org/wiki/Open-source_hardware">Open Hardware</a> project.</p>
<p>I would like to say special thanks to <a href="www.pramode.net">Pramode</a> Sir for suggesting this name for the board.</p>
<p>You can download the schematic and PCB layout files from the below link<br />
<a href="http://github.com/jeffreyantony/GNUduino">http://github.com/jeffreyantony/GNUduino</a></p>
<p>Update: <a href="http://jeffrey.co.in/blog/2010/10/cooking-gnuduino/">Cooking GNUduino</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffrey.co.in/blog/2010/10/gnuduino-arduino-made-with-geda/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

