YAGARTO assembler und c

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hey Leute ich bekomme morgen mein Raspberry Pi und bin schon sehr gespannt was man damit alles anstellen kann.
    Ich würde gerne versuchen ein eigenes kleines Betriebssystem zu schreiben und habe dazu ein paar tutorials durchgelesen ( http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ ). Da wird mithilfe der YAGARTO ARM tools ein eigener assembler code compiliert sodass man einen kernel als img gebaut bekommt und diesen dann direkt testen kann.

    Das Problem ist jetzt dass dort alles in assembler geschrieben ist und ich es einfach schelcht finde damit irgendwas zu programmieren ( bin eher der C/C++ experte ) . Jetzt kenn ich aus anderen Tutotials für eigenes OS für den PC dass man aus assembler mit call funktionen aus seinen C dateien aufrufen kann die dazugelinkt sind.

    Meine Frage ist jetzt wie man zu diesem Projekt weitere c dateien einbinden kann ?

    Die Makefile sieht so aus:


    Ich denke die Zeile : [font="Monaco, Consolas, Courier, monospace"]OBJECTS := $(patsubst $(SOURCE)%.s,$(BUILD)%.o,$(wildcard $(SOURCE)*.s))[/font]
    [font="Monaco, Consolas, Courier, monospace"]ist für die verschiedenen Endungen der dazugehörigen Dateien verantwortlich aber ich hab keeeeine Ahnung wie ich das machen soll dass meine c datei auch mit eingebunden wird. [/font]

    [font="Monaco, Consolas, Courier, monospace"]Wäre cool wenn mir jemand helfen könnte :)[/font]

  • Ich hab noch was rausgebfunden.
    Wenn ich versuche ein projekt mit mehr als einer assembler datei zu kompilieren geht das nicht dann steht da folgendes: make: *** no rule to make target 'build/', needed by 'build/gpio.o' . Stop

    Warum ist das bitte helft mir

  • Hallo Bob Wolfskin,

    ich werde ehrlich gesagt nicht so recht schlau aus Deinen Posts ...

    Du willst ein eigenes Betriebssystem schreiben, scheiterst aber schon an der Änderung eines Makefiles.
    Wobei dieses Makefile imho nur ein Teil einer ganzen Kette von Makefiles ist.

    Du erzählst was von YAGARTO ... sorry, aber ich habe im Zusammenhang mit RPi und Kernel immer nur den GCC verwendet.
    Ich denke mal, dass diejenigen, mich eingeschlossen, die schon mal einen Kernel für den RPi gebaut haben, sich an diese Anleitung von elinux gehalten haben.
    Was soll man da jetzt zu Deinem Konglumerat sagen?

    Vielleicht beschreibst Du mal konkreter, worauf Du hinaus willst und dann klappt das evtl. besser mit der Unterstützung hier.

    cheers,
    -ds-

  • Es geht gerade nur darum das Makefile zu verändern dass ich wenigstens die tutorialbeispiele kompilieren und testen kann.Ich habe nach dem tutorial YAGARTO und das toolchain runtergeladen das ist ein arm compiler für verschiedene sprachen. Ich habe garkeine Erfahrung mit makefiles oder mit dem manuellen kompilieren von Projekten deshalb frag ich hier nach. Aus irgendeinem Grund lassen sich keine "Ordner" kompilieren mit mehr als einer sourcefile. Ich weiß auch nicht ich hab es von der tutorialseite heruntergeladen, eigentlich sollte es funktionieren...

  • Und warum machst Du es Dir nicht leichter, indem Du die "offizielle" Anleitung benutzt?
    Der gcc kann auch alles mögliche ... und den Kernel habe ich immer mit dem crosscompiler gemacht.

    Dann wäre es vermutlich auch einfacher, Dir da Hilfestellung zu leisten.

    cu,
    -ds-

  • Ich verstehe garnicht wie man bei dieser Anleitung irgendwas macht. Da geht es doch darum den offizielen Kernel zu kompilieren aber ich will doch selber einen machen. Bei der anderen Anleitung hat man alles erklärt, welche Addressen man für welche funktionen bzw. Einstiegspunkte hat usw. Jetzt muss ich das halt kompilieren. Kann man das denn irgendwie machen mit dem gcc ?
    Ich hab hier einmal meine main.s , kernel.ld ( linker script zum generieren des raspberry pi kernel images ) und die makefile mit weelcher ich jetzt nicht mehr als mein main.s kompilieren kann. Bei mehreren sources geht es nicht mehr

  • Sorry, aber da müsste ich mich erst einlesen, gucken wie das alles zusammenhängt ... nö, ich glaube nicht, dass sich das lohnt.

    Mal ganz nebenbei: mittlerweile werden praktisch alle Erweiterungen des Kernels über KLMs realisiert.
    Warum dann den Kernel ändern und das gesamte Teil neu erzeugen.

    cu,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!