Hallo. Habe seit ein paar Tagen Linux (ubuntu 12.10) auf meinem Notebook. Über den USBasp (http://www.fischl.de/usbasp/) programmieren wir einen AT89S52. Dafür wird eine eigens entwickelte Platine verwendet. Daher jetzt die Frage, mit welchen Linux-Programmen ich am besten eigene Programme für diesen µC schreiben und diese auch auf den µC "flashen" kann. MfG
Hier gibt es eine Anleitung: http://wiki.ubuntuusers.de/avr Wäre gut wenn du berichten könntest, obs mit 12.10 funktioniert hat, bzw. was nicht funktioniert. (Damit man im Artikel das "Getestet mit Version ..." erweitern kann)
Auf meinem System befindet sich auch geany und avrdude. Leider lässt sich ein geschriebenes Programm nicht kompilieren, weil geany Probleme mit der .h-Datei des µC hat. Die .h-Datei befindet sich im selben Projektordner wie die .c-Datei. Im makefile habe ich folgendes nachgetragen. MCU = 8052 AVRDUDE_PROGRAMMER = stk500 hat aber auch nichts gebracht. =( Der AT89S52 basiert doch auf der 8051/8052 Technik oder nicht?
F. W. schrieb: > Leider lässt sich ein geschriebenes Programm nicht kompilieren, weil > geany Probleme mit der .h-Datei des µC hat. Die Fehlermeldung lautet "Ich habe Probleme mit der .h-Datei"?!
Kann man auch so ausdrücken. Würde gerne wissen, wich ich das geschriebene Programm erfolgreich kompilieren kann. Auf dem µC steht AT89S52 24PU 1208A. Deshalb habe die .h-Datei für den 8051 geladen und in den Projektordner kopiert. Im Programmkopf
1 | #include "reg51.h" |
eingegeben. Trotzdem funktioniert das Kompilieren nicht. Im Makefile habe ich
1 | # MCU name
|
2 | MCU = 8051 |
3 | |
4 | # Main Oscillator Frequency
|
5 | # This is only used to define F_OSC in all assembler and c-sources.
|
6 | F_OSC = 10000 |
eingegeben. Auf "Make all" geklickt und folgende Fehlermeldungen kamen:
1 | avr-gcc: error: unrecognized argument in option ‘-mmcu=8051’ |
2 | |
3 | avr-gcc: note: valid arguments to ‘-mmcu=’ are: at43usb320 at43usb355 at76c711 at86rf401 at90c8534 at90can128 at90can32 at90can64 at90pwm1 at90pwm2 at90pwm216 at90pwm2b at90pwm3 at90pwm316 at90pwm3b at90pwm81 at90s1200 at90s2313 at90s2323 at90s2333 at90s2343 at90s4414 at90s4433 at90s4434 at90s8515 at90s8535 at90scr100 at90usb1286 at90usb1287 at90usb162 at90usb646 at90usb647 at90usb82 at94k ata6289 atmega103 atmega128 atmega1280 atmega1281 atmega1284p atmega128rfa1 atmega16 atmega161 atmega162 atmega163 atmega164a atmega164p atmega165 atmega165a atmega165p atmega168 atmega168a atmega168p atmega169 atmega169a atmega169p atmega169pa atmega16a atmega16hva atmega16hva2 atmega16hvb atmega16m1 atmega16u2 atmega16u4 atmega2560 atmega2561 atmega32 atmega323 atmega324a atmega324p atmega324pa atmega325 atmega3250 atmega3250a atmega3250p atmega325a atmega325p atmega328 atmega328p atmega329 atmega3290 atmega3290a atmega3290p atmega329a atmega329p atmega329pa atmega32c1 atmega32hvb atmega32m1 atmega32u2 atmega32u4 atmega32u6 atmega406 atmega48 atmega48a atmega48p atmega64 atmega640 atmega644 atmega644a atmega644p atmega644pa atmega645 atmega6450 atmega6450a atmega6450p atmega645a atmega645p atmega649 atmega6490 atmega649a atmega649p atmega64c1 atmega64hve atmega64m1 atmega8 atmega8515 atmega8535 atmega88 atmega88a atmega88p atmega88pa atmega8hva atmega8u2 attiny11 attiny12 attiny13 attiny13a attiny15 attiny167 attiny22 attiny2313 attiny2313a attiny24 attiny24a attiny25 attiny26 attiny261 attiny261a attiny28 attiny4313 attiny43u attiny44 attiny44a attiny45 attiny461 attiny461a attiny48 attiny84 attiny84a attiny85 attiny861 attiny861a attiny87 attiny88 atxmega128a1 atxmega128a1u atxmega128a3 atxmega128d3 atxmega16a4 atxmega16d4 atxmega16x1 atxmega192a3 atxmega192d3 atxmega256a3 atxmega256a3b atxmega256a3bu atxmega256d3 atxmega32a4 atxmega32d4 atxmega32x1 atxmega64a1 atxmega64a1u atxmega64a3 atxmega64d3 avr1 avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega2 avrxmega4 avrxmega5 avrxmega6 avrxmega7 m3000 |
4 | |
5 | make: *** [main.o] Fehler 1 |
In der Liste der µCs habe ich keinen gefunden, der zu meinem passt. Bin halt ratlos, weil ich gaaaaanz neu auf diesem Gebiet bin.
Wie komme ich an den sdcc? Kann ich dann weiterhin mit geany programmieren und wie gewohnt den header-File in den Projektordner kopieren?
Auja, Hans hat recht... Das heißt: Geany und AvrDude kannst du behalten, aber du brauchst nen anderen Compiler. Anscheinend kann der sdcc den Quellcode richtig übersetzen > C compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, > 8051, 8052, etc.) (http://sdcc.sourceforge.net/index.php ) Wenn du im Terminal
1 | apt-cache search sdcc |
eingibst, siehst du was es da für Pakete gibt. Ich schätze du brauchst
1 | sudo apt-get install sdcc sdcc-libraries |
Dann brauchst du noch ein neues Makefile. Vielleicht hat ja jemand hier eins, das man einfach anpassen kann?
So. Habe folgende Pakete zur Auswahl:
1 | sdcc - Small Device C Compiler |
2 | sdcc-doc - Small Device C Compiler (documentation) |
3 | sdcc-libraries - Small Device C Compiler (libraries) |
4 | sdcc-ucsim - Simulator für SDCC-Mikrocontroller |
5 | cc1111 - C Compiler for TI/Chipcon 8051-based RF SOCs |
6 | mcu8051ide - Integrated development enviroment for MCS-51 based microcontrollers |
Könnte mein makefile mal posten damit ihr euch das mal anseht.
Lubuntu-User schrieb: > Habe die beiden sdcc-Pakete installiert. Und nun? Nun hast du ein Problem, weil hier anscheinend niemand den sdcc benutzt. (fast nur GCC wegen den AVRs und diversen anderen Platformen) Du kannst dir aber selbst helfen: Zuerst musst du rausfinden, wie man den sdcc benutzt, sprich, was für Parameter du dem übergeben musst, damit er das Programm für dich so übersetzt wie du das haben möchtest. Dann machst du dir ein neues makefile in deinem Projektordner und schreibst da rein:
1 | all: |
2 | befehl um den sdcc anzusteuern |
Wenn du dann in Geany den make-all-Button drückst (wie in dem AVR-Artikel im UbuntuUsers-Wiki beschrieben) wird der (oder die) Befehl(e), die unter "all:" stehen ausgeführt. Dann macht der sdcc das, was du ihm im makefile gesagt hast, und im Idealfall hast du dann dein Programm in Maschinencode. (Warscheinlich wird das nicht aufs erste mal klappen :-D Aber in Geany zeigt dann der sdcc im unteren Ausgabefenster die Fehlermeldungen an, die bringen dich dann bestimmt weiter) Wenn du dann soweit bist, dass du Maschinencode erstellen kannst, musst du quasi das selbe noch mal zum programmieren deines µC machen und in das makefile mit reinschreiben:
1 | all: |
2 | befehl um den sdcc anzusteuern |
3 | program: |
4 | befehl um den µC zu programmieren |
Eigentlich wollte ich dir da gerade die fertigen Befehle für das makefile eintragen. Allerdings habe ich soeben gemerkt, dass auch avrdude deinen µC nicht unterstützt. Du wirst also selbst herausfinden müssen, welches Programm sich hier eignet... Könnte also schwierig werden.. Ich würde folgendermaßen vorgehen: Zuerst einmal schauen, was sich so als Software finden lässt:
1 | simon@simon-TravelMate-5735Z:~$ apt-cache search 8051 |
2 | as31 - Assembler für Intel-8031/8051 |
3 | cc1111 - C Compiler for TI/Chipcon 8051-based RF SOCs |
4 | cycfx2prog - Cypress EZ-USB FX2 (LP) programmer |
5 | dis51 - Disassembler for 8051 code in Intel Hex format |
6 | emu8051 - Emulator and simulator for 8051 microcontrollers |
7 | mcu8051ide - Integrated development enviroment for MCS-51 based microcontrollers |
8 | s51dude - In-System Programmer for 8051 MCUs using usbtiny |
(den Suchbegriff "8051" kannst du natürlich beliebig ändern). s51dude sieht schon mal interessant aus, nähere Infos:
1 | simon@simon-TravelMate-5735Z:~$ apt-cache show s51dude |
2 | Package: s51dude |
3 | Priority: extra |
4 | Section: universe/electronics |
5 | Installed-Size: 115 |
6 | Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
7 | Original-Maintainer: Lucas Chiesa <lucas.chiesa@gmail.com> |
8 | Architecture: amd64 |
9 | Version: 0.2.0-1.1 |
10 | Depends: libc6 (>= 2.14), libusb-0.1-4 (>= 2:0.1.12) |
11 | Filename: pool/universe/s/s51dude/s51dude_0.2.0-1.1_amd64.deb |
12 | Size: 17820 |
13 | MD5sum: add20c890a9f5c64c5b8e0376763a44a |
14 | SHA1: bd691fd551389e06a511e21e5ec3238748acc895 |
15 | SHA256: 6ba8b3889829338598271340be5c2828d44146b4924d820d35f087b2a92c3377 |
16 | ########## Description-en: In-System Programmer for 8051 MCUs using usbtiny |
17 | ########## In-System programmer for Atmel's 8051 MCUs like the AT89S8252 and AT89S53. |
18 | ########## It needs the usbtinyisp board with a modified firmware. |
19 | ########## Homepage: http://s51dude.gforge.lug.fi.uba.ar/ |
20 | Description-md5: a212fd82f5268775e88095cbf557a194 |
21 | Bugs: https://bugs.launchpad.net/ubuntu/+filebug |
22 | Origin: Ubuntu |
Schaut doch schon mal gut aus. Also googlen ob das auch mit deinem µC und dem USBasp funktioniert, welche Parameter s51dude benötigt usw.. (BTW: Auch das "mcu8051ide - Integrated development enviroment for MCS-51 based microcontrollers" sieht interessant aus, einfach mal nachforschen) Natürlich hast du jetzt ziemlich viel Aufwand, aber da wirst du wohl schlecht drum herum kommen, wenn du so einen alten Nieschencontroller benutzt. Ich würde an deiner Stelle, wenn möglich, auf AVRs umsteigen. Da gibts schon alles vergekaut, und grad am Anfang oder beim Umstieg auf ein neues Betriebssystem ist das doch sehr hilfreich. Zudem bekommst du dann auch hier im Forum viel mehr Support. Gruß und viel Erfolg!
F. W. schrieb: > Auf dem µC steht AT89S52 Du solltest dann als MC auch besser den 8052 angeben und nicht den 8051. Dann hast du auch Zugriff auf Timer2 und die 8k Flash. Und nein, ich kompiliere unter Windows mit MIDE-51.
F. W. schrieb: > Daher jetzt die Frage, mit welchen Linux-Programmen ich am besten eigene > Programme für diesen µC schreiben und diese auch auf den µC "flashen" > kann cat /dev/con > $HOME/avr_project/flash_image.hex SCNR
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.