Hallo,
die Frage klingt dumm, doch ich kann sie nicht 100%ig beantworten.
Hintergrund:
Ich gehe davon aus, daß jeder Mikrocontroller zumindest ein bisschen ROM
haben muss, damit er die Programme die man in den Flash-Speicher läd
verstehen kann. Oder ist das was ich meine i.d.R. etwa rein
hardwaretechnisch gelöst?
Ich bin über die Worte "ROMless" gestossen, als mir bei ATMEL der
AT80C51RD2 über dem Weg gelaufen ist.
Vielen Dank!
@Hildegard (Gast)
>Ich gehe davon aus, daß jeder Mikrocontroller zumindest ein bisschen ROM>haben muss, damit er die Programme die man in den Flash-Speicher läd>verstehen kann.
Nicht zwingend.
> Oder ist das was ich meine i.d.R. etwa rein> hardwaretechnisch gelöst?
Ja.
MFG
Falk
Hildegard schrieb:> Ich gehe davon aus, daß jeder Mikrocontroller zumindest ein bisschen ROM> haben muss, damit er die Programme die man in den Flash-Speicher läd> verstehen kann.
Nicht bei Bausteinen, die vom technischen Alter her dem
Durchschnittsalter der Forenteilnehmer entsprechen dürften. ;-)
Damals (Intel 80C51) gab es noch kein Flash. Es gab internes Masken-ROM
und alternativ externes EPROM. Intels 8031 (offiziell ROM-less) war
technisch identisch mit dem 8051 (mit Masken-ROM), d.h. hatte durchaus
ROM drin, aber dessen Inhalt war unbrauchbar.
Veto !
@A.K.
Auch heute werden noch ROM-Less Microcontroller gemacht. Einfach weil
der Speicher extern schneller und sehr viel größer sein kein. Hört sich
wie ein Widerspruch an, ist aber keiner. Große Speicher, vor allem sehr
schnelle, machen auf dem Chip nur Probleme. Deshalb sieht er aus wie ein
Microcontroller, hat aber den Speicher komplett extern. Naja, manchmal
ist noch ein BootROM drin, aber das gildet ja nicht, oder ;-)
Gruß
Welche denn zum Beispiel?
Gibt's da auch welche, die man ohne größeren Kostenaufwand ausprobieren
könnte? Also nur das Programm in Freeware schreiben und per eigenem
EEPROM-Brenner flashen und dann an den Chip hängen?
Ich bin da ja sehr experimentierfreudig.
Mit freundlichen Grüßen,
Valentin Buck
@Valentin
Ich bin da leider etwas subjektiv vorbelastet. Beispielsweise von
Toshiba über Glyn gibt's ARM9 basierende Controller Boards
TMPA910CRAXBG. Läuft sogar Linux drauf !
Gruß
Echt irre Teile.
Eigentlich sind normale PC-Prozessoren ja auch ROMless devices,
die Software kommt ja erst mit der Festplatte.
Eigentlich habe ich eher etwas im Bereich eines ATMEGA-8 gesucht.
Trotzdem danke.
Mit freundlichen Grüßen,
Valentin Buck
Michael Leusink schrieb:> Auch heute werden noch ROM-Less Microcontroller gemacht. Einfach weil> der Speicher extern schneller und sehr viel größer sein kein.
Herrje, natürlich, wenn man den Begriff Microcontroller auf alles
ausdehnt, was keinen PC antreibt und einen Program Counter hat. Mit
dieser Begriffslogik ist doch jeder Pentium 4 Prozessor, der zufällig
nicht in einem PC sondern beispielsweise in einem NAS Device steckt,
auch ein Microcontroller. Ich habe ein bischen Probleme mit dieser
Begriffswelt.
Willst du ernsthaft einen 300MHz ARM9 Prozessor mit Cache einem
integrierten Microcontroller der Klasse 80C51 gegenüberstellen? Das sind
doch zwei völlig verschiedene Grössenordnungen. Ein 8051 war damals ein
vollintegrierter Microcontroller wie heute AVRs, der ARM9 ist eher das
was damals ein 68000 oder 68070 war, mehr Prozessor als integrierter
Microcontroller, auch wenn man mit solchen 68xxx-ern nicht nur Amigas
angetrieben hat, sondern sie auch Controller-Funktion bekamen.
@ Eddy Current
Wie nennt man denn diese "Dinger" ohne eigenen Programmspeicher?
Und welche sind denn zum Ausprobieren geeignet?
8051?
Mit freundlichen Grüßen,
Valentin Buck
Prozessoren, die für Einsatz mit (hauptsächlich) externem Speicher
vorgesehen sind, nenne ich in alter Tradition Microprozessoren.
Microcontroller sind für mich jene ICs, die weitgehend vollständig
ausgebaut sind, die Speicher und I/O überwiegend selbst enthalten. Auch
wenn manche davon externen Speicher zulassen.
In diesem Sinn ist ein ROM-less Microcontroller eine Sonderversion eines
normalerweise vollintegrierten Microcontrollers, dem der interne
Speicher fehlt.
Natürlich ist das nicht absolut trennbar, schon garnicht mehr heute,
aber wenn man alles Microcontroller nennt, was nicht als Hauptprozessor
in einem PC steckt, dann braucht man neue Begriffe, weil die alten
sinnlos geworden sind.
@A.K.
An welcher Stelle entspricht der TMPA910CRAXBG nicht Deiner Definition ?
War ja auch nur "Beispielsweise". Es gibt heute von fast von jedem
Hersteller ROM-Less Mikrocontroller. ST, TI, Zilog Z8, wie erwähnt
Toshiba mit TLCS870, TLCS900 Familie ... Soll ich so weitermachen.
Gruß
PS: Und wenn man mit solchen ARM9 Prozessoren (oder dem erwähnten P4)
und allerlei Speicher und was sonst noch ein System aufbaut, dann
bekommt man ggf. einen Controller. Indem das Gesamtsystem der Controller
ist, mit einem Microprozessor inmitten. Das mag meine persönliche
Begriffswelt sein, aber sie gefällt mir besser.
Valentin Buck schrieb:> Eigentlich sind normale PC-Prozessoren ja auch ROMless devices,> die Software kommt ja erst mit der Festplatte.
Nein, mit dem BIOS.
8051er (80c32 z.b.) sind gut geeignet.
Michael Leusink schrieb:> An welcher Stelle entspricht der TMPA910CRAXBG nicht Deiner Definition ?
Das ist ein Kern eines Gesamtsystems, ohne erheblichen externen Aufwand
weder lebensfähig noch sinnvoll. Daher für mich mehr Prozessor als
Microcontroller, auch wenn die Hersteller heute mittlerweile alles als
Microcontroller bezeichnen, was kein x86/Power/SPARC ist.
Ich würd einen µController Controller und nicht Prozessor nennen wenn er
Peripherie an Bord hat um mit den Beinchen, die überall heraushängen,
auch "Sachen schalten" zu können, also etwas kontrollieren zu können.
Prozessoren sollen zweckbestimmt wohl "nur" Daten + Befehle fressen,
verarbeiten und wieder ausspucken.
Aber ich schweife ab.
ROM-Less-Typen könnte man beispielsweise benutzen um das Programm zu
ändern, indem man das externe ROM aus dem Sockel rupft und ein anderes
reinsteckt, weil das beispielsweise einfacher/billiger ist als den
Controller zu ändern.
Wenn man sowas in der Art vorhat kann man auch billigere Controller
kaufen, auf denen man ein paar Cent spart indem man den Speicher
weglässt.
Andreas K. schrieb:> Ich würd einen µController Controller und nicht Prozessor nennen wenn er> Peripherie an Bord hat um mit den Beinchen, die überall heraushängen,> auch "Sachen schalten" zu können, also etwas kontrollieren zu können.> Prozessoren sollen zweckbestimmt wohl "nur" Daten + Befehle fressen,> verarbeiten und wieder ausspucken.
Kann man natürlich so definieren. Nur wird dann mit dem ersten
integrierten I/O-Pin oder Timer aus dem Microprocessor ein
Microcontroller. Der erste CMOS-Microprozessor RCA 1802 hatte 4
Input-Pins und einen Output, eine Folgeversion noch dazu ein kleines
bischen RAM und einen Timer. Macht das aus denen Microcontroller?
Aber wenn wir alle miteinander schon so schön am Haarspalten sind: Ein
x86 wird nie ROM-less sein. Diese Dinger haben mehr ROM mit mehr
Programm drin als viele Microcontroller. Mit MIPS oder ARM geht das,
aber nie und nimmer mit x86. ;-)
> Und welche sind denn zum Ausprobieren geeignet?> 8051?
Der waere geeignet.
Aber warum? Sowas hat viele Nachteile:
1. Dem Prozessor gehen eine Menge Datenleitungen verloren
Es gab mal einen 80535 um das etwas abzumildern.
2. EMV Probleme werden groesser
3. Du musst dein Programm irgendwie in den externen
Programmspeicher bekommen
Diese Nachteile nimmt man nur in kauf wenn man mehr externes Rom braucht
als man intern bekommen kann. Nun kann man aber mittlerweile Prozessoren
mit 768kb oder sogar 1MByte Flashrom kaufen. Da wuesste ich nicht wieso
man sich soetwas antun sollte.
BTW: Renesas hat mit dem SH7262 noch ein anderes interessantes Konzept
vorgestellt. Der Prozessor hat intern nur 1MByte Ram und kein Flashrom.
In Wahrheit enthaelt er aber wohl ein kleines bisschen Flashrom wo ein
Bootloader integriert ist. Der laedt beim starten ein paar kByte aus
einem externen SPI-Flashrom und startet dieses Programm.
Das hat verschiedene Vorteile:
1. Das eigene Programm laeuft im Ram. Das macht es dem Debugger
leichter. (Brakepoints, Watchpoints, Variablenueberwachung)
2. Braucht man sehr viel Flashrom haengt man halt ein dickes Flashrom
dran und laedt rein was man braucht. Es kostet aber kaum externe
Datenleitungen weil alles seriell geschieht.
3. Braucht man nur wenig Flashrom hat man viel Ram fuer sein Programm
frei.
4. Man kann auch verschiedene Programme im Flashrom haben und nur
reinladen was man gerade braucht.
5. Man kann sein Programm auch von ganz woanders laden. Zum Beispiel
von einer SD-Karte.
Mit anderen Worten man kann mit einem Microcontroller ein System
aufbauen das einem eher den Komfort eines ausgewachsenen Rechner bietet.
Damit rumzuspielen macht richtig Spass!
Olaf
A. K. schrieb:> Der erste CMOS-Microprozessor RCA 1802 hatte 4> Input-Pins und einen Output, eine Folgeversion noch dazu ein kleines> bischen RAM und einen Timer. Macht das aus denen Microcontroller?
Aber der primäre Zweck war doch wohl Datenverarbeitung, oder nicht?
Andreas K. schrieb:> Aber der primäre Zweck war doch wohl Datenverarbeitung, oder nicht?
Definiere Datenverarbeitung. Verarbeitet eine Heizungssteuerung keine
Daten? Bekannt wurden diese Dinger durch Einsatz im All, nicht zuletzt
in Steuerungen. Masseneinsatz war das freilich nicht, ich meine mal
gelesen zu haben, dass sie reichlich in Telefonanlagen zu finden waren.
Als Microcontroller hatte man sie m.W. nie gesehen, auch wenn wohl fast
alle damit gebauten Systeme als Controller betrachtet werden können.
So'n Unikum programmiert kaum einer freiwillig, da muss Schmerzensgeld
her ;-).
Valentin Buck schrieb:> Wie nennt man denn diese "Dinger" ohne eigenen Programmspeicher?
Das wurde dann wohl ausreichend diskutiert :-)
> Und welche sind denn zum Ausprobieren geeignet?> 8051?
Ja, 8051 ist 1. Wahl. 8048 wäre auch nett, ist noch mehr Hardcore, aber
auch deutlich weniger verbreitet, siehe
http://de.wikipedia.org/wiki/8048
Von der Funktionalität ist er ungefähr auf dem Niveau eines PIC16F84.
A. K. schrieb:> Definiere Datenverarbeitung.
Lade Daten (Bitmuster) + Befehl, Schreibe Ergebnis in Speicher.
Ein µC macht das natürlich auch, der macht das aber nicht weil er soll
sondern weil er damit eine beliebige, (Programmierbare) Schaltung
simulieren soll. Man könnte natürlich auch die Schaltung eines
Prozessors simulieren.
Man muss also nen Schritt zurücktreten und das ganze betrachten.
In der Kiste rechts unter meinem Schreibtisch steckt ein Core2-Quad,
alleine genommen ist er hilflos, mit dem ganzen Drumherum kann er aber
viele Sachen.
Wenn ich jetzt noch eine IO-Karte reinbastle kann ich damit eine
Kaffeemaschine steuern, genau wie mit einem Mikrocontroller, aber meinen
PC würde ich nicht mehr als Mikro betrachten.
Ergo: µController beinhalten einen Prozessor, Prozessoren aber keine
µController.
Andreas K. schrieb:> Ein µC macht das natürlich auch, der macht das aber nicht weil er soll> sondern weil er damit eine beliebige, (Programmierbare) Schaltung> simulieren soll.
Passt ein Datalogger in dieses Schema?
> Prozessoren aber keine µController.
Naja, auch das hat's schon gegeben. Im dicken Boliden ein kleines
Hilfsrechnerchen, der dem grossen beim Start hilft und ab und zu mal
nach dem Rechten sieht. Aber im Prinzip stimmt das natürlich.
Wow, Klasse, vielen Dank für die vielen Antworten!
Also ich fasse einmal zusammen und beziehe mich dabei nur auf
Mikrocontroller von heute:
- ROMless bedeutet ohne Flash. D.h. man muß einen externen Flashspeicher
als Programmspeicher dranhängen.
- Der Mikrocontroller kann mit dem Programmcode umgehen, (wenn er ihn in
einem externen Flashspeicher hat), weil seine Hardware ihm diese
Fähigkeit gibt.
@Olaf:
Olaf schrieb:> Renesas hat mit dem SH7262 noch ein anderes interessantes Konzept> vorgestellt. Der Prozessor hat intern nur 1MByte Ram und kein Flashrom.> In Wahrheit enthaelt er aber wohl ein kleines bisschen Flashrom wo ein> Bootloader integriert ist. Der laedt beim starten ein paar kByte aus> einem externen SPI-Flashrom und startet dieses Programm.
Verstehe ich es richtig, das neue Konzept ist hier das "In den Ram
Laden", richtig?
Nochmal vielen Dank für die vielen Antworten und viel Spaß beim
weiterdiskutieren!
Hildegard schrieb:> Verstehe ich es richtig, das neue Konzept ist hier das "In den Ram> Laden", richtig?
Sowas ähnliches hatte Atmel auch mal beim AT91RM3400 (ARM7) realisiert.
96KB RAM, kein Flash, aber 256KB festprogrammiertes ROM mit Bootloader
und I/O-Supportcode. Das Programm steckt(e) in einem externen EEPROM
läd.
Die gleiche Strategie verwenden auch der Parallax Propeller und die
recht frischen XMOS-Chips. Insbesondere XMOS käme mit seinen internen
400MHz mit einem langsamen mit Wartezyklen und Puffern ausgestatteten
Flash-Speicher kein bischen zurecht.
Olaf schrieb:> Renesas hat mit dem SH7262 noch ein anderes interessantes Konzept> vorgestellt. Der Prozessor hat intern nur 1MByte Ram und kein Flashrom.> In Wahrheit enthaelt er aber wohl ein kleines bisschen Flashrom wo ein> Bootloader integriert ist. Der laedt beim starten ein paar kByte aus> einem externen SPI-Flashrom und startet dieses Programm.
Nennt man das zufällig "Selfprogramming Memory"?
--------------------
Noch eine Frage:
In den Atmelseiten wird allein der AT80C51RD2 als ROMless aufgeführt.
http://www.atmel.com/dyn/products/devices.asp?family_id=604
Doch im "Parametric Product Table" von Atmel gibt es noch weitere uC
ohne Flash.
Hildegard schrieb:> Also ich fasse einmal zusammen und beziehe mich dabei nur auf> Mikrocontroller von heute:>> - ROMless bedeutet ohne Flash. D.h. man muß einen externen Flashspeicher> als Programmspeicher dranhängen.
Muss ich da einen Widerspruch zu meiner Zusammenfassung sehen?
Irgendwas muß ich da wohl noch nicht verstanden haben. :S
Hildegard schrieb:> Doch im "Parametric Product Table" von Atmel gibt es noch weitere uC> ohne Flash.
Beispielsweise den AT83C5134. Der hat sehr wohl internes ROM, aber das
ist kein Flash-ROM, sondern richtig klassisches Masken-ROM, d.h. dessen
Inhalt wird zum Zeitpunkt der Fertigung festgelegt und ist später kein
bischen änderbar. Naturgemäss ist sowas nur bei grossen Stückzahlen
interessant. Oder in teuren Sonderfällen, wie hohen Anforderungen an
Lebensdauer oder Robustheit.
Also: ROM-less heisst ohne ROM. Egal ob Flash oder anders. Und kann auch
heissen: Trotzdem mit ROM, aber ohne anwenderdefiniertes ROM (auch
Masken-ROM ist anwenderdefiniert, aber das Verfahren ist etwas
umständlich ;-).
> Verstehe ich es richtig, das neue Konzept ist hier das "In den Ram> Laden", richtig?
Bei einigen Sonderfaellen. Normalerweise, wie z.B beim 8051, wird das
Programm direkt aus dem externen Speicher ausgefuehrt. Okay, letztlich
wird natuerlich auch der aktuelle Befehl in die CPU eingelesen.
Den Unterschied merkt man wenn man seinen externen Speicher von der CPU
neu programmieren will. Da man die Speicher nur in Bloecken loeschen
kann muss man sicherstellen das kein Zugriff auf den Speicherblock
erfolgt. Es kann sogar sein das man ueberhaubt keinen Zugriff auf den
Speicher hat wenn er geflasht wird. Dann muss man die Brennroutine ins
Ram kopieren.
> Nennt man das zufällig "Selfprogramming Memory"?
Hm..habe ich so noch nie gehoert. Aber da laesst sich jede
Marketingabteilung wohl was anderes einfallen.
> Also: ROM-less heisst ohne ROM. Egal ob Flash oder anders.
Sagen wir mal lieber ohne Rom von dem der Anwender wissen soll. Bei dem
von mir angefuehrten Sh7262 behauptet Renesas auch der haette kein Rom.
Aber natuerlich startet er irgendwo seinen Bootloader. Und auch ein 8039
hat ja offiziell kein Rom obwohl es die Maskenversion einer
Waschmaschine sein kann. Gerade beim 8039 stellt sich zum Beispiel die
Frage ob es nicht auch Versionen gab die wirklich keinerlei Rom hatten
und ob die sich zu den anderen vielleicht im Stromverbrauch
unterschieden.
Olaf
Bei Atmel siehts bei den ARMs auch so aus,
der SAM9Mxx / SAM0Gxx haben auch alle einen ROM Code der Programmcode
von irgendwoher ins interne SRAM laden kann, um es dann zu starten. Sind
aber in der liste nicht vermerkt. Im Datenblatt hingegen schon.
Die Vorgänger hatten das teilweise auch RM9200 z.B. da konnte man sogar
teile des ROM Codes verwenden.