Thursday, November 25, 2010

How to program an AVR Microcontroler in Ubuntu linux !




In windows , CodeVision which costs $300 is used to program AVR Microcontrollers,
but how to do it in Ubuntu for free ?

First of all we need to have a USB AVR Dragon tool.
What is AVR Dragon ?
It is a cheap tool which connects our microcontroler to a PC via USB. The AVR Dragon can program all AVRs via JTAG, HVP or ICSP.

Then we need to install two applications gcc-avr and avrdude .
to install both enter this in terminal :
sudo apt-get install gcc-avr & avrdude
What does gcc-avr do ? as you know , you can not compile a code for AVR by PC compilers , therefore we need gcc-avr which is a cross C compiler for avr.

What does Avr-dude do ? after we made machine code by gcc-avr we need an application to load the files to our microcontorler using Dragon is the program that
now that we installed both , go to the folder that your code is there and enter :

avr-gcc -g -Os -mmcu=atmega8 -c flash.c
this produces an object file called flash.o which then needs to be linked , it is obvious that if your avr is atmega16 or 32, you replace atmega8 with your avr model.

avr-gcc -g -mmcu=atmega8 -o flash.elf flash.o
now we produced a binary file called flash.elf, which is a GNU executable file. we need to change it bit more and grab some bits out of it to make the hex file

avr-objcopy -j .text -j .data -O ihex flash.elf flash.hex
congratulation now have a hex file which is suitable for putting onto the atmega8 !
now we need to hook up our AVR dragon circut and connect it to our PC , if you never hooked up a AVR dragon circuit , it can be tricky at first , read the manuals carefuly.

after connecting the AVR Dragon to USB port of the computer run this in the code folder :

sudo avrdude -p m8 -c dragon_isp -P usb -e -U flash:w:flash.hex
Thats it ! we are done .

Avrdude has many options, to learn all the options

avrdude --help
p.s : if you get errors , don't freak out , you probably need to change the speed options .
Post a Comment

Related

Labels

computer (48) ubuntu (46) linux (28) tutorial (20) opinion (17) programming (14) software overview (13) terminal (12) troubleshooting (8) life (7) literature (7) poem (7) human languages (6) vim (6) bash (5) google (5) python (5) android (4) cars (4) phpBB (4) suggestion (4) tips (4) 12.04 (3) Chef (3) extension and addons (3) firefox (3) java (3) personal (3) russian (3) shell (3) windows (3) 64bit (2) Calligraphy (2) Chicago (2) Vagrant (2) apple (2) backup (2) bug (2) code (2) eclipse (2) funny (2) google chrome (2) idea (2) monitor (2) php (2) phpBB3 (2) shorter prompt (2) ssh (2) virtualbox (2) $_SERVER['REQUEST_URI'] (1) 2.7 (1) ALT+Backspace (1) AVR (1) Alt-Printscreen-K (1) AutoRotate (1) CTRL+ALT+DELETE (1) DRM (1) Debugging (1) Gimp (1) Gimp 2.8 (1) Microcontroler (1) Restart X (1) UML (1) Ventra (1) adsense (1) amazon (1) audio (1) aws (1) background process (1) battery (1) bing (1) blank (1) blogging (1) bmw (1) boot (1) business review (1) car (1) cd (1) chrome (1) comcast (1) computer kubuntu (1) conference (1) cookie (1) cron (1) database (1) date (1) display (1) domain name (1) download manager (1) dual boot (1) dual monitor (1) extensions (1) feature request (1) file (1) folder (1) freeze (1) gimp single window (1) git (1) gnome 3.10 (1) google docs (1) google plust (1) google+ (1) grep (1) icon (1) install (1) iterator (1) links (1) linu (1) linux links (1) list (1) mac os (1) media server (1) microsoft (1) moonlight (1) music (1) mysql (1) name (1) nautilus (1) netflix (1) notepad++ (1) parking (1) permission (1) philosophy (1) photo (1) prompt (1) protest (1) ps3mediaserver (1) putty (1) read from file (1) realtek (1) resolution (1) roku (1) samsung (1) scala (1) screenshot (1) security (1) selinux (1) server (1) skype (1) space (1) spam (1) spambot (1) sql (1) suspension (1) system monitor (1) tar (1) task manager (1) template design (1) th23 domain (1) thinking (1) ubuntu 13.10 (1) unity (1) vimrc (1) virtual machine (1) weblogic (1) wget (1) with space (1) xorg (1) xrand (1)