hi leutz.... ich hab folgendes probl., ich habe jetzt bestimmt schon 2 tage (das heisst sehr viele stunden) verbracht, um einen freeware /openSource c-cross_compiler zu finden!!!!! jetzt habe ich mir den sdcc besorgt (der einzige der wirklich zugaenglich ist).....nnur ich komme zur teilweise mit ihm zurecht. ich habe mich jetzt bestimmt schon stunden mit im beschaeftigt undm ich bin immern och nciht viel schlauer....kann jetzt zwar compilieren, die locale startadresse festlegen und die im externen ram...und es wird mir mehrere dateien erstellt, wie asm, lnk, map, mem, rel, sym und lst.....der source ist zudem auch, in der *.asm, ziemlich umfangreich, ich wuerde swogar sagen zugemuellt, obwohl ich in meinem test c-prog nur einen wert, einer variable zugewiesen hab. es ist alles irgendwie nicht das ware, ambesten waere ja c51, nur der kostet und nciht gerade wenig, hinzu kommt dann auch ncoh die grafische oberflaeche, die die sache nochmal erheblich neinfacher machen wuerde und das dieser compiler auch fuer die linux plattform geschrieben ist (ist fuer mich sehr wichtig, da ich an linux (arbeitstechnisch) gebunden bin). hat jemand eine ahnung, welcher compiler schoen in der handhabung ist, unter linux laeuft und die noetigen aufgaben erfuellt (also ein asm- und hex-file erzeugt)? ich waer euch schon umheimlich dankbar, wenn mir jemand eine tutorial seite empfehlen kann (also von sdcc), obwohl ich nicht glaube, das es eine vernuenftige gibt, denn ich war auf fast allen unverstaendlichen und leihenfeindlichen seiten. bitte helf mir! schonmal danke im vorraus...!! mfg nick
GCC taugt als Crosscompiler, aber vielleicht verrätst du uns ja erstmal deine Host- und Zielplattform? Hostsystem ist offenbar Linux, vermutlich dann auf i386. Was ist das Ziel?
ja der 8051...ich habe wie gesagt linux drauf (knopixx) und moechte c programme in assembler-code umwandeln!wie was wo :) danke für eure mühe! mfg nick
Der sdcc war der Grund weshalb ich zu den avr gewechselt bin. Ich wollte ein bestehendes und funktionierendes Keil-Programm umschreiben für den sdcc. Habe nur die main genommen, dort eine led blinken gelassen und alles andere aus der main rausgeschmissen. Sämtliche Unterprogramme aber dringelassen. Wurden alle nicht aufgerufen, waren eben nur im Code vorhanden. Programm lief nicht. Wenn ich jetzt in einem der Unterprogramme etwas auskommentiert hatte, blinkte meine led. Das war für mich dermaßen undurchsichtig. Auch im erzeugten Assembler-File war nichts zu sehen. Habe das hier: http://www.progforum.com/showthread.php?t=4760 auch schon mal geschildert und von Peter einen Rüffel erhalten, müßte wohl an meinem Programm liegen :) Nachdem ich, weil ich erst den Fehler bei mir vermutet hatte, dann 2 Tage in meinem Programm gesucht hatte und zufällig was auskommentiert habe, was auch nicht aufgerufen wurde, hatte ich die Schn... voll und bin zu den AVR gewechselt. Habe vorher nicht viel mit denen gemacht weil der 8051 aus früheren Tagen besser bekannt war. Die Keil-Compiler sind mir einfach für privat zu teuer. Grund für den Wechsel war einfach der WinAvr. Was die (Eric, Jörg, u.a.) da auf die Beine gestellt haben finde ich einfach klasse. Auch der Assembler mit seiner Makrofähigkeit ist besser als beim sdcc. Das kann der beim sdcc nicht. Grüße Andreas
ja..... mich habe mir schon viele cross compiler angeguckt, sind auch gnute dabei gewesen, nur lle fuer windoof und ich schaetze der winAVR auch.....das schilderte ich ja oben, ich bin gebunden, darf mir das nicht aussuchen, muss linux bzw. knoppix taugliche Freeware nutzen g.. bitte helft mir!das ist ein projekt und gehoert zu meiner ausbildung.... habe sdcc auch schon installiert, alles ist funktionstechtig, kann sogar die manpage nutzen, aber irgendwie ist das compilen, auf gut deutsch gesagt, fuern arsch :) viel zu langer text, noch ncih mal ein end statement, keiner steigt durch den source durch und scheinbar funktionieren tut er auch nicht.....knn man vielleich parameter uebergeben, die den source kurz und uebersichlich halten g ? ich weiss einfach nicht mehr weiter, mom. hab ich das gefuehl das ich auf dieser wel allein c und assembler programmiere lach, es ist irgendwie verhext....bitte helf mir doch!
Sieh doch mal bei www.progforum.com oder www.wickenhäuser.de nach. Da gibt es einen Compiler der ist auf 8K beschränkt aber ansonsten Freeware. Habe mir den mal kurz angesehen und es dann doch gelassen. Der ist allerdings für Windows. Ich würde mir aber auch nicht den asm-source ansehen. Da brauchst du nicht durchzusteiegen. Der sdcc macht aus jeder Datei einen Assembler-Quellcode, den er dann noch durch den Assembler bzw. Linker schickt. Der sdcc bzw. der Linker erzeugt zum Schluss doch eine Datei, die du direkt flashen kannst. Weiss nicht mehr genau bin oder hex. Grüße Andreas
>nur lle fuer windoof und ich schaetze der winAVR auch winAVR ist eigentlich 'nur' eine Sammlung von Programmen mit nem konfortablem Installer. Alle wichtigen Programme gibt es auch für Linux, um nicht zu sagen sie stammen meist von dort. http://packages.debian.org/cgi-bin/search_packages.pl?version=all&subword=1&exact=&arch=any&releases=all&case=insensitive&keywords=avr&searchon=all
Hi so schlecht ist der SDCC garnicht. Zumindest als Cross-Compiler für den 8051. Ich hab damit mal (>3Jahre) einen Datenlogger auf CF Karte mit einem P89C51RD2 gemacht. Läuft bis heute problemlos. Matthias
Also ich kann Matthias nur zustimmen. Mein HD-MP3-Player jedenfalls läuft noch immer sehr zufriedenstellend. Natürlich ist der "Support" für den sdcc nicht so gut wie beim GCC für den AVR, wenn man sich aber ein bisschen damit beschäftigt, kann man auch mit dem sdcc prima programmieren. Wenn man allerdings den aktuellen Snapshot benutzt, sollte man ein wenig Assembler können, da durchaus der ein oder andere Fehler nich drin sein könnte. Beim GCC ist das ja auch nicht anders, nur dass halt so viele den benutzen, dass das in kürzester Zeit auffällt.
danke erstml fuer eure anteilnahme.... also ich habe auch gcc installiert, compilier damit auch meine c progs., nur hat jemand ne ahnung, welche funktion ich nutzen muss um den gcc als cross compiler zu nutzen?ich habe mal irgendwie was gelesen das es etwa so aussehen muss: gcc -s *.c , aber mehr hab ich aucvh nciht dazu gefunden, muss ja dann noch die org adresse (also startadresse festlegen) und das dann noch linken, das ich dann zum schluss ein lauffaehiges hex file hab. zu den leuten die meinen sdcc ist garnicht so schlecht (kann ja sein), nur koennt ihr mir mal sagen, wie ich genau mit dem arbeite, das ich wirklich emin lauffaegmis programm am ende hab. als beispiel ein port auff einen anderen ausgeben oder so (also etwas einfaches)??? danke schonmal mfg nick
Du musst den GCC als Cross-Compiler entsprechend konfigurieren und compilieren. Das ist keine zur Laufzeit auswählbare Option. Aber glaub doch bitte endlich mal allen, die es dir nun hier schon geschrieben haben: einen GCC mit target=8051 gibt es nicht.
Du weisst aber, dass der GCC keinen 8051-Code erzeugen kann? Du müsstest also den Prozessor wechseln.
Hehe, gleichzeitig ;) Der sdcc erzeugt eigentlich standardmässig beim Aufruf über "sdcc main.c" ein (Intel)Hex-File. Das heisst dann main.ihx. Bist Du sicher, dass da nicht vorher ein Fehler aufgetreten ist?
ich habe doch ganz oben geschrieben, was fuer files ich erzeugt hab, dar unter auch ihx.....nur meine frage ist, wie kann ich den code optimieren, denn er erst einmal zu lang und dann laeuft er noch nicht einmal....onbwohl ich in eminem beispiel prog., nur einer variablen ein wert zugewiesen habe!
Naja, von ihx habe ich nichts gelesen. Du weiss, dass ein Intel-Hex-File kein nackter Binär-Flashspeicherauszug ist? Der Programmer wandelt das noch um und flasht es erst dann. Das bedeutet, das Binärfile ist deutlich kleiner. Ausserdem erzeugt der sdcc natürlich immer einen Standard-Startup-Code, in dem diverses schon initialisiert wird (macht jeder Compiler). Du kannst natürlich ein Overlay machen, Du musst dich dann aber um ein paar Sachen selber kümmern. Wie ist denn Dein Code und wie lang ist das Binary?
ihr schreibt immer das alles so einfach ist und so.....nur wenn mich kein problem haette, wuerde ich hier ja nicht um hilfe schreiben g... also geht mal von eurem standart runter und schreibt, warscheinlich fuer euch auf dem level eines grundschuelers, genau was man tun muss! danke also ich habe ein tolle funktion unter linux gefunden, namens makebin...man kann damit ihx files in binary code wandeln....da ich so verzweifelt bin, hab mich mir gedacht, dieses ihx file erst in binary und dann in ein hex zu wandeln....hat jemand ne idee, wie ich auf mein hex file komme, denn soweit ich weiss, kann ich das hex file nur nin mein mikrocontroller jagen und letztendlich damit arbeiten. danke
ich habe gerade ein befehl gefunden: mv main.ihx main.hex //wandelt das ihx in hex um.... werde ich jetzt gleich mal ausprobieren....aber schreibt mir mal trotzdem eure meinungen und vorschlaege! danke mfg nick
das ist aber ein scherz, oder ? (wenn nicht, gib mal "man mv" in einem terminal ein...)
Das ist kein Scherz. *.ihx ist bereits ein Hexdateiformat, nämlich Intel-Hex. Einfach mal mit Notepad so eine Datei ansehen. Und vielleicht in der Dokumentation des Programmiergerätes/der Programmiersoftware nachsehen, welches Dateiformat gewünscht ist.
Naja, offensichtlich hat er noch ein Verständnisproblem. Als ich damals mit MCs angefangen habe, habe ich mir auch aus Kostengründen für den 8048 einen Eprom-Emulator gestrickt und die Bin-Dateien per copy über die serielle Schnittstelle verschickt. Dazu musste ich das auch wandeln. Und mein Wandlerprogramm hat die Extension .hex automatisch an den Dateinamen angehängt (gute alte Dos-Zeit). @Nick: Schau zuerstmal nach, ob Deine Software Intel-Hex kann. Dann kannst Du auch die ihx-Dateien direkt verwenden. Das beste ist, Du schreibst mal, welche Umgebung Du verwendest: Hardware, Software, Kabel, etc. Auch Dein Testprogramm. Dann ist Dein Ziel schnell erreicht.
also meine software kann kein ihx...aber ich habe einen tollen befehl gefunden, naemlich mv main.ihx main.hex, womit ich ihx in hex wandle...naja ich habe mich jetzt schon soweit eingearbeitet und es laufen auch schon die ersten programme.... ich habe mir eine library geschrieben und dort meine ports als variablen deklariert und denen adressen zugewiesen. also ich kann jetzt einfach so alles nutzen, muss mir jetzt nur noch ein paar feinheiten angucken, wie ich z.b. ein db erstelle unter c und wie ich mit dem dptr arbeite... achja und nochwas, wenn man mit dem mv befehl arbeitet ist der source ziemlich lang, den kann man mit packihx main.ihx > main.hex kuerzen! danke trotzdem, obwohl mir die meisten beitraege nur geringuegig geholfen haben g, nicht boese gemeint, aber es war wirlich so! dankeschoen mfg nick
Das ist ja nicht mehr auszuhalten! mv [m]o[v]e move => verschieben! Das ist das GNU/MinGW/BSD/*nix Pendant zu nem DOS rename...
was willst du denn du spinner, wenn du so ein profi bist, was machst du denn bitte in diesem forum :) ich aendere einfach nur die endung, ist mir schon klar, genauso wie das mv von move abstammt! ich denke das ich mehr sprachen kann und in jeder weiter bin als du, also muss ich mir von dir nichts erklaeren oder bloed kommen lassen du newbe...soweit kommts noch, das mann noch dumm angemacht wird, weil man in einem hilfe-forum fragen stellt und nur dumme antworten bekommt....ich sollte meine page erweitern, das mann zumindest einen platz, im netz, mit konreten infos uebers programmieren hat. denn wenn man mal so im netz guckt, findet man vielleicht ein bisschen ueber c, aber nichts richtiges ueber assembler, java (obwohl man dort eigentlich nicht so hilfe braucht) oder xml, etc. naja ist jedem selber ueberlassen!
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.