cdk4avr
CDK4AVR -- AVR Cross Development Kit

Version 3.0



CDK4AVR stands for Cross Development Kit for Atmels AVR RISC processor serie and should support your development with a comprehensive Assembler and C development environment for even this processor familie under Linux. It will present only free of fee tools, so you can use it without risks. Further you will find some useful OS projects and related sample code all arround AVRs inside of the example packages.

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.

NEWS


NOTES & WARNINGS

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.

PROJECT LINKS

OTHER CDKs




INSTALL SourceForge.Net Logo


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

HINTS

All the CDK4AVR packages was (re-)building on a standard Mandriva 2006.1 Linux distribution. All RPM packages are depending on even this environment. The RPM installation at other distribution than Mandriva 2006.1 (ex. SuSE or Fedora Core) can run into a resolving error of package dependencies. In this case you have to force the installation by using rpm option --nodeps and ensure the presence of all conditions.

Here is an example for Fedora Core 5.

SECURITY

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

For Debian DEB packages do this:
 [user@host]$ gpg --import SLZ-GPG-KEY
[user@host]$ dpkg-sig -k "Stephan Linz <linz@li-pro.net>" -c *.deb

For Slackware TGZ packages do this:
 [user@host]$ gpg --import SLZ-GPG-KEY
[user@host]$ gpg --multifile --default-key "Stephan Linz <linz@li-pro.net>" --verify *.tgz.sig

SLZ-GPG-KEY

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.4 (GNU/Linux)

mQGiBD3OuAkRBAC6cVOLUZT8OiNOWLpszhOMH0oQGxDwzbc/b54hWuWLeR4oMRgi
xmKb1KCf6gfov5x89GCgkdQLTaIrx+SeLbwnB1rWrwZFNZ+x8ILK0FadUgUnERV7
wtDcCMwU8GWr71YixIZcREbc2dsBkr7mO882L4p+vuotES5uLTVluZeTjwCgod1S
spMjGkj/mQdvrfVK0rqQ/hMD/RfE7AwdB2fvzvp3zUXUfqWne6ro6DF3+6fP5MPY
MYEMg/9Jdade9pZpBsJfF11FlHFngFCDLKaOSZh5+QWE5iwma9nwJYLWnl8owou5
gDcSJwKnmtp4olTeknGgl642ypZAQYI8uz3CgAzVdPfU2qbsocIrV1biyd2gVzRx
feWMA/96hpLRWm6fpdorgNkIUvq7Zy5/ukPSOFDbrMr7nGjeEMhjIof4U5y40LFq
5ltpMK3dOa0LhbwltKpJcOrSI97mQA93qPxcuipi9O/befmivsCzWCYnl5SDxioy
cPnaVA6O4d29dBNSIiKZ1G1bEvkxUIAVJAjDb1b0A6/HFuEmr7QeU3RlcGhhbiBM
aW56IDxsaW56QGxpLXByby5uZXQ+iFcEExECABcFAj3OuAkFCwcKAwQDFQMCAxYC
AQIXgAAKCRB9bIIqWaPtkDNZAJ0ehMsueqkUnRjOAAOio4BHG6cjLQCfQTAPtepx
0EKg+glUafu5tiLc3S65AQ0EPc64FxAEAI+vrHePDsKlzVrXca5mTGIACUlc7TOp
b8wasajkoYGQ+33bGfi0qLXXxCGVmuH/IOt3dS/0JYqkzRzg8Fi0e2J1DqyutHaW
KClm1SP70PR29jt0iEI8ELrSN7I6+kwI5UmYCeu6j3deAE0zxnOHmflL6ZAEw9gp
37UWw/bMdforAAMGBACDLDcJnhyyaX9NF8NlYrpMVGKFH9u5gy15d2INksLIvtZ9
E9h1VE189X6MpIa2e01xpY9As4nODCJnXSga9shZWWOleyGnPrHeKkmICJNvXKWr
l0Jdh2ec57ApxRk9N7jknSOna0pPT+LQCZsE4mWH/fw15hAKqS77fJCcdhx3iYhG
BBgRAgAGBQI9zrgXAAoJEH1sgipZo+2QoIEAn21xh7b5hYbgZer9uFwRZi7+VorF
AJ9w4N8TroWE0pWwX6E4L7+wZvm8dg==
=tnaW
-----END PGP PUBLIC KEY BLOCK-----



OTHER AVR TOOL CHAINS / INFORMATIONS





PACKAGES


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
[user@host]$ rpm -hUv --force 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:
  • avr-ar: creating modifying and extracting from archives
  • avr-as: a family of GNU assemblers
  • avr-ld: the GNU linker
  • avr-nm: for listing symbols from object files
  • avr-objcopy: for copying and translating object files
  • avr-objdump: for displaying information from object files
  • avr-ranlib: for generating an index for the contents of an archive
  • avr-size: for listing the section sizes of an object or archive file
  • avr-strings: for listing printable strings from files
  • avr-strip: for discarding symbols
  • avr-addr2line: for converting addresses to file and line
  • avr-readelf: for displaying information about ELF files
Supported processors:
  • ATtiny10 ATtiny11 ATtiny12 ATtiny13 ATtiny15 ATtiny22 ATtiny2313 ATtiny24 ATtiny25 ATtiny26 ATtiny261 ATtiny28 ATtiny44 ATtiny45 ATtiny461 ATtiny84 ATtiny85 ATtiny861
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16 ATmega161 ATmega162 ATmega163 ATmega164P ATmega165 ATmega165P ATmega168 ATmega169 ATmega169P ATmega32 ATmega323 ATmega324P ATmega325 ATmega3250 ATmega329 ATmega3290 ATmega406 ATmega48 ATmega603 ATmega64 ATmega640 ATmega644 ATmega644P ATmega645 ATmega6450 ATmega649 ATmega6490 ATmega8 ATmega83 ATmega85 ATmega8515 ATmega8535 ATmega88
  • AT43USB320 AT43USB355 AT90USB1286 AT90USB1287 AT90USB646 AT90USB647
  • AT90CAN128 AT90CAN32 AT90CAN64
  • AT76C711 AT86RF401 AT94K AT90PWM2 AT90PWM3

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):
  • Assembler
  • Linker
Supported processors:
  • AT90S1200
  • ATtiny10 ATtiny11 ATtiny12 ATtiny22
  • AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90S8535
  • ATmega103 ATmega603

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:
  • avra: Assembler
Supported processors:
  • ATtiny11 ATtiny12 ATtiny15 ATtiny22 ATtiny26 ATtiny28
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega104 ATmega128 ATmega16 ATmega161 ATmega162 ATmega163 ATmega169 ATmega32 ATmega323 ATmega603 ATmega64 ATmega8 ATmega83 ATmega8515 ATmega8535
  • AT86RF401 AT94K

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:
  • Super-set of Atmel AVR assembler.
  • Macros in macros.
  • Save Intel HEX, Motorola S-record, Generic and binary output.
  • More than 100 warning/error messages.
  • Atmel object files compatible with Atmel's AVR Studio.
  • C escape characters in char/string literals.
Supported processors:
  • AT90S1200 AT90S2313 AT90S2323 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90S8535
  • ATmega103 ATmega128 ATmega16 ATmega162 ATmega161 ATmega163 ATmega168 ATmega169 ATmega32 ATmega323 ATmega48 ATmega8 ATmega8515 ATmega8535 ATmega88

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:
  • true multi-pass assembly (will take as many passes as needed)
  • multiple segments
  • sophisticated expressions
  • macros, repeats, conditionals
  • arbitrary length labels
  • local labels
  • can switch between processors during assembly
Supported processors:
  • ATtiny10 ATtiny11 ATtiny12 ATtiny15 ATtiny22 ATtiny28
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega161 ATmega8

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:
  • ATtiny11 ATtiny12 ATtiny13 ATtiny15 ATtiny22 ATtiny2313 ATtiny24 ATtiny25 ATtiny26 ATtiny28 ATtiny44 ATtiny45 ATtiny84 ATtiny85
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega104 ATmega128 ATmega1280 ATmega1281 ATmega16 ATmega161 ATmega162 ATmega163 ATmega165 ATmega168 ATmega169 ATmega2560 ATmega2561 ATmega32 ATmega323 ATmega325 ATmega3250 ATmega329 ATmega3290 ATmega406 ATmega48 ATmega603 ATmega64 ATmega640 ATmega644 ATmega645 ATmega6450 ATmega649 ATmega6490 ATmega8 ATmega83 ATmega8515 ATmega8535 ATmega88
  • AT86RF401 AT90CAN32 AT90CAN64 AT90CAN128 AT90PWM2 AT90PWM3

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
  1.9 cdk-avr-coff-objcopy +++ 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:
  • avr-gcc: GNU project C compiler
  • avr-g++: GNU project C++ compiler
  • avr-cpp: GNU C compatible compiler preprocessor
The C++ support is unfinished. There is no STD C++ library for AVR microcontrollers !!!

Supported processors:
  • ATtiny11 ATtiny12 ATtiny13 ATtiny15 ATtiny22 ATtiny2313 ATtiny24 ATtiny25 ATtiny26 ATtiny261 ATtiny28 ATtiny44 ATtiny45 ATtiny461 ATtiny84 ATtiny85 ATtiny861
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16 ATmega161 ATmega162 ATmega163 ATmega164P ATmega165 ATmega165P ATmega168 ATmega169 ATmega169P ATmega32 ATmega323 ATmega324P ATmega325 ATmega3250 ATmega329 ATmega3290 ATmega406 ATmega48 ATmega603 ATmega64 ATmega640 ATmega644 ATmega644P ATmega645 ATmega6450 ATmega649 ATmega6490 ATmega8 ATmega8515 ATmega8535 ATmega88
  • AT43USB320 AT43USB355 AT90USB1286 AT90USB1287 AT90USB646 AT90USB647
  • AT90CAN128 AT90CAN32 AT90CAN64
  • AT76C711 AT86RF401 AT94K AT90PWM2 AT90PWM3

For more informartion see: http://www.gnu.org/software/gcc/
  2.2 cdk-avr-gcc-gnat

    and

cdk-avr-gcc-gnat-rts
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:
  • GNU AVR Ada compiler gnat ported by Rolf Ebert
  • AVR Run Time System (RTS) for compile time
  • AVR Ada project setup tool mk_ada_app.sh by Bernd Trog

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.

Supported processors:
  • AT90S8515

For more informartion see: http://www.xware.it/avr/ and http://www.cs.princeton.edu/software/lcc/
3. Debugger, Simulator, Emulator:
  3.1 cdk-avr-gdb

    or

cdk-avr-insight
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:
  • avr-gdb: GNU debugger for AVR RISC microcontrollers
Supported targets:
  • simulavr
  • avarive

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:
  • simulavr: Simulator for AVR RISC microcontrollers
Supported processors:
  • AT90S1200 AT90S2313 AT90S4414 AT90S8515
  • ATmega8 ATmega16 ATmega103 ATmega128
  • AT43USB320 AT43USB325 AT43USB326 AT43USB351 AT43USB353 AT43USB355

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:
  • avarice: JTAG ICE GDB connectivity for AVR RISC microcontrollers
Supported processors:
  • each AVR microcontroller with JTAG access

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:
  • I/O definitions and access macros
  • AVR interrupt and signal handling
  • Functions for long jumps
  • Program Space String Utilities
  • EEPROM access functions
  • Timer control functions
  • Watchdog Timer control functions
  • Power Management and Sleep Modes functions
  • Memory management (malloc/free and friends)
  • String manipulation functions and charcter operations
  • System Error handling (errno)
  • Standard IO facilities
  • Mathematical functions (soft-fpu)
  • Bootloader API in C for those processors that support it
  • (small) Compatibility for IAR C
Supported processors:
  • ATtiny11 ATtiny12 ATtiny13 ATtiny15 ATtiny22 ATtiny2313 ATtiny24 ATtiny25 ATtiny26 ATtiny261 ATtiny28 ATtiny44 ATtiny45 ATtiny461 ATtiny84 ATtiny85 ATtiny861
  • AT90S1200 AT90S2313 AT90S2323 AT90S2333 AT90S2343 AT90S4414 AT90S4433 AT90S4434 AT90S8515 AT90C8534 AT90S8535
  • ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16 ATmega161 ATmega162 ATmega163 ATmega164(p) ATmega165 ATmega168 ATmega169 ATmega32 ATmega323 ATmega324(p) ATmega325 ATmega3250 ATmega329 ATmega3290 ATmega406 ATmega48 ATmega64 ATmega640ATmega644 ATmega644(p) ATmega645 ATmega6450 ATmega649 ATmega6490 ATmega8 ATmega8515 ATmega8535 ATmega88
  • AT43USB1286 AT43USB1287 AT43USB320 AT43USB355 AT43USB646 AT43USB647 AT76C711 AT86RF401 AT90CAN32 AT90CAN64 AT90CAN128 AT90PWM2 AT90PWM3 AT94K
Install AVR Libc if you need to perform any of these types of actions on AVR source files. Most programmers will want to install AVR Libc.
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 Stang, including:
  • AVR Built-In Peripheral Drivers:
    • Timers (with PWM, interrupt management)
    • UART (interrupt driven)
    • A/D Converter
    • I2C Master/Slave (interrupt and non-intr)
    • SPI Interface
    • External Interrupts
  • AVR Software-Emulated Devices:
    • I2c Master (Bit-Bang)
    • UART (software-based, timer interrupt driven)
    • Pulse Output (timer-based, variable frequency)
    • Intel-type Memory Bus (Address & Data Buses + nRD,nWR)
  • General:
    • Byte Buffering (circular)
    • Bit Buffering (linear)
    • Printf and other formatted print functions
    • VT100 Terminal Output
    • Command Line Interface
    • FAT16/32 File System (support is read-only for now)
    • STX/ETX Packet Protocol
    • Fixed-Point Math Library (basic operations only)
  • External Hardware Device Drivers:
    • Character LCD Modules (HD44780-based)
    • I2C EEPROM Memories
    • SPI EEPROM Memories
    • MMC/SD Card Interface (SPI mode)
    • LIS3L02 ST Accelerometer
    • IDE/ATA Interface (for hard disks and CF cards)
    • Quadrature Encoders
    • RC-Servos (up to 8 channels)
    • STA013 MP3 Decoder Chip
    • GPS Receivers (via serial port)
      • NMEA-0813 Protocol
      • Trimble TSIP Protocol
    • Graphic LCD Modules
      • KS0108/HD61202 Controller
      • T6963 Controller
      • LCD Fonts and Symbols
  • Network Support:
    • Device Drivers
      • RTL8019 Ethernet
      • AX88796 Ethernet
      • CS8900 Ethernet
      • Prism2 Wireless LAN
    • Network Protocols
      • ARP
      • ICMP
      • IP
      • UDP
      • DHCP
    • Network Stack infrastructure

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:
  • Alphanumeric LCD (up to 4x64 characters)
  • LED bar (with up to 8 LEDs)
  • LED point and bar graphic (standardized)
  • key pad (with up to 5 buttons)
  • Dallas Semiconductors One Wire bus
  • One Wire temperature sensor DS1820/DS1822
Supported boards:
Supported processors:
  • AT90S8535
  • ATmega163
  • clock: 1, 2, 3, 4, 5, 6, 7 and 8 MHz

For more informartion see: http://www.li-pro.net/index.php?avr (German only)
5. In System Programming (ISP):
  5.1 cdk-avr-uisp UISP (micro-ISP) is the most important In-System Programmer for AVR RISC microcontrollers, includes:
  • uisp: the Micro In-System Programmer
Supported serial/parallel adapters:  Meta programmer -- supported by any serial/parallel adapter above:
NOTE: UISP is a dangerous binary, it will need (use) root privilegs!
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:
  • avrdude: the AVR Downloader Uploader
Supported serial/parallel adapters:
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:
  • cisp: the compact In-System Programmer
Supported serial/parallel adapters:
  • c2n232 serial (RESET=DTR SCK=RTS MOSI=TXD MISO=CTS)
  • dasa serial (RESET=RTS SCK=DTR MOSI=TXD MISO=CTS)
  • ponyprog serial (RESET=TXD SCK=RTS MOSI=DTR MISO=CTS)
  • dapa parallel (RESET=INIT SCK=STROBE MOSI=D0 MISO=BUSY)
  • dt006 parallel (RESET=D2 SCK=D3 MOSI=D0 MISO=BUSY) http://www.dontronics.com/dt006.html
  • stk200 Parallel Starter Kit STK200, STK300

For more informartion see: http://www.funet.fi/pub/cbm/crossplatform/transfer/C2N232/ or
http://www.zimmers.net/anonftp/pub/cbm/crossplatform/transfer/C2N232/firmware/
  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:
  • avrprog: Pedro's In-System Programmer

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:
  • isp: AVRCtrl In-System Programmer
NOTE: ISP is a dangerous binary, it will need (use) root privilegs!
For more informartion see: http://www.mikrocontroller.com/ (German only)
  5.6 cdk-avr-picoweb-pppt picoweb-pppt is a special In-System Programmer for the PicoWeb project maintained by Lightner Engineering. It includes:
  • ppt: PicoWebl In-System Programmer
NOTE: PPT is a dangerous binary, it will need (use) root privilegs!
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: Note: AVRprog is very restrective in context to the SerialSTK parallel ISP adapter. Read the RPM header text carefully!
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
  • sp12: Spider Prog In-System Programmer
NOTE: SP12 is a dangerous binary, it will need (use) root privilegs! Read the RPM header text too.
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.

Best regards,

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
  5.6 cdk-avr-atmelprg Atmel AVR 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.

Supported programmer:

For more informartion see: http://www.cip.physik.uni-muenchen.de/~wwieser/elec/avr/
6. Misc:
  6.1 cdk-avr-tools This is a collection of some usefull command line tools and utilities. It includes:
  • srecord-1.26 a collection of powerful tools for manipulating EPROM load files -- comes from: http://srecord.sourceforge.net
  • bin2hex-1.00 converts raw binaries into Intel hex format -- comes from: http://web51.hw-server.com/
  • hex2bin-1.0.4 converts Intel/Motorola hex files into raw binary -- comes from: ftp://ftp.metalab.unc.edu/pub/Linux/devel/lang/assemblers/
  • comps19-1.3 Motorola S19 record comparison program -- comes from: ftp://ftp.metalab.unc.edu/pub/Linux/devel/lang/assemblers/
  • hexdump-1.5 a simple program for dumping binary files in hexadecimal format -- comes from: http://www.canb.auug.org.au/~millerp/hexdump.html
  • HexModify-1.0 a program that can modify bytes in intel hex files to use it to give unique serial numbers to software in embedded systems -- comes from: http://members.lycos.nl/dpruimboom/index.php
  • GENtoHEX-0.4 converts Atmel GENERIC files to Intel HEX format; is used by the AVRprog frontend to support Intel HEX files as output. -- comes from: http://avr.fenceline.de/converter/converter.html
  • HEXtoGEN-0.3 converts Intel HEX files to Atmel GENERIC format; is used by the AVRprog frontend to support Intel HEX files as input -- comes from: http://avr.fenceline.de/converter/converter.html
  • avr2iar / iar2avr converts between the two different AVR assambly syntaxes; once the Atmels AVR assembler and others the IAR assembler -- comes from: SORRY I DON'T KNOW ANY MORE :-(
  • jtag-0.6cvs JTAG Tools is a software package which enables working with JTAG-aware (IEEE 1149.1) hardware devices (parts) and boards through JTAG adapter. This package has open and modular architecture with ability to writing miscellanous extensions (like board testers, flash memory programmers, and so on). Warning: This software may damage your hardware!

    Supported JTAG adapters/cables:
    • ARCOM Arcom JTAG Cable
    • ByteBlaster Altera ByteBlaster, ByteBlaster II, ByteBlasterMV Parallel Port Cable
    • DLC5 Xilinx DLC5 JTAG Parallel Cable III
    • EA253 ETC EA253 JTAG Cable
    • EI012 ETC EI012 JTAG Cable
    • KeithKoep Keith & Koep JTAG cable
    • MPCBDM Mpcbdm JTAG cable
    • WIGGLER Macraigor Wiggler JTAG Cable

    It comes from: http://openwince.sourceforge.net/jtag/
  • javr-2.8 JTAG Programmer for Atmel's ATMega series of MCUs that has a JTAG interface. Not all devices are currently supported. The software currently only supports the byteblaster interface as defined by Altera. It comes from: http://home.telkomsa.net/antera/
  • ftdi_eeprom-0.2 Tool for creating/reading/erasing/flashing FTDI USB chip eeproms. It comes from: http://www.intra2net.com/de/produkte/opensource/ftdi/
  • +++ CANCELED +++ BIEW-20040306cvs (AVR disassembler inclusive) is a free, portable, advanced file viewer with built-in editor for binary, hexadecimal and disassembler modes. It contains a highlight PentiumIV/K7-Athlon/Cyrix-M2 disassembler, full preview of MZ, NE, PE, LE, LX, DOS.SYS, NLM, ELF, a.out, arch, coff32, PharLap, rdoff executable formats, a code guider, and lot of other features, making it invaluable for examining binary code.
    Together with the included AVR support you can view and disassemble AVR binaries and/or ELF files and archives -- it comes from: http://biew.sourceforge.net
  6.2 cdk-avr-tools-grephical This is a collection of some usefull graphical tools and utilities. It includes:
  • Mfile-1.46 Mfile - a simple Makefile generator for AVR-GCC
    The main purpose of this small application is to provide people an easy way to setup their project's Makefiles for »relatively standard« projects, so one could start using AVR-GCC without first studying the AVR's datasheet, plus the avr-libc documentation (really recommended!), /plus/ the »GNU make« user manual.
    It comes from: http://www.sax.de/~joerg/mfile/
  • avrdelayloop-0.3 creates delay loops for Atmels AVR microcontrollers (in assembler). The user can specify the number of cycles to wait, or alternatively the amount of time and the clock frequency. Install avrdelayloop if you need to perform any of these types of actions on your AVR developer code. Only some novice programmers or hunter of nice developer tools will want to install avrdelayloop. -- comes from: http://www.jonas-diemer.de/english/projects/avr-delayloop-generator.html
6.3 cdk-avr-geany Geany is a small and lightweight 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 Geany.

Basic features of Geany:
  • syntax highlighting
  • code completion
  • auto completion of often used constructs like if, for and while
  • auto completion of XML and HTML tags
  • call tips
  • many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal
  • symbol lists

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:
  • jtagice: AVR JTAG communication shell

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

Enhancements:
  • key click patch by Cougar (http://www.version6.net)
  • ported version of the code "Source for US seminars HVAC_SEM.zip" by Richard Wynn (based on application-gcc-port version 0.6.2)

Ref.: http://www.siwawi.arubi.uni-kl.de/avr_projects

  7.3 cdk-avr-example-ada "How to use the AVR Ada implementation"
Meaning of colors:
  green
  • projects with most significant development work
  • in about all cases there are more than one core developer
  yellow
  • projects with sporadical release flow
  • about each project will be maintained by only one programmer
  red
  • obsoleted and/or non continued projects
  • initiators, authors, and core developer undiscoverable or without furthermore development work

contact