2010-10-01 20 views
7

Ich werde bald mit einem offiziellen Training (CPU-Seite) auf den ARM Cortex M3 Zug aufbrechen.Beratung für ARM Cortex M3 Anfänger

Jetzt habe ich ein bisschen Arduino und AVR vor und habe ein paar Grundlagen in Elektronik, aber ich bin meist ein Softwareentwickler. Ich habe die meisten Themen hier und einige andere in Bezug auf die verfügbaren Tools gelesen und sie waren sehr hilfreich. Was ich brauche, ist etwas, um all diese Antwortelemente miteinander zu verbinden.

Ich möchte mich mit einem Starter-Kit ausstatten, das allgemein genug ist, um mich in Gang zu bringen und mir zumindest erlaubt, verschiedene Hardware/Software-Kombinationen zu experimentieren (Stepper, CAN-Bus, SPI etc ...). Ich bin auf der Suche auf die folgende Liste (wenden Sie sich bitte weitere Artikel hinzufügen!):

  • Cortex M3 Chip
  • Evaluation Board
  • Tool Chain
  • JTAG Tools

Für die Ich möchte, dass eines der High-End-Modelle ein bisschen von allem ausprobieren kann. Der NXP LPC1768 scheint eine gute Wahl zu sein, aber es gibt auch STM und Stellaris zu beachten.

Interessante Kandidaten für das Board sind jetzt der Keil MCP1760, der STM3210E-EVAL, aber ich habe Angst vor der Lockout-Funktion des Anbieters, da ich verschiedene Toolchains auf einer einzigen Platine ausprobieren möchte. mBed ist sehr attraktiv, aber aufgrund seines Online-Compilers nicht in der richtigen Gleichung (außer es kann auch ein normaler Compiler verwendet werden)

Für die Toolchain habe ich ein "Gefühl" gegenüber IAR, Rowley Associates. Ich würde die Benutzerfreundlichkeit/den Wohlgeschmack gegenüber Open Source bevorzugen und vorzugsweise Tools, die auf mehreren Zielen verwendet werden können.

Benötige ich wirklich eine JTAG-Einheit? Wenn es ein "Standard-Industrie-Tool" ist, wie es scheint, möchte ich zumindest etwas Erfahrung damit sammeln. Es sieht wie eine andere Quelle von Vendor-Lock-in hart aus. Wäre es besser, einen externen zu verwenden, mit dem ich mich vertraut machen kann oder den ich einfach auf dem Evaluierungsboard verwende?

Grundsätzlich brauche ich Hilfe bei der Auswahl einer Gewinnkombination für die oben genannten Kategorien. Ist es überhaupt möglich oder bin ich naiv und sollte sparen, weil ich am Ende eines davon kaufen werde?

Vielen Dank.

ERGEBNISSE: Was ich bestellt:

I Joseph Yiu "The Definitive Guide auf die ARM-CortexM3 (Embedded Technology)" schließlich kaufte, fand eine Ausbildung für die CortexM3 Plattform (in Kürze) und gekauft ein STMicro-Kit: STM3210C-Eval, das eine Reihe von Sensoren eingebaut hat und nicht an eine bestimmte Softwareumgebung gebunden ist. Ich habe auch ein paar STm32vl-Discovery Boards (13 $ cdn von digikey!) Mit integriertem JTAG aufgenommen. Ich spiele jetzt mit einer Evaluierungsversion (32K) von Keils uVision IDE und kann sagen, dass ich wirklich beeindruckt bin! Ich war in der Lage, die Firmware der Discovery neu zu erstellen, sie wieder zu laden und sie mit dem Debugger an einem einzigen Tag zu durchlaufen!

Danke allen!

+1

Sie könnten dies auf http://electronics.stackexchange.com –

+0

fragen Danke, tolle Seite, ein weiteres Lesezeichen! –

+0

Ich habe die Stm32vl-Erkennung, aber nur die Stm32f-Erkennung. 168Mhz, i- und d-Caches, Gleitkommaeinheit, Krypto, Hash, eine ordentliche Menge an Speicher, viel Flash, usw., usw. für $ 20 oder weniger. Die Leute gehen ins Lager und diese bleiben auf meinem Schreibtisch. https://github.com/dwelch67/stm32vld/tree/master/stm32f4d –

Antwort

1

Ich bin auch ursprünglich ein Softwareentwickler. Ich habe ein paar verschiedene Kits benutzt, aber dasjenige, das ich am einfachsten benutze und das meiste damit gemacht habe, ist mbed.Sie können es buchstäblich in fünf Minuten nach dem Öffnen der Box in Betrieb nehmen. Keine Notwendigkeit, irgendwelche IDEs von der CD zu installieren, keine Notwendigkeit für die JTAG Dongles, keine Notwendigkeit, über Datenblätter zu gießen - schreiben Sie einfach den Code, kompilieren Sie und laufen Sie.
Ja, einige beschweren sich, dass es mit dem Online-Compiler "verbunden" ist. Aber ich habe das nur von Leuten gehört, die es nicht wirklich versucht haben. Und es ist nur nicht wahr - Sie können immer noch andere Toolchain verwenden, die Binärdateien für LPC1768 erzeugen können: IAR, Keil, CodeSourcery, Yagarto oder Ihre eigene Toolchain. Ich habe selbst noch keinen Fall dafür gefunden, aber es ist sicherlich möglich.
Wahrscheinlich ist der größte Nachteil von mbed, dass es die JTAG-Schnittstelle nicht aussetzt und Sie daher nicht interaktiv debuggen können. Bisher habe ich das nicht kritisch gefunden, aber es könnte wichtig sein, wenn Sie viel Arbeit auf niedriger Ebene machen.

+1

Ein großer Nachteil der Cortex-m3 ist, dass ARM auf eine Jtag-Schnittstelle geändert hat, die weniger Pins verwendet (einige serielle Dinge, obwohl Jtag bereits seriell ist) und Sie werden die Dokumentation nicht ohne eine NDA veröffentlichen, zumindest war das der Fall, als ich Anfang dieses Jahres versucht habe. Also mit etwas wie dem mbed oder stellaris, wo Sie nicht in eine Sandbox gesperrt sind, aber eine Möglichkeit haben, Ihre Programme zu laden, ist für einen Cortex-m3 wünschenswert. –

+1

Eigentlich ist SWD (Two-Wire JTAG) eine Option auf Cortex-M3, keine Voraussetzung. Zum Beispiel hat LPC17xx immer noch den vollen Vierdraht-JTAG (aber LPC11xx und LPC13xx sind tatsächlich nur SWD-fähig). Und die SWD-Dokumente sind definitiv ohne NDA verfügbar, obwohl Sie sich möglicherweise auf arm.com registrieren müssen, um sie herunterladen zu können. –

+0

Das mbed wäre vor allem wegen des Preises meine erste Wahl für Hausprojekte gewesen. Ich bin derzeit auf der Suche nach einem Training von Doulos und möchte eventuell einige kundenspezifische Boards herstellen, um Kosten zu sparen. In einer Lernerfahrung dachte ich daran, mit dem vollen Outfit zu gehen (gründliches M3-Lernen, JTAG, Source-Debugging etc.). Vielleicht sollte ich es noch nicht ausschließen? –

2

Sie könnten sich die Atmel ATSAM3U-EK dev kit (ca. $200 from Digi-Key) ansehen. Es verfügt über einen LCD-Touchscreen, Beschleunigungsmesser, Temperatursensor, analoge Eingänge, JTAG, zwei serielle Schnittstellen und USB 2.0 (eingebaut in SAM3U).

Die Sache, die ich an der SAM3-Serie mag, ist das einfache Bring-up. Es hat ein On-Board-ROM sowie Flash für Programmspeicher. Ab Werk wird das ROM gebootet (Sie ändern es später, um vom Flash zu starten), wodurch der USB-Anschluss gestartet wird, der sich als USB-Kommunikationsgeräteklasse (CDC) deklariert und den SAM-BA-Boot-Monitor ausführt. Es hat auch einen On-Chip-ERASE-Pin, der das Ganze auf Werkseinstellungen zurücksetzt.

Also alles, was Sie zu tun haben, von Grund auf neu zu programmieren, ist:

  • Jumper ERASE für mindestens 200 ms mit der Leistung auf
  • zurückgesetzt und stecken Sie die Karte in einen USB-Port
  • Atmels SAM-BA-Programm auf Windows oder Linux laufen
  • wählen Sie die serielle Schnittstelle
  • ermöglichen Flash-Schreiben
  • wählen Sie Ihre Binärdatei und senden Sie es
  • setzen Sie es von Flash
  • booten, haken Sie den USB aus und drücken Sie erneut auf Reset.

Kein Dongle oder JTAG-Box benötigt. Ich weiß, dass das Umprogrammieren über JTAG durch IAR wahrscheinlich weniger Schritte erfordert, aber ich mag es zu wissen, dass es einen Weg gibt, einen bekannten Zustand zu erreichen, wenn die anderen Werkzeuge kaputt gehen.

Die IAR-Toolchain unterstützt die SAM3-Serie und es gibt eine port of FreeRTOS to SAM3U + IAR (die ich jetzt versuche, auf SAM3U + GCC zu portieren, da IARs $ 5K-Lizenzen zu reich für uns sind).

Noch eine nette Sache über die SAM3U-EK: Es hat einen NAND-Flash an Bord, und wenn Sie die Karte in einen Computer stecken, während es die Demo läuft, wird es den Blitz auf Ihrem Computer als "Flash-Laufwerk" . Auf diesem Flash finden Sie die Dokumentation, Schaltpläne, Demo-Programme und Bibliotheken für GCC-, IAR- und Keil-Toolchains sowie Anweisungen und Dateien zum Wiederherstellen des Demoprogramms auf dem Board (nützlich, falls Sie denken, dass Sie etwas kaputt gemacht haben).

+0

Das sieht wirklich wie ein nettes Brett aus. Wenn ich ein geladenes Board haben soll, Ethernet und CANbus sind hoch sind meine Prioritätenliste und nicht hier. –

3

Ich habe einen Daumen-Simulator http://github.com/dwelch67/thumbulator/wiki/thumbulator das ist nur Daumen und nicht Daumen 2, aber die Cortex-M3 macht Daumen und Daumen2. Sie müssen sich über die Unterschiede eine Weile nicht sorgen. Das Regress-Verzeichnis enthält eine make-Datei für die Beispiele gcc und llvm. Die Readme könnte sogar das Thema abdecken.

sowohl llvm und gcc sind völlig in Ordnung, keine Notwendigkeit, eine Software zu kaufen.Die meisten Leute, die hier kostenlose Hilfe anbieten, werden GCC-Nutzer sein. Codesourcery ist der aktuelle Ort, um den neueren/besseren gcc (für Arm) zu bekommen. Die Lite-Version ist völlig in Ordnung. Dein eigenes GCC zu rollen ist eine relativ einfache Sache, aber vielleicht bist du nicht in etwas. Eine nette Sache über llvm ist, dass es immer ein Cross-Compiler ist und Pre-Builds normalerweise mehrere/alle Ziele haben.

Ich habe auch stellaris und mbed und andere cortex-m3 Beispiele da draußen. Ich mag stellaris, kein Fan von lpc, vermeiden Sie den Espresso, das mbed ist eigentlich nicht schlecht. Die verrückten hellen blauen LEDs geben mir eine migrane, also ersetzte ich sie mit grün, sonst funktioniert es gut, einfach zu bedienen. Igor hat recht, du bist nicht in ihre Sandbox gesperrt, wie du es mit dem Expresso bist, ich habe ein Beispiel, wie ich die LEDs mit gcc zwinge, irgendwo da draußen etwas zu kompilieren. Sie kopieren einfach die .bin-Datei in das Objekt, das wie ein Flash-Laufwerk aussieht, und drücken Sie die Reset-Taste, um die neue Datei zu laden.

sparkfun.com hat das stm32-Header-Board für unter $ 50 plus das mbed und wer weiß was noch. Die Stellaris-Boards liegen im Sub-100-Bereich und sind völlig in Ordnung. Ich habe meine 811 fast augenblicklich gemauert, indem ich versehentlich genau das getan habe, was die Warnung nicht gesagt hat. Turned my Jtag gpio Pins den falschen Weg und ... Spiel vorbei. Die 1968 und andere Nicht-811-Serien sind entweder nicht brickbar oder nicht so einfach zu brick. Die Stellaris-Boards zerkauen all das mit Onboard-Peripheriegeräten, was eine Weile Spaß macht, aber nicht, wenn Sie etwas anderes machen wollen, als nur diese Peripheriegeräte zu benutzen. Sie werden einen Jtag Wiggler wollen, wenn Sie den Stm32 Header verwenden (vermeiden Sie die Stm Primer) Amontek macht einen guten, der Jtag-Tiny, und der Olimex sollte gut funktionieren, aber ich weiß eigentlich nicht, dass ich jemals meins davon bekommen habe die Kiste. In der Theorie kann ein Stellaris-Brett als ein Jtag-Wiggler für ein anderes oder für andere Cortex-m3s verwendet werden. Wenn Sie ein Stellaris-Board haben, brauchen Sie nichts anderes. Alles, was Sie brauchen, ist in der Box zu einem Preis enthalten. Wenn Sie diese Toolchain nicht verwenden möchten, können Sie eine der oben genannten herunterladen.

+0

Es ist wahr, dass es mittelfristig mein Ziel ist, den Chip aus einem Evaluierungsboard herauszuholen. Mit einem Board voller Gadgets anzufangen, gefällt mir sehr, um mich darauf zu konzentrieren, die CPU zu lernen und nicht, wie man Dinge miteinander verbindet. Das stm32 Header sieht allerdings gut aus! PS: Was ist der Unterschied zwischen einem JTAG und einem Wiggler? wenn überhaupt? –

+0

Selbe Sache. Was ich Wigglers nenne, sind ein bisschen knallte JTAG, gegen eine zweckentworfene jtag Schnittstelle. Verwendet, um parallele Ports zu verwenden, aber jetzt usb zu parallelen Port-Typ-Chips. –

2

Ich für meinen Teil mag das LPCXpresso Board für LPC1768. Es verfügt über eine integrierte USB-JTAG-Schnittstelle und eine kostenlose Version der Code Red IDE (Eclipse-basiert). Ich fand das interaktive JTAG-Debugging sehr hilfreich, wenn ich lernte, diesen Chip zu verwenden. Normalerweise verwende ich beim Programmieren kein interaktives Debugging, aber für die Embedded-Programmierung finde ich es immer wichtiger.

Das Ganze kostet nur $ 33 auf DigiKey.

Verwandte Themen