- Labornetzteil AliExpress         
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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2011
    Ort
    Leonberg, Stuttgart
    Beiträge
    11
    Hallo,
    ich bin noch relativ neu hier und hab nen (hoffentlich) kleines Problem mit der Installation der Library.

    Ich habe mir die neuste WinAVR Version runtergeladen und installiert, selbiges mit der Library (v280).

    Anschließend habe ich alles sorgfältig so abgeändert und durchgeführt wie es oben im Thread beschrieben ist.

    Daraufhin habe ich mir in meinem "PROG-Home"-Verzeichnis einen neuen Ordner erstellt, habe dort eine neue .c-Datei mit einem kleinen Programm, sowie das Makefile und die alte "make_all"-batch datei abgelegt.

    Im Programmers Notepad habe ich die batch-Datei mit neuem Verzeichnis unter Tools eingebunden.

    Beim Compilieren kommt nun folgende Fehlermeldung:

    Code:
    > "C:\Users\Mein_Name\Documents\ASURO\Test1\make_all.cmd" 
    
    C:\Users\Mein_Name\Documents\ASURO\Test1>\utils\bin\make.exe all 
    Das System kann den angegebenen Pfad nicht finden.
    
    > Process Exit Code: 1
    > Time Taken: 00:00
    Was habe ich falsch gemacht? Darf ich die batch-Datei nicht mehr verwenden? Wie rufe ich dann aber das Makefile auf?

    Ich hoffe Ihr könnt mir helfen.
    Vielen Dank
    Geändert von Tausendacht (12.08.2011 um 06:00 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2011
    Ort
    Leonberg, Stuttgart
    Beiträge
    11
    der Fehler oben hat sich soweit erledigt, allerdings komt nun noch
    Code:
    make: *** No rule to make target `test.hex', needed by `all'.  Stop.
    Laut Doku kann es daran liegen dass er eine Header-Datei nicht finden kann? Wo sollte diese Datei fehlen? Ich hab außer den Pfad im Makefile nichts verändert.

    EDIT:
    Problem gelößt. Fehler lag im Pfad für die Library. Ein Unterordner des Pfads war .../Program Files/... mit dem auseinander geschriebenen hatte er (trotz Angabe in Hochkommas (") ) Probleme...
    Habe die Library in einen Ordner ohne auseinander geschriebene Unterordner gepackt und es läuft.
    Geändert von Tausendacht (12.08.2011 um 09:03 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    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.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    95
    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?

  5. #5
    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.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    23.12.2005
    Alter
    95
    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?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    31
    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

  8. #8
    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.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    31
    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;
    }

  10. #10
    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.

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