Forum: Mikrocontroller und Digitale Elektronik LPC1100, superguenstig, 8-bit? Wird immer unnoetiger


von Robert T. (robertteufel)


Lesenswert?

NXP hat heute den 32-bit Vogel erst mal abgeschossen. Die neue Baureihe 
LPC1100, die fuer Dezember angekuendigt ist soll (bei 10000 Stueck ;-) 
weniger als 50 Eurocent kosten. Das waere dann ein 33-pin 
Microcontroller, nein das ist kein Scherz, mit 8k Flash und 2k SRAM. Der 
soll dann bis 50 MHz schnell laufen und dabei weniger als 10 mAs 
benoetigen. Ich weiss, das ist immer noch kein 8-pin Chip aber es werden 
immer weniger, die Power immer niedriger, die Preise immer niedriger... 
Die Welt der ARM MCUs draengt immer mehr in den 8-bit Bereich waehrend 
sie gleichzeitig am enderen Ende Intel angreift, doch das soll hier 
nicht so sehr zur Debatte stehen.
Also hier gibts mehr Info, Link zum Data Sheet...
http://mcu-related.com/architectures/35-cortex-m3/92-lpc1100
Gruss, Robert

von Simon K. (simon) Benutzerseite


Lesenswert?

Warum sollte sich ein 32Bitter billiger herstellen lassen als ein 4 Bit 
Mikrocontroller? Und letzterer reicht oft für alles aus.

Oder redest du vom Hobbybereich? ;)

von krishna (Gast)


Lesenswert?

Wieviel MIPS macht der denn ? Mehr als 20 ?

von krishna (Gast)


Lesenswert?

Gibts einen Compiler ?

von Robert T. (robertteufel)


Lesenswert?

@Simon
Hobby und professional. 32-bit wird in neuester Technologie gemacht, ist 
somit wahrscheinlich kleiner als ein 15 Jahre alter 4-bit..
@Krishna
Soll 45 DMips koennen und Compiler von Keil, IAR und noch ein paar mehr 
gibt's auch.
Robert

von krishna (Gast)


Lesenswert?

45 Mips sind ja schonmal sehr ok :-) Schön.

Ist bei all den Compilern auch eine kostenfreie Variante dabei ?
Nicht, daß der Chip 50 Cent kostet, und der Compiler das hundertfache 
:-)

von krishna (Gast)


Lesenswert?

Och, kein EEPROM..schade naja, manchmal braucht man ja auch keins.

Ansonsten aber interessant !

Datasheet:
http://www.standardics.nxp.com/products/lpc1000/datasheet/lpc1111.lpc1112.lpc1113.lpc1114.pdf

von Gast (Gast)


Lesenswert?

>Nicht, daß der Chip 50 Cent kostet, und der Compiler das hundertfache


Das waeren 50 EUR - meine Vermutung: Das wird wohl lange nicht reichen.

Gast

von Malte _. (malte) Benutzerseite


Lesenswert?

> mit 8k Flash und 2k SRAM
Damit läge er aber auch in der Kategorie eines ATMega8 nur schneller. 
Und in Einzelstückzahlen wird er sicher auch mehr als 50 Cent kosten.
Aber stimmt schon, mehr Rechenleistung fürs gleiche Geld.

> Gibts einen Compiler ?
Müsste nicht eventuell der gcc gehen? ARM wird doch von dem unterstützt, 
oder?

von (prx) A. K. (prx)


Lesenswert?

Malte __ schrieb:

> Müsste nicht eventuell der gcc gehen? ARM wird doch von dem unterstützt,
> oder?

Im Prinzip ja, denn der Befehlssatz entspricht ungefähr dem Thumb(1) aus 
ARM7TDMI, etwas erweitert. Insofern steckt das im Compiler grundsätzlich 
drin. Ob dieser Cortex-M0 Mix allerdings schon im GCC so auswählbar ist 
habe ich grad nicht parat.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Malte __ schrieb:
> Müsste nicht eventuell der gcc gehen? ARM wird doch von dem unterstützt,
> oder?

Zumindest Sourcery G++ Lite 2009q1-161 unterstützt alle aktuell 
erhältlichen Cortex-M Prozessoren. Vor wenigen Tagen ist mal wieder eine 
neue Version rausgekommen.

Gruß
Marcus
http://www.doulos.com/arm/

von Peter D. (peda)


Lesenswert?

5V tolerant und nur eine VCC klingt schonmal gut.
Die 8kB Flash kann man natürlich nicht mit nem 8-Bitter gleichsetzen, 
die entsprechen eher einem 2..4kB 8-Bitter.


Ich bin auch etwas irritiert, hat der Cortex nun Bitbefehle oder nicht?
D.h. wie lange dauert es, einen Portpin zu setzen, 1 Befehl oder 3 
Befehle?


Peter

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:

> Ich bin auch etwas irritiert, hat der Cortex nun Bitbefehle oder nicht?
> D.h. wie lange dauert es, einen Portpin zu setzen, 1 Befehl oder 3
> Befehle?

Letztlich 3 Befehle, egal ob ARM7, CM3 oder CM0. Einer um die Konstante 
zu laden, einer um die Adresse vom Portregister zu laden, und einer um 
sie dort reinzuschreiben.

Alle mir bekannten vollintegrierten Controller auf ARM Basis besitzen 
Portregister mit denen ohne erst lesen zu müssen Pins gesetzt und 
gelöscht werden können.

Details über den CM0 Core, also beispielsweise ob Bitbanding drin ist 
oder nicht, hat ARM m.W. noch nicht öffentlich verraten. Mal sehen wer 
schneller ist, NXP mit den Controllern oder ARM mit der Dokumentation 
dazu. ;-)

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Peter Dannegger schrieb:
> 5V tolerant und nur eine VCC klingt schonmal gut.
> Die 8kB Flash kann man natürlich nicht mit nem 8-Bitter gleichsetzen,
> die entsprechen eher einem 2..4kB 8-Bitter.
>
>
> Ich bin auch etwas irritiert, hat der Cortex nun Bitbefehle oder nicht?
> D.h. wie lange dauert es, einen Portpin zu setzen, 1 Befehl oder 3
> Befehle?

Im Thumb mode schätze ich die Codelänge nicht sehr unterschiedlich zu 
den 8bit MC's ein. Beim RAM Verbrauch ist darauf zu achten, daß der 
Linker die Adressen von Arrays und Strukturen generell auf durch 4 
teilbare Adressen setzt.Dadurch konnen "Löcher" in der RAM-Belegung 
entstehen. Weiters ist bei den Strukturen darauf zu achten, dass 16bit 
und 32bit variable auf geraden bzw. durch 4 teilbaren Adressen 
liegen.Geht sich das nicht aus, so entstehen in der Struktur ebenfalls 
"Löcher".
Der ARM Kern scheint generell nicht für das setzen non einzelnen 
Port-Bits entwickelt zu sein. So um die 100ns muß man bei 50MHz Core 
rechnen.
Dennoch: Meiner Meinung nach bieten die Cortex MC's für jede auch nur 
wenig anspruchsvolle Applikation das beste Preis-Leistungsverhältnis.

Ach ja, kostenlosen GCC Compiler gibts natürlich auch.

Grüße

von Krishna (Gast)


Lesenswert?

@Robert:

Kannst Du mir dann Samples (PLCC44) besorgen ?
Muss nicht umsonst sein ;-)

von (prx) A. K. (prx)


Lesenswert?

Gebhard Raich schrieb:

> Im Thumb mode schätze ich die Codelänge nicht sehr unterschiedlich zu
> den 8bit MC's ein.

Je grösser der Code wird, je mehr Software-Layer beteiligt sind, desto 
eher liegt Cortex vorne. Aber für Port-I/O und Steuerregister geht bei 
den Cortexen deutlich mehr Platz drauf als bei kleinen 8-Bittern. Um ein 
Steuerregister zu schreiben, egal ob Portpin oder SPI-Control, braucht 
man bei AVR oder 8051 2-4 Bytes, beim CM0 um die 10 Bytes (3 Befehle à 2 
Bytes, 2 Konstanten à 4 Bytes), und aufgrund der grösseren Komplexität 
der Module hat er auch deutlich mehr davon.

Ebenso sind globale Variablen deutlich teurer (Adressbreite). D.h. eine 
1:1 Umsetzung eines Programmierstils, der für PIC und 8051 optimal war, 
wird auf dem CM0 nicht unbedingt genauso gut abschneiden.

von Krishna (Gast)


Lesenswert?

Hm, das widerspricht sich dann aber -
Programme mit viel IO brauchen also auch viel Platz - Aber grade die 
Mikros setzt man doch hauptsächlich für IO-Lastige Sachen ein.

So gesehen wird der verfügbare Flash aber sehr sehr schnell knapp - 
wodurch kein Platz mehr für "Intelligenteres" mehr bleibt.

von (prx) A. K. (prx)


Lesenswert?

Krishna schrieb:

> Hm, das widerspricht sich dann aber -

Bischen schon.

> Programme mit viel IO brauchen also auch viel Platz - Aber grade die
> Mikros setzt man doch hauptsächlich für IO-Lastige Sachen ein.

Aber das lässt schnell nach. Wenn man die I/O-Module geschrieben sind, 
dann war's das. Man hat einen Bodensatz von einigen KB, in denen der 
lowlevel-Kram abgewickelt wird. Der Rest sitzt dort drauf und greift 
nicht direkt auf die Hardware zu.

von (prx) A. K. (prx)


Lesenswert?

Krishna schrieb:

> Kannst Du mir dann Samples (PLCC44) besorgen ?

Bin mal gespannt ob es dem genauso ergeht mit dem LPC2103 in PLCC44. Der 
wurde vor ein paar Jahren angekündigt und kam nie.

von Krishna (Gast)


Lesenswert?

>In 4KB kann ein 8051 mehr machen als ein
>CM0. In 32KB kann ein CM0 bei passendem Programmierstil mehr
>unterbringen als ein 8051

Hm, der "neue" bietet ja eben nur 8 KB...

von Kai F. (k-ozz)


Lesenswert?

8kB RAM, aber 32kB Flash! (LPC1114)

von (prx) A. K. (prx)


Lesenswert?

Krishna schrieb:

> Hm, der "neue" bietet ja eben nur 8 KB...

8/16/24/32KB ROM, 2/4/8KB RAM.

von Krishna (Gast)


Lesenswert?

Huch, ok, hatte ich nicht "registriert" :-)

von (prx) A. K. (prx)


Lesenswert?

Im Bastelbereich finde ich die LPC1100 nicht allzu interessant. Ob das 
Ding 2€ oder 4€ kostet spielt da nicht die grosse Rolle und ein 
QFN33-Gehäuse ist auch nicht mein Traum (PLCC44 ist schon 
interessanter). Beim LQFP48-Gehäuse wiederum gibt es die wesentlich 
reicher ausgestatteten und ebenso bezahlbaren STM32F103Cx.

Industriell sieht das natürlich anders aus.

von (prx) A. K. (prx)


Lesenswert?

Krishna schrieb:

> Hm, der "neue" bietet ja eben nur 8 KB...

Solche Spar-Zwerge mit 8KB Flash auf CM3 Basis hat(te) Luminary Micro 
rausgebracht, in SO28. Aber in denen ist nicht nur wenig ROM und RAM 
drin, sondern auch sonst fast nichts. Wenn man mit sowas nicht dauernd 
32-Bit Zahlen multipliziert und dividiert, dann ist ein Mega8 allemal 
nützlicher.

von Krishna (Gast)


Lesenswert?

Ich warte immer noch die Firma, die für uns Bastler all die kleinen 
Dinger - bezahlbar! (und damit meine ich weniger als 5€ Aufpreis) - auf 
Headerboards liefert :-)

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Gebhard Raich schrieb:
> Beim RAM Verbrauch ist darauf zu achten, daß der Linker die Adressen
> von Arrays und Strukturen generell auf durch 4 teilbare Adressen
> setzt.Dadurch konnen "Löcher" in der RAM-Belegung entstehen.

Aber nicht grundsätzlich. Das Alignment einer Struktur entsprcht dem
größten Aligment ihrer Elemente. Besteht die Struktur z.B. nur aus
char, dann hat die Struktur selbst auch nur Byte Alignment.

> Weiters ist bei den Strukturen darauf zu achten, dass 16bit und
> 32bit variable auf geraden bzw. durch 4 teilbaren Adressen
> liegen.

Je nach Compiler kann man auch ein packed-Attribut (oder __packed)
angeben. Damit wird das Alignment aufgehoben. Zu Lasten der
Speicherbandbreite, da Zugriffe möglicherweise[1] mehr als einen Zyklus
benötigen.

Gruß
Marcus
http://www.doulos.com/arm/


Footnotes:
[1]  Im Gegensatz zu früheren ARM cores (z.B ARM7, ARM9) hat das
     keine zusätzlichen Instruktionen zur Folge, die einen konstanten
     Overhead erzeugen.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

A. K. schrieb:
> Details über den CM0 Core, also beispielsweise ob Bitbanding drin ist
> oder nicht, hat ARM m.W. noch nicht öffentlich verraten.

Der Cortex-M0 implementiert die selbe Architektur wie der Cortex-M1
(v6-M). Man kann sich den M0 in etwa als ASIC Version des M1
vorstellen.

Cortex-M0 und -M1 haben kein bit-banding.

Gruß
Marcus
http://www.doulos.com/arm/

von (prx) A. K. (prx)


Lesenswert?

Krishna schrieb:

> Ich warte immer noch die Firma, die für uns Bastler all die kleinen
> Dinger - bezahlbar! (und damit meine ich weniger als 5€ Aufpreis) - auf
> Headerboards liefert :-)

Ich habe mich mittlerweile damit anfreunden können:
http://cgi.ebay.com/8x-LQFP-TQFP-SMT-ADAPTER-DIP-05-1-27-PROTO-AREA-LOT_W0QQitemZ330377221367QQcmdZViewItemQQptZLH_DefaultDomain_2?hash=item4cec0454f7

von (prx) A. K. (prx)


Lesenswert?

Marcus Harnisch schrieb:

> [1]  Im Gegensatz zu früheren ARM cores (z.B ARM7, ARM9) hat das
>      keine zusätzlichen Instruktionen zur Folge, die einen konstanten
>      Overhead erzeugen.

Doch. Im Gegensatz zu den CM3 unterstützt der CM0 kein unaligned access.

von Krishna (Gast)


Lesenswert?

@A. K.
 Oh, das ist aber schonmal sehr okay.
Danke für den Tip.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

A. K. schrieb:
> Je grösser der Code wird, je mehr Software-Layer beteiligt sind, desto
> eher liegt Cortex vorne. Aber für Port-I/O und Steuerregister geht bei
> den Cortexen deutlich mehr Platz drauf als bei kleinen 8-Bittern. Um ein
> Steuerregister zu schreiben, egal ob Portpin oder SPI-Control, braucht
> man bei AVR oder 8051 2-4 Bytes, beim CM0 um die 10 Bytes (3 Befehle à 2
> Bytes, 2 Konstanten à 4 Bytes), und aufgrund der grösseren Komplexität
> der Module hat er auch deutlich mehr davon.
>
> Ebenso sind globale Variablen deutlich teurer (Adressbreite). D.h. eine
> 1:1 Umsetzung eines Programmierstils, der für PIC und 8051 optimal war,
> wird auf dem CM0 nicht unbedingt genauso gut abschneiden.

Interessanterweise habe ich hierzu vor etwa drei Jahren mal eine
Untersuchung angestellt und den C code aus dem c't-Bot (target: AVR)
für den Cortex-M3 übersetzt -- wohlgemerkt ohne ihn vorher auf die
speziellen Eigenschaften der ARM Architektur anzupassen. Das Ergebnis
war dennoch niederschmetternd für den AVR. Bei einzelnen Sachen wie
Peripheriezugriff mag der acht-bitter möglicherweise überlegen
sein. Sobald, wie Du vermutest, diese Ebene verlassen wird, geht die
Schere auf.

Bei der Datein motor.c (stark algorithmisch), z.B. lag die Größe des
erzeugten Thumb-2 Codes bei etwa 60-75% des entsprechenden AVR codes,
abhängig vom Compiler und Optionen. GCC hat durchweg schlechter
abgeschnitten als der RealView Compiler.

Gruß
Marcus
http://www.doulos.com/arm/

von chris (Gast)


Lesenswert?

>Untersuchung angestellt und den C code aus dem c't-Bot (target: AVR)
>für den Cortex-M3 übersetzt -- wohlgemerkt ohne ihn vorher auf die
>speziellen Eigenschaften der ARM Architektur anzupassen. Das Ergebnis
>war dennoch niederschmetternd für den AVR.

Was mir jetzt nicht ganz klar ist: Hast Du den Code für den AVR mit dem 
GCC für ARM kompiliert? Das ist meistens ziemlich gut möglich, da es ja 
der selbe Compiler ist.
Interessant wäre da die resultierende Codegröße.

>GCC hat durchweg schlechter
>abgeschnitten als der RealView Compiler.
Du hast also nicht GCC verwendet. Es wäre ja gut möglich, dass auch der 
IAR Compiler für den AVR wesentlich kleinere Codegrößen erzeugt.

von Gastino (Gast)


Lesenswert?

>LPC1100, die fuer Dezember angekuendigt ist soll (bei 10000 Stueck ;-)
>weniger als 50 Eurocent kosten. Das waere dann ein 33-pin
>Microcontroller, nein das ist kein Scherz, mit 8k Flash und 2k SRAM. Der
>soll dann bis 50 MHz schnell laufen und dabei weniger als 10 mAs

Hmm, finde ich jetzt nicht sooo überzeugend. Der winzige SRAM stört mich 
schon bei den ganzen 8-Bittern, warum soll ich mir einen 32-Bitter 
kaufen, der so ärmlich mit SRAM bestückt ist? Und die Bauform, naja. 
Eine Innovation wäre ja mal ein 32-Bit-uC als DIP.

von (prx) A. K. (prx)


Lesenswert?

Gastino schrieb:

> Eine Innovation wäre ja mal ein 32-Bit-uC als DIP.

Ein Kompromiss ist LQFP48 auf obigem DIP48-Träger. Und wenn der LPC1100 
tatsächlich als PLCC44 kommt, dann nützt das zwar nicht für Breadboards, 
aber für Lötpunktraster taugt es.

von Olaf (Gast)


Lesenswert?

>>> Interessanterweise habe ich hierzu vor etwa drei Jahren mal eine
>>> Untersuchung angestellt

Wo kann man das Ergebnis dieser Untersuchung sehen? Gibt es einen Link?

von Benedikt K. (benedikt)


Lesenswert?

Gastino schrieb:

> Hmm, finde ich jetzt nicht sooo überzeugend. Der winzige SRAM stört mich
> schon bei den ganzen 8-Bittern, warum soll ich mir einen 32-Bitter
> kaufen, der so ärmlich mit SRAM bestückt ist? Und die Bauform, naja.
> Eine Innovation wäre ja mal ein 32-Bit-uC als DIP.

Schau dir mal die PIC24H bzw. dsPIC33F an, die gibts bis 128kByte Flash 
und 16kByte SRAM in DIP28. Sind aber nur 16bit, mit 40MIPs und Harvard 
Architektur dürften die ähnlich schnell sein wie der ARM.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

@Benedikt

Bei einem MC im Dip-Gehäuse und auf Steckbrett oder Lochraster muß und 
kann nix mehr rasend schnell gehen.Da hat man Platz und Zeit wie vor 20 
Jahren...

Grüße

von Gastino (Gast)


Lesenswert?

>Ein Kompromiss ist LQFP48 auf obigem DIP48-Träger. Und wenn der LPC1100
>tatsächlich als PLCC44 kommt, dann nützt das zwar nicht für Breadboards,
>aber für Lötpunktraster taugt es.

Prinzipiell ja. Das Problem ist nur, dass diese Träger ziemlich teuer 
sind und ein Vielfaches des Controllers kosten.

>Bei einem MC im Dip-Gehäuse und auf Steckbrett oder Lochraster muß und
>kann nix mehr rasend schnell gehen.Da hat man Platz und Zeit wie vor 20
>Jahren...

Diese "Logik" verstehe ich nicht.

>Schau dir mal die PIC24H bzw. dsPIC33F an, die gibts bis 128kByte Flash
>und 16kByte SRAM in DIP28. Sind aber nur 16bit, mit 40MIPs und Harvard
>Architektur dürften die ähnlich schnell sein wie der ARM.

Jep, die habe ich mir schon mal angesehen (nur ganz grob). Das scheint 
die einzige Alternative zu sein, wenn man etwas mehr SRAM benötigt. Zur 
Zeit komme ich zum Glück noch mit den RAMs der ATmega16/32/644 aus, aber 
wenn das nicht mehr reicht, wird es unschön. Dann bleiben nur die 
Alternativen Adapter (teuer) oder jedesmal eine Platine herstellen 
lassen (sehr teuer).

von (prx) A. K. (prx)


Lesenswert?

Gastino schrieb:

> Prinzipiell ja. Das Problem ist nur, dass diese Träger ziemlich teuer
> sind und ein Vielfaches des Controllers kosten.

Muss der Controller aber sensationell günstig sein. Diese Träger kosten 
80¢ pro Stück inklusive Porto (bei 8 Stück).

Drauf ein STM32F103C8 mit USB/CAN und 64KB Flash 20KB RAM bei 72MHz 
(6,50€ plus MWSt bei TME). Akzeptables Preis/Leistungsverhältnis, ggf. 
pinkompatibel ausbaufähig auf 128KB Flash.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Olaf schrieb:
> Wo kann man das Ergebnis dieser Untersuchung sehen? Gibt es einen Link?

Falls Du Zugriff auf die Vorträge der ARM Developers Conference 2006, 
möglicherweise auch 2007 hast, könntest Du das finden. Es ging aber 
hierbei ausdrücklich nicht um ARM vs. AVR, sondern lediglich darum, die 
Vorurteile gegenüber 32bit Prozessoren beim Einsatz in traditionellen 
8bit Domänen auszuräumen. Ein Teil dieses Vortrags behandelte die 
Codegröße.

Es handelte sich übrigens nicht um eine Untersuchung nach anerkannten 
wissenschaftlichen Standards. Schon die genaue Dokumentation der 
Vorgehensweise ist möglicherweise lückenhaft (hüstel). Vielleicht finde 
ich noch die Compile-Scripte.

Gruß
Marcus
http://www.doulos.com/arm/

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

chris schrieb:
> Was mir jetzt nicht ganz klar ist: Hast Du den Code für den AVR mit dem
> GCC für ARM kompiliert? Das ist meistens ziemlich gut möglich, da es ja
> der selbe Compiler ist.

Aber für eine andere Architektur. GCC für AVR ist nun mal im Nachteil, 
da GCC stark auf 32bit optimiert ist. GCC ist aber der im c't-Bot 
Projekt verwendete Compiler und somit Referenz.

>>GCC hat durchweg schlechter
>>abgeschnitten als der RealView Compiler.
> Du hast also nicht GCC verwendet. Es wäre ja gut möglich, dass auch der
> IAR Compiler für den AVR wesentlich kleinere Codegrößen erzeugt.

Woraus liest Du das denn? Der (ungefähren) Fairness halber, habe ich 
natürlich auch GCC für ARM verwendet (Code Sourcery). Daneben habe ich 
den RealView Compiler eingesetzt. Auf IAR für AVR habe ich leider keinen 
Zugriff.
GCC für ARM hat sich auch nicht gerade mit Ruhm bekleckert.

Gruß
Marcus
http://www.doulos.com/arm/

von Stefan (Gast)


Lesenswert?

>GCC für ARM hat sich auch nicht gerade mit Ruhm bekleckert.

Dafür das er nichts kostet ist er sehr ruhmreich. Die kastrierten 
Versionen der "guten" Compiler reichen auch für den Privatgebrauch 
längst nicht immer. Wenn man z.B. durch einen dummen Zufall mal einen 
TCP-Stack verwendet oder mehr als einen Zeichensatz braucht.

Und: Bei den Vergleichen die ich vor ca. zwei Jahren zwischen RealView 
und GCC gemacht habe war der RealView zwar durchweg besser, sein 
Vorsprung betrug aber nie mehr als 5% (Code und Speed). Und dafür >2000€ 
berappen? No Sir!

von Olaf (Gast)


Lesenswert?

>> ... betrug aber nie mehr als 5% ...

Wo kann man das Ergebnis dieser Vergleiche sehen? Gibt es einen Link?

von Gastino (Gast)


Lesenswert?

>Muss der Controller aber sensationell günstig sein. Diese Träger kosten
>80¢ pro Stück inklusive Porto (bei 8 Stück).

Das hier verlinkte Adapter-Board kostet 7,20$. Wo beziehst Du die für 
80Cent?

von Mehmet K. (mkmk)


Lesenswert?

Gastino schrieb:
> Das hier verlinkte Adapter-Board kostet 7,20$. Wo beziehst Du die für
> 80Cent?
Also ich habe das Inserat so verstanden, dass 8 St. soviel kosten.

von Gastino (Gast)


Lesenswert?

>Also ich habe das Inserat so verstanden, dass 8 St. soviel kosten.

Das habe ich glatt überlesen... :)))

von Stefan (Gast)


Lesenswert?

>Wo kann man das Ergebnis dieser Vergleiche sehen? Gibt es einen Link?

Nirgendwo. Die Tests habe ich in meinem stillen Kämmerlein gemacht. Ich 
wurde auch nicht dafür bezahlt.
Die meisten Vergleiche bezogen sich auf Geschwindigkeit: Verschachtelte 
Funktionsaufrufe, Arrayzugriffe (Offsetberechnung), Strukturzugriffe und 
arithmetische Operationen (Integer). Bei letzterem hat es mich besonders 
interessiert ob und wie gut der Compiler Zwischenergebnisse aus 
vorherigen Berechnungen wiederverwenden kann.
1
a = 2*b + x + 9;
2
b = 2*b + x + 10;
Da nehmen sich die beiden aber nichts.

Die libc habe ich nicht (wissentlich) verwendet. printf(), itoa() und co 
sind selbst programmiert.

PS: Controller dürfte ein LPC2103 gewesen sein, also ARM7. Auf jeden 
Fall im ARM Mode. Wofür war Thumb nochmal gut? ;)

von (prx) A. K. (prx)


Lesenswert?

Mehmet Kendi schrieb:

> Also ich habe das Inserat so verstanden, dass 8 St. soviel kosten.

Ist so. Hab's mit dem STM32F101C6 (32K/36MHz) vom gleichen Shop 
ausprobiert. Liess sich astrein mit der Flussmittel+Entlötlitzenmethode 
einlöten. Mega32/644 ade.

von krishna (Gast)


Lesenswert?

Wie programmiert man den, d.h. wo gibt es Schaltplan + Software für den 
Programmer ?

von (prx) A. K. (prx)


Lesenswert?

Beispielsweise per fertig enhaltenem Bootloader über die serielle 
Schnittstelle. Programm dazu gibt's bei ST. Ein Pin steuert, ob der 
Bootloader oder das Flash startet.

Bequemer siehe Beitrag "STM32 Programmiertool", da steuert 
die serielle Schnitstelle an Stelle von Schaltern die BOOT0+Reset Pins 
und automatisiert den Vorgang.

Alternativ geht das natürlich auch via JTAG-Adapter für's Debugging, 
dafür siehe hiesigen Shop, die üblichen Verdächtigen wie Segger oder 
selber gebaut mit FT2232.

von krishna (Gast)


Lesenswert?

Hm, nachdem ich grade den Niche TCP/IP Stack dafür entdeckt habe, habe 
ich große Lust mein angedachtes Webradio mit dem STM zu realisieren :-)
Soweit ich gelesen habe, ist der doch kostenlos ("For customers") - 
Reicht es, wenn ich mich bei STM anmelde ?

Da muss ich mich nun wohl ein wenig auf STM einarbeiten - gibt es 
irgendwo Deutschsprachige Seiten für den Anfang ? Habe zwar mit Englisch 
kein Problem, aber auf Deutsch liest es sich doch immer noch flüssiger.

von (prx) A. K. (prx)


Lesenswert?


von krishna (Gast)


Lesenswert?

Ich werde mir für den Anfang mal das hier besorgen:

http://www.ehitex.de/p_info.php?products_id=430

Da kann man nicht meckern. 256 K Flash, 64KB Ram, Ethernet, Usb..

von Mehmet K. (mkmk)


Lesenswert?

A. K. schrieb:
> Muss der Controller aber sensationell günstig sein. Diese Träger kosten
> 80¢ pro Stück inklusive Porto (bei 8 Stück).
>
> Drauf ein STM32F103C8 mit USB/CAN und 64KB Flash 20KB RAM bei 72MHz
> (6,50€ plus MWSt bei TME). Akzeptables Preis/Leistungsverhältnis, ggf.
> pinkompatibel ausbaufähig auf 128KB Flash.

Bei Farnell sind die Preise günstiger:
 1 - 9 st. 5,30
ab  10 st  4,15

von (prx) A. K. (prx)


Lesenswert?

Mehmet Kendi schrieb:

> Bei Farnell sind die Preise günstiger:

Jo, aber in meinem Fall geht es um privaten Gebrauch. Und HBE als 
deutscher Vertrieb für solche Kunden will für den STM32F103C8 
indiskutable 13,40€. Kurioserweise will er für die grössere 128KB 
Version davon (CB) nur 12,90€.

von Jörg S. (joerg-s)


Lesenswert?

Da hat doch aber die LPC17xx Serie von NXP noch ein besseres P/L 
Verhältnis, oder?
Immerhin kostet der LPC1752 mit 64k Flash, 16k RAM, 100MHz, USB/CAN 
gerade mal 5,20€ INKL MWSt (HBE). Und der große Brocken (LPC1768) mit 
512k Flash, LAN, USB ect. nur 9€.

von Gast (Gast)


Lesenswert?

Ich gebe privat ab STM32F103CBT6 für 9,20 Euro inkl. Versandkosten
im Kompaktbrief.

von (prx) A. K. (prx)


Lesenswert?

Jörg S. schrieb:

> Da hat doch aber die LPC17xx Serie von NXP noch ein besseres P/L
> Verhältnis, oder?

Bezogen auf die merkwürdige Preispolitik von HBE schon, aber auf Träger 
ist mit der 80-Pin NXP-Klops für viele Fälle zu gross. LQFP48 gefällt 
mir besser. Und TME hat ihn, jedenfalls in der 64KB Version.

von (prx) A. K. (prx)


Lesenswert?

Gast schrieb:

> Ich gebe privat ab STM32F103CBT6 für 9,20 Euro inkl. Versandkosten
> im Kompaktbrief.

Danke, komme ich ggf. darauf zurück, aber vorzugsweise Kontakt per 
email.

von (prx) A. K. (prx)


Lesenswert?

A. K. schrieb:

> Bezogen auf die merkwürdige Preispolitik von HBE schon, aber auf Träger
> ist mit der 80-Pin NXP-Klops für viele Fälle zu gross.

... und zu frisch. Das erste Jahr lasse ich gerne andere Leute die 
Fehler suchen. ;-)

von Robert T. (robertteufel)


Lesenswert?

Nur noch mal zurueck zum Original-Thread. Es ging mir darum, dass es 
jetzt (bald) 32-bit controller gibt, die in fast allen Dingen den 
8-bittern ueberlegen sind.
Es ging mir jedenfalls nicht darum das obere Producktspektrum der 
Cortex-M3 Chips nochmals zu beleuchten, denn diese haben einen anderen 
Zielmarkt, naemlich das untere Ende von 32-bit Anwendungen bzw. den 
Schwerpunkt von 32-bit Flash MCU Anwendungen.

Robert

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Es ging mir darum, dass es
>jetzt (bald) 32-bit controller gibt, die in fast allen Dingen den
>8-bittern ueberlegen sind.

Was für eine Feststellung!

von spess53 (Gast)


Lesenswert?

Hi

>Nur noch mal zurueck zum Original-Thread. Es ging mir darum, dass es
>jetzt (bald) 32-bit controller gibt, die in fast allen Dingen den
>8-bittern ueberlegen sind.

Na und. In vielen Anwendungen langweilen sich schon 8-Bitter oder sogar 
4-Bitter. Warum dann einen 32-Bitter bemühen?

MfG Spess

von krishna (Gast)


Lesenswert?

Ich finde auch, der Grat ist schmal.

Wenn z.b. ein avr mit 20MHZ nicht mehr reicht, warum dann nicht gleich 
zu etwas wesentlich stärkerem greifen.

Für Bastler - und dies ist ja ein "Bastel"-Forum - ist die Gehäuseform 
viel wichtiger, als ein paar Cent beim Prozessor zu sparen. Und da seh 
ich den neuen nicht wirklich im Vorteil gegenüber anderen - die dann 
aber auch direkt mit 256 KB Flash, 64K Ram usw. aufwarten können.
OK, PLCC44 und dann für unter 5 EUR (Endkundenbastlereinzelstückpreis) 
wäre ein echtes Argument - wenn es denn wirklich kommt.

Ansonsten kaufe ich mir eine stamp mit STM32 drauf für 18 € aus Thailand 
und habe dann gleich was in jeder Beziehung stärkeres - und muss mich 
nicht mit SMD herumplagen.

Das sagt einer, der grade von AVR in diese Liga wechselt.

von Anja (Gast)


Lesenswert?

Hallo,

wenn ich mir das Datenblatt bezüglich ADC anschaue, bleibe ich doch 
lieber bei einem PIC. Der ADC des LPC ist zwar schneller, liefert aber 
nur "typisch" 8 Bit Genauigkeit. Beim PIC sind die Worst-Case angaben 
noch besser als die typischen des LPC.

von (prx) A. K. (prx)


Lesenswert?

spess53 schrieb:

> Na und. In vielen Anwendungen langweilen sich schon 8-Bitter oder sogar
> 4-Bitter. Warum dann einen 32-Bitter bemühen?

Jenseits kleiner Anwendungen (einige KB) nervt mich bei vielen 8- und 
16-Bittern die Adressraumtrennung, die beispielsweise bei Strings zu 
Verrenkungen führt. Mit besserem Compiler-Support als GCC ist das zwar 
weniger krass, aber immer noch nervend.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

@Anja

Die STM32 Serie hat 12bit ADC's, ebenso die ADUC70xx und die sind bei 
entsprechendem Layout wirklich bis zum letzten Bit stabil.

Grüße

von robertteufel (Gast)


Lesenswert?

@spess53
Warum 32-bit fuer kleine Anwendungen? Ich wuerde die Frage mal anders 
rum stellen.
Was bringt es mir meine getesteten Code Bausteine immer wieder benuetzen 
zu koennen?
Was bringt es mir immer dieselben Tools zu benutzen fuer meine 8k 
Anwendungen und fuer meine 512K Anwendungen?
Was bringt es wenn meine Ingenieure eine Architektur wirklich toll 
beherrschen anstelle von  Architekturen recht ordentlich?
Was bringt Standardisierung?

Es geht nicht darum ob ein 4-bit oder 8-bit Rechner das noch schaffen 
kann oder nicht. Die 4-bit Rechner wuerden auch heute noch vieles 
schaffen wofuer schon lange AVRs oder 8051 eingesetzt werden. Aber die 
8051 und AVRs sind einfach ein Standard geworden. Jetzt koennte sich ein 
neuer Standard auf 32-bit anbahnen, dann macht es wirklich nicht sehr 
viel Sinn bei vergleichbaren Kosten und Power noch einen 8-bit fuer neue 
Projekte einzusetzen.

Wer natuerlich annimmt er braucht nie einen 32-bit, fuer den ist dieser 
Thread nicht angebracht. So wie der Schoepfer des erster PCs / DOS es 
fuer unvorstellbar hielt, dass der verfuegbare Speicher von 64K bzw. die 
DOS Grenze von 640K jemals ueberschritten werden koennte :-)

Robert

von DAC (Gast)


Lesenswert?

>So wie der Schoepfer des erster PCs / DOS es
>fuer unvorstellbar hielt, dass der verfuegbare Speicher von 64K bzw. die
>DOS Grenze von 640K jemals ueberschritten werden koennte :-)

Das Zitat ist genauso fehlerhaft wie deine Pro-32-Bit Liste im selben 
Beitrag. Es lautete, dass kein normaler Mensch je mehr als 640K wirklich 
benötigen werde. Dass es locker möglich ist, mehr als das tausendfache 
zu verschwenden, war damals auch schon klar.

>Warum 32-bit fuer kleine Anwendungen? Ich wuerde die Frage mal anders
>rum stellen.
>Was bringt es mir meine getesteten Code Bausteine immer wieder benuetzen
>zu koennen?

Ne Menge Copy&Paste bringt es. Ein Programm als Gesamtkonzept ist eben 
mehr als die Summe der Einzelteile.

>Was bringt es mir immer dieselben Tools zu benutzen fuer meine 8k
>Anwendungen und fuer meine 512K Anwendungen?

Sicher bringt es auch Bequemlichkeit, was nicht immer der Qualität 
zuträglich ist.

>Was bringt es wenn meine Ingenieure eine Architektur wirklich toll
>beherrschen anstelle von  Architekturen recht ordentlich?

Sie werden immer versuchen, Probleme genau damit zu lösen.

>Was bringt Standardisierung?

Mehr Pflicht, weniger Spaß.

>Wer natuerlich annimmt er braucht nie einen 32-bit, fuer den ist dieser
>Thread nicht angebracht.

Ist bei mir keineswegs der Fall, habe schon alle Abstufungen von 8 bis 
32 Bit eingesetzt. Immer das, was halt am besten passt. Man muss halt 
schon mal ein paar Tage Recherche einplanen, da geht es sicher schneller 
sich einfach einen fetten 32Bitter von ner Liste zu schnappen. Ich 
verstehe unter einem ordentlich durchdachten Design aber was anderes.


Hier noch bissl was zum lesen:

QUESTION: I read in a newspaper that in 1981 you said, ``640K of memory 
should be enough for anybody.'' What did you mean when you said this?

ANSWER: I've said some stupid things and some wrong things, but not 
that. No one involved in computers would ever say that a certain amount 
of memory is enough for all time.

von Mehmet K. (mkmk)


Lesenswert?

Ich pflichte Robert in allen Punkten bei.

Es dauert so seine Zeit, bis man sich in eine MCU-Familie und deren 
Toolchain eingearbeitet hat. Und ehrlich gesagt fehlt mir die nötige 
Zeit und (vermutlich die nötige) Brainpower, um für jedes Projekt die 
geeignete MCU-Familie auszusuchen.
Deshalb waere es ideal, wenn man in einer 32bit Familie zu hause waere, 
die preislich und leistungsmaessig eine grosse Flaeche abdeckt.

Und dieser LPC1100 ist ein Argument mehr, um nun endlich mal die 
AVR-Welt hinter sich zu lassen.

von Falk B. (falk)


Lesenswert?

@  DAC (Gast)

>>Was bringt es mir meine getesteten Code Bausteine immer wieder benuetzen
>>zu koennen?

>Ne Menge Copy&Paste bringt es.

Käse. Schon mal was von modularem Aufbau gehört? Wozu ein Programmteil 
10mal neu erfinden?
Bibliotheken?

>>Was bringt es mir immer dieselben Tools zu benutzen fuer meine 8k
>>Anwendungen und fuer meine 512K Anwendungen?

>Sicher bringt es auch Bequemlichkeit,

Nicht nur. Es bingt aus eine meist sinnvolle Vereinheitlichung.

>>Was bringt Standardisierung?

>Mehr Pflicht, weniger Spaß.

Unsinn. Ingenieure sind keine freien Künstler, die vollkommen losgelöst 
von der Realität sich frei entfalten können und wollen!
Daß es zu jeder Sache immer Pro und Kontra gibt ist klar, da ist 
Standardisierung keine Ausnahme.
Sie bringt u.a. vor allem auch eine Vereinfachung und Entlastung beim 
Lösen bekannter Problemstellungen.

>Ist bei mir keineswegs der Fall, habe schon alle Abstufungen von 8 bis
>32 Bit eingesetzt. Immer das, was halt am besten passt. Man muss halt
>schon mal ein paar Tage Recherche einplanen, da geht es sicher schneller
>sich einfach einen fetten 32Bitter von ner Liste zu schnappen.

Richtig!

MFG
Falk

von Peter D. (peda)


Lesenswert?

Mehmet Kendi schrieb:
> Und dieser LPC1100 ist ein Argument mehr, um nun endlich mal die
> AVR-Welt hinter sich zu lassen.

Warum sollte man denn sowas tun?

Wenn man sich mit den AVRs auskennt, gibt es keinen Grund, auch nicht 
weiterhin Projekte damit zu machen, für die er geeignet ist.
Man hat Erfahrungen, wo die Fallgruben liegen und wie stabil er arbeitet 
(never change a winning team).

Ich werde 32Bitter nur da einsetzen, wo sie auch Vorteile haben.
Es bringt ja nichts, einen ATtiny25 durch nen LPC zu ersetzen und dafür 
eine erheblich komplexere und damit deutlich länger dauernde 
Programmierung in Kauf zu nehmen. Programmierzeit ist auch Geld.


Wenn ich mir z.B. diesen Thread hier ansehe, kann ich mir nur an den 
Kopf fassen:

Beitrag "CMSIS und die Interrupt-Prioritäten"

Ich hab ja den ersten Beitrag echt für einen Joke gehalten (linksbündige 
Interrupts).
Ich verstehe nicht, wie man als Programmierer die Prioritäten mit der 
Gießkanne verteilt, damit die dann hinterher auf die tatsächlich 
verfügbaren runtergebrochen werden.
Wenn ich Prioritäten vergebe, dann denke ich mir auch was dabei und 
verlange auch, daß nicht plötzlich doch Interrupts wieder die gleiche 
Priorität haben können.


Peter

von Mehmet K. (mkmk)


Lesenswert?

Peter Dannegger schrieb:
> Ich werde 32Bitter nur da einsetzen, wo sie auch Vorteile haben.
> Es bringt ja nichts, einen ATtiny25 durch nen LPC zu ersetzen und dafür
> eine erheblich komplexere und damit deutlich länger dauernde
> Programmierung in Kauf zu nehmen. Programmierzeit ist auch Geld.

Okay, ATtiny25 ist jetzt ein krasses Beispiel. Und da waere ein Einsatz 
eines LPC wohl sicherlich 'etwas' daneben.
Meine obige Konklusion kommt wohl daher, dass meine Porjekte so ab 
Atmega32 anfangen. Und ich in der Mehrzahl meiner Projekte stets nach 
mehr RAM und mehr MHz gelechzt habe.

Wenn Du die zeitlichen und geistigen Mittel dazu hast, zwischen den 
8-bit und 32-bit Welten je nach Bedarf hin und her zu wechseln: ich 
beneide Dich!
Würde ich auch gerne.

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:

> Ich hab ja den ersten Beitrag echt für einen Joke gehalten ("linksbündige
> Interrupts).

Das steht da nirgends drin. Drin steht etwas von linksbündigen 
Prioritäten, nicht von linksbündigen Interrupts. Darf ich davon 
ausgehen, dass du die in vielen ADCs verfügbare "linksbündige Spannung" 
(d.h. die linksbündige Darstellung des Ergebnisses) ebenfalls für einen 
Witz hältst? Da steckt letztlich die gleiche Systematik dahinter.

> Wenn ich Prioritäten vergebe, dann denke ich mir auch was dabei und
> verlange auch, daß nicht plötzlich doch Interrupts wieder die gleiche
> Priorität haben können.

Ich konnte gut nachvollziehen, was der Designer des NVIC sich dabei 
gedacht hatte, immerhin geht die linksbündige Darstellung auf ihn 
zurück, nicht auf mich. Aber egal ob links- oder rechtsbündig: Meine 
Kritik richtete sich primär an die Verwirrung durch diesbezüglich 
unterschiedliche Konventionen von NVIC und CMSIS.

Dieser Designer hat damit ein Modul entwickelt, dessen Schema unabhängig 
von der Anzahl real implementierter Bits für alle Cortexe den gleichen 
Gesamtraum realisiert. Das halte ich weder für zufällig, noch für 
irgendwie hardwaremässig effizienter, sondern für Absicht.

von Peter D. (peda)


Lesenswert?

A. K. schrieb:
> Das steht da nirgends drin. Drin steht etwas von linksbündigen
> Prioritäten, nicht von linksbündigen Interrupts.

Sorry, Schreibfehler.

> Darf ich davon
> ausgehen, dass du die in vielen ADCs verfügbare linksbündige Darstellung
> des Ergebnisses ebenfalls für einen Witz hältst? Da steht letztlich die
> gleiche Systematik dahinter.

War jetzt nicht so bierernst gemeint. Ich wollte nur drauf aus, daß 
manche Sachen beim 32Bitter ungewohnt komplex sind und man sich erstmal 
wundert, was das überhaupt soll.

Ich hab mir das aber noch nicht angesehen, daher weiß ich nicht, was 
linksbündige Prioritäten bedeutet.
Beim 8051 habe ich für jeden Vector 2 Bits und stelle damit Priorität 
0..3 ein, fertig.
Ich lese z.B. einen 1-wire Sensor im Timerinterrupt aus und dabei kommt 
es auf µs an. Deshalb hat dieser als einziger die Priorität 3 und alle 
anderen Interrupts nur 0..2.


Peter

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:

> Ich hab mir das aber noch nicht angesehen, daher weiß ich nicht, was
> linksbündige Prioritäten bedeutet.

Der NVIC definiert Prioritäten als 8-Bit Werte. Von denen aber nur N 
Bits implementiert sind (Cortex-M3: wählbar, STM32=4; Cortex-M0: fix=3). 
Und diese N Bits stehen linksbündig im betreffenden Register, d.h. beim 
CM0 werden effektiv die Werte 0x00,20,40,60,80,A0,C0,E0 unterschieden.

CMSIS bildet diesen Wertebereich in Parameter/Ergebnis auf 0..7 ab. 
Folglich hat man je nach Blickwinkel 0x60 oder 3 dastehen, beim 
Debugging steht im NVIC 0x60, im Quellcode und irgendwelchen Variablen 
3.

von DAC (Gast)


Lesenswert?

@Falk Brunner
>Käse. Schon mal was von modularem Aufbau gehört? Wozu ein Programmteil
>10mal neu erfinden?
>Bibliotheken?

Meine Aussage war etwas provokativ (aber nicht aggressiv gemeint), weil 
die Frage des TE sich aus Sicht eines jeden Programmierers selbst 
beantwortet. Genau aus den Gründen die du eben genannt hast.
Die wiederum aber nicht fest an eine einzige Architektur gebunden sind, 
daher wollte ich einen Kontrapunkt setzen.

>Unsinn. Ingenieure sind keine freien Künstler, die vollkommen losgelöst
>von der Realität sich frei entfalten können und wollen!

Ich bin Entwickler, ich entfalte mich in der Realität, wenn du so 
willst.

>Daß es zu jeder Sache immer Pro und Kontra gibt ist klar, da ist
>Standardisierung keine Ausnahme.

Eben, darüber würd ich auch nicht streiten wollen.

>Sie bringt u.a. vor allem auch eine Vereinfachung und Entlastung beim
>Lösen bekannter Problemstellungen.

Das ist die Intention dahinter, klappt mal mehr - mal weniger.

>Käse.
>Unsinn.

Ist das der Ausdruck des letzten Rests Kreativität, der dem Ingenieur 
von heute noch bleibt? ;)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Robert Teufel schrieb:

> @Krishna
> Soll 45 DMips koennen und Compiler von Keil, IAR und noch ein paar mehr
> gibt's auch.
> Robert

Und das kostet Schotter, ist proprietaer und laeuft nur unter Windows. 
Ausserdem eine neues und damit sicherlich noch reichlich fehlerhaftes 
Silizium gepaart mit einer Alpha-Toolchain. Da kommt Freude auf! Da sag 
ich: nein danke ;)

von (prx) A. K. (prx)


Lesenswert?

Michael G. schrieb:

> gepaart mit einer Alpha-Toolchain.

So schlimm kann es kaum sein, denn der Cortex M0 ist nicht viel anders 
als ARM7TDMI ohne ARM, nur Thumb-Modus. Existiert also im Compiler 
schon. Und für die Systemumgebung nimmt man den Kram vom Cortex M3, 
wirft die nicht existierenden Teile vom Systeminterface raus und fertig.

Es ist eher andersrum: Mancher Compiler hat den Schritt von Thumb1 zu 
Thumb2 (Cortex-M3) immer noch nicht so weit verdaut, dass er dessen 
Möglichkeiten effektiv nutzen würde (GCC beschränkt sich meiner 
Erkenntnis nach auch dann auf R0-R7 wenn R8-R12 wirklich opportun 
wären).

von Peter D. (peda)


Lesenswert?

@A. K.,

danke für die Erklärung, so kompliziert ist das also garnicht.

Mir gefällt allerdings auch die Darstellung 0..7 besser.
Beim 8051 muß man die Priorität sogar in 2 Registern setzen (ein 
Register pro Bit), d.h. da ist die Umrechnung noch "komplizierter".

Ich bin aber auch nicht derjenige, der große Programme schreibt und sich 
dann mühsam mit dem Debugger durchkämpft.
Ich schreibe lieber kleine Module, die ich einzeln teste.
Dann habe ich beim Zusammenbau zum kompletten Programm wenig in den 
Eingeweiden rumzuwühlen. Es sind fast nur logische Fehler (z.B. ein ! an 
der falschen Stelle).


Peter

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:

> danke für die Erklärung, so kompliziert ist das also garnicht.

Nö. Allerdings war das nur die vereinfachte Kurzfassung. Man kann diese 
N Bits noch ein zwei Teile spalten, eine Ebene für's Nesting und eine 
Priorität innerhalb der Ebene ohne Nesting. Muss man aber nicht tun.

Lustiger ist was anderes: Dieser NVIC ist der vielleicht einzig 
existierende Interrupt/Exception-Controller, bei dem auch synchrone 
Core-Exceptions wie irregeleitete Speicherzugriffe oder Division durch 0 
frei wählbare Prioritäten haben. Das kann also heissen, dass solche 
Exceptions in einem ggf. höher priorisierten Interrupt-Handler nicht auf 
den passenden Handler verzweigen können - das gibt dann allerdings 
trotzdem eine Exception, aber ersatzweise als Hardfault.

Sinnlos ist das nicht, nur ungewöhnlich, denn so kann man in Umgebungen 
mit User/System-Trennung wie Linux gleich von vorneweg zwischen 
kritischen (im Systemkontext) und unkritischen Exceptions (normaler 
Prozess) unterscheiden, ohne das jeweils im Handler abfragen zu müssen.

Man spürt, dass in das NVIC Design eine Menge Erfahrungen aus der 
Vergangenheit eingeflossen sind. Auch in Hinblick auf effiziente 
Implementierung eines RTOS ohne dabei wie sonst oft jeden 
Interrupt-Handler aufblasen zu müssen (PendSV). Und es wird klar, dass 
Anwender ohne entsprechendem Background solche Aspekte nicht oder nicht 
ohne Erklärung verstehen werden.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

A. K. schrieb:
> Das kann also heissen, dass solche Exceptions in einem ggf. höher
> priorisierten Interrupt-Handler nicht auf den passenden Handler
> verzweigen können - das gibt dann allerdings trotzdem eine
> Exception, aber ersatzweise als Hardfault.

Das hat sogar noch einen weiteren Vorteil, der diesen Teil des Threads
möglicherweise wieder auf das eigentliche Thema zurückführt: In
softwaremäßig eher einfach gestrickten Systemen kann ich alle System
Exceptions, die ich nicht gesondert behandeln möchte, auf den
Hardfault Handler abbilden. Damit erspare ich mir, erstmal die ganzen
Handler aufzusetzen -- ohne jedoch die Information über sie ganz zu
verlieren.

Gruß
Marcus
http://www.doulos.com/arm/

PS: Cortex-M0 implementiert nur zwei Bits, und die Prioritätsregister
lassen sich sich nicht unterteilen. Man hat also effektiv immer vier
preemptive priorities.

von Andi (Gast)


Lesenswert?

Gastino schrieb:
> Eine Innovation wäre ja mal ein 32-Bit-uC als DIP.

Gibt es doch. Sogar 8 einzelne 32bit Prozessoren auf einem Chip, und mit 
32kByte RAM. Das ganze im DIP40 Gehäuse.
Kostet auch nur 99 cent ($-cent) pro Prozessor (also knapp 8$ für den 
ganzen Chip) und das bei 1 Stück.
Optimiert für Bit-Banging, dafür sonst wenig Peripherie integriert.

Kurz: mein Lieblingsprozessor, der Parallax Propeller Chip.

Andi

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Andi schrieb:

> Kurz: mein Lieblingsprozessor, der Parallax Propeller Chip.

Er hat seinen Charme, das muss man sagen. Aber es gibt halt gerade mal 
einen Chip in der Familie und die Plaene zur Weiterentwicklung wurden 
ziemlich gestutzt, nachdem man gemerkt hat, dass gewisse Ziele 
unrealistisch waren ;) Ausserdem hat er halt einfach zu wenig RAM und 
ist auf ein externes EEPROM zur Programmablage angewiesen. Dann wird das 
meiste der Rechenleistung durch den (HW)-Interpreter der Spin-Sprache 
wieder verschenkt.

Am Rande: Ich hab nen weitgehend kompletten Parser fuer Spin geschrieben 
(JavaCC), wer einen Compiler fuer nativen Maschinencode entwickeln will 
kann sich bei mir melden :P

Michael

von Robert T. (robertteufel)


Lesenswert?

@DAC,
ist es moeglich, dass Du in einer kleinen Firma arbeitest?
Einfach nur zu meinem Verstaendnis, wie ist dieser Satz zu verstehen:
"..... genauso fehlerhaft wie deine Pro-32-Bit Liste im selben Beitrag."
Wie koennen Fragen falsch sein?

Ich hab mit sehr grossen Kunden gearbeitet, die hatten Stueckzahlen, die 
es in Deutschland wohl nicht in einer einzigen Anwendung gibt (40 Mio 
MCUs / Jahr). Da lohnt es sich einen absolut massgeschneiderten Chip 
einzusetzen, keine Diskussion. Da wuerde ich auch einen 8-bit Rechner 
einsetzen wenn er kann was verlangt wird, wenn ich auch nur einen Cent 
einsparen kann, denn 1 cent enspricht dann 400000 (es waren $)

Andererseits haben sich auch schon viele kleine und mittlere Firmen mit 
der Vielfalt ihrer Architekturen totentwickelt. Warum denkst Du gibt es 
bei allem grossen Firmen starke Bestrebungen die Anzahl der 
Architekturen klein zu halten bzw. sie du reduzieren? Wenn ich aber nur 
wenige Architekturen einsetzen darf, dann ist doch ein logischer Fokus 
auf Architekturen mit grosser Bandbreite und grosser Preisspanne.

p.s. sorry, dass meine Quotation etwas zu frei uebertragen war.

@Falk,
ich denke mal Du arbeitest in einer groesseren Firma :-), da gibt es 
einfach Regeln fuer Wiederverwendung von Code.


@Peda,
auch ich hab viel mit dem 8051 programmiert und der Umstieg auf 32-bit 
erschien erst mal kompliziert. Ist nicht alles was anders ist erst mal 
kompliziert? Versuchs doch mal damit, das Wort kompliziert und das Wort 
komplez mit dem Wort "anders" zu ersetzen. Nur so ein Vorschlag die Welt 
etwas positiver zu sehen.

Gruss, Robert

von Falk B. (falk)


Lesenswert?

@  Robert Teufel (robertteufel)

>@Falk,
>ich denke mal Du arbeitest in einer groesseren Firma :-), da gibt es
>einfach Regeln fuer Wiederverwendung von Code.

Wenn 80 Leute für dich gross sind  . . .

Nööö, das ist ein Grundprinzip. Und unser Chef drängt auch immer auf 
Wiederverwendung von Hard- und Software, manchmal ein wenig zu viel.
Aber im Prinzip ist das schon richtig, denn auch bei uns gibt es viel 
Kleinkram, den man besser nicht ausufern lässt.

MFG
Falk

von (prx) A. K. (prx)


Lesenswert?

Marcus Harnisch schrieb:

> PS: Cortex-M0 implementiert nur zwei Bits [...]. Man hat also effektiv
> immer vier preemptive priorities.

Ich hatte die 3 Bits aus dem Datasheet des LPC1100 abgeleitet, dort 
werden nämlich ausdrücklich 8 Prioritäten erwähnt. Die ARMv6-M Referenz 
spricht aber tatsächlich nur von 2 Bits.

von DAC (Gast)


Lesenswert?

@Robert
>ist es moeglich, dass Du in einer kleinen Firma arbeitest?

Vieles ist möglich. Zu meinen Kunden gehören durchaus auch Größere. Hab 
den Eindruck, manch Einer hier hat Probleme über seinen Tellerrand zu 
schauen.

>Einfach nur zu meinem Verstaendnis, wie ist dieser Satz zu verstehen:
>"..... genauso fehlerhaft wie deine Pro-32-Bit Liste im selben Beitrag."

Sagte ich oben schon, dass mein Beitrag eine kleine Provokation enthielt 
um mal einen Kontrapunkt zu setzen.

>Wie koennen Fragen falsch sein?

Du hast hier keine reinen Fragen gestellt, sondern damit implizit etwas 
aussagen wollen. Genau wie in folgendem Zitat von dir:

>Andererseits haben sich auch schon viele kleine und mittlere Firmen mit
>der Vielfalt ihrer Architekturen totentwickelt. Warum denkst Du gibt es
>bei allem grossen Firmen starke Bestrebungen die Anzahl der
>Architekturen klein zu halten bzw. sie du reduzieren?

WO lässt du denn hier bitte noch Platz für eine Antwort?

von Robert T. (robertteufel)


Lesenswert?

Hab lieber den alten Thread benuetzt als einen neuen aufzumachen.

Ab morgen gibt es die Moeglichkeit sich fuer einen Design Wettbewerb 
fuer den LPC1100 einzutragen, es gibt auch einige Gewinne.

Bedingung: Registrieren und eine kurze Beschreibung eines moeglichen 
Projektes. Dann stehen 2000 Platinen mit Tools LPCXpresso zu Verfuegung.
Info ueber den LPC1100 gibts unter anderem hier:
http://mcu-related.com/architectures/35-cortex-m3/92-lpc1100

Die homepage ueber den Design Wettbewerb gibt's hier:
http://www.lpc1100challenge.com/

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.