\documentclass[11pt,a4paper]{article} % language support \usepackage[german]{babel} \usepackage[utf8]{inputenc} \usepackage{pslatex} % use native PostScript fonts \usepackage{multicol} \usepackage{url} % \url{} \path{} with correct "hyphenation" \usepackage{fancyvrb} % for code examples % \voffset-10mm % \pagestyle{empty} % \pagestyle{plain} % \pagestyle{headings} % \renewcommand{\baselinestretch}{1.08} %\usepackage{xspace} \parindent=0pt \begin{document} \title{USBasp — ein Programmierer für AVRs}[USBasp–Programmierer] \author{Ulrich Hoffmann} \maketitle \begin{multicols}{2} \begin{abstract} Die \emph{Im--System--Programmier}--Schnittstelle (engl.\ in system programming, ISP) der Firma Atmel erlaubt Programmiergeräten, AVR--Prozessoren direkt in der Schaltung zu programmieren. Der von Thomas Fischl entwickelte Open--Source--Programmierer USBasp ist ein solches Gerät, das selbst von einem ATMega8--Prozessor gesteuert wird und seine USB--Schnittstelle rein durch Software realisiert. \end{abstract} % \renewcommand{\figurename}{Tabelle} % \section{Bootstrap --- Bootstrap} Forth--Programme wollen ihren Weg in den Programmspeicher der AVR--Prozessoren finden. Handelt es sich um ein interaktives Forth--System, so muss nur der Forth--Kern als eine Art Bootstrap--Loader in den Prozessor geschrieben werden. Forth--Programme werden dann interaktiv auf diesen Kern geladen und gegebenenfalls durch Autoprogrammierung der AVR--Chips in den Programmspeicher übernommen. Handelt es sich um einen Forth--Cross--Compiler, dann werden Forth--Anwendungen schon auf dem Entwicklungs--PC in AVR--Code übersetzt und gelangen dann auf direktem Weg in den Chip. In beiden Fällen muss der AVR--Programmspeicher von außen durch ein Programmiergerät beschrieben werden. Der von Thomas Fischl entwickelte kostengünstige Open--Source--AVR--Programmierer USBasp kann dazu verwendet werden. Er wird wie folgt zwischen Entwicklungs--PC und AVR--Zielsystem geschaltet: \begin{center} \includegraphics[width=0.8\columnwidth]{2007-Sonderheft-AVR/usbasp-connection}\\ \end{center} Die Verbindung zum Entwicklungs--PC (oder Mac) wird dabei über eine USB--Schnittstelle hergestellt, deren Ansteuerung im USBasp durch die AVR--USB--Treiber--Firmware [\ref{usbasp:avruasb}] von Objective Development rein durch Software realisiert ist. Die Verbindung zum Zielsystem erfolgt über die \emph{Im--System--Programmier}--Schnittstelle ISP mittels des AVR--typischen 6Pin-- oder 10Pin--Steckverbinders [\ref{usbasp:ispconnectors}]: \begin{center} \includegraphics[width=0.8\columnwidth]{2007-Sonderheft-AVR/ispconnector6pin}\\ \end{center} Im USBasp werkelt selbst ein ATMega8--Prozessor, der neben dem AVR--USB-Treiber auch Thomas Fischls freie Firmware enthält, die die ISP--Schnittstelle bedient und die Programmieralgorithmen realisiert. Eine Steuersoftware auf dem Entwicklungs--PC kontrolliert wiederum den USBasp. Unter Windows, Linux, Mac OS X, \ldots kommt das Open--Source--Kommandozeilen--Programm AVRDUDE [\ref{usbasp:avrdude}] zum Einsatz, das neben zahlreichen anderen AVR--Programmierern eben auch den USBasp unterstützt. Zum Ansprechen der USB--Schnittstelle (auf PC--Seite) stützt sich AVRDUDE dabei auf die Open--Source--Bibliothek LibUsb [\ref{usbasp:libusb}]. Der Programmierer lässt sich auch von Ungeübten ohne große Probleme selbst zusammenbauen. Neben dem ATMega8--Prozessor werden nur ein Quarz, zwei Hände voll Widerstände, ein paar Kondensatoren und zwei Leuchtdioden zur Statusanzeige benötigt. Verwendet man Thomas Fischls Platinenentwurf, dann kann ein aufgebauter USBasp so aussehen: \begin{center} \includegraphics[width=0.8\columnwidth]{2007-Sonderheft-AVR/usbasp-pict}\\ Ein betriebsbereiter USBasp--Programmierer \end{center} Weitere Informationen, unter anderem der USBasp--Schaltplan, finden sich auf der USBasp--Homepage [\ref{usbasp:usbasp}]. \end{multicols} \section{Links} \begin{footnotesize} \renewcommand{\labelenumi}{[\arabic{enumi}]} \begin{enumerate} \item \label{usbasp:usbasp} USBasp--Hompage: \url{http://www.fischl.de/usbasp/} \item \label{usbasp:avruasb}AVR--USB--Treiber (rein in Software): \url{http://www.obdev.at/products/avrusb/} \item \label{usbasp:avrdude} AVRDUDE, {\bf AVR}--{\bf D}ownloader/{\bf U}ploa{\bf DE}r: \url{http://www.nongnu.org/avrdude/} \item \label{usbasp:libusb} LibUsb für Unix: \url{http://libusb.sourceforge.net/} \item LibUsb für Windows: \url{http://libusb-win32.sourceforge.net/} \item Atmel--AVR bei Wikipedia: \url{http://de.wikipedia.org/wiki/Atmel_AVR} \item \label{usbasp:ispconnectors} ISP--Steckverbinder: \url{http://www.hardwarebook.info/AVR_ISP} \end{enumerate} \end{footnotesize} \end{document}