Hallo,
ich wollte mit dem Cortex M3 mal einwenig Erfahrung sammeln und bin auf
der Suche nach einem Board, das folgende Anforderungen erfüllen sollte:
- Preis unter 100€
- CAN und/oder Ethernet
- JTAG-Zugang
Ich würde gerne den gcc einsetzen und damit ein paar Programme
schreiben. Ich habe hier im Forum schon einwenig nach Boards geschaut,
aber so recht weiß ich einfach nicht was ich nehmen soll. Die einen
schwören auf die STM32-Family, die anderen auf die Produkte Luminary
Micro.
Wäre schön, wenn mir jemand bei der Entscheidung helfen könnte!
Besten Dank
Rotax
Wie ist aktuell der "Errata"-Stand beim NXP, speziell beim LPC 1768 ;-)
Vor gut einem Jahr, hat man ja überwiegend au die STM32 empfohlen?
Und welche Entwicklungsumgebung ist besonders zu empfehlen IAR, GCC (?),
Reddingsbums?
Hi
Also ich verwendet folgendes Demoboard: www.olimex.com. Abschnitt ARM -
Cortex M3. Die Platinen sind sehr billig : ~50€. Als Chip kommt der
STM32 von ST zum Einsatz. ST Datenblatt ist super!. Firmware für alle
Funktionen des Chips verfügbar.
Ein JTAG Interface ist auch zu finden (~40€). Programmieren kannst du
das Ganze mit dem TrueStudio von Atollic (da sind alle Firmwarelibraries
schon dabei und werden beim Erstellen eines Projekts automtisch
hinzugefügt).
Lg
Hallo,
ich hatte letztes Jahr das MCB STM32-Board von Keil. Das wird mit mit
dem ULINK-ME Programmieradapter geliefert und kostet um die 250€. Es hat
USB und CAN.
Bin mit dem Board und dem STM32 super klargekommen, habe aber nach 2
Monaten die Firma gewechselt und kann keine Langzeiterfahrungen
berichten.
Gruß
Andreas
@Tom:
würde mir kein Board mit STM32 zulegen. Nur die Freescale Datenblätter
zum Coldfire sind noch schlechter.
Ich nutze die IAR Umgebung, die ich auch wieder nehmen würde. GCC war
mir auf dem Coldfire zu viel Frickelkram.... evtl. ist es ja auf dem ARM
besser. Ausprobieren wollte ich es aber nicht. Wenn es günstig sein
muss, dann vielleicht die Crossworks Umgebung, die zwar auch auf GCC
basiert, aber da ist wohl viel hinter der IDE verborgen:
http://www.rowley.co.uk/arm/index.htm
> JTAG Interface (J-Link) für den privaten Gebrauch gibt es z.B. von> Segger für 130,-€
Ne, ist doch billiger geworden, kostet nur noch um die 60 Euro.
Arne schrieb:
> würde mir kein Board mit STM32 zulegen. Nur die Freescale Datenblätter> zum Coldfire sind noch schlechter.
Na so schlimm ist es nun auch wieder nicht.
Eine Einarbeitungsphase braucht es sowieso, und nach rel. kurzer Zeit
hat man sich an die Doku gewöhnt und weiß, wo was wie steht.
Arne schrieb:
> würde mir kein Board mit STM32 zulegen. Nur die Freescale Datenblätter> zum Coldfire sind noch schlechter.
Hattest du schonmal ein Infineon-Controller-Datenblatt (TriCore, XCxxxx)
in der Hand?
> Ne, ist doch billiger geworden, kostet nur noch um die 60 Euro.
Hab vor zwei Wochen noch 130,- bezahlt :-/
> Na so schlimm ist es nun auch wieder nicht.
Ansichtssache... ich bin besseres gewöhnt. Die zum AVR oder von LM/TI
zum Cortex z.B.
Das UM zum STM32 finde ich aber zum Abgewöhnen! Hab zwei Tage gebraucht,
um vor einem Jahr den ADC in Gang zu bringen. DMA Mem2Mem funktioniert
momentan immer noch nicht, da hierzu im UM einfach mal essentielle
Erläuterungen weggelassen wurden :-(
DMA_Channel1->CCR=0x00007AC0;//configure for mem2mem transfer
2
DMA_Channel1->CPAR=(unsignedint)src_arry;//set source and destination
3
DMA_Channel1->CMAR=(unsignedint)arry_dest;
4
DMA_Channel1->CNDTR=0x000A;//set size of transfer
5
TIM2->CR1=0x00000001;//start a timer
6
DMA_Channel1->CCR|=0x00000001;//start the DMA transfer
7
while(!(DMA->ISR&0x0000001))//wait till the transfer ends
8
{;}T
9
IM2->CR1=0;//halt the Timer
10
TIM2->CNT=0;//Clear the count
11
TIM2->CR1=1;//restart timer
12
for(index=0;index<0xA;index++)//repeat the operation using the CPU
13
{a
14
rry_dest[index]=arry_src[index];
15
}T
16
IM2->CR1=0;//halt the timer
17
}
>The above code transfers ten words of data between two arrays in SRAM first with
the DMA and then using the
Cortex CPU. In both cases a timer is started at the beginning of the
transfer and when the transfer ends. In this
example the DMA unit takes 220 cycles and the CPU takes 536.
Ohne das jetzt verifiziert zu haben :-)
doc schrieb:
> example the DMA unit takes 220 cycles and the CPU takes 536.
Mit dem richtigen Code kopiert die CPU mit annähernd maximalem
RAM-Durchsatz, d.h. etwas mehr als 2 Takte pro Wort bei passendem
Alignment. DMA kann das nicht.
Hm, wie sähe so ein Code aus ?
Man braucht ja eine Schleife, und irgendwie muss ja irgendwas
hochgezählt werden, Zeiger z.b. Das benötigt ja auch alles Takte (?).
Ich habe die Syntax grad nicht exakt im Kopf, aber sinngemäss
loop:
ldmia quelladresse!,reglist
stmia zieladresse!,reglist
ldmia quelladresse!,reglist
stmia zieladresse!,reglist
subs counter,#1
bne loop
mit maximal möglicher reglist.
Ich vermute mal memcpy macht das so (? kann erst heute Abend nachgucken)
Diese Whileschleife zum Warten auf das DMA-Transferende ist eh
suboptimal. Dabei kann die CPU doch während des DMA-Transfers noch
andere Aufgaben übernehmen. Dann relativiert sich das sicherlich.
Obwohl, so viele Anwendungsfälle, wo das zwingend notwendig wäre, gibt
es nicht.
Anonsten hast Du natürlich Recht, deine Variante scheint tatsächlich
schneller zu sein.
so, hab meinen 'alten' Mikrocontroller-Account wieder ausgegraben...
Also, Rotax hier ;)
Ich hatte vor mittels USBProg und modifzierter JTAG-Firmware damit zu
arbeiten. Siehe hier: Beitrag "Neue OpenOCD-Firmware für USBProg (18x schneller)"
Das heißt also gcc und als Entwicklungsumgebung TextMate (Mac OS X) oder
Code::Blocks. Vielleicht aber auch Eclipse, aber davor hege ich ein paar
innerliche Abneigungen. ;)
Den Rest wollte ich von Hand machen. Da lernt man dann noch einwenig
was. Ansonsten teste ich mal die Entwicklungsumgebungen an, die mit auf
der CD sind. Mit den IAR-Tools kann man schon einwenig was machen:
"Features IAR Embedded Workbench KickStart with 32KB address limit."
Oder hat hier jemand einen besseren Vorschlag?
Das LM Board hab ich auch noch... bzw. schon seit einem dreiviertel
Jahr. Nix mit gemacht :-/
Habe vor zwei Wochen noch 130,-€ für das Segger J-Link bezahlt. Da es
das jetzt für ~60,-€ gibt, würde ich da nicht lange fackeln und
zuschlagen. Ist ein Profitool, das wir in der Firma auch einsetzen.
Mit den IAR Tools (32kB Kickstart) hab ich in der Firma ein BSP für
STM32 hochgezogen - nie Probleme gehabt, die der Support nicht lösen
konnte. Seit letzter Woche haben wir die EWARM-CM (Cortex only) Lizenzen
im Einsatz.
Das LPC1768 Board werde ich mir aber auf alle Fälle mal ansehen.
@Herbert
>Als Chip kommt der STM32 von ST zum Einsatz. ST Datenblatt ist super!
Hast du überhaupt schon mal ein anderes Datenblatt in der Hand gehabt?
Ich fand die Anfang 09 wirklich bescheiden, ist da was besser geworden?
> Hast du überhaupt schon mal ein anderes Datenblatt in der Hand gehabt?> Ich fand die Anfang 09 wirklich bescheiden, ist da was besser geworden?
Man sollte natürlich rauskriegen, dass es neben dem Datasheet auch ein
Reference Manual zur Familie gibt und dass einige Details zum Core in
der Core-Reference von ARM stehen. Das ist aber bei vielen ARMs so.
Ebenso fallen die Beschreibungen deutlich knapper aus als die eines AVR
Datasheets. Einerseits weil Anfänger nicht zum angenommenen Kundenkreis
gehören, andererseits weil's sonst zu dick wird (lies: zuviel Arbeit,
irgendeine arme Sau muss das ja alles schreiben).
A. K. schrieb:
> Ich habe die Syntax grad nicht exakt im Kopf, aber sinngemäss
Nun stell Dein Licht mal nicht unter den Scheffel :-) Das war doch gut
improvisiert. Allerdings müssen die zu kopierenden Blöcke natürlich
entsprechend granuliert sein. Und word-aligned.
Der Sinn des Mem2Mem DMA ist es nicht, mit der Geschwindigkeit zu
glänzen, sondern den Prozessor nicht mit solch niederen Aufgaben zu
betrauen. Falls der nicht ohnehin auf die Daten warten muss, kann er
viele andere Dinge tun während der DMA Controller ackert.
Gruß
Marcus