Forum: PC Hard- und Software Renesas nc30wa unter Linux


von Ludger (Gast)


Lesenswert?

Hallo *,

ich habe mir mal zum Ueben Ubuntu 9.10 installiert und bin auch sehr 
zufrieden mit dem Look and feel. Nichtdestotrotz bin ich ein Linux 
Anfaenger. Nun programmiere ich dann und wann Renesas M16C Controller 
und wuerde gern den Renesas eigenen Compiler nc30wa unter Linux 
benutzen. Ich habe ihn dann unter wine installiert und kann auch mit 
batch files uebersetzen.

Lieber wuerde ich aber meine makefiles nutzen. Leider klappt es nicht so 
wie ich mir das vorstelle.
Rufe ich z:\usr\bin\make auf, so wird der Pfad zum Compiler nicht 
gefunden

Wenn ich ein make ins /home/ludger/.wine/drive_c/windows kopiere, dann 
erhalte ich eine Exception beim Aufruf von make.

Hat jemand Tipps?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Ruf doch in deinem Makefile den Compiler mit Hilfe von wine auf. Also in 
einer Regel etwa so:

all:
    wine .wine/drive_c/Programme/m16c/compiler.exe $ARGS

Matthias

von Ludger (Gast)


Lesenswert?

Danke fuer den Tipp.

Jetzt meckert er beim Assemblieren mit as30.exe, dass er mac30.exe nicht 
findet. Vermutlich fehlt ihm fuer das mac30.exe, das wahrscheinlich vom 
as30.exe aufgerufen wird der Pfad.

von Adrian Badertscher (Gast)


Lesenswert?

Guten Morgen,

Das Problem liegt daran, dass Du nicht im entsprechenden Verzeichnis 
bist. Das kannst Du lösen in dem Du cd 
/home/DeinNutzer/.wine/Laufwerksordner/Programme/DeinCompiler (Bitte die 
Verzeichnisse an Deine Gegebenheiten anpassen).

Das heisst wichtig ist, dass Du in dem Verzeichnis bist, wo die DLL's 
und EXE's sind.

Lieber Gruss,
Adrian Badertscher

von Volker Z. (vza)


Lesenswert?

Hast du die Enviroment-Variablen und den Path gesetzt?

zB. ein ausschnitt aus meinem Makefile:
export BIN30=$(COMP_DIR)\BIN
export LIB30=$(COMP_DIR)\LIB30
export INC30=$(COMP_DIR)\INC30
export TMP30=$(COMP_DIR)\TMP

Path=C:\WINNT\SYSTEM32;C:\WINNT;\
  $(BIN30);\
  $(TOOL_DIR);\

von Ludger (Gast)


Lesenswert?

Hallo Volker,

danke, ich glaube das hilft mir weiter. Ich probiere es heute Abend aus.

Wird die Pfad Variable auch im makefile gesetzt?

von Volker Z. (vza)


Lesenswert?

Ja.
Siehe "make & Enviroment-Variablen"

Achtung: mein Beispiel stammt von einem Windowsrechner. Als nicht 1zu1 
übernehmen.

Ciao Voöker

von Olaf (Gast)


Lesenswert?

Mich wuerde ja mal interessieren warum man ueberhaubt
den nc30 nehmen will wenn man schon unter Linux arbeitet?

Der gcc ist doch genausogut und hat noch den Vorteil
das man keine 64k Grenze hat.

Ich sehe den einzigen Vorteil des Entwicklungspaketes von
Renesas in der Nutzung des E8. Da wuerde mich dann aber auch
mal interessieren wie den jemand unter Linux betreibt. :-)

Olaf

von Ludger (Gast)


Lesenswert?

Hallo Olaf,

ich habe mich durchaus schon mit dem GCC fuer die M16/M32 Reihe 
auseinandergesetzt. Letztendlich fehlen mir immer die 2 Pointer.
Der NC30 unterstuetzt halt near und far Pointer und im gcc habe ich noch 
keinen schoenen Workaround gesehen, mit dem man z.B. statische Felder 
und Strings einfach handhaben kann, wenn sie im 24Bit Adressbereich 
liegen.

Ich bin aber auch nicht der Programmierprofi und darum um jeden guten 
Tipp dankbar.

Gleichzeitig bin ich wie oben erwaehnt auch nicht der Linux Profi :-)

Ich spiele im Moment halt gerade ein wenig mit Ubuntu und habe mir 
gedacht, dass es nett waere meine M16C Software auch unter Linux 
uebersetzen zu koennen.

von Ludger (Gast)


Lesenswert?

Hallo *,

ich bin nun soweit, dass ich eine einfache Datei uebersetzen kann. Nun 
habe ich ein weiteres Problem. Meine nc30wa Copiler tools erzeugen 
Dateinamen in Grossbuchstaben. Ich nutze aber lieber Kleinbuchstaben. 
Gibt es eine einfache Moeglichkeit innerhalb eines Makefiles die 
Variablennamen wie z.B:

CSRC = foobar.c

in Grossbuchstaben zu aendern?

von Olaf (Gast)


Lesenswert?

> Meine nc30wa Copiler tools erzeugen Dateinamen in Grossbuchstaben.
> Ich nutze aber lieber Kleinbuchstaben.

Das kommt davon wenn man Dosenkacke auf MaennerInnen Systemen nutzen
will. :-)

Liegt der Compiler von Renesas zufaellig auf einer FAT Partition
weil du ihn auch unter WinXP nutzt? Dann koennte es sein das du
das Problem ueber eine Option beim mounten der Partition loesen
kannst.

> Gibt es eine einfache Moeglichkeit innerhalb eines Makefiles die
> Variablennamen wie z.B:

Also ein Makefile kann vermutlich alles, einschliesslich dem ausloesen
des dritten Weltkriegs und Gehirnkrebs. Letzteres tritt gelegentlich 
beim lesen der Doku zu Make auf. Trotzdem musst du da durch!

Was sicherlich ginge waere aus dem Makefile raus ein bash-script
aufzurufen und dort alle Files in einem Direktory mit einer bestimmten
Endung in Kleinbuchstaben umzuwandeln. Das genaue Procedere kann man
dann wieder mit "man bash" lernen.

Olaf

von Ludger (Gast)


Lesenswert?

Liebe Maennerin Olaf,

ich verdiene seit mehreren Jahrzenhten mein Geld mit Hilfe dieser 
Dosenkacke. Was nuetzt es zu lamentieren, wenn Sachzwaenge doch die 
staerkere Macht haben?

Ich habe aber auch keine Lust zum x-ten Male eine Linux-toll 
Windows-doof Diskussion zu starten.

Nein meinen nc30wa habe ich mit Hilfe von wine setup.exe ins wine 
Verzeichnis auf der ext4 Partition installiert.

Makefiles sind toll:-)

Es war auch nicht so schwierig.
   mv $(shell echo $@ | tr [:upper:] [:lower:]) $@
hat nach dem Uebersetzen den dateinamen wieder gekleint.

Danke trotzdem an alle die mir geholfen haben

von Ludger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo *,

als Anhang findet der Interessierte ein Mini Projekt, dass sich mit dem 
nc30wa unter wine uebersetzen laesst.

von Olaf (Gast)


Lesenswert?

> Makefiles sind toll:-)

Das Konzept des Makefiles ist toll, aber die Implementation schwaechelt 
mindestens an der Stelle wo ein " " und ein TAB eine unterschiedliche 
Bedeutung in der Beschreibungssprache haben.

> als Anhang findet der Interessierte ein Mini Projekt, dass sich
> mit dem nc30wa unter wine uebersetzen laesst.

Und wie bekommst du dein Projekt nun in den Controller? Soll heissen, 
hast du den E8 unter Wine am laufen? Das waere naemlich mal eine 
interessante Sache.

Ich weiss es gibt "m16-flash", aber E8 waere doch besser weil man dann 
auch die Controller ueber die Reset-Leitung brennen kann.

Oder gibt es mittlerweile eine Loesung fuer Linux die das auch kann?

Olaf

von Ludger (Gast)


Lesenswert?

Ich habe als Konsolenanwendung unter Windows einen eigenen Programmer 
codiert, der den Reset in den Bootloader per RTS und DTR steuert. Das 
nutze ich aber schon seit Jahren nicht mehr, da ich einen eigenen 
Bootloader benutze, der in den oberen 16k liegt und die Software per 
xmodem Transfer entgegennimmt. Das geht sowohl unter Windows mit z.B. 
TeraTerm oder unter Linux mit z.B. CuteCom sehr gut und mit 115200 an 
einem M16C/62P.

Gleichzeitig enthaelt der Bootloader Debughilfen, so dass mit einem 
beliebigen Terminal Programm in den uC hineingeschaut werden kann.

von olaf (Gast)


Lesenswert?

> Ich habe als Konsolenanwendung unter Windows einen eigenen Programmer
> codiert, der den Reset in den Bootloader per RTS und DTR steuert.

Das meine ich nicht. Die neuen Devices von Renesas (z.B R8C29) koennen 
ausschliesslich ueber MODE und RESET gebrannt und debuggt werden.
Ich habe deshalb in meiner Hardware nur noch einen 4poligen 
Steckverbinder. (GND,Vcc,Mode,Reset)
Das hat dann den Vorteil das keine Leitung und kein serieller Port fuers 
Brennen und Debuggen drauf geht.

> da ich einen eigenen Bootloader benutze, der in den oberen 16k liegt
> und die Software per

Das ist natuerlich auch eine Loesung. Der neue M16C/6C hat sogar extra 
einen zusaetzlichen Bereich im Flash den der integrierte Bootloader von 
Renesas anspringt wenn er nicht weiss was er machen soll.

> Gleichzeitig enthaelt der Bootloader Debughilfen, so dass mit einem
> beliebigen Terminal Programm in den uC hineingeschaut werden kann.

Mach ihn gdb kompatible und wirf den Source in die Menge und wir werden 
dir ewig dankbar sein. :-)
Eigentlich wollte ich mich ja mal irgendwann aufraffen das zu schreiben, 
aber man kommt ja zu nichts....

Olaf

von Ludger (Gast)


Lesenswert?

@Olaf

>Eigentlich wollte ich mich ja mal irgendwann aufraffen das zu schreiben,
>aber man kommt ja zu nichts....

siehste, geht mir auch so:
 - eigentlich bin ich eher Hardwerker
 - 3 kleine Kinder und Teilzeithausmann
 - ich habe ueberhaupt keine Ahnung wie man etwas gdb kompatibel macht
 - ich freue mich schon darueber, das ich eine LED ans Blinken bekomme
 - ich habe zwar schon mehr als zehn Prozessoren programmiert, die 
meisten jedoch nur rudimentaer

Will sagen: hoert sich schoen an, was du schreibst, ich kann das aber 
nicht leisten :-)

>Das hat dann den Vorteil das keine Leitung und kein serieller Port fuers
>Brennen und Debuggen drauf geht.
Das muss bei meinem Bootloader natuerlich auch nicht. Wenn auf dem M16C 
board ein Trommel zu Port Pin Konverter vorhanden ist, kann man das neue 
Programm auch reintrommeln :-)))

von Olaf (Gast)


Lesenswert?

> board ein Trommel zu Port Pin Konverter vorhanden ist, kann man
> das neue Programm auch reintrommeln :-)))

Du brauchst aber immer noch einen Portpin dafuer. Okay, bei einem
M16C/62 spielt das nicht so die Rolle, der hat ja Pins ohne Ende.

Aber wenn der Controller ueber die Resetleitung programmiert werden kann 
dann ist das gerade bei kleinen Devices schoener weil vielleichst sonst 
ALLE Pins benutzt werden. Jetzt koennte man natuerlich zum reinen 
programmieren noch was tricksen, aber spaetestens beim Debuggen wo ja 
noch die aktuelle Soft mit der Leitung rumwedelt wird es bloed.

Olaf

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.