Forum: Mikrocontroller und Digitale Elektronik Embedded Linux


von alfons (Gast)


Lesenswert?

Hallo,
ich habe ein ca. Scheckkartengrosses Board mit Cortex M3 sowie Ethernet, 
USB und microSD gebaut. SDRAM ist auch mit drauf.
Ich frage mich: wäre es prinzipiell möglich, ein Linux da drauf laufen 
zu lassen? RAM ist ja genug vorhanden und eine MPU gibt es auch. Booten 
könnte man es von der microSD. Was wäre alles noch zu tun?

von Karol B. (johnpatcher)


Lesenswert?

alfons schrieb:
> Ich frage mich: wäre es prinzipiell möglich, ein Linux da drauf laufen
> zu lassen?
Ja, prinzipiell ist das möglich, siehe z.B. [1].

alfons schrieb:
> Was wäre alles noch zu tun?
Das wird z.T. auch unter [1] beschrieben. Allerdings sollte man schon 
fundiertes Wissen in Sachen Patchen, (Cross-)Kompilieren & Co. haben. 
Für einen Anfänger ist das jedenfalls nichts.

[1] http://www.linux-arm.org/LinuxKernel/LinuxM3

von alfons (Gast)


Lesenswert?

Hallo,

nun ja, mit Linux habe ich einfach Grundkenntnisse, aber C usw. sitzt, 
auch das Programmieren des CM3 ist kein Problem, daran soll es also 
nicht liegen. Sooo ein blutiger Anfänger bin ich also nicht :-) aber es 
stimmt insofern, dass ich mit embedded Linux bisher noch nichts gemacht 
habe.
Der Vorteil da wäre halt, dass Netzwerkstacks und Filesysteme fertig 
sind; die selber zu implementieren macht nicht soooo Spass ;-)

von alfons (Gast)


Lesenswert?

Hallo nochmal,
ich habe mir noch ein paar weiter Gedanken hierzu gemacht.
Kann mir jemand zu folgenden Vermutungen/Fragen etwas sagen:

1. Wenn ich Ethernet sauber laufen habe, dann kann ich auch Software auf 
das Board runter laden und debuggen?

2. ist die Performance einigermassen brauchbar? ich werde den Prozessor 
mit 120 MHz rennen lassen, das SDRAM ist aber nur 16 Bit breit 
angebunden (ging leider nicht anders wegen Platz).

von Ach nee (Gast)


Lesenswert?

alfons schrieb:
> 1. Wenn ich Ethernet sauber laufen habe, dann kann ich auch Software auf
> das Board runter laden und debuggen?

Seit wann ist Ethernet dafür gedacht Daten an andere Rechner zu schicken 
?

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Du brauchst ersteinmal einen Bootloader. UBoot oder was anderes 
passendes.
Dann einen Kernel der für dein System Kompilliert ist und dann noch in 
Rootfilesystem.

von alfons (Gast)


Lesenswert?

also, das heisst, debugging via Ethernet sollte gehen? sehr gut.

Michael,
ok, das von u-boot habe ich bereits geahnt. Aber wenn ich einen 
bootloader habe, brauche ich dann ja auch noch etwas zum booten ;-) die 
frage ist, wie ich den kernel genau an meine HW anpasse, da bin ich auf 
Karol's Website (http://www.linux-arm.org/LinuxKernel/LinuxM3) nicht 
schlauer geworden.

von Stefan F. (sfrings)


Lesenswert?

Über Ethernet Debuggen ist ja ganz nett, aber soweit musst Du erstmal 
kommen. Bis dahin wirst Du eine serielle Schnittstelle zum Debuggen 
brauchen. Also ist ein FTDI Chip quasi Pflicht. Den kannst DU dann auch 
gleich für den Bootloader verwenden.

Hast Du schonmal ein Minimal-Linux (z.B. auf einer Diskette) für einen 
PC zusammengestellt? Wenn nicht, dann versuch' das erstmal - ist nicht 
einfach.

Programmierkenntnisse alleine sind nur die halbe Miete.

von alfons (Gast)


Lesenswert?

Hi Stefan,
eine serielle Schnittstelle ist vorhanden. FTDI ebenso, ich kann also 
wählen. :-)

ich habe nochmals ausgiebig gesucht mit Google, aber was so richtig 
hilfreiches habe ich noch nicht rausgefunden. Das einzige, was ich 
bisher weiss, ist, dass ich von kernel.org den Kernel runterladen und 
für meine Plattform ein Image "bauen" muss. Dem Kernel kann ich die für 
meine Plattform passenden Treiber gleich hinein programmieren, dann 
sollte das gehen.

Die Frage ist, wie diese Hardwareanpassung genau funktioniert. Wie ich 
die Hardware ansprechen muss, ist klar, aber irgendwie muss ich da ja 
dann auch noch ein Interface zum Kernel haben, da stehe ich momentan auf 
dem Schlauch...

von alfons (Gast)


Lesenswert?

Ach ja: das mit der Diskette kann ich leider nicht machen, ich habe kein 
Diskettenlaufwerk. Unter Umständen könnte ich mit einer VirtualBox VM 
etwas machen?

von Hans Peter B. (Gast)


Lesenswert?

Als erstes musst du einen funktionierenden Bootlader(uboot) bauen, den 
du anschliessend mit einem "OpenOCD-JTAG" (usbprog od. Wiggler) in 
deinen MC lädst.
Als 1. Stufe muss der uboot eine USB-Terminal-Verbindung und eine 
Bootmöglichkeit von der SD-Karte oder über die Ethernet-Schnittstelle 
aufweisen, um den Linuxkernel zu laden.
Da dein MC einen Cortex M3-Kern aufweist kannst möglicherweise einen 
Apex-Bootlader entsprechend bauen.
http://www.lpclinux.com/LPC313x/LPC313xGettingstartedELDK
Ansonsten würde ich zum bessern Verständnis die 
Gnublin-Veröffentlichungen durcharbeiten
http://elk.informatik.fh-augsburg.de/pub/eplpc3131/Artikel/main.html#
sowie die "embedded projects journal" ausgabe 12 und 13 in welchen ein 
Gnublin-goto enthalten ist
Hans Peter

von alfons (Gast)


Lesenswert?

Hallo,
Ok ich schaue mir diesen uboot mal an. Kompilieren und in den MC laden 
kann ich den sicher auch mit IAR Embedded Workbench oder? Oder muss ich 
da bereit zwingend GNU Tools benutzen (aus Kompatibilitätsgründen?) ich 
habe nur einen Segger JLink.

Also ich versuche demnach erstmal uboot ans laufen zu kriegen, dann 
melde ich mich wieder.

von Scratch (Gast)


Lesenswert?

"Linux from scratch" wäre ein guter Einstieg in das Thema.

von alfons (Gast)


Lesenswert?

Hallo,
ich bins nochmal. Ich habe in den vergangenen Tagen mich intensiv mit 
dem Thema befasst. Ich denke ich werde wie folgt vorgehen:

Von http://emcraft.com/index.php/home kann man ein "Board Support 
Package" für STM32F4 herunterladen, sowie einen u-Boot Port. Diese lade 
ich also runter, führe in meiner Linux VM "make all" aus und dann sollte 
da eine .bin-Datei entstehen, die ich auf meine HW runterladen kann, 
richtig?
Mir ist noch nicht ganz klar, wie ich das an meine spezifischen 
Komponenten von meinem Board anpasse, z.B. RAM-Grösse und dergleichen.

Wie geht man richtig vor? Auf der Site von Ulrich Radig sieht man auch, 
dass er ucLinux auf seine eigene ARM7-HW portieren konnte, aber wie es 
im Detail genau geht, ist leider auch nicht beschrieben :-(

Viele Grüsse

von GCC (Gast)


Lesenswert?

alfons schrieb:
> Oder muss ich
> da bereit zwingend GNU Tools benutzen (aus Kompatibilitätsgründen?)

Um die GNU Tools wirst du nicht herum kommen. Der Kernel z.B. ist in der 
Praxis eigentlich nur mit GCC kompilierbar. Von uBoot & Co. kann ich das 
zwar nicht mit Sicherheit sagen, aber in Anbetracht der Tatsache, dass 
du GCC sowieso benötigst und es kostenfrei ist, kannst du diesen auch 
jetzt schon aufsetzen.

von Hans Peter B. (Gast)


Lesenswert?

In deinem Eingangspost hattest du von einem Eigenbauboard mit 
Cortex-M3-Kern geredet und jetzt ist es plötzlich ein M4-Kern?(STM32F4)
Was ist es nun? Ein Selbstbauboard mit einem jungfräulichen µC, ein 
Bausatz oder ein Fertigboard?
Welcher µC-Typ verwendest du und, wenn es sich nicht um einen Selbstbau 
handelt, welcher Boardtyp und Hersteller?
Hans Peter

von alfons (Gast)


Lesenswert?

Sorry sorry, ich hatte mich vertippt! Natürlich ist es ein M3-Kern. Es 
war ein Tippfehler. Die HW ist ein Eigenbau.

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.