Arduino programming example (written in C++11)

Created by Joel Yliluoma

First published at http://youtube.com/watch?v=08x0MbOX5dE

In this tool-assisted education video I show how to program an Arduino Atmega2560 board in C++11 to dump a ROM chip, such as a 386sx BIOS or a Famicom cartridge ROM. I also make a ZMODEM sender and a LED blinker in this video.

Sorry about the bad dub / lipsync in the beginning. I recorded that part in a very noisy room, using a bad microphone, and in another language, so I had to dub it over in postprocess -- which turned out to be considerably more difficult than I thought.

Please feel free to post comments & ask any questions / clarifications in the video comments. I try to reply to everyone when applicable. Please exercise clarity, politeness and good grammar, if you expect those values in the replies.

The EPROM chip pinout reference I used: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/epromread/eprom_pins.html
In particular, the 27C512 diagram here is applicable. For the NES ROM, I changed the OE/Vpp pin into address bit 16 and the CE/PGM pin into address bit 17.

I bought my Arduino board (which is a clone actually) from DealExtreme: http://bisqwit.iki.fi/dx/p/118047
Presently it costs only about 15 EUR including shipping.
The breadboard, the jumper wires and the resistors (for LED) are also from that shop. This pack includes all of those: http://bisqwit.iki.fi/dx/p/132807
It also includes another Arduino board, but a smaller one (also clone) that does not have enough GPIO pins for ROM dumping, unless you use an external shifter microchip (such as 74LS595).
The three-color LED is: http://bisqwit.iki.fi/dx/p/135046

The operating system where I run the compiler and uploaded the program is Debian GNU/Linux, and I installed "arduino-mk" (which automatically installs the dependent avr-libc, gcc-avr, binutils-avr and arduino-core packages). I edited the /usr/share/arduino/Arduino.mk file, changing the = into += on the lines that contain "CFLAGS=" and "CXXFLAGS=". Without this change, the C++11 option in my Makefile would be ignored.

The desktop environment shown in this video does not exist. It was created in postprocess to facilitate multi-file editing, which I have not previously used in my videos.

Related files and resources: http://bisqwit.iki.fi/jutut/kuvat/programming_examples/epromread/

Files available for download: