Hi erstmal, ich würde gere eine Art Mini-PC mit einem AVR (ATMega 328 o.ä.) realisieren. Mich würde es interessieren ob ich einen Bootloader schreiben kann der das .hex file von der SD in den Flash oder den EEPROM laden kann, und anschließend ausführen? Daten und Bilder sollen außerdem auf der SD-Karte gespeichert werden, und dann aber erst von Programm aufgerufen und verarbeitet werden. Ich habe schon mal gegooglet und diese Seiten gefunden: http://dangerousprototypes.com/2012/04/03/2boots/ http://www.avrfreaks.net/forum/sd-card-boot-loader-avr Meint ihr das funktioniert??? Danke schon mal im vorraus.
Wenn du es richtig machst, dann funktioniert das auch. Aber: Einen ATmega würde ich für sowas nicht benutzen. Der wäre mir zu klein. Dann lieber einen Cortex, aber einen mit externem RAM dran. Obendrein müßtest du dir Gedanken machen über ein API, damit du nicht alle nötigen Treiber zweimal im System drin hast (einmal im Lader und einmal in deiner App). Bei ARM und Cortex geht sowas relativ elegant per SVC. W.S.
X. H. schrieb: > Meint ihr das funktioniert??? Klar kann das funktionieren. Musst Du: Bootloader bauen/schreiben/portieren Bootloader muss flashen können Bootloader muss in der Lage sein Dateien von SD-Karte zu lesen im SRAM ziwschenspeichern und dann Pageweise in Flash übertragen und dann anspringen. Oder Du spendierst dem Systam ausreichend RAM so dass der Code auch aus dem SRAM ausgeführt werden kann. Nicht trivial - und für was? Bei einer Applikation war Field-Update nötig - für was brauchst Du das? rgds
@ X. H. (leonard) >ich würde gere eine Art Mini-PC mit einem AVR (ATMega 328 o.ä.) >realisieren. Gibt es schon, nennt sich Raspberry Pi & Co. > Mich würde es interessieren ob ich einen Bootloader >schreiben kann der das .hex file von der SD in den Flash oder den EEPROM >laden kann, und anschließend ausführen? Sinnlos. Damit wird bei jedem Booten der Flash neu programmiert. >Meint ihr das funktioniert??? Ja, ist aber wenig sinnvoll. Ein Board mit RAM als Programmspeicher ist hier deutlich sinnvoller.
Falk Brunner schrieb: > Sinnlos. Damit wird bei jedem Booten der Flash neu programmiert. Warum? Man kann ja beim Flashen eine Versionsnummer ablegen. Beim Start diese Versionsnummer mir der auf der SD vergleichen. Sind diese identisch, kann sofort ohne flashen das Programm gestartet werden.
"In einem unendlich großen Universum kann man nichts neues erfinden, weil schon alles irgendwo erfunden wurde." http://www.mikrocontroller.net/articles/AVR_CP/M
W.S. schrieb: > Wenn du es richtig machst, dann funktioniert das auch. > > Aber: > > Einen ATmega würde ich für sowas nicht benutzen. Der wäre mir zu klein. > Dann lieber einen Cortex, aber einen mit externem RAM dran. Obendrein > müßtest du dir Gedanken machen über ein API, damit du nicht alle nötigen > Treiber zweimal im System drin hast (einmal im Lader und einmal in > deiner App). Bei ARM und Cortex geht sowas relativ elegant per SVC. > > W.S. Funktioniert das mit dem externen RAM wircklich? Und kann man auch den Flash erweitern, um größere Programme zu laden? Oder kann man das Programm sogar direckt von der SD-Karte aus führen? LH
> Einen ATmega würde ich für sowas nicht benutzen. Der wäre mir zu klein. > Dann lieber einen Cortex, aber einen mit externem RAM dran. Obendrein > müßtest du dir Gedanken machen über ein API, damit du nicht alle nötigen > Treiber zweimal im System drin hast (einmal im Lader und einmal in > deiner App). Bei ARM und Cortex geht sowas relativ elegant per SVC. Ist es schwerer einen ARM Cortex zu programmieren als einen AVR? Und mit welchem tool bzw. Sprache lassen die sich programmieren? LH
> Funktioniert das mit dem externen RAM wircklich? Nicht so ganz wirklich. Beim Cortex M hat Programm im extrenen RAM nur 1/3 der Geschwindigkeit. Und AVR_CP/M hat ja Daten für den Z80 Emulator im RAM. > Oder kann man das > Programm sogar direckt von der SD-Karte aus führen? Von SD-Karte kannst du nur komplette 512 Byte Blöcke lesen. Recht unpraktisch, wenn des erste Byte ein Sprungbefehl ist, und du trotzdem die nutzlosen 511 Bytes einlesen musst.
Danke, aber noch mal zu den ARM Cortex, sind die viel schwerer als die AVR zu programmieren und mit welcher Sprache? LH
X. H. schrieb: > Danke, > aber noch mal zu den ARM Cortex, sind die viel schwerer als die AVR zu > programmieren und mit welcher Sprache? > LH Nein schwer sind sie nicht. Die ARM CPU ist recht übersichtlich und bei einem größeren ARM Cortex M4 gibts dann auch noch eine MPU, einen SDRAM-Controller und einen Display-Controller dazu, womit man sich einen richtig schönen Rechner bauen kann. Allerdings ist die Peripherie (Herstellerspezifisch) manchmal nicht ganz ohne, einfach weil die viel kann. Kann einen Anfänger erstmal überrumpeln, aber irgendwann findet man sich auch da zurecht.
Jede für die du einen Compiler findest und zu Maschinencode kompiliert. Also C, C++, Pascal...
Noch ein kleiner Tipp: wenn du dir einen ARM Cortex Rechner bauen willst, kannst du mit dem 32F429IDISCOVERY Board anfangen. Hat 8MB SDRAM, ein Display, einen Programmer/Debugger schon onboard und kostet nicht viel. Dann bringst du eine SD-Karte und einen PS2 Port an (USB Tastatur wäre auch möglich, USB ist aber nicht ganz trivial) und schon hast du Hardwaretechnisch alles was du brauchst.
> Jede für die du einen Compiler findest
... und jemanden, der dir bei Problemen weiter helfen kann.
Da kannst du beides nehmen C und C++.
TriHexagon schrieb: > Noch ein kleiner Tipp: wenn du dir einen ARM Cortex Rechner bauen > willst, kannst du mit dem 32F429IDISCOVERY Board anfangen. > > Hat 8MB SDRAM, ein Display, einen Programmer/Debugger schon onboard und > kostet nicht viel. Dann bringst du eine SD-Karte und einen PS2 Port an > (USB Tastatur wäre auch möglich, USB ist aber nicht ganz trivial) und > schon hast du Hardwaretechnisch alles was du brauchst. Das ist ETWAS schwachbrüstig unterwegs für solche Sachen :-( Na gut, für CP/M reichts. Aber nicht für einen Computer. Bitte bendenken, dass die Cortex M4 nur die größten unter den allerkleinsten sind Spielzeug. Die M4 sind weder "schnell" noch haben sie viele Features - aus der Warte eines "richtigen" Prozessors betrachtet. Selbst ein 10 Jahre alter Athlon lässt den M4 sehr, sehr alt aussehen. Vermutlich sogar ein AMD K6II von 1998... Für sowas nimmt man am Besten mindestends einen ATMEL ARM9 oder was in der Kategorie. Da dran kommen z.B. 128MB RAM, ein USB Hub und ein DVI Anschluss. Das wäre dan ein echter mini-Computer, schwächer als ein Raspberry PI. Aber immerhin kann man da ein echtes Betriebssystem drauf tun (Linux) und echte Anwendungen drauf laufen lassen. Wie einen Browser und eine gescheite GUI.
Gästchen schrieb: > TriHexagon schrieb: >> Noch ein kleiner Tipp: wenn du dir einen ARM Cortex Rechner bauen >> willst, kannst du mit dem 32F429IDISCOVERY Board anfangen. >> >> Hat 8MB SDRAM, ein Display, einen Programmer/Debugger schon onboard und >> kostet nicht viel. Dann bringst du eine SD-Karte und einen PS2 Port an >> (USB Tastatur wäre auch möglich, USB ist aber nicht ganz trivial) und >> schon hast du Hardwaretechnisch alles was du brauchst. > > Das ist ETWAS schwachbrüstig unterwegs für solche Sachen :-( > Na gut, für CP/M reichts. Aber nicht für einen Computer. Der soll ja auch nicht mit einem x86 konkurrieren. Ein ARM Cortex M4 mit 180 MHz hat schon ordentlich Power und schlägt so manchen Intel Prozessor aus den 80er. Für eine Spielerei völlig ausreichend. Gästchen schrieb: > Für sowas nimmt man am Besten mindestends einen ATMEL ARM9 oder was in > der Kategorie. Da dran kommen z.B. 128MB RAM, ein USB Hub und ein DVI > Anschluss. Die sind aber sehr viel schwerer zu handhaben und mit Eigenbau (mind. 4 Layer, BGA, sehr hohe Frequenzen) ist da nix mehr als Bastler. Dafür Treiber zu schreiben ist außerdem schon eine ganz andere Hausnummer.
TriHexagon schrieb: > Gästchen schrieb: >> TriHexagon schrieb: > Der soll ja auch nicht mit einem x86 konkurrieren. Ein ARM Cortex M4 mit > 180 MHz hat schon ordentlich Power und schlägt so manchen Intel > Prozessor aus den 80er. Für eine Spielerei völlig ausreichend. Aber nicht für Linux. Da harperts schon an der Peripherie. Und ohne Betriebssystem keine Software. CP/M wäre vielleicht eher was. > Die sind aber sehr viel schwerer zu handhaben und mit Eigenbau (mind. 4 > Layer, BGA, sehr hohe Frequenzen) ist da nix mehr als Bastler. Dafür > Treiber zu schreiben ist außerdem schon eine ganz andere Hausnummer. Triber schreibst man da nicht mehr, die sind fertig. Man bekommt ohnehin keine Dokumentation dazu. Es gibt einige ARM9 im LQFP, wie auch passende SDRAM. Wenn auch selten und nicht die schnellsten. Und ein 6-Layer muss es nicht sein. Wir haben in der Arbeit mehrere 4-Layer mit ARM9+Linux drauf, daher weiß ich dass es geht, inklusive EMV. Wo der Nutzwert für Zuhause wäre, ist natürlich fraglich - außer der Bastlerstolz. In der Arbeit ist es der Preis, ein EMV-gerechtes Linux Board mit z.B. -40 - +85° im nötigen Formfaktor bekommt man einfach nicht ;-)
WehOhWeh schrieb: > Aber nicht für Linux. Da harperts schon an der Peripherie. Und ohne > Betriebssystem keine Software. > CP/M wäre vielleicht eher was. Dafür gibts Cortex-R und Cortex-A. WehOhWeh schrieb: > Es gibt einige ARM9 im LQFP, wie auch passende SDRAM. Wenn auch selten > und nicht die schnellsten. Und ein 6-Layer muss es nicht sein. Warum muss es denn die veraltete ARM9 Architektur sein, wenn man auch den Nachfolger Cortex-A nehmen kann, der zB in jedem modernen Smartphone zu finden ist? Der Cortex-M hat zwar weniger Leistung, aber andere Vorteile, wie Preis, Stromverbrauch, Echtzeitfähgikeit...
WehOhWeh schrieb: > Aber nicht für Linux. Da harperts schon an der Peripherie. Und ohne > Betriebssystem keine Software. > CP/M wäre vielleicht eher was. So wie ich das verstanden habe, will er denn Rechner inkl. Software selbst bauen. Das wäre mit einem großen ARM schwieriger. X. H. schrieb: > Hi erstmal, > > ich würde gere eine Art Mini-PC mit einem AVR (ATMega 328 o.ä.) > realisieren. Mich würde es interessieren ob ich einen Bootloader > schreiben kann der das .hex file von der SD in den Flash oder den EEPROM > laden kann, und anschließend ausführen?
Hallo, schon mal was von virtuellen Maschinen gehört. In der Elektor von Sommer 2014 wurde so eine Virtuelle Maschine gezeigt und vorgestellt. Da kannst du einfach ein EEPROM rein stecken und davon (nachdem das System selber gestartet ist) booten. LG
Giebt es eigentlich einen ARM den man über die SPI-Schnittstelle programmieren kann? Und wenn ja wird ein ARM ähnlich wie ein AVR programmiert, ich meine von den Ports her und so? LH
Ne Art "Mini PC"mit ARM, der von SD Karte bootet, Linux benutzt und steuern kann: Raspberry Pi2 Der kostet blanko ohne Zubehör keine 38 Euro und hat ne Quadcore ARM CPU und genug Dampf, um auch mal etwas Aufwändigeres zu betreiben. Guckst Du raspberrypi.org und Google.
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.