- 3D-Druck Einstieg und Tipps         
Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 63

Thema: So wird die Asuro-LIB installiert und in Betrieb genommen /3

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Anzeige

    Praxistest und DIY Projekte
    Hallo NATHAN, (und natürlich alle anderen)
    jetzt habe ich wieder etwas Luft, und kann dir deine Fragen beantworten.

    Deine Fragen interpretiere ich so, dass du noch nicht allzuviel mit Programmierung zu tun hattest. Deshalb hole ich hier etwas weiter aus. Die darin enthaltenen Antworten zu Deinen Fragen werden dann eventuell besser verständlich.

    Hier mal kurz einige Begriffe:
    ---------------
    - Stapelverarbeitung
    Unter Windows nutzt man eher den Begriff Batchprogramm. Das sind dann die *.bat-Dateien.
    Unter Unix sagt man eher Shell-Programm oder Shell-Script. Typische Dateiendung wäre dann *.sh. Aber wie damaltor schon schrieb, sind unter Unix die Dateiendungen nicht unbedingt üblich.
    ---> Was machen die?
    Zusammenfassen von Programmaufrufen, damit man nicht so viel tippen muss. (Sowohl unter Window als auch extrem unter Unix sind Programmmiermöglichkeiten in den Dateien möglich. Aber eher so was wie if und loop. Profis schaffen hier eine ganze Menge!)
    <--> Beispiel: make-lib.bat (Im lib-Verzeichniss der Asuro-LIB)
    Enthält 3 Aufrufe vom make-Programm mit Angabe von Parametern für das make-Programm

    ---------------
    - Makefile
    Anweisungsdatei zur Steuerung von Anweisungen/auszuführenden Befehlen, die 'in der Regel' dazu benutzt wird, eigene Programme zu übersetzen.
    Die Hauptaufgabe dabei ist es, nur die Dateien zu bearbeiten, die sich seit dem letzten 'maken' geändert haben. Da zum Übersetzten auch meistens ein Linken gehört, kümmert sich die Steuerdatei 'Makefile' dann sinnvollerweise auch darum.
    Wie damaltor schon schrieb, wird das Makefile vom Programm 'make' benutzt/gelesen/interpretiert um die darin enthaltenen Aufgaben auszuführen.
    ---> Warum Makefile.orig?
    m.a.r.v.i.n hat diese Datei mit in die Asuro-LIB gepackt, damit man auf alle Fälle eine Sicherung hat. Sie wird nicht benutzt, und sollte auch nicht geändert werden. Nur Makefile ändern, wie oben im Thread von mir beschrieben.

    ---------------
    - Übersetzten
    Umwandeln von Text-Dateien in sogenante Object-Dateien.
    Die Text-Datei ist z.B. eine Datei die test.c heißt und Programmcode enthält, der in C geschrieben sein kann.
    Die Object-Datei hat absolut nichts mit dem Begriff objectorientierte Programmierung zu tun. In so einer Datei steht entweder ein sogenannter Zwischencode, oder es ist schon Assemblercode, der nach einem weiteren Übersetzen/assemblieren, von der CPU ausgeführt werden könnte.
    - Übersetzen die 2.te
    Auch der Zwischencode bzw. Assemblercode muss in ewas übersetzt werden, was eine CPU eigendlich erst ausführen kann.
    Hier spricht man dann eher vom Assemblieren, als vom Übersetzten.
    Beim Asuro haben wir damit aber nichts zu tun. (Außer man möchte ihn in Assembler programmieren.)

    ---------------
    - Linken
    Zusammenpuzzeln von einer oder mehreren Object-Dateien und bei Bedarf hinzuziehen von Funktionen aus Library's um zum Schluß ein zusammenhängendes Programm zu erhalten. (Windows-Programme dann *.exe, unter Unix in der Regel keine Extention.)
    ---> Warum aber keine EXE-Datei beim Asuro, sondern HEX-Dateien?
    Das Asuro-Programm soll ja nicht auf dem PC laufen. Hier wird ein Cross-System benutzt, welches aus dem C-Programmcode, über den Cross-Compiler und den Cross-Linker dann die HEX-Datei erstellt. Diese Datei enthält den ausführbaren Binärcode für den AVR-Prozessor im Asuro.
    ---> Was soll Cross heißen?
    Es wird auf einem Rechner etwas für einen anderen Rechner übersetzt. Hierbei ist der Begriff Rechner aber als CPU-Typ zu sehen.
    PC mit Intel-CPU; Asuro mit AVR-CPU


    Zitat Zitat von NATHAN
    Sind die auf Seite 4 beschriebenen Verfahren zum erstellen eines eigenen Verzeichnisses mit zugehoerigem Makefile denn notwendig, wenn man den Ordner LIB-Home/examples/FirstTry verwendet?
    Ich kann leider nicht erkennen, was du genau meinst. Kannst du die Textpasage bitte genau angeben?

    Zitat Zitat von NATHAN
    Nun von den Fragen zu den Bitten:
    --- Vorteile der LIB:
    (Nein, werde ich nicht in meiner Doku hinterlegen, da dort schon genügend Stoff zu technischen Abläufen ist. Die Vorteile müssen ja erst einmal durch die make-Orgien nutzbar werden. Nur dafür ist die Beschreibung von mir.)
    - Neue/verbesserte Funktionen
    - Doku der einzelnen Funktionen
    - Beispielprogramme zu den Funktionen
    - Platzersparnis durch LIB
    ---> Hier hat sich m.a.r.v.i.n viel Arbeit gemacht und die vorhandenen Funktionen aus der ursprünglichen Datei asuro.c verteilt auf viele einzelne Dateien. (adc.c asuro.c encoder.c encoder_low.c ...)
    Das Geheimnis zum sparen von Platz ist nun, dass beim linken nur noch die Teile aus der LIB benutzt werden, die auch tatsächlich benötigt werden in deinem Programm. Allerdings werden dann immer alle Funktionen aus den einzelnen Dateien geholt, auch wenn nur eine Funktion aus der Datei benutzt wird.
    Beispiel: Wird die Funktion SerWrite() benutzt, dann wird die Funktion aus der LIB geholt, da auch die Datei uart.c darin 'enthalten' ist. Da aber auch die Funktion SerRead() in der Datei uart.c geschrieben steht, wird auch diese Funktion in die HEX-Datei geschrieben, auch wenn diese nicht benutzt wird. (Auch die LIB selber kann also auch noch optimiert werden.)
    Der Programmspeicherplatz für die Funktionen Go() und Turn() (Datei encoder.c) wird allerdings nicht benötigt, solange keine der beiden Funktionen in deinem Programm benutzt werden.


    --- Modularitaet / WinAVR Pakete / Programmers Notepad / Editor
    Ja, all diese Dinge sind getrennt zu sehen.
    - Als erstes kommt das Betriebssystem (Windows / Unix / MAC / ...)
    - Dann ein Editor (Notepad / Progr.Notepad / vi / Word / emacs / ...)
    - Nun ein Compiler (Für Asuro: avr-gcc; Ist der Freeware Compiler gcc, mit Anpassungen für den AVR -> Cross)
    - Dann noch eine Linker (Hier wird auch avr-gcc benutzt)
    - Und für die LIB noch einen 'archiver' (gcc-ar)
    - Und eine Eingabemöglichkeit, um diese Befehle aufzurufen. (Editor starten mit Doppelklick; maken in einer DOS-Shell; ...)

    Für Anfänger geeignet und natürlich auch für Profis, gibt es dann noch die Entwicklungsumgebungen. Für den Asuro wird da das kostenlose AvrStudio mitgeliefert. Hier ist auch ein Editor vorhanden, ein Button/Menüpunkt zum übersetzten, ein Debuger zur (eingeschränkten) Fehlersuche. Leider sind aber gerade hier für Anfänger auch viele Menüpunkte vorhanden, die ohne grundlegenes Verständniss nur Verwirrung erzeugen. Doku lesen?

    Beim Editor kannst du alles benutzen, was 'reinen' ASCII-Text in deiner Datei speichert. Das sind dann genau die lesbaren Zeichen, die du auch im Editor siehst. Keine Formatierungszeichen für fette, grüne Buchstaben sind dort vorhanden.
    Ich persönlich bevorzuge den PL/SQL-Developer als Editor (kostenplichtig), da ich ihn in der Firma nutze und somit die Bedienung 'in- und auswendig' kenne.
    Für mich ist es wichtig, dass ich mehrere Dateien gleichzeitig geöffnet haben kann, Merker an einzelnen Zeilen setzen kann um zu diesen Stellen springen zu können, die Ausgabe in gestochen scharfer Schrift erfolgt, Syntaxhighlighting AUSschaltbar ist, und vor allem: Alle Funktionen lassen sich über die Tastatur erreichen. (Warum immer zur Maus greifen, wenn man doch C-Programm schreiben will?)
    Fazit: Editor nehmen, den man möglichst perfekt bedienen kann.

    P.S.: Es gibt keinen C-Editor, oder HTML-Editor.
    Manche Editoren können dir aber zu bestimmten Sprachen, in der man halt schreiben möchte, eine enorme Hilfestellung geben.



    --- Quellcode zur Überprüfung
    Ne, ne. Dies macht keinen Sinn, da diese Muster immer dann etwas anderes liefern werden, wenn z.B. die benutzt LIB anders ist als die im Muster, also von mir, benutzte LIB. Oder die Optimierung vom Compiler wurde geändert. Auch dann ergeben sich andere Zahlen für die Flash-Zeilen.


    Zitat Zitat von NATHAN
    Das muss um Himmelswillen nicht alles sofort sein ...
    Das war ganz einfach.

    Zitat Zitat von NATHAN
    Brauchst dir wegen mir keinen Stress machen
    Zu spät.

    So, ich habe es mal wieder nicht geschafft, mich kurz zu fassen.
    Ich hoffe, dass es trotzdem weiterhilft.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    93
    Beiträge
    86
    ich hab alles gemacht wie in der docu beschrieben und es geht garnix... keine hex.. ich weis nicht was ich falsch gemacht hab.. geht das denn nicht einfacher?

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @m1ch15inner
    Input. Ohne eine 'etwas' bessere Beschreibung deines Problems wird dir hier nicht weiterzuhelfen sein. Möglicherweise hast du die hex-Datei ja selber gelöscht, da du sie nicht mochtest.

    Hey, mal ne kurze Antwort!
    Lieber Asuro programieren als arbeiten gehen.

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    93
    Beiträge
    86
    also... ich hab auf meinem neuen pc winAVR installiert... dann die asuro lib.. dann das umgeändert was oben beschrieben ist und dann ein programm versucht zu übersetzen... wenn ich dann im pn auf make all drück kommen nicht die ganzen dateien.. die bat-datei läuft durch und nix is passiert

    Code:
    > Failed to create process: Das System kann den angegebenen Pfad nicht finden.
    
    > Process Exit Code: 0
    kommt bei mir

    welchen pfad muss ich dann ändern?

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    30
    Beiträge
    98
    Hallo Leute

    ich hab ein Problem mit der Asuro Lib. Ich hab alles so gemacht wie oben und dann bekomme ich diese Ausgabe:
    Code:
    D:\Asuro\Programme\Erstes Programm>make all 
    set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
    [ -s asuro.d ] || rm -f asuro.d
    set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
    [ -s test.d ] || rm -f test.d
    -------- begin --------
    avr-gcc --version
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    test.c: In function `main':
    test.c:8: warning: implicit declaration of function `Msleep'
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
    avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o   --output test.elf -Wl,-Map=test.map,--cref -lm -lasuro
    C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\libasuro.a(time.o)(.text+0x38): In function `Sleep':
    : multiple definition of `Sleep'
    asuro.o(.text+0x2e0):D:\Asuro\Programme\Erstes Programm/asuro.c:235: first defined here
    C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\bin\ld.exe: Warning: size of symbol `Sleep' changed from 16 in asuro.o to 18 in C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\libasuro.a(time.o)
    make: *** [test.elf] Error 1
    
    > Process Exit Code: 2
    Kann mir einer helfen?

    Vielen Dank im vorraus

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    @m1ch15inner
    Da muss ich selber erst mal suchen, was man im pn alles falsch einstellen kann. Bitte Geduld.

    @liggi
    Die beiden Ausgabezeilen von dir
    --> test.c:8: warning: implicit declaration of function `Msleep'
    --> : multiple definition of `Sleep'

    deuten darauf hin, dass du in deinem test.c-Source nicht die asuro.h, sondern die asuro.c includest. Würdest du das bitte prüfen. Hilfreich wäre es, wenn du dein test.c mal postest.
    Lieber Asuro programieren als arbeiten gehen.

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    30
    Beiträge
    98
    Danke für den Tipp.

    so funktieunierte es:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	MotorDir(FWD, FWD);
    	MotorSpeed(100, 100);
    	Sleep(216);
    	MotorSpeed(0, 0);
    	MotorDir(FREE, FREE);
    	while(1);
    	return 0;
    }
    so aber nicht:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	MotorDir(FWD, FWD);
    	MotorSpeed(100, 100);
    	Msleep(3000);
    	MotorSpeed(0, 0);
    	MotorDir(FREE, FREE);
    	while(1);
    	return 0;
    }

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo liggi,

    in deinem Projektordner befindet sich wahrscheinlich noch eine alte asuro.h und asuro.c. Die müssen da natürlich weg. Es wird nur noch die asuro.h aus dem lib/inc Ordner und die asuro.c aus dem lib Ordner verwendet.

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    30
    Beiträge
    98
    Danke
    jetzt geht alles

  10. #20
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    ih muss hier mal ein großes lob an sternthaler aussprechen, der sich oftdie zeit nimmt solche themen exzessiv und unendlich ausführlich sowie sehr verständlich zu beschreiben.das ist wirklich toll!
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 7 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test