Forum: Mikrocontroller und Digitale Elektronik Aufwand für embedded PC?


von Rolf F. (Gast)


Lesenswert?

Wie aufwendig ist eigentlich ein Board mit einem embedded PC anstatt
einem mittelmäßigem Microcontroller wie einem MSP430F149?

Und wo gibt es denn Schaltpläne u. Layouts für embedded PCs zum
Downloaden?

von R2D2 (Gast)


Lesenswert?

Embedded PC's sind leider ziemlich teuer. Schaltpläne zu finden wird
nicht ganz leicht sein.
Aber warum ist der F149 ein mittelmäßiger Controller?

Mfg,

R2D2

von Rolf F. (Gast)


Lesenswert?

Mittelmäßig ist der MSP430F149, weil er nur 2 kB RAM und nur 60 kB Flash
hat.
Das Flash reicht uns für Ergometer jetzt schon nicht aus (weil für
Bootloader kein Platz mehr vorhanden ist u. die deshalb nur im RAM
laufen können) und für Speicherkarten wie MMC/SDC, auf die man nur in
512 Byte großen Blöcken (die an einer Adress n*512 beginnen müssen)
Auslesen/Beschreiben kann, braucht man zum Lesen/Schreiben einen (bis
zu) 512 Byte großen Buffer, also schon 1 kB RAM und damit mehr als die
Hälfte - für ein Dateisystem ist da kein Platz.

von Peter D. (peda)


Lesenswert?

Ich vermute mal, Du hast Deine 60kB Flash fast nur mit irgendwelchen
Bildchen für das LCD verstopft. Lagere diese Bilddaten doch einfach in
einen EEPROM aus und Du hast wieder reichlich Platz für echten
Programmcode.

Z.B. AT24C512 (64kByte) oder AT24C1024 (128kByte).
Dürfte um Längen billiger sein als ein EPC und braucht nur 2 Pins zu
Deinem MC.

Oder nimm als MC einen ATMEGA128 (128kByte Flash).


Peter

von crazy horse (Gast)


Lesenswert?

oder wie wärs mit nem LPC210x? Sehr schöner Controller mit ARM-Kern,
128k Flash und 16-64k RAM.

von Rolf F. (Gast)


Lesenswert?

Also Probleme sind neben dem knappen Flash auch die schlechten
Debugging-Möglichkeiten wie z. B. keine funktioniertende
RS232-Kommunikation im Debuging-Modus und Seiteneffekte, die nur durch
Compiler- oder IC-Fehler entstehen können. Da kommen auch 3 völlig
unterschiedliche Programmierer dann nur mit trial & error weiter mit
workarounds wie warteschleifen / Speedups (wie memcpy) an Stellen, wo
keine Hardware-Zugriffe erfolgen. Und bei einer 2000 EUR-IDE gibt´s
schon beim Linken Probleme wie dass zwar eine flashfähige Version
erstellt wird, der Debuger die aber nicht akzeptiert.

Mit PCs gibt´s solche Probleme nicht und wenn es Probleme gibt, sind
auch Sachen wie Kernel debuging viel leichter.

Deshalb will ich erstmal recherchieren wo es Schalt-Pläne dazu gibt u.
wie teuer denn die Komponenten sind.

von Dominik S. Herwald (Gast)


Lesenswert?

Schau mal hier:
http://www.dilnetpc.com/

Die haben einen embedded 486er im DIL 64 Format!

Hat für einen PC nur etwas wenig RAM und Flash und nur eine Serielle
Schnittstelle.

Ich selbst benutzte nen richtigen PC104 PC mit National GX1 200MHz,
128MB-RAM, CF Sockel mit 256MB Flash Karte etc. (eBay: 160 Euro)aber
falls ihr ne Serienproduktion plant ist dass vermutlich zu teuer da man
den dann ja für ~500 Euro pro Stück vom Händler kaufen müsste...

MfG,
Dominik S. Herwald
http://www.dsh-elektronik.de/

von Rolf F. (Gast)


Lesenswert?

Aha, danke.
Ich denke an sowas wie einen 486er im 64 Format, damit weiterhin eine
Leiterplatte ausreicht. Wie teuer ist denn so ein 486er bei Stückzahlen
von einigen 1000 Stück?

von Dominik S. Herwald (Gast)


Lesenswert?

Tja da kann ich dir auch nicht helfen - da musste mal bei SSV Anfragen
aber billig wirds bestimmt nicht.
Ich glaube aber einzeln kosten die so um die 150 bis 250 Euro...

Oder meintest du die Prozessoren? Dass sind AMD Elan SC410 - aber da
ich sowas für gewöhnlich nicht selbst baue kann ich dich da auch nur an
die Distributoren verweisen.

MfG,
DSH

von Christian (Gast)


Lesenswert?

Hallo zusammen,

der Dil/NET-PC 486/33 kostet einzeln 175€ !

Mit eval-Board 259€ beim Hersteller...

Wenn man mich fragt keine gute Alternative.

´
Allerdings, gibt es z.B. eCos (Linux) als OS, welches auf fast jedem
gängigen Prozessor läuft, vieleicht da mal schauen
(sources.redhat.com)


MfG


Christian

von Peter D. (peda)


Lesenswert?

@Rolf

Ist ja schade, daß Du mit Deiner Entwicklungsumgebung so schlechte
Erfahrungen gemacht hast.

Aber ob man deshalb gleich mit Kanonen auf Spatzen schießen muß ?

Immerhin sind PC-CPUs nicht als Stromsparer bekannt, d.h. auch in
Sachen Netzteil-Power mußt Du dann noch erheblich zulegen und natürlich
auch die Wärmeabfuhr nicht vergessen.


Zum Thema Debuggen:

Man muß immer dran denken, alle Debugger sind Krücken !!!

D.h. irgendwie gibt es immer Seiteneffekte durch die beschlagnahmten
Ressourcen und zeitlichen Verschiebungen, wenn z.B. die CPU zur Ausgabe
von Registern angehalten werden muß.
Da kannst Du bei PCs kein Änderung erwarten. Höchstens, daß diese
Seiteneffekte durch die massive Rechenpower etwas geringer sind.


Die besten Debugergebnisse hat man daher, wenn man selber kleine
Ausgaberoutinen schreibt, die dann Informationen z.B. über die UART
ausgeben. Dann sind Dir nämlich die beschlagnahmten Ressourcen bekannt
und man kann sie an den Stellen einfügen, wo es günstig ist.

Deshalb nehme ich jetzt gerne MCs mit Bootloader, wo man superschnell
neu compilieren und downloaden kann.


Wenn man in C programmiert, kann man die meisten Routinen auch schon
auf dem PC z.B. unter Borland-C testen.
D.h. echtes Debuggen auf dem Ziel-MC ist dann nur noch für die Routinen
mit Hardwarezugriffen nötig.


Irgendwo staubt bei mir auch ein Emulator und ein JTAG-ICE vor sich
hin.
Der Emulator sieht richtig edel aus, ein PLCC-Sockeladapter mit einem
dicken verdrillten Flachbandkabel zu einer großen Box. Aber ich brauche
nur einen Blick auf das superdicke Handbuch zu werfen und schon stell
ich das Ding ganz schnell wieder in die Ecke.

Will damit sagen, auch Emulieren / Debuggen mit einem großen Profitool
will erstmal gelernt sein und nicht immer ist an unerwarteten
Reaktionen ein Bug in dessen Hardware / Software schuld.


Peter

von Rolf F. (Gast)


Lesenswert?

Danke für die Antworten.
Also ich habe über ein Jahrzehnt hauptsächlich am PC programmiert, aber
die anderen 2 Programmierer haben schon früher mehrere Jahre lang
verschiedene Microcontroller programmiert und die sehen es so wie ich.

Es ist ziemlich frustierend überhaupt nicht nachvollziehbare Fehler zu
finden wie

if (i<8)
  Ausgabe(y); // Ausgabe-Funktion über LCD-Display am MC

mit den Ausgaben 0, 8, 16 ...

und dann zu sehen, dass bei (i>8) überhaupt nichts ausgegeben wird (d.
h. auch 16 wird nicht ausgegeben), obwohl nur aus einem lokalen Puffer
ausgelesen wird!

Beim PC habe ich sowas noch nie gehabt!

Eigentlich müsste man embedded PCs doch mit Bestücken einer
Leiterplatte billig herstellen können. Mal hören, was Lieferanten wie
Spörle empfehlen.

von Dominik S. Herwald (Gast)


Lesenswert?

if (i<8)
  Ausgabe(y); // Ausgabe-Funktion über LCD-Display am MC

Ja warum sollte dass auch funktionieren?
Da soll y doch nur ausgegeben werden wenn es kleiner als 8 ist?

Müsste ja dann eher so lauten:

if(y<8)
   Ausgabe(y);

Sonst wäre die Ausgabe ja von i und nicht von y abhängig und i kann ja
vorher irgendeinen anderen Wert annehmen oder konstant sein...

Und falls du dich nur vertippt hast - dann scheint der Compiler da
buggy zu sein. Da würd ich mir mal testweise nen anderen ansehen.

Im Vergleich zum PC sind viele µC Familien ja noch relativ jung.
D.h. die Tools für den PC sind natürlich viel ausgereifter.
Wenn man allerdings einen µC nimmt, der auch schon so ca. 5-10 Jahre
erfolgreich im Markt vertreten ist, dann müsste es auf ähnlich gutem
Niveau wie der PC sein.

MfG,
DSH

von Rolf F. (Gast)


Lesenswert?

Ähm, da hab´ ich mich vertippt; ich meinte natürlich i statt y. Ich habe
mir diesen Compiler-Bug zusammen mit einem Kollegen gestern angesehen.

Und weil solche Bugs bei zwei mit einander kommunizierenden embedded
Systemen auftreten ist es ziemlich aufwending, weil deren Kommunikation
nicht funktioniert, wenn schon bei nur einem ein Debuger aktiv ist!

Der Compiler ist IAR Embedded Workbench 1.26 Vollversion, also mit
Dongle usw.. Den gibt es seit einigen Jahren und der kostet(e) um 2000
EUR. Zudem wird der vom MC-Hersteller TI empfohlen und auch auf dessen
Konferenzen verwendet.
Zu den Compiler-Bugs kommen noch Linker-Bugs, durch die man zwar
Progromme ohne Fehler/Warnungen erstellen u. flashen kann, aber der
Debuger schon das Starten verweigert, weil der überlappende Segmente
meldet, die es aber auch nach dem Mapping-File nicht gibt und bei denen
der bezahlte "Support" nur empfiehlt verschiedene Sachen
auzuprobieren.

Die neuere Version 2.1 ist bei dem jetztigen Projekt auch keine
Alternative, weil die Portierungen dahin viel aufwendiger sind als die
nach MSPGCC und sicherlich sind die Linker- u. Compiler-Bugs  weiterhin
drin. Zudem haben wir nun auch keine Zeit dafür.

von Peter D. (peda)


Lesenswert?

"
if (i<8)
  Ausgabe(y); // Ausgabe-Funktion über LCD-Display am MC

mit den Ausgaben 0, 8, 16 ...

und dann zu sehen, dass bei (i>8) überhaupt nichts ausgegeben wird (d.
h. auch 16 wird nicht ausgegeben), obwohl nur aus einem lokalen Puffer
ausgelesen wird!
"


Das bei 16 nichts ausgegeben wird, ist doch vollkommen richtig. 16 ist
doch nicht <8 !

Das statt 0..7 die Ausgabe 0, 8, 16 ... erfolgt kann vielleicht an der
Verwendung von Macros liegen. C erlaubt da ja ne Menge Schweinereien.
Auch Typumwandlungen können manchmal unerklärliche Werte verursachen.


Ich benutze den Keil C51 Compiler und hatte da auch schon einige
unerklärliche Dinge. Aber die waren bisher immer auf meine
Programmierkunst zurückzuführen. Und eben besonders Macros können da
die verrücktesten Sachen machen.

Um Zweifel auszuräumen lasse ich auch solche erstmal unerklärlich
reagierenden Routinen unter Borland.C laufen, ob sie sich da genau so
verhalten und das tun sie eigentlich immer. Der Keil ist da ziemlich
gut ANSI-C compatibel.


Und wenns ganz schlimm kommt sehe ich mir den erzeugten Assembler an,
da merkt man dann schnell, was sich der Compiler gedacht hat.


Aber richtige Bugs habe ich noch nicht bemerkt. Auch ist die Keil
Webseite exzellent in Bezug auf Support und auch der Erläuterung der
speziellen MC-spezifischen Erweiterungen, z.B. die Verwendung von
Pointern in den unterschiedlichen Memory-Bereichen.



"der bezahlte "Support" nur empfiehlt verschiedene Sachen
auzuprobieren."

Da kann ich absolut nicht klagen. Die Hilfe war immer sehr fundiert.
Ich hab auch schonmal von Herrn Keil persönlich meine Fragen
beantwortet bekommen.



Peter

von Peter D. (peda)


Lesenswert?

Ich wollte Dich natürlich nicht zum 8051 bekehren, sondern nur
verdeutlichen, daß man nicht alle Microcontroller-Programmiertools
pauschal verdammen kann. Es gibt eben auch sehr gute.


Vielleicht kannst Du ja Dein Bug-Beispiel mal etwas präziser
hinschreiben (Typ der Variablen, Funktionen, Macros, Headerfiles usw.).

Irgendwie deutet ja Dein Posting "...16 wird nicht ausgegeben..."
darauf hin, daß Du doch was völlig anderes willst, als Du
hingeschrieben hast.


Ich versuche jedenfalls immer zu ergründen, worin der Fehler liegt.
Wenn es nämlich ein Syntaxproblem ist, dann fällst Du immer wieder
darauf herein, völlig unabhängig vom Tool.


Peter

von Rolf F. (Gast)


Lesenswert?

Also der Bug tritt z. B. so auf:

for (i=0;i<8;i++)
  Ausgabe(i);

Und er tritt NICHT auf nach loop unrolling:

Ausgabe(0);
Ausgabe(1);
Ausgabe(2);
Ausgabe(3);
Ausgabe(4);
Ausgabe(5);
Ausgabe(6);
Ausgabe(7);

Am Montag werden wir mal nachforschen ob es ein Stack overflow sein
könnte, aber das zu überprüfen ist eigentlich Aufgabe des Compilers!
Nur der kennt weder Bitfelder noch Strukturen von Strukturen!

von Weinga-Unity (Gast)


Lesenswert?

Hallo Rolf!

Arbeite auch mit MSP430F149 und Proge mit meiner
SDT-Programmierumgebung in Verbindung mit MSPGCC. Ich hatte noch nie
irgend welche Probleme (es sei denn der Programmierer hat wo was
versteckt).

Wie auch andere schon sagten, Debugging-Sachen progt man sich selber.
Es ist zwar schön, dass es Software gibt, wo man die Register und
Speicherplätze auslesen kann, aber irgendwie hab ich mir bis jetzt
nichts anzufangen gewusst. Ich mach immer eine RS232 Verbindung oder
so, oder wenn ein Display dabei ist, lass ich es dort wo anzeigen. Und
bei Hardwaresachen muss ein Oszi herhalten.

mfg Weichinger Klaus
http://www.Weinga-Unity.de.vu

von Uwe Kullmann (Gast)


Lesenswert?

Embedded PC gibts für relativ kleines Geld bei ics-d.de
Habe Erfahrung mit dem Gene4312 und dem 5335 (PC/104) gesammelt.

Das 5335 besitzt in meiner AUsstattung 128MB RAM und eine 256MB
Flash-Disk.
Als "Gui" benutze ich eine LCD-Display, eine Folientastatur und ein
RFID Modul. Ein Atmel 8515 dient dabei als "Wrapper". er schickt mir
die Benutzereingaben per RS232 zum PC. Ausgaben landen im Display.
Als OS läuft ein Debian mit Apache, php, ftp, ssh und mysql als
Datenbank.
Das ganze ist dann noch in einem kleinen Wandgehäuse gestopft.
Geballte Ladung Rechnenleistung im Miniformat!
Probleme gab es nur mit der Abwärme der CPU und dem DCDC Wandler.


mfg
UK

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.