Hallo, Es gibt ja hier schon einige die Linux auf AVR32 fahren, z.B. mit dem ATNGW, Grasshoper, STK1000. Es ist ja naheliegend den Reichtum der opensource Software für Embedded Anwendungen nutzbar zu machen. Nur wie portabel sind Linux-sources bezüglich der Architektur, also z.B. von x86 auf AVR32 oder ARM oder PPC? Da ich mich mit Linux und Application Processor Platformen nicht auskenne, hab ich dazu ein paar grundlegendere Fragen: 1) OS portieren? Linux läuft also, nachdem man den Sourcecode für AVR32 compiliert. Aber auf welchen Sourcecode bezieht sich das? Nur auf einen per Hand angepassten, von irgendeiner Distro abgeleiteten und von Atmel zur Verfügung gestellten? Nur auf einen abgespeckten Teil/bzw nur den Kernel? Oder könnte man grundsätzlich jede Distribution im Sourcecode hernehmen und ohne (oder überschaubare) Anpassungen compilieren, und sofern Hardware Requirements stimmen zum laufen bringen? (für AVR32 oder ARM) 2) Anwendungen, Treiber, Libs portieren? Wie verhält es sich mit Anwendungen, lassen sich opensource Programme mit verhältnismäßigem Aufwand portieren? Welche Abhängigkeiten werden schwierigkeiten machen? Was ist mit Treibern, wie weit lassen sich vorhandene open source Treiber aus Linux-Distris im AVR32 Linux einspannen (Etwa WLANkarten-Treiber). Ebenso Libraries? Verhältnismäßiger Aufwand soll bedeuten, als Einzelperson mit guten Linux, GCC, Mikrokontroller Kenntnissen wie es hier bestimmt viele gibt, in einigen Wochen/wenigen Monaten zu stämmen (im besten Fall). Daran würde sich z.B. entscheiden, ob man in einem Standalone-Projekt eine bestimmte Funktionalität/Anwendung eher Zeile für Zeile anhand von Linux-sourcen nachprogrammiert (Was dann auch Wochen und Monate dauern kann), oder gleich das ganze OS hernimmt und sich Entwicklungsaufwand bei Anwendungen und Treibern einsparen kann.
Ich hab mir mal erlaubt selbst zu helfen, neben http://avr32linux.org hat sich da http://www.t2-project.org/architectures/avr32/ als informativ erwiesen. Auch: http://avr32linux.org/twiki/bin/view/Main/LinuxApplications, http://avr32linux.org/twiki/bin/view/Main/LinuxKernel Theoretisch sieht der Linuxweg einfach aus, aber man findet vermutlich erst hinterher heraus was man selber noch zu patchen hätte.
Standarddistributionen lassen sich leider nicht als Grundlage fürs kompilieren nehmen, da viele Anpassungen an den µC nicht enthalten sind und sich nicht jede Anwendung ohne weiteres für einen µC kompilieren lässt. Weiter schränken die doch häufig sehr begrenzten Speicherkapazitäten die Sache weiter ein. Deshalb gibt es eine spezielle Linux-"Distribution" (Buildroot), die speziell auf Embedded Systems angepasst ist. Trotzdem läuft noch nicht jedes Paket aus dem Buildroot auf jeder Hardware. Grundsätzlich wird aber schon so einiges unterstützt (Samba und div. andere Services). Und mit Geduld und etwas Erfahrung lässt sich sicherlich das meiste auch kompilieren. MfG Marius
Ja wobei die Maintainer der Embedded-Anpassungen alle ein ziemlich euphemistisches Bild vermitteln, soweit ich es dort verstanden habe soll sofern buildroot toolchain klappt dann prinzipiell der kernel kompilierbar sein, und packages auch sofern sie dieses autoconf oder so anbieten. Dann ist der Weg zumindest theoretisch aufgezeigt, und man muss nur noch einzelne Dependencies durch die Anpassungen und Verstümmelungen der Libs und Tools in den Griff kreigen. Gibt es eigentlich sowas wie ein Grafisch basierten Dependency-Viewer der entweder auf Linker-Ebene oder auf Präprozesser(Includes und ifdefs)-Ebene oder auf MetaInfo/Package-Ebene (So wie bei Eclipse) die Dependencys übersichtlich darstellt? Als frei skalier und scrollbarer Graph mit Ansichtsfilter oder so. In Eclipse gibt es z.B. den Include-Browser, der aber bei den Mehrfach und Kreuzabhängigkeiten kaum Übersicht bietet. Ich stelle mir das als den Dreh und Angelpunkt bei der Analyse oder Einschätzung von Portierbarkeit vor, bzw. täglich Brot der Maintainer..
Die Frage ist relativ einfach zu beantworten: Kommst du ins Schwitzen, wenn make mit einem Fehler abbricht? Postest du innerhalb von 5 Minuten in dieses Forum die letzten zwei Zeilen: make: *error leaving directory /home/gruenschnabel/buildroot/linux-2.6.28/drivers... Oder scrollst du nach oben, schaust dir die Compiler-Fehlermeldung an, erkennst ein Problem mit einer Header-Datei, schreibst einen Patch und kompilierst weiter bis zum nächsten Fehler? Wenn Möglichkeit eins, dann vergnüge dich mit den Paketen, die out-of-the-box laufen und lerne mehr Grundlagen. Wenn Möglichkeit zwei, viel Spaß beim Basteln, plane viel Zeit ein und helfe anderen Usern, die zur Kategorie eins gehören ;)
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.