Forum: PC Hard- und Software IDE unter Linux


von F. W. (lubuntu-user)


Lesenswert?

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

von demacus (Gast)


Lesenswert?

Hallo

Also ich persönlich bin sehr zufrieden mit geany und avrdude.

MfG

von Hans (Gast)


Lesenswert?

sdcc als compiler ?
eclipse+sdcc-plugin als ide?

73

von Simon S. (-schumi-)


Lesenswert?

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)

von F. W. (lubuntu-user)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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"?!

von F. W. (lubuntu-user)


Lesenswert?

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.

von Hans (Gast)


Lesenswert?

der avr-gcc ist für AVRs!

du wirst den sdcc verwenden müssen für 8031/8051/8052!

73

von F. W. (lubuntu-user)


Lesenswert?

Wie komme ich an den sdcc?
Kann ich dann weiterhin mit geany programmieren und wie gewohnt den 
header-File in den Projektordner kopieren?

von Simon S. (-schumi-)


Lesenswert?

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?

von F. W. (lubuntu-user)


Lesenswert?

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.

von Lubuntu-User (Gast)


Lesenswert?

Habe die beiden sdcc-Pakete installiert. Und nun?

von Simon S. (-schumi-)


Lesenswert?

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!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Qarl Quelle (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.