Von SD-Karte booten?

Gast #4042025
Lesenswert?

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.
Gast #4042077
Lesenswert?

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.
Gast #4042105
Lesenswert?

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
#4042106
Lesenswert?

@ 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.
Gast #4043278
Lesenswert?

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
Gast #4043287
Lesenswert?

> 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
Gast #4043303
Lesenswert?

> 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.
Gast #4043321
Lesenswert?

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.
Gast #4043354
Lesenswert?

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.
Gast #4043389
Lesenswert?

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.
Gast #4043408
Lesenswert?

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.
Gast #4043493
Lesenswert?

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 ;-)
Gast #4043506
Lesenswert?

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...
Gast #4043579
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren