Autor | Thema |
---|---|
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 86103
, RMB AVR unter Linux
[05. Oktober 2005 um 14:21]
Moin!
Gestern habe ich den AVR das erste Mal unter Linux programmiert bekommen. Besteht Interesse daran, daß ich kurz aufschreibe, was man braucht und wie das geht? Grüße Malte |
CharlyMai
Foren-Prediger
Registriert seit: Mär 2005 Wohnort: Fuhrberg Verein: SOLARIS-RMB e.V. (P2;T2) / AGM / TRA#21598 Beiträge: 1977 Status: Offline |
Beitrag 86105
[05. Oktober 2005 um 14:27]
Natürlich Malte ....
Ich denke es gibt hier einige die mit dem Pinguin unterwegs sind .... Ich werde bei der Software Installation ausschließlich die Windows Variante behandeln .... Grüße Pierre Geändert von CharlyMai am 05. Oktober 2005 um 14:37 •"Der Glaube an eine bestimmte Idee gibt dem Forscher den Rückhalt für seine Arbeit. Ohne diesen Glauben wäre er verloren in einem Meer von Zweifeln und halbgültigen Beweisen." Konrad Zuse •Konstruiere ein System, das selbst ein Irrer anwenden kann, und so wird es auch nur ein Irrer anwenden wollen. SOLARIS-RMB e.V. AGM |
Marsi
Anzündhilfe Registriert seit: Jun 2004 Wohnort: AC/KT Verein: Beiträge: 25 Status: Offline |
Beitrag 86370
[07. Oktober 2005 um 16:33]
Also mich würde das unter Linux interessieren, wenns nicht unverhältnismäßig mehr Aufwand als unter Windows ist.
|
AlexanderM
Epoxy-Meister Registriert seit: Feb 2004 Wohnort: Düsseldorf Verein: FAR Beiträge: 238 Status: Offline |
Beitrag 91921
[17. Dezember 2005 um 18:33]
Mich würde es auch interessieren,
Alexander |
Andreas Mueller
Epoxy-Meister Registriert seit: Sep 2004 Wohnort: Verein: ARGOS Beiträge: 322 Status: Offline |
Beitrag 91926
[17. Dezember 2005 um 19:38]
Zitat: Da Malte anscheinend wichtigeres zu tun hat, hier eine Kurzanleitung. Systemvoraussetzungen: alle Tools zum Entwickeln von C-Code müssen installiert sein. Was will man erreichen? Einen funktionierenden Cross-Compiler, Cross Assembler und Cross Linker sowie eine C-Bibliothek, mit der man Binaries für den AVR erzeugen kann. Diese Binaries sollte man dann in das Zielsystem laden können. Am praktischsten ist wohl, wenn alles unter einem festen Verzeichnis ist, den man für die AVR Basteleien vorne auf den Pfad nimmt. Zeitbedarf: ca 1 Stunde. Wie geht man vor? 1. Cross-Assembler und Cross-Linker für AVR: binutils-2.16.1.tar.gz herunterladen, auspacken und mit folgendem Befehl konfigurieren, bauen und installieren: ./configure --target=avr --prefix=/usr/local/avr --enable-install-libbfd make make install Ab diesem Moment sollte man /usr/local/avr/bin auf den Pfad nehmen, damit Linker und Assembler gefunden werden. 2. Cross Compiler: gcc-4.0.2.tar.bz2 herunterladen, auspacken. Ein Verzeichnis avr-gcc-4.0.2-obj anlegen, dort drin GCC konfigurieren, bauen und installieren: ../gcc-4.0.2/configure --target=avr --prefix=/usr/local/avr --enable-languages=c make make install Wenn man eine frühere Version von gcc nimmt hat man möglicherweise nicht alle Targets, die man sich wünschen würde, insbesondere fehlt dann der AT90CAN128. 3. C-Library: avr-libc-1.2.5.tar.gz herunterladen, auspacken und mit folgenden Befehlen konfigurieren und kompilieren und installieren: PREFIX=/usr/local/avr; export PREFIX ./doconf ./domake ./domake install (leider scheinen die Leute im avr-libc Projekt noch nicht ganz verstanden zu haben, wie man autoconf/automake verwendet, sonst wären die Scripts doconf und domake nicht nötig). 4. AVRdude zum Programmieren des Chips installieren: avrdude-5.0.tar.gz herunterladen und auspacken. Achtung: aktuelle Versionen des AVR ISP können eventuell mit dem avrdude-4.x Probleme haben. Konfigurieren, bauen und installieren: ./configure make make install Jetzt ist man im Prinzip ausgerüstet, um Programme für den AVR zu kompileren, zu linken und zu laden. Kompilieren: avr-gcc -mmcu=attiny13 -g -o test.o -c test.c Linken: avr-gcc -mmcu=attiny13 -o test test.o -lm (dieses Programm braucht die libm) In Intel Hex umwandeln: avr-objcopy --target ihex test test.hex Laden: avrdude -p t13 -c avrispv2 -P /dev/ttyS1 -U flash:w:test.hex -u -v Danach startet das Programm automatisch. Natürlich darf man diese Befehle auch in Makefiles brauchen, und autoconf/automake sind auch einsetzbar, man muss nur mit den Tests unter autoconf etwas aufpassen, da diese ja nicht ausgeführt werden können. Die meisten IDE lassen sich dazu überreden, mit der AVR-Toolsuite zu arbeiten, aber das ist nichts für mich, zu viel Geklicke. Was man noch wissen sollte: a) Nur Controller mit einem RAM-basierten Stack sind in C programmierbar, aber natürlich kann man mit den eben installierten Tools auch in Assembler programmieren, wenn man sich das wirklich antun will. b) int hat 16 bit (moderne Unix haben 32bit, der meiste freie C-Code nimmt 32bit ints an) c) sizeof(double) = 4 = sizeof(float) d.h. es gibt keine wirklichen doubles, long long (64bit) gibt es hingegen. d) Ein beliebter Fehler: den mcu-Typ muss man auch beim Linken angeben, da sonst das falsche C Runtime hinzugelinkt wird. Da im C Runtime der Stackpointer und das initialisierte Datensegment initialisiert wird, und einige Prozessoren den Stack/ihr RAM dort haben, wo andere ihre IO-Register haben, kann man ganz lustige Effekte hervorrufen. Obige Prozedur ist übrigens nicht Linux-spezifisch, sondern funktioniert so ziemlich auf jedem modernen Unix-artigen Betriebssystem. Insbesondere zum Beispiel Mac OS X. Geändert von Andreas Mueller am 17. Dezember 2005 um 22:36 |
Marsi
Anzündhilfe Registriert seit: Jun 2004 Wohnort: AC/KT Verein: Beiträge: 25 Status: Offline |
Beitrag 91931
[17. Dezember 2005 um 21:19]
Ich glaub ich benutz Windows ... Zuviel Input für mich. ;-) |
CharlyMai
Foren-Prediger
Registriert seit: Mär 2005 Wohnort: Fuhrberg Verein: SOLARIS-RMB e.V. (P2;T2) / AGM / TRA#21598 Beiträge: 1977 Status: Offline |
Beitrag 91932
[17. Dezember 2005 um 21:21]
Hierbei sei erwähnt, das es um den C Compiler geht .....
Bascom müsste in einem Windows Clone laufen ..... Der Kurs behandelt ausschließlich Bascom, die C Zugaben sind kein fester Bestandteil !!! Grüße Pierre •"Der Glaube an eine bestimmte Idee gibt dem Forscher den Rückhalt für seine Arbeit. Ohne diesen Glauben wäre er verloren in einem Meer von Zweifeln und halbgültigen Beweisen." Konrad Zuse •Konstruiere ein System, das selbst ein Irrer anwenden kann, und so wird es auch nur ein Irrer anwenden wollen. SOLARIS-RMB e.V. AGM |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 91939
[17. Dezember 2005 um 22:37]
Hehe, ja, sorry, ich war ein bißchen abgelenkt
Unter Debian geht zumindestens die Installation der benötigten Software etwas einfacher: z.B. apt-get install gcc-avr apt-get install avr-libc apt-get install avrdude Dann sollte man sich noch die avrlib http://hubbard.engr.scu.edu/embedded/avr/avrlib/ als zipfile besorgen. Sei enthält einen reichen Quell an Routinen für Timer, ADC, LCDs und UART, etc... Projektverzeichnis anlegen und die avrlib dahinein entzippen. Neue Prokjekte bekommen jetzt jeweils einen Unterordner im Projekt-ordner. also z.B. projects/ --------avrlib --------test --------blabla Wichtig ist dabei dann auf alle Fälle das Makefile. Anhang: makefile.txt als Makefile in einem Projektunterordner speichern. Ein Makefile steuert, was wann zu passieren hat in Abhängigkeit vom Änderungsdatum der Dateien. wenn sich bei einem großen Projekt nur eine c-Datei ändert wäre es unsinnig, alle c-Dateien zu übersetzen, es wird nur eine übersetzt. Ändert sich hingegen eine Includierte (.h) Datei, "weiß" das Makefile, welche c-Dateien durch diese Änderung betroffen sind und kompiliert alle betroffenen. Das Makefile muss aber noch an einigen Stellen angepasst werden. An die eigene Hardware (Programmer, Serielle Schnittstelle), bsp: AVRDUDE_PROGRAMMER = avrispv2 # der Programmer beim RMB AVR-Kurs ist ein avrispv2 AVRDUDE_PORT = /dev/ttyS0 # bei mir ist das so An den verwendeter AVR und Taktfrequenz) , bsp: MCU = atmega16 F_CPU = 16000000 # das ist korrekt für den RMB AVR-Kurs und an das Projekt, bsp: # Target file name (without extension). TARGET = test # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c # Für einen Test nicht verkehrt Von da ab reicht ein 'make program', um alle geänderten Sourcen zu übersetzen und im Erfolgsfall gleich zu proggen. Nach Änderungen am Makefile: 'make clean program' Zu den Datentypen, in <stdint.h> (avr-libc) werden z.B. folgende Datentypen definiert: int8_t (8Bit integer), uint8_t (8Bit unsigned integer) int16_t (16Bit integer), uint16_t (16Bit unsigned integer) int32_t (32Bit unsigned integer), uint32_t (32Bit unsigned integer) Damit macht man sich nicht von der Größe von char, short und int abhängig. Grüße Malte Geändert von hybrid am 17. Dezember 2005 um 22:58 |
Marsi
Anzündhilfe Registriert seit: Jun 2004 Wohnort: AC/KT Verein: Beiträge: 25 Status: Offline |
Beitrag 103224
[14. August 2006 um 14:04]
Da ich ja seit einiger Zeit mit der angeblich benutzerfreundlichsten Distribution (Ubuntu) arbeite und Windows seit 6 Monaten nicht mehr gebootet habe, wollte ich mal die Experten fragen, was ich brauche.
Zitat: Hybrid, du benutzt AVRDude? Kannst mal Screenshots davon machen? Hab ich das jetzt richtig verstanden, dass ich mit Linux nur C programmieren kann? Also Bascom Befehle nutzen mir dann garnichts? Wie ist das mit dem Projektverzeichnis? Darf ich das überall speichern, auch in meinem Homeverzeichnis? |
hybrid
SP-Schnüffler Registriert seit: Mai 2005 Wohnort: Verein: Beiträge: 675 Status: Offline |
Beitrag 103241
[15. August 2006 um 04:27]
Hi Marsi,
ich heiße Malte, mein Name steht immer ganz unten Unter Linux kannst Du nur AVRs nur in C programmieren. avrdude ist keine grafische Applikation, sondern wird über das Makefile aufgerufen, wenn es etwas zum AVR zu schieben gibt. Unter Linux/Unix darfst Du Dein Projektverzeichnis NUR in Deinem Home-Verzeichnis (oder einem Unterverzeichnis davon) anlegen. Du kannst doch gar nicht in andere Verzeichnisse schreiben. Außer /tmp und /var/tmp. Und wenn Du das machen würdest, wären die Sachen nach ein paar Wochen oder beim Neustart weg. Ich habe folgende Pakete (debian) installiert avrdude (avrdude-doc) avr-libc binutils-avr gcc-avr Wenn Du 'ne Windows-CD hast (98 oder 2k sind am einfachsten), und eine CPU mit mehr als 1GHz und mind. 512MB Spiecher kannst du aber qemu installieren und darin Windows. Darin läuft dann auch AVRSTudio und bascom, ohne daß Du den Rechner neu starten musst. qemu gibt es bestimmt auch als ubuntu-Paket, aber evtl ist die Windows-installation auf http://fabrice.bellard.free.fr/qemu/ besser beschrieben. Als Packeterwaltung benutze ich übrigens synaptic. Ist "etwas" komfortabler als apt ! Grüße Malte Geändert von hybrid am 15. August 2006 um 04:30 |