CDK4AVR collects all programms and development tools in one directory (/opt/cdk4avr) and will try to present an easy to admin installation. My intention for CDK4AVR is / was to provide a full featurd tool chain distribution of all the free accessible resources, because the most stuff is scattered to the wide of the whole Internet and only compileable by wizards or professions.
The most packages are untested. Some few packages will be unstable or developer snapshot code. So I'm looking for (beta) test users. Please, tell me your experience with CDK4AVR. CDK4AVR is a leisure-time project and I will try to be up to date with all the package versions. I think my real update cycle will be 5 or 7 months, sorry :-(
The base package cdk-avr-base will work only at Red Hat based distributions (Red Hat, Mandriva/Mandrake, and I believe Suse). For other distributions you have to ensure the linked scripts cdk4avr.sh and cdk4avr.csh in /etc/profile.d are involved in your user environment build process at login time.
All packages will be provided as RPM only. With CDK4AVR 3.0 you can download DEB and TGZ packages too (experimental and untested state). It is not necessary to install all packages. At least you have to install the base package cdk-avr-base every time you want to use another package. Here is an example for a typical GNU development environment:
[user@host]$ rpm -hiv cdk-avr-base-0.5-20060203.i586.rpm
[user@host]$ rpm -hiv cdk-avr-binutils-2.16.1-20060708.i586.rpm
[user@host]$ rpm -hiv cdk-avr-gcc-3.4.5-20060708.i586.rpm
[user@host]$ rpm -hiv cdk-avr-gcc-c++-3.4.5-20060708.i386.rpm
[user@host]$ rpm -hiv cdk-avr-gcc-colorgcc-3.4.5-20060708.i386.rpm
[user@host]$ rpm -hiv cdk-avr-libc-1.4.4-20060609.noarch.rpm
[user@host]$ rpm -hiv cdk-avr-gdb-6.4-20060127.i386.rpm
[user@host]$ rpm -hiv cdk-avr-simulavr-0.1.2.2-20060127.i386.rpm
[user@host]$ rpm -hiv cdk-avr-avarice-2.5-20061125.i386.rpm
[user@host]$ rpm -hiv cdk-avr-uisp-20050207-20060610.i386.rpm
[user@host]$ rpm -hiv cdk-avr-avrdude-5.1cvs-20060624.i386.rpm
You will found all files released at SourceForge.Net
Here is an example for Fedora Core 5.
All packages were signed by me. You can copy my public PGP key (see below), install it and check the RPM packages:
[user@host]$ su -c "rpm --import SLZ-GPG-KEY"
[user@host]$ rpm --checksig *.rpm
[user@host]$ gpg --import SLZ-GPG-KEY
[user@host]$ dpkg-sig -k "Stephan Linz <firstname.lastname@example.org>" -c *.deb
[user@host]$ gpg --import SLZ-GPG-KEY
[user@host]$ gpg --multifile --default-key "Stephan Linz <email@example.com>" --verify *.tgz.sig
|0. Base System (you need it):|
|0.1||cdk-avr-base|| Base package
-- is needed every time you will use any CDK4AVR package.
Note: Users of base packages with version 0.2 and prior have to update to latest version. There was a damaged (t)csh startup script. As a result of an buggy %preun script in previous packages you have to update in two cycles:
[user@host]$ rpm -hUv cdk-avr-base-0.3-20031111.i386.rpm
|0.2||cdk-avr-base-libftdi||A library (using libusb) to talk to FTDI's FT232BM, FT245BM and FT2232C type chips including the popular bitbang mode. This library will be used by the USB Atmel AVR programmer by Wolfgang Wieser.|
|0.3||cdk-avr-base-libconfuse||Accessibility tool and configuration file parser for FTDI USB controller. This library will by used by the FTDI EEPROM tool, a part of the CDK4AVR tool package (see below).|
|1. Assembler, Disassembler, Object File Operator:|
|1.1||cdk-avr-binutils|| Binutils is a
collection of binary utilities, including:
For more informartion see: http://www.gnu.org/software/binutils/
|1.2||cdk-avr-ava|| AVA (assembler
and linker) was mainly designed for 8 and 16 bit mocrocontrollers but
can be easily extended to 32 bit families too. In addition to standard
assemblers for microcontrollers it features powerful segments and virtual
symbols. These two features improve modular programming and allow
objects to be completely independed from each other. AVA integrates two
parts in one binary (ava):
AVA was made by Uros Platise in 1999. For more informartion see: http://medo.fov.uni-mb.si/mapp
AVA was futhermore developed by Denis Chertykov. For more information see: http://www.amelek.gda.pl/avr/old/
|1.3||cdk-avr-avra|| AVRA is an
assembler for the Atmel AVR microcontrollers, and it is almost
compatible with Atmel's own assembler AVRASM32. The difference is that
avra supports some extra preprocessor directives, and the macrosupport
is better. There is no linker support or any other object handling.
AVRA integrates only:
For more informartion see: http://avra.sourceforge.net/
|1.4||cdk-avr-tavrasm|| TAVRASM is an
assembler for the Atmel AVR family of micro-controllers. It uses a
syntax similar to the one found in the Atmel AVR DOS assembler. Some of
the features includes:
For more informartion see: http://www.tavrasm.org/
|1.5||cdk-avr-tpasm||TPASM is a
command line based cross assembler for
microcontrollers. It should compile and function on most any Unix based
system. TPASM began as a replacement for mpasm (an assembler
for Microchip's PIC processors). Then it got out of control. Now it is
a cross assembler for a variety of common microprocessors (including
the PICs). TPASM feature set and syntax is a conglomeration of features
from many other assemblers. It bears enough similarity to mpasm so that
porting mpasm source to it should not be very painful. Some of
the features includes:
For more informartion see: http://www.sqrt.com/
|1.6||cdk-avr-gavrasm|| GAVRASM, A
command line assembler for all AT90S-, ATtiny- und ATmega types of
microcontrollers of ATMEL, with many extended and new features. View
the ReadMe.Txt for more informations on features. Supported processors:
For more informartion see: http://avr-asm-tutorial.net/gavrasm/index_en.html
|1.7||cdk-avr-revava|| REVAVA is a
single pass disassembler that reads in a file containing a program
intended for an Atmel AVR microcontroller and outputs assembly code
that can be input to an avr assembler. The output of revava contains
assembler mnemonics where possible and dc.W declarations where no
mnemonic matches the data. The comment field for each assembly
instruction contains the address from the object code and the
destination address for branches, calls, jumps, etc. In the case where
there are multiple assembly instructions that assemble to the same
opcode, all choices are presented in a group with all but the first
choice commented out.
This is an early release. Roght now only Intel hex files are supported for input. See the file TODO for more ideas.
Install revava if you need to perform any of these types of actions on AVR binary files. Only some programmers will want to install revava.
For more informartion see: http://www.visi.com/~dwinker/revava/
|1.8||cdk-avr-avrdis|| AVRdis is a
small and simple disassembler for Atmel AVR microcontrollers written by
Paulo Soares. This is very very alpha code and unsupported /
unmaintained for more than two or three years. See changes.txt indside
the documentation path.
Install avrdis if you need to perform any of these types of actions on AVR binary files. Only some alpha test programmers will want to install avrdis.
For more informartion see (!!! outdated link !!!): http://members.xoom.com/Paulo_Soares
CANCELED +++ CANCELED +++ CANCELED +++
avr-coff-objcopy is an add-on package to provide the special AVR Coff patch made by Joerg Wunsch. WARNING: This code is very very beta and right now Joerg knows about some bugs. Furthermore there is no really reason to use it in a plain Linux development environment.
Additionally this package includes Jason Riffel's objtool in version 0.4 beta. Objtool is the traditional coff converter used by some WinAVR users.
Only some beta test programmers will want to install avr-coff-objcopy.
For more informartion read included README.coff-avr-patch file.
Bug reports to: avrcoff-bug (at) uriah (dot) heep (dot) sax (dot) de
|2. Compiler, Interpreter:|
|2.1||cdk-avr-gcc|| A compiler
aimed at integrating all the optimizations and features necessary for a
high-performance and stable AVR development environment. You'll need
this package in order to compile C/C++ code. It includes:
For more informartion see: http://www.gnu.org/software/gcc/
| This is the
Ada 95 support package for the GNU compiler. In general, this packages
will be maintained as parts of cdk-avr-gcc. Content:
Note: The current distribution of AVR-Ada is based on gcc-3.4.6 and gcc-4.1.1. In the AVR-Ada project we rarely have problems with the Ada compiler itself. It is quite stable. The Ada run time system (RTS) on the other hand is for the most part not even a run time system. It is more a compile time system. Most files in the RTS are only needed at compile time. As a consequence we don't yet have support for exceptions nor for tasking (multi-threading). There is some AVR specific support. Type and interface definitions, timing routines, eeprom access, UART, and most importantly the necessary definitions for most AVR parts.
For more informartion see: http://avr-ada.sourceforge.net/
|2.3||cdk-avr-lcc||It is a
retargetable compiler for Standard C. This is (was) a first release of
Roberto Biancardi's changes to lcc-4.1 to generate code for the atmel
AVR microprocessor. WARNING:
This code is beta,
there is room for improvment and of course bug fixes. lcc-avr is not
ready for prime time but in his personal configuration, wired on
at90s8515 sometimes generate the right code.
lcc-avr uses the external assembler 'tavrasm' to generate target images.
For more informartion see: http://www.xware.it/avr/ and http://www.cs.princeton.edu/software/lcc/
|3. Debugger, Simulator, Emulator:|
| GDB, the GNU
debugger, allows you to debug programs written in C, C++, and other
languages, by executing them in a controlled fashion and printing their
data. In the case of AVR RISC processores you have to use a separated
simulator (simulavr) or in-circuit emulator (avarice) to run programs.
This collection includes:
For more informartion see: http://www.gnu.org/software/gdb/ and/or http://sources.redhat.com/insight/
|3.2||cdk-avr-simulavr|| Simulavr is a
simulator for the AVR RISC microcontrollers. Simulavr can be used
either standalone or as a remote target for GDB. When used as a remote
target for GDB, the simulator is used as a backend to GDB such that GDB
can be used as a source level debugger. This collection includes:
For more informartion see: http://savannah.nongnu.org/projects/simulavr
|3.3||cdk-avr-avarice|| AVaRICE is a
program which interface the GNU debugger GDB with the AVR JTAG ICE
available from Atmel.
In recent times, GCC added support for the AVR series of microcontrollers. This has been quite the boon for those of us who write embedded applications for processors with "leaner" architectures. Recently, Atmel announced the availability of a JTAG box for the AVR. Until now, there was no way to interface to this device with GDB.
AVaRICE runs on a POSIX machine and connects to GDB via a TCP socket and communicates via GDB's "serial debug protocol". This protocol allows GDB to send commands like "set/remove breakpoint" and "read/write memory".
AVaRICE translates these commands into the Atmel protocol used to control the AVR JTAG ICE. Connection to the AVR JTAG ICE is via a serial port on the POSIX machine. This collection includes:
For more informartion see: http://avarice.sourceforge.net/
|4. Libraries, Operating Systems:|
|4.1||cdk-avr-libc|| The AVR Libc
package provides a subset of the standard C library for Atmel AVR 8-bit
RISC microcontrollers. In addition, the library provides the basic
startup code needed by most applications. It includes:
For more informartion see: http://savannah.nongnu.org/projects/avr-libc
|4.2||cdk-avr-libavr||Procyon AVRlib is a
C-language function library for Atmel AVR processors written by Pascal
For more informartion see: http://hubbard.engr.scu.edu/embedded/avr/avrlib/
|4.3||cdk-avr-libavrhal||AVR HAL is a
collection of some usefull C library functions ported to some different
boards and/or plattforms, including:
For more informartion see: http://www.li-pro.net/index.php?avr (German only)
|5. In System Programming (ISP):|
(micro-ISP) is the most important In-System Programmer for AVR RISC
For more informartion see: http://savannah.nongnu.org/projects/uisp
Outdated version comes from: http://medo.fov.uni-mb.si/mapp/uTools/index.html
|5.2||cdk-avr-avrdude|| AVRDUDE - AVR
Downloader Uploader - is a program for downloading and uploading the
on-chip memories of Atmel's AVR microcontrollers. It can program the
Flash and EEPROM, and where supported by the serial programming
protocol, it can program fuse and lock bits. AVRDUDE also supplies a
direct instruction mode allowing one to issue any programming
instruction to the AVR chip regardless of whether AVRDUDE implements
that specific feature of a particular chip. It includes:
For more informartion see: http://savannah.nongnu.org/projects/avrdude
|5.3||cdk-avr-cisp|| CISP is a
special compact In-System Programmer for the C2N232 project by Marko
Mäkelä. CISP transfers data to and from the
non-volatile program or data memory of an Atmel AVR RISC processor over
the Serial Peripheral Interface (SPI). particular chip. It includes:
For more informartion see: http://www.funet.fi/pub/cbm/crossplatform/transfer/C2N232/ or
|5.4||cdk-avr-avrprog-pzn|| AVRPROG-pzn is
a special In-System Programmer by Pedro Zorzenon Neto.
Programmer for Atmel AVR microcontrollers that uses PC parallel port to program the device in serial mode. The device can be programmed "in-system". It comes with a schematic of the hardware required. The hardware was designed to be efficient and inexpensive. It includes:
For more informartion see: http://avrprog.sourceforge.net
At Debian project side: http://packages.debian.org/stable/electronics/avrprog
|5.5||cdk-avr-avrctrl-isp|| avrctrl-isp is
a special In-System Programmer for the AVRCtrl project maintained by
www.mikrocontroller.com. It includes:
For more informartion see: http://www.mikrocontroller.com/ (German only)
is a special In-System Programmer for the PicoWeb project maintained by
Lightner Engineering. It includes:
For more informartion see: http://www.picoweb.net/
|5.7||cdk-avr-AVRprog|| AVRprog can be
used to burn the image files created by the assembler or compiler into
the target MCU using some programming hardware:
For more informartion see: http://avr.fenceline.de/AVRprog/AVRprog.html
|5.8||cdk-avr-sp12|| SP12 is a
serial mode (in-circuit) programmer for the AVR family of
microcontrollers. When new AVR uCs arrive, you can easily add support
for them yourself, by adding a plain text entry to the runtime
configuration file _sp12dev. Editing this file also allows you to
customize the way sp12 deals with existing uCs. It includes
HINT (by Onno Kortmann):
" ... Hello!
Mabe you can add a hint to your review of the various tools, that sp12 is sometimes very useful. Why? Here: It can program older AT90S1200s (called AT901200(A) in the Program) which other boards and/or programs (I've even tried my STK500 on them!) can't do. I was very disappointed with my charge of '1200s before I found out that SP12 can indeed access them using ISP and a dummy cable like for uisp. For some parts, there is even another hack needed, you need to lower the voltage to about 4 volts (this exceeds the maximum ratings but works ok for me) before the device responds to programming commands.
Disclaimer: I'm in no way related to the development of SP12, just a user of it and this feature can really be important.
The information on this topic is available, but very hard to find on the net, this is the reason why I wrote this email.
Onno ... "
For more informartion see: http://www.xs4all.nl/~sbolt/e-spider_prog.html
|5.9||cdk-avr-avrp|| Jon Anders
Haugum's AVR Programming Tool -- avrp is a GNU GPL'ed software to use
with programmers using Atmel's communication standard for serial-port
programmers. These programmers support AVR and AT89 devices. avrp
supports often used serial/parallel adapters:
For more informartion see: http://www.colargol.tihlde.hist.no/~jonah/el/avrp.html
programmer is a set of
tools for AVR programming by Wolfgang Wieser. He has develop a
parallel and a USB based AVR programmer. In this package you will find
the host programming tools and all the documentation you want to
rebuild your own programmer hardware.
For more informartion see: http://www.cip.physik.uni-muenchen.de/~wwieser/elec/avr/
|6.1||cdk-avr-tools|| This is a
collection of some usefull command line tools and utilities. It
|6.2||cdk-avr-tools-grephical|| This is a
collection of some usefull graphical tools and utilities. It includes:
|6.3||cdk-avr-geany||Geany is a small
integrated development environment. It was developed to provide a small
and fast IDE, which has only a few dependencies from other packages.
Another goal was to be as independent as possible from a special
Desktop Environment like KDE or GNOME. So it is using only the GTK2
toolkit and therefore you need only the GTK2 runtime libraries to run
Basic features of Geany:
For more informartion see: http://geany.sourceforge.net/
|6.4||cdk-avr-jtagice|| JTAGICE is a
command-line tool which implements most of the JTAGICE protocol is
being developed. It may help with the effort by allowing you to send
commands directly to the JTAGICE to make it easier to spy on the jtag
signals generated. It includes:
For more informartion see: http://www.openavr.org/jtagice/
For jtag signal spying have a look at: http://savannah.nongnu.org/projects/freeice
For AVR JTAG OCD (Private) Commands: http://www.case2000.com/ocd.html
For homebrewed ICE: http://avr.openchip.org/bootice/ (former: http://www.case2000.com/JtagIce/)
Some interesting documents: http://www.graphord.com/books/
|7. Examples, Tutorials:|
|7.1||cdk-avr-example-simulavr-ddd|| "How to use
AVR GDB with Simulavr and DDD as frontend"
Original version was coming from: http://milkstone.d2.net.au/electronics/micro/avr-gcc-installing-2003.html
|7.2||cdk-avr-example-butterfly|| "Porting the
AVR Butterfly Application to avr-gcc" by Martin Thomas
|7.3||cdk-avr-example-ada||"How to use the AVR Ada implementation"|
|Meaning of colors:|