Forum: Mikrocontroller und Digitale Elektronik ARM Fragen zum Einstieg


von m3teor (Gast)


Lesenswert?

Hallo Community,

ich arbeite schon seit fast einem Jahr mit 8bit AVR Controllern. Jetzt 
will ich mich ein bisschen mit ARM Controllern und Linux beschäftigen. 
Ich hab da nur noch ein paar Verständnis Probleme und vielleicht könnt 
ihr mir dabei helfen sie zu verstehen.

Also ich kenne das wie folgt, man schreibt ein Programm kompiliert 
dieses und Programmiert das .hex- File in den FLASH Speicher des 
Controllers. Sobald der Controller mit einer Versorgungsspannung 
versorgt wird startet der Controller seinen Code.

Wenn ich jetzt ein Linux OS auf einem ARM Prozessor laufen lassen will 
sieht das nach meiner Meinung nach schon ein bisschen komplizierter aus.
Ich brauche erstmals eine SD- Karte. Diese muss FAT formatiert sein und 
folgendes muss auf sie kopiert werden.
-  Ein Bootloder
-  Ein Kernel
-  Ein Filesystem

Jetzt baue ich mir eine ARM Controller Schaltung auf und stecke meine SD 
Card ein.

Wenn ich jetzt meine ARM Controller Schaltung einschalte was passiert 
dann?

Muss ich auch wie bei den AVR Controllern einen Programm auf den ARM 
Prozessor laden oder bootet er automatisch von der SD Card?

Gehört der Bootloader auf die SD Card oder auf den ARM Prozessor?

Was für Partitionen braucht eine SD Card auf der ich Linux für ARM 
Prozessoren installieren will? Und wie groß müssen diese sein?

Danke u. Gruß,
m3teor

von Oliver (Gast)


Lesenswert?

ARMs gibt es viele, und die haben zunächst mal nichts mit Linux, 
SD-Karten, Kerneln, oder Filesystemen zu tun.

In jedem Prozessor, der sein Programm nach dem STart aus dem internen 
Flash abarbeitet, musst du ein Programm hineinflashen. In dem von dir 
beschriebenen Fall ist das halt ein bootloader, der dann auf die 
SD-Karte zugreift, und von da Linux lädt und startet. Das ist aber keine 
spezifische Eigenschaft eines ARM, das ist halt in deinem Fall auf dem 
von dir verwendeten Board so programmiert.

Mann kann auch das ganze Linux mit Anwendungsprogrammen komplett in den 
Speicher flashen. Alle Linux-basierten Kleingeräte (Router, Handy, usw.) 
machen das so.

Und ganz selbstvertändlich kann man ARMs auch ganz ohne Linux verwenden.

Oliver

von m3teor (Gast)


Lesenswert?

Hallo Oliver,

danke erstmals für die schnelle Aufklärung.
Also ist das mit dem Bootloader so wie bei den AVR Controllern einfach 
nur ein Programm auf dem µC der sagt bitte hol dir den Code von einer 
bestimmten Quelle (RS232, SD-Card, usw.),

Ich kenne es halt von Ubuntu so:
Da gibt es auch einen Bootloader den GRUB2 und der ist auf der System 
HDD hinterlegt und nicht auf einem Prozessor (i3 i5 i7 usw.) oder BIOS 
Baustein.

Gibt es 2 verschiedenen Typen von Bootloadern?

Was muss alles auf so eine SD Card drauf (Kernel, Root FS)?

Gruß,
m3teor

von Uwe (Gast)


Lesenswert?

> Bootloader den GRUB2
Dieser wird jedoch von einem Bootloader im BIOS geladen.

von Frank (Gast)


Lesenswert?

m3teor schrieb:
> Da gibt es auch einen Bootloader den GRUB2 und der ist auf der System
> HDD hinterlegt und nicht auf einem Prozessor (i3 i5 i7 usw.) oder BIOS
> Baustein.

Da ist es ganz genauso. In diesem Fall ist das Programm, welches der 
Prozessor startet eben das BIOS (welches in einem externen Flash liegt). 
Und dieses sorgt dafür, daß der erste Sektor (MasterBootRecord) im 
ersten Zylinder auf der ersten Festplatte (oft auch einstellbar) ins RAM 
geladen wird und ausgeführt wird. Den Rest erledigt dann GRUB.

von m3teor (Gast)


Lesenswert?

OK das hab ich jetzt soweit verstanden.

Hat jemand von euch schon mal einen Bootloader für einen ARM Prozessor 
geschrieben. Oder gibt es da irgendwelche Allgemeinen Anleitungen?

Jetzt gibt es ja den Bootloader „U-boot“ der auch für ARM Prozessoren 
verwendet werden kann ist das richtig? Kann ich diesen Bootloader 
einfach auf meinen Prozessor flashen oder muss ich noch irgendwelche 
Einstellungen vornehmen?
(weil jeder Prozessor ist ja unterschiedlich (Pin Belegung HW- 
Komponenten usw.))

Gruß,
m3teor

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

Das musst du dir für deinen speziellen Prozessor zusammensuchen, Atmel 
hat bei den AT91SAM... z.B. at91bootstrap als ersten Bootloader (SDRAM 
initialisieren, flash/sd/mmc/nand init) der lädt dann erst das u-boot 
und der dann den linux kernel

von Guest (Gast)


Lesenswert?

Wofür denn überhaupt Linux? Wie wäre es denn erstmal mit Bare Metal 
Applikation? Nicht auf jedem ARM läuft Linux und Linux braucht eine 
Menge externen Speicher.

Fang doch erstmal mit einem CortexM an, um die ARM Architektur kennen zu 
lernen.

von m3teor (Gast)


Lesenswert?

Noch ein paar klärende Fragen zum Schluss:

Man kann also Linux auf jedem ARM Prozessor zum Laufen bringen soweit 
die Ressourcen des Prozessors ausreichen?

Welcher ARM Prozessor ist der bestgeeignete für Einsteiger? (Ich bin auf 
großen
Support angewiesen ist ATMEL).

Sollte ich mit einem Entwicklungsboard (wie Raspberry Pi) anfangen oder 
kann ich es mir zutrauen einen eigenes Board zu erstellen?

Gruß,
m3teor

von m3teor (Gast)


Lesenswert?

Guest schrieb:
> Wofür denn überhaupt Linux?

Ich will einfach bisschen spielen. Und das System verstehen.

>Wie wäre es denn erstmal mit Bare Metal
> Applikation?

Was sind Bare Metal Applikationen ?

> Fang doch erstmal mit einem CortexM an, um die ARM Architektur kennen zu
> lernen.

Kann man mit einem CortexM später auch mal ein Linux system booten?

Gruß,
Sebastian

von Oliver (Gast)


Lesenswert?

Wenn du mit Linux auf einem ARM spielen willst, kauf dir einen RasPi.

Willst du ARM pure erleben, kauf dir halt ein passendes ARM-Board.

Oliver

von Hans-Georg L. (h-g-l)


Lesenswert?

m3teor schrieb:
> Hallo Community,
>
> ich arbeite schon seit fast einem Jahr mit 8bit AVR Controllern. Jetzt
> will ich mich ein bisschen mit ARM Controllern und Linux beschäftigen.
> Ich hab da nur noch ein paar Verständnis Probleme und vielleicht könnt
> ihr mir dabei helfen sie zu verstehen.
>
...

> Also ich kenne das wie folgt, man schreibt ein Programm kompiliert
> dieses und Programmiert das .hex- File in den FLASH Speicher des
> Controllers. Sobald der Controller mit einer Versorgungsspannung
> versorgt wird startet der Controller seinen Code.

In das Flash wird Binärcode und kein Hexcode geschrieben, weil eine CPU 
kein Hexcode ausführt. Der Binärcode wird aber durch den Programmer aus 
dem Hex File extrahiert und in das Flash geschrieben.

> Wenn ich jetzt ein Linux OS auf einem ARM Prozessor laufen lassen will
> sieht das nach meiner Meinung nach schon ein bisschen komplizierter aus.
> Ich brauche erstmals eine SD- Karte. Diese muss FAT formatiert sein und
> folgendes muss auf sie kopiert werden.
> -  Ein Bootloder
> -  Ein Kernel
> -  Ein Filesystem
>
> Jetzt baue ich mir eine ARM Controller Schaltung auf und stecke meine SD
> Card ein.

Eine SD Karte ist nicht unbedingt notwendig.

> Wenn ich jetzt meine ARM Controller Schaltung einschalte was passiert
> dann?
> Muss ich auch wie bei den AVR Controllern einen Programm auf den ARM
> Prozessor laden oder bootet er automatisch von der SD Card?

Das kommt auf den Controller an, da sind nicht alle gleich. Da musst du 
das Datenblatt durchackern. Der Atmel ARM 926E macht es ungefähr so:

Bevor du auf externe Speicher oder Schnittstellen zugreifen kannst 
müssen die erst einmal initialisiert werden. Dafür gibt es einen fest 
eingebauten Code (PRE-Bootloader) der den Zugriff auf die verschiedenen 
externen Speicher mit default Werten initialisiert und dann nacheinender 
diese Speicher abklappert und nach einem gültigen Code sucht. Z.B. 
zuerst im internen Flash dann im externen Flash dann im externen 
seriellen Flash oder warten auf Datenübertragung an der seriellen 
Schnittstelle oder USB.
Die genaue Reihenfolge findest du im Datenblatt. Den gültigen Code 
erkennt der Controller an einer Bytesequenz, (magic Byte) die festgelegt 
ist und den Anfang vom Code kennzeichnet.

Findet der PRE-Bootloader einen gültigen Code führt er ihn aus. Das ist 
üblicherweise dann dein Bootloader. Der initialiert weitere Einheiten 
deines Controllers, verschiebt evtl. Speicher Adressen (Remapping) usw. 
Dann sucht er deine Applikation wo und wie du willst, den Bootloader 
schreibst du ja normalerweise selbst. Die Applikation könnte der ARM 
zwar auch direkt aus dem Flash abarbeiten, aber weil RAM schneller als 
Flash ist wird normalerweise der Anwendungscode (Image) in das Ram 
kopiert und dort ausgeführt.

Linux muss im Ram laufen und auch das File System muss dort angelegt 
werden.

> Gehört der Bootloader auf die SD Card oder auf den ARM Prozessor?

Der Bootloader muss in einem Speicher liegen, auf den der PRE-Bootloader
zugreifen kann.

> Was für Partitionen braucht eine SD Card auf der ich Linux für ARM
> Prozessoren installieren will? Und wie groß müssen diese sein?

Die SD-Karte braucht ein Format, das der Bootloader kennt damit er davon 
das Linux Image lesen kann und ins Ram auspackt.

Wenn Linux selbst auch noch auf die SD Karte zugreifen soll brauchst du 
natürlich ein Format, das Linux auch versteht.

von Frank K. (fchk)


Lesenswert?

m3teor schrieb:
> Noch ein paar klärende Fragen zum Schluss:
>
> Man kann also Linux auf jedem ARM Prozessor zum Laufen bringen soweit
> die Ressourcen des Prozessors ausreichen?

nein. Du brauchst für ein richtiges Linux einen ARM9, ARM11 oder einen 
Cortex A. ARM7 und Cortex M und R gehen nicht, weil sie keine MMU haben.

> Sollte ich mit einem Entwicklungsboard (wie Raspberry Pi) anfangen oder
> kann ich es mir zutrauen einen eigenes Board zu erstellen?

Die für Linux geeigneten Prozessoren haben über 300 Lötkügelchen auf 
ihrer Unterseite, im 0.8mm oder 0.5 oder sogar 0.4mm Raster. Das kannst 
Du mit Heimwerkermitteln nicht mehr verarbeiten. Dazu kommen 
Leiterplatten mit 6 bis 10 Lagen. Du wirst also ein fertiges Board 
nehmen müssen. Da ist dann schon ein Linux vorinstalliert, so dass der 
schwierige Teil bereits erledigt ist. Ab da macht es dann keinen ganz 
großen Unterschied mehr, ob Du auf einem PC oder einem ARM arbeitest.

fchk

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.