Forum: Mikrocontroller und Digitale Elektronik Programmieren eines SMD Atmel uC


von Thilo G. (thilo11)


Lesenswert?

Hi,

aus Platzgründen bin ich gezwungen eine Platine in SMD-Technik zu löten 
(da es ein Hobby-Projekt ist wäre es mir sonst egal). Diese soll per USB 
an einen PC angeschlossen werden, daher wäre es natürlich ideal wenn man 
die Software auch per USB auf den uC laden könnte.

Glücklicherweise gibt es auf dieser Webseite 
http://www.obdev.at/products/vusb/prjobdev.html sogar zwei Firmwares die 
ein Programmieren per USB erlauben. Problem nur: wie bekomme ich denn 
die Firmware auf den uC? Für einen steckbaren uC hätte ich hier noch 
eine Platine mit Programmiermöglichkeiten.

Als uC habe ich vor einen Atmega 48PA zu verwenden, bin da aber flexibel 
so lange er mit etwas über 12MHz betrieben werden kann und mind. 2Kb 
Flash Speicher hat.

So jetzt zum Kern meines Anliegens: wie bekomme ich denn die 
USB-Programmier-Software auf den uC? Ich hätte noch einen alten Laptop 
mit COM-Port und Parallelport, d.h., theoretisch könnte ich mir so ein 
einfaches Programmierkabel basteln, aber das kann ich ja nicht einfach 
an einen SMD-Chip anschließen. Wie macht man das denn?



Danke & Grüße

Thilo


P.S. Ich habe von Elektronik nicht all zu viel Ahnung, also eher weniger 
Vorwissen voraussetzen bei euren Antworten ;-)

von Simon B. (nomis)


Lesenswert?

Thilo G. schrieb:
> So jetzt zum Kern meines Anliegens: wie bekomme ich denn die
> USB-Programmier-Software auf den uC?

Bist Du schon auf einen AVR-Typ festgenagelt? Ansonsten würde ich dir 
einen der at90usb* bzw. atmega*u*-Typen empfehlen, die kommen ab Werk 
mit einem Bootloader, der via USB eine Firmware entgegennehmen kann.

Wenn das für Dich keine Lösung ist, musst Du ansonsten die ISP-Pins auf 
entweder einen Stecker oder Testpunkte herausführen, an die Du dann 
vorübergehend Käbelchen ansteckst oder anlötest um "initial" einen 
USB-tauglichen Bootloader einzuspielen (oder direkt die finale 
Firmware).

Viele Grüße,
         Simon

von Thilo G. (thilo11)


Lesenswert?

Hallo,

nein, ich bin da prinzipiell flexibel, allerdings sollte der Chip 
möglichst wenig kosten. Wo kann ich so einen at90usb uC denn kaufen? 
Habe bisher nur mercateo.de gefunden die welche einzeln verkaufen. Ist 
der Händler zu empfehlen?




Grüße Thilo

von Karl H. (kbuchegg)


Lesenswert?

Wie ist das bei den AT90USB.
Kann man bei dem die Fuses über die Bootloader Schnittstelle verändern?


(Ich fürchte nämlich, du wirst um einen richtigen Programmer nicht 
umhinkommen. Egal wie du es drehst und wendest. Allerdings habe ich die 
AT90USB noch nicht genauer studiert. Daher die Frage)

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:
> Hi,
>
> aus Platzgründen bin ich gezwungen eine Platine in SMD-Technik zu löten
> (da es ein Hobby-Projekt ist wäre es mir sonst egal). Diese soll per USB
> an einen PC angeschlossen werden, daher wäre es natürlich ideal wenn man
> die Software auch per USB auf den uC laden könnte.

Dafür plaziert man auf der Platine einen JTAG- oder ISP-Stecker. Wenn 
Dir die normalen zu groß sind, gehe eben vom 2.54mm Raster aufs 1.27mm 
Raster.

Oder der Prozessor hat einen Bootloader fest eingebaut. Da fällt mir 
eben gerade der NXP LPC1343 ein. Wenn bei dem Prozessor ein bestimmter 
Pin während des Resets auf Gnd liegt, springt er in seinen Bootloader, 
meldet sich als Massenspeicher an, und dann darfst Du eine 32k große 
firmware.bin per Zerr&Plumps auf das so entstandene Laufwerk kopieren. 
Das Teil hat übrigens seine USB-Treiber für HID und für Mass Storage 
bereits im ROM. Die kannst Du also so benutzen, und das geht auch nicht 
von den 32k Flash ab, und man kommt sehr schnell zu Ergebnissen.

Das Teil kostet im TQFP48 in Einzelstückzahlen bei Farnell 5.21 netto. 
HVQFN33 ist etwas günstiger und kleiner, aber auch schwerer per Hand zu 
löten.

> Als uC habe ich vor einen Atmega 48PA zu verwenden, bin da aber flexibel
> so lange er mit etwas über 12MHz betrieben werden kann und mind. 2Kb
> Flash Speicher hat.

Schlechte Wahl. Das Teil hat keinen Hardware USB PHY, die erwähnte 
Software-Bastellösung ist nicht 100% konform zum USB-Standard. Finger 
wech, sofern nicht ernsthafte andere Gründe einen Einsatz nahelegen.

fchk

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:

> Habe bisher nur mercateo.de gefunden die welche einzeln verkaufen. Ist
> der Händler zu empfehlen?

Mercateo ist nur ein Vermittler, kein Händler im eigentlichen Sinne.

fchk

von Uwe S. (de0508)


Lesenswert?

Hallo,

ich möchte auch noch auf einen konfigurierbaren Bootlader aufmerksam 
machen:

- http://www.fischl.de/avrusbboot/

Den habe ich für eine Schaltung AVR-CDC angepasst
und mit einem USBASP ISP Programmer aufgespielt.

Dann erst denn den AVR-CDC Code aufgespielt.

- http://www.recursion.jp/avrcdc/

Also wenn Du 3 Pins frei hast, wäre das eine Lösung.

Sonst könnte man den 1-Wire / 2-Wire Serial Bootlader von Peter 
Dannegger verwenden und noch einen FT232RL zwischen USB und Serial 
Bootlader schalten.

- Beitrag "Re: Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain"

.

von Philipp (Gast)


Lesenswert?

Bau dir einen dieser einfachen Programmieradapter für'n Parallelport und 
dann mach's wie ich. Löte ein paar dünne Kabel an die entsprechenden 
Pins des Controllers, verbinde die mit dem Programmieradapter und flashe 
den Controller mit nem Bootloader, anschließend entfernst du die Kabel 
wieder. Verbraucht kein Platz, fällt nicht auf, setzt nur ne ruhige Hand 
vorraus.

von tipp (Gast)


Lesenswert?

genau bootloader und 3 pins fuer ne serielle schnittstelle.
du brauchst einen USB auf seriell(3.3 bzw 5v) adapter

zb hier
http://hackaday.com/2010/02/25/nokia-usb-cable-is-usb-to-serial-in-disguise/

von Simon B. (nomis)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Wie ist das bei den AT90USB.
> Kann man bei dem die Fuses über die Bootloader Schnittstelle verändern?

Nein.

> (Ich fürchte nämlich, du wirst um einen richtigen Programmer nicht
> umhinkommen. Egal wie du es drehst und wendest. Allerdings habe ich die
> AT90USB noch nicht genauer studiert. Daher die Frage)

Hm, ich habe schon ein paar Sachen mit at90usb162 und atmega32u2 gemacht 
und bisher hat es mir immer gereicht: Wenn man beim Start der eigenen 
Applikation die Clock umstellt und einen Weg vorsieht, wieder in den 
Bootloader einzusteigen (entweder wieder über die Applikation oder über 
die Reset+HWB-Kombination) dann kommt man schon ziemlich weit.

Viele Grüße,
        Simon

von Uwe S. (de0508)


Lesenswert?

Hallo,

genau das leistet auch diese Projekt:

- http://www.recursion.jp/avrcdc/

von Thilo G. (thilo11)


Lesenswert?

Hey,

das sieht ja echt klasse aus, da kann ich mir ja einiges an Arbeit 
sparen :-)
Da nehme ich ganz klar den, die paar Euro mehr sind die Zeitersparnis 
auf jeden Fall wert.

Und nachdem ich mir eure anderen Vorschläge durchgelesen habe, befürchte 
ich sowieso, dass ich besser beim ersten Projekt auf eine einfach zu 
handhabende Lösung zurückgreifen sollte, ganz besonders wenn sie bereits 
für so kleines Geld zu haben ist.



Grüße Thilo

von Thilo G. (thilo11)


Lesenswert?

Hallo,

Thilo G. schrieb:
> Hey,
>
> das sieht ja echt klasse aus, da kann ich mir ja einiges an Arbeit
> sparen :-)
> Da nehme ich ganz klar den, die paar Euro mehr sind die Zeitersparnis
> auf jeden Fall wert.
>
> Und nachdem ich mir eure anderen Vorschläge durchgelesen habe, befürchte
> ich sowieso, dass ich besser beim ersten Projekt auf eine einfach zu
> handhabende Lösung zurückgreifen sollte, ganz besonders wenn sie bereits
> für so kleines Geld zu haben ist.
>
>
>
> Grüße Thilo

Da sind ja einige Postings zwischen meiner Antwort und dem Posting von 
Frank K. Also ich habe mich für einen uC von NXP entschieden, habe deren 
Materialien schon angefangen zu durchforsten und das sieht schon fast zu 
gut, um wahr zu sein, aus :-)

Der LPC1343 bietet ein Serial Wire Debug Interface, nach ein wenig 
Googlen weiß ich zwar, dass es sich um eine Schnittstelle handelt die 
alle Arm Prozessoren haben, aber nicht was notwendig ist um einen PC 
damit zu verbinden. Allerdings konnte ich keinen Debugging-Adapter für 
diese Schnittstelle finden. Wo finde ich sowas denn?



Grüße Thilo

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:

> Da sind ja einige Postings zwischen meiner Antwort und dem Posting von
> Frank K. Also ich habe mich für einen uC von NXP entschieden, habe deren
> Materialien schon angefangen zu durchforsten und das sieht schon fast zu
> gut, um wahr zu sein, aus :-)
>
> Der LPC1343 bietet ein Serial Wire Debug Interface, nach ein wenig
> Googlen weiß ich zwar, dass es sich um eine Schnittstelle handelt die
> alle Arm Prozessoren haben, aber nicht was notwendig ist um einen PC
> damit zu verbinden. Allerdings konnte ich keinen Debugging-Adapter für
> diese Schnittstelle finden. Wo finde ich sowas denn?

ebay #170645458042 ist so ein Teil. In DE kostet das Teil als 
educational Version (nur freigegeben für gdb) irgendwas um die 70 Euro.

fchk

von Frank K. (fchk)


Lesenswert?

PS: Hier stehen die Pinouts für JTAG/SWI. Du wirst sicher den kleinen 
10-Pinner im 1.27mm Raster bevorzugen. Gegenüber dem großen 20-Pin 
Header ist das ein echter Fortschritt. Den Adapter 20-Pin/2.54mm 
Raster->10-Pin/1.27mm Raster musst Du Dir selber machen.

http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm

fchk

von Thilo G. (thilo11)


Lesenswert?

Hallo,

ich habe Gestern selbst auch noch ein bischen gesucht und ebenfalls zwei 
mögliche Debugger gefunden:
http://www.lpctools.com/lpc1343.lpcxpresso.aspx
http://elmicro.com/de/cortex-m3-ulink-me.html

Ich nehme mal an, dass man den ersten Debugger nur mit der LPXpresso IDE 
benutzen kann und auch nur mit ausgewählten uCs. Das Handbuch sagt dazu:
LPC-LINK JTAG/SWD debugger

The LPCXpresso board contains a JTAG/SWD debugger called the “LPC-Link” 
and a
target MCU. LPC-Link is equipped with a 10-pin JTAG header (highlighted 
on the above
image) and it seamlessly connects to the target via USB (the USB 
interface and other
debug features are provided by NXP’s ARM9 based LPC3154 MCU). Cutting 
the tracks
between the LPC-link and the target will make the LPC-Link a stand-alone 
JTAG
debugger. This enables the LPCXpresso platform to be connected to an 
external target
and used to develop for a wide variety of NXP’s Cortex-M0, Cortex-M3, 
and ARM7/9
based applications. Currently supported microcontroller products include 
LPC1700,
LPC1300, LPC1200, and LPC1100 series and specific members of the LPC2000 
and
LPC3000 families.

Für meine Zwecke würde dieser Debugger völlig ausreichen, aber ich 
schätze mal der aus dem zweiten Link wäre universeller einsetzbar, 
kostet aber auch deutlich mehr...

Soweit ich das überschaue gibt es keinen universellen Debugger und ich 
bin am Ende auf einige ausgewählte Familien eingeschränkt, oder? Dann 
wäre ich mit dem LPCXpresso board doch eigentlich nicht schlecht dran.

Beim JTAG-Interface bin ich aktuell noch am überlegen, ob ich auf der 
Platine nicht einfach nur die SWD-Pins rausführe und dann den 
JTAG-Adapter auf eine eigene kleine Platine platziere, so liese sich 
etwas Platz sparen. Aber evtl. passt es auch schon mit auf die Platine, 
mal sehen.



Grüße Thilo

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thilo G. schrieb:
> Soweit ich das überschaue gibt es keinen universellen Debugger

Da irrst Du glücklicherweise. Für ARMe gibt es die FT2232-basierenden 
OpenOCD-JTAG-Interfaces, oder auch (sofern nicht kommerziell eingesetzt 
auch recht günstig) den J-LINK von Segger. Beide können mit den üblichen 
verbreiteten ARM-Kernen (ARM7TDMI sowie Cortex-M) verwendet werden. Der 
Rest ist eine Frage des von Dir verwendeten Entwicklungssystemes.

von Frank K. (fchk)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Thilo G. schrieb:
>> Soweit ich das überschaue gibt es keinen universellen Debugger
>
> Da irrst Du glücklicherweise. Für ARMe gibt es die FT2232-basierenden
> OpenOCD-JTAG-Interfaces,

Die können aber kein SWI/SWD, und gerade bei Bausteinen mit wenig Pins 
ist das ärgerlich.

fchk

von Thilo G. (thilo11)


Lesenswert?

Hallo,

ich habe mich zu SWD zwar etwas eingelesen, aber ich bin mir nicht 
sicher, ob der Debugger dafür explizit support anbieten muss, oder ob es 
genügt, wenn man einen SWD <-> JTAG Adapter baut (die Abbildung der 
Anschlüsse steht in dem Link zum Keil ulink2). Aber ich gehe mal eher 
nicht davon aus, sonst hätte man ja keine Probleme einfach immer den 
kleinen Anschluss von SWD zu verwenden und könnte sich die restlichen 
Anschlüsse sparen.

Warum gibt es den 20-poligen JTAG Anschluss überhaupt? Es werden ja 
weniger als 10 Pole benutzt.


Grüße Thilo

P.S. Ratet ihr mir denn zu dem Xpresso Board, oder soll ich doch lieber 
etwas tiefer in den Geldbeutel greifen und etwas anderes kaufen?

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:
> Hallo,
>
> ich habe mich zu SWD zwar etwas eingelesen, aber ich bin mir nicht
> sicher, ob der Debugger dafür explizit support anbieten muss, oder ob es
> genügt, wenn man einen SWD <-> JTAG Adapter baut (die Abbildung der
> Anschlüsse steht in dem Link zum Keil ulink2). Aber ich gehe mal eher
> nicht davon aus, sonst hätte man ja keine Probleme einfach immer den
> kleinen Anschluss von SWD zu verwenden und könnte sich die restlichen
> Anschlüsse sparen.

Die Debugger-Hardware muss SWD explizit können. SWD ist bei den 
Cortex-Kernen neu hinzugekommen, die älteren ARM7/ARM9 haben es nicht.

Ganz alte JTAG-Adapter von Segger können es z.B. nicht (erst ab HW 
Version 6 oder 7 glaub ich), die ganzen FT2232-Billigadapter können es 
durch die Bank weg nicht (weil der FTDI-Chip es nicht kann), und auch 
sonst gilt: nur wo es explizit dabei steht, ist es auch drin.

> Warum gibt es den 20-poligen JTAG Anschluss überhaupt? Es werden ja
> weniger als 10 Pole benutzt.

Die Idee ist, zwischen den Signalleitungen Masseleitungen zu haben, um 
beispielsweise Übersprechen zwischen den Signalen zu verhindern, und um 
so das Flachbandkabel länger machen zu können.

> P.S. Ratet ihr mir denn zu dem Xpresso Board, oder soll ich doch lieber
> etwas tiefer in den Geldbeutel greifen und etwas anderes kaufen?

Ich würde beim Chinesen kaufen - siehe den ebay-Link. Billiger bekommst 
Du das Teil nicht, es kann wirklich alles, d.h. JTAG, SWD, SWO (d.h. 
Serial Trace Output), es verträgt Targetspannungen von 1.2V bis 3.3V, es 
funktioniert mit allen wichtigen Softwarepaketen (IAR, KEIL, gcc/gdb mit 
OpenOCD, RDI-Interface vorhanden,...). Einziger Nachteil für Dich: Du 
musst Dich etws in Geduld üben.

Ich habe bislang mit ébay-Bestellungen in .cn und .hk keine schlechten 
Erfahrungen gemacht.

Auf der anderen Seite hast Du bei Xpresso-Board gleich eine lauffähige 
Target-Hardware, was auch schon sehr nützlich ist.

Vielleicht heißt die Antwort auch nicht "entweder oder", sondern "sowohl 
als auch".

fchk

von Thilo G. (thilo11)


Lesenswert?

Frank K. schrieb:
> Ich würde beim Chinesen kaufen - siehe den ebay-Link. Billiger bekommst
> Du das Teil nicht, es kann wirklich alles, d.h. JTAG, SWD, SWO (d.h.
> Serial Trace Output), es verträgt Targetspannungen von 1.2V bis 3.3V, es
> funktioniert mit allen wichtigen Softwarepaketen (IAR, KEIL, gcc/gdb mit
> OpenOCD, RDI-Interface vorhanden,...). Einziger Nachteil für Dich: Du
> musst Dich etws in Geduld üben.
>
> Ich habe bislang mit ébay-Bestellungen in .cn und .hk keine schlechten
> Erfahrungen gemacht.
>
> Auf der anderen Seite hast Du bei Xpresso-Board gleich eine lauffähige
> Target-Hardware, was auch schon sehr nützlich ist.
>
> Vielleicht heißt die Antwort auch nicht "entweder oder", sondern "sowohl
> als auch".
>
Das klingt vernünftig. Werde mir wegen der Lieferzeiten den Xpresso 
holen und für zukünftige Projekte kann ich dann den vom Chinesen nehmen, 
der wird bis dahin dann angekommen sein :-)



Grüße Thilo

von Thilo G. (thilo11)


Lesenswert?

Hallo,

Frank K. schrieb:
> PS: Hier stehen die Pinouts für JTAG/SWI. Du wirst sicher den kleinen
> 10-Pinner im 1.27mm Raster bevorzugen. Gegenüber dem großen 20-Pin
> Header ist das ein echter Fortschritt. Den Adapter 20-Pin/2.54mm
> Raster->10-Pin/1.27mm Raster musst Du Dir selber machen.
>
> http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm
>
Wie heißt denn diese 10-Pin Buchse wie sie für den 10-Poligen ARM JTAG 
Anschluss verwendet wird? Und wo würde ich ein Kabel von Buchse <-> 
Buchse bekommen?



Grüße Thilo

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:

> Wie heißt denn diese 10-Pin Buchse wie sie für den 10-Poligen ARM JTAG
> Anschluss verwendet wird? Und wo würde ich ein Kabel von Buchse <->
> Buchse bekommen?

Kabel Farnell 1667659 Samtec FFSD-05-*
Stecker zB Farnell 1801434 Samtec SHF-105-*

fchk

von ... (Gast)


Lesenswert?

Frank K. schrieb:
> die ganzen FT2232-Billigadapter können es
> durch die Bank weg nicht (weil der FTDI-Chip es nicht kann)

Das ist so pauschal mal falsch.
Der ICDI von Luminary Micro/TI ist FT2232 basiert und kann SWD.

von Thilo G. (thilo11)


Lesenswert?

Frank K. schrieb:
> Thilo G. schrieb:
>
>> Wie heißt denn diese 10-Pin Buchse wie sie für den 10-Poligen ARM JTAG
>> Anschluss verwendet wird? Und wo würde ich ein Kabel von Buchse <->
>> Buchse bekommen?
>
> Kabel Farnell 1667659 Samtec FFSD-05-*
> Stecker zB Farnell 1801434 Samtec SHF-105-*
>
Die Preise sind ja schon ganz schön unverschämt für das bischen Plastik 
+ Metall. Da bekomm ich den LPC1343 für 5€, aber für ein Sockel aus ein 
wenig Plastik mit ein paar Metallstiften muss ich über 3€ bezahlen, da 
stehen Preis und Nutzen ja gar nicht mehr in Relation zueinander :-/

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:

>> Kabel Farnell 1667659 Samtec FFSD-05-*
>> Stecker zB Farnell 1801434 Samtec SHF-105-*
>>
> Die Preise sind ja schon ganz schön unverschämt für das bischen Plastik
> + Metall. Da bekomm ich den LPC1343 für 5€, aber für ein Sockel aus ein
> wenig Plastik mit ein paar Metallstiften muss ich über 3€ bezahlen, da
> stehen Preis und Nutzen ja gar nicht mehr in Relation zueinander :-/

Einzelstückzahlen halt. Ansonsten nimm einfach hundsgewöhnliche 1.27 2x5 
Stiftleisten ohne Kragen. Dann musst Du eben aufpassen, wierum Du den 
Stecker aufsteckst.

fchk

von Thilo G. (thilo11)


Lesenswert?

Hallo,

Frank K. schrieb:
> Thilo G. schrieb:
>
>> Wie heißt denn diese 10-Pin Buchse wie sie für den 10-Poligen ARM JTAG
>> Anschluss verwendet wird? Und wo würde ich ein Kabel von Buchse <->
>> Buchse bekommen?
>
> Kabel Farnell 1667659 Samtec FFSD-05-*
> Stecker zB Farnell 1801434 Samtec SHF-105-*
>
gibt es das Kabel auch bei reichelt? Konnte es bisher nirgends finden 
(ehrlich gesagt finde ich es noch nicht einmal bei Farnell, wenn ich 
nicht deine Produktbezeichnung verwende) und will wegen einem Kabel 
nicht extra noch Versandkosten bezahlen müssen.



Grüße Thilo

von Frank K. (fchk)


Lesenswert?

Thilo G. schrieb:

>> Kabel Farnell 1667659 Samtec FFSD-05-*
>> Stecker zB Farnell 1801434 Samtec SHF-105-*
>>
> gibt es das Kabel auch bei reichelt? Konnte es bisher nirgends finden
> (ehrlich gesagt finde ich es noch nicht einmal bei Farnell, wenn ich
> nicht deine Produktbezeichnung verwende) und will wegen einem Kabel
> nicht extra noch Versandkosten bezahlen müssen.

nein.

Du kannst auch bei RS schauen, die versenden versandkostenfrei.

fchk

von Thilo G. (thilo11)


Lesenswert?

Frank K. schrieb:
> nein.
>
> Du kannst auch bei RS schauen, die versenden versandkostenfrei.
>
schade. Bei RS gibt es leider nur Kabel ab 2*10 pins

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.