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.
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.
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.
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.
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.