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
Fast derselbe Thread ist gerade in der Diskussion Beitrag "ARM Starter Kit" Cortex-M3 ist auch ein ARM core Robert
Moin, also ich benutze in der Firma (wegen STM32F10x) dieses hier: http://www.iar.com/website1/1.0.1.0/658/1/?item=prod_prod-s1/225&group=prod_prod_grp-s1/33 hat uns ~150,-€ netto gekostet - inkl J-Link. Die STM32 sind aber ein wenig strange zu programmieren, wenn es um ADC oder Timer geht (meine Meinung). Privat werde ich mir aber so eins hier besorgen: http://www.steitec.net/ARM/ARM-LPC1768-Cortex-M3-LCD-Board.html (da kommt noch 19% EUSt drauf) JTAG Interface (J-Link) für den privaten Gebrauch gibt es z.B. von Segger für 130,-€
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
Günstig: http://www.futurlec.com/STM32_Development_Board.shtml JTAG ist zusätzlich notwendig, Entwicklungsumgebung ebenfalls. Alternativ schau dich mal bei Hitex um, da sind JTAG und Entwicklungsumgebung bereits drin, aber eben deshalb auch nur in diesem Rahmen verwendbar: http://www.ehitex.de/p_info.php?products_id=430
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 Mem2Mem: z.B. Hitex Insiders Guide, Seite 47. Sogar mit Beispiel-Quelltext. http://www.st.com/mcu/files/mcu/1221142709.pdf
Welchen Sinn hat DMA Mem2Mem eigentlich? Schneller als die CPU ist das ja nicht, im Gegenteil.
1 | DMA_Channel1->CCR = 0x00007AC0; //configure for mem2mem transfer |
2 | DMA_Channel1->CPAR = (unsigned int)src_arry; //set source and destination |
3 | DMA_Channel1->CMAR = (unsigned int)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 :-)
Ups, da ist beim reinkopieren die Formatierung zerschossen. Bitte um Entschuldigung.
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.
Das scheint wirklich interessant zu sein: http://www.steitec.net/ARM/ARM-LPC1768-Cortex-M3-LCD-Board.html Nur die 2-3 Wochen Lieferzeit schrecken mich einwenig ab. Gibt's das nicht noch wo anders?
Hab mich dann für Luminary entschieden. Da ist die Lieferzeit wesentlich schneller.... (1-2 Tage über Watterott) http://www.luminarymicro.com/products/lm3s8962_can_ethernet_evaluation_kit.html
Rotax, mit welchem Compiler verwendest du dies und wo hast du es bestellt (US?)?
Ziehe den zweiten Teil der Frage zurück ;) und ändere den ersten Teil in: "welchen Compiler/Entwicklungsumgebung" wirst du verwenden?".
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.
Wie wäre es mit Maple: http://leaflabs.com/Maple Es sieht auch ziemlich interessant aus, Arduino mit Cortex M3.
@Rotax Wirf mal einen Blick hier drauf: http://cgi.ebay.de/STM32-ARM-STM32F103-Cortex-M3-ARM7-ARM9-ATMEL-JTAG-New_W0QQitemZ110481753810QQcmdZViewItemQQptZWissenschaftliche_Ger%C3%A4te?hash=item19b939c6d2
@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?
A. K. schrieb:
> Oben schon aufgeführt, ist bei Futurlec günstiger.
Sorry. Diesen Link hatte ich leider nicht aufgerufen.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.