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
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
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
> Bootloader den GRUB2
Dieser wird jedoch von einem Bootloader im BIOS geladen.
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.
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
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
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.
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.