gibt es zu den RL78/G14 Renesas Controllern freie Tools
oder sind die MC's z.B. bei Mouser deshalb so günstig,
weil es nur käufliche Tools dazu gibt?
Welche Controller Familien AVR, PIC, STM8/32, MSP430
kommen sonst in Frage, wenn man bei kleinen Stückzahlen (<100)
einen 12bit ADC, genügent IOs und SPI braucht und 64k ROM 2k RAM
gerne hätte und der MC unter 10 Euro (besser unter 5Euro) kosten soll.
Wie sieht es bei NXP und Freescale mit diesen Wünschen aus?
Wenn man bei Mouser die Filter entsprechend setzt, kosten alle o.g. MCs
meist einen zweistelligen Betrag bei Abnahme von 10++ Stück.
Nur bei Renesas sind mir die Preise eher als günstig ins Auge gestochen,
deshalb meine Frage hier an dieser Stelle.
Habt Ihr eventuell ein paar Vorschläge zu meinen Anforderungen.
Der MC soll eigentlich nur Relais schalten (nicht direkt!) und
zwei bis acht analoge Werte mit mindestens 10bit Auflösung
messen, die im kHz Bereich (<2kHz) liegen.
Ich verwende bei einem älteren Design einen NXP LPC11U68. (ARM M0)
Den gibt es in diversen Pinnings und Speichergrößen.
Hat SPI, 12Bit ADC, genug IO... und alles sonst noch übliche.
Der kostet < 10Euro und ist bei Mouser erhältlich.
Die NXP Toolchain war kostenlos mit dabei, es tut aber auch ein Standard GCC für Arm.
Was mich von den MSP430 z.Z. noch etwas abschreckt
ist der Spannungsbereich 1.8 bis 3.6V. Sonst finde ich
die durchaus mit den 16bit und den ganzen Addons (z.B. MUL)
durchaus ok und es gibt eine OS-Toolchain.
Die RL78 sind bis 5V einsetzbar, womit ich mich wohler
fühle (z.B. Ansteuerung von FETs). Aber ich lassen mich gerne
eines Besseren belehren.
danke das ist ja schon mal ein Wink in die Richtige Richtung.
Ich wollte mir mal zehn Stück ordern und damit ein paar Test-PCBs
layouten und die entsprechend programmieren um zu sehen, was es
da für Stolperfallen gibt.
Da ist der finanzielle Aufwand überschaubar und es ist was anderes
als ein fertiges Dev-Board zu verwenden.
Gemeint sind damit die uCs aus der (sehr neuen) AVR Dx Serie, die sogar im DIL-Gehäuse angeboten werden. Ich mag die Teile, haben ein paar nette Features.
Habe irgendwo gelesen, das Keil eine freie Version von seinen Tools
auch für Linux anbietet, die auch die RL78 Controller bedient.
Auf diese Seite wirst du wohl selbst schon gestoßen sein:
https://llvm-gcc-renesas.com/rl78/rl78-download-toolchains/
Ich vermute mal, dass es sich um CLI Versionen der ToolChain handelt, aber zumindest kann man die Tools ohne Registrierung runter laden. Über die Qualität kann ich leider nichts sagen. Da sie LLVM bzw. GCC basiert sind und supportet werden, können sie so schlecht nicht sein.
RL78 ist nun in der Hobby-Szene nicht so verbreitet, die Frage ist halt, ob man dann (5V hin oder her...) wirklich auf dieses Pferd setzen möchte.
Professionell ist wieder was anderes. Wenn man ein paar k€ für die ToolChain ausgibt, hat man zumeist auch Support dabei und man kann einen FE vom Distributor nerven.
Bei den ARM-Cortex µC, speziell den STM32, findet man halt an jeder Ecke im Internet Hilfe. Und langsam sind grad die STM32 wieder besser erhältlich.
Habe irgendwo gelesen, das Keil eine freie Version von seinen Tools
auch für Linux anbietet, die auch die RL78 Controller bedient.
Unterstützt Keil (seit es zu ARM gehört) überhaupt noch µCs ohne ARM Kern? Wenn man die Device-List von MDK5 ansieht, stehen da unter Renesas nur noch Cortex-Kerne https://www.keil.com/dd2/
Danke für den Hinweis auf die RL78 Toolchain auf cli Basis.
Habe mir diese runter geladen und werde sie mal installieren.
Ich habe mir aber gerade ein paar AVRs und PICs bei Mouser
zum Spielen besorgt, für kleines Geld, und werde erst damit
loslegen, den zu diesem Thema tummeln sich im MC-Forum wohl
mehr Hobbyisten, mit denen man sich austauschen kann.
Die RL78 habe ich aber auch noch im Hinterkopf und werde im
Web weiter nach Infos dazu suchen.
Was mir bei den PICs gefällt ist z.B. die Web-Seite
und Ihre Unterseiten wo man sich Infos holen kann.
Gibt es wahrscheinlich bei den anderen Herstellern auch, nur
habe ich diese als erstes gefunden und sie hat mir auf Anhieb
gut gefallen.
Wenn Ihr noch andere Links in dieser Art zu den anderen MC's habe
so bitte ich sie auch hier zu verlinken.
Diese Fragen tauchen ja immer wieder im Forum auf und sind für
Newcommer nicht so trivial zu beantworten.
die besagte Datei sieht an der Stelle (Zeile 101) wie folgt aus:
1
#gets -- POSIX thread cancellation point
2
#getwc -- POSIX thread cancellation point
3
#getwchar -- POSIX thread cancellation point
4
gmtime
5
isalnum
6
isalpha<===line101:
7
iscntrl
8
isdigit
9
isgraph
10
islower
11
isprint
Ich habe den configure Aufruf mittels der CXXFLAGS auf verschieden
compat Stufen gesetzt, leider aber ohne Erfolg.
(-std=standard, -Wc++14-compat, -Wc++11-compat, -Wc++-compat, -Wc11-c2x-compat, -Wc99-c11-compat)
Kannst Du bitte was nütyliches zu den LPC802M001 MCs sagen?
Wie sieht es da mit der Toolchain aus - frei und unter Linux
vorhanden?
Naja das sind ARM Microcontroller. Die können mit jeder beliebigen ARM Toolchain verwendet werden, u.a. basierend GCC und clang. Die meisten aktuellen Linux Distribution liefern ARM Toolchains für "Bare-Metal" als Pakete mit, braucht man nur zu installieren. (Suchwort: arm-none-eabi) Als Editor nimmt man halt das was man mag, ich bevorzuge inzwischen VS Code. Debuggen geht - wie bei jedem ARM Cortex - via SWD. Also z.B. gdb + openocd + irgendeine von openocd unterstützte Hardware. Wenn man will kann man da noch eine der vielen Debugger GUIs, VS Code oder Eclipse CDT drüber schnallen. Oder eben jeder andere Debugger der ARM unterstützt. Mir steht zum Glück ein PowerDebug von Lauterbach zur Verfügung. Der läuft übrigens auch unter Linux (Da lief er schon vor Windows, die haben auf Unix angefangen)
Ich verstehe nicht ganz wo deine 64kB Flash Anforderung her kommt. Für ein bischen ADC und Relais schalten braucht man wenige einstellige kB. In 64kB packe ich Dir nen kompletten Netzwerk-Stack inklusive Web-Server.
Du meinst also einfach einen aktuellen gcc cross für arm-none-eabi
Targets nehmen und die RL78 header Files von Renesas für die Peripherie einbinden und die Linker config entsprechend zum RL78 Speicher Bild
anpassen? In der Theorie klingt es sehr einfach. Die Tücken liegen wie
immer im Detail ;-)
Du meinst also einfach einen aktuellen gcc cross für arm-none-eabi
Targets nehmen und die RL78 header Files von Renesas für die Peripherie
Nein, ich bezog mich auf die LPC802, das sind Micros mit Cortex-M0 Architektur. Der RL78 ist was vollkommen anderes, da braucht Du eine andere Toolchain.
Zur dein Toolchain-Übersetzungsversuchen von oben kann ich nur anmerken, das Ubuntu 14.04 steinalt ist und die Toolchain sehr wahrscheinlich nicht auf einem aktuellen Linux übersetzen wird. Probiere doch mal ein neueres Release von der LLVM Variante:
werde ich versuchen. LLVM ist mir soweit ein Begriff.
clang Compiler in einer low level VM mit dem neuen Konzept
einer Maschinencode Erzeugung über eine standardisierte
Schnittstelle auf virtueller Ebene.
Mein erster Fehler war:
/dev/shm/RL78-Toolchain/source/gcc-4.9.2-20150423/gcc/reload1.c:89:24:
error: use of an operand of type ‘bool’ in ‘operator++’ is forbidden in
C++17
Den Fehler aber scheinst Du nicht verstanden zu haben. Du übersetzt C mit einem C++-Compiler. Das ist natürlich Unfug.
Und wie und womit compiliert wird, ist doch wohl Sache des Makefiles!
Das dieses eventuell einen Fehler beinhalten könnte, ist ja nicht
auszuschließen - so weit habe ich aber noch nicht gesucht.
Danke für den Hinweis, aber den musst Du bitte genauer erläutern.
Mag sein, dass das "CXXFLAGS='-Wc++-compat'" Flag von mir falsch
gesetzt oder unangebracht ist, das hat aber keinen Einfluß auf den
Aufruf des Compilers, der im Makefile festgelegt wird.
Markus
Sorry war die falsch cmd Zeile weiter oben. (war für die binutils)
ist ein C-Sourcefile. Wäre es C++, hieße es *.cpp, *.cxx oder auch *.C (Großbuchstabe, sehr "schick" auf case-agnostischen Betriebssystemen).
C-Sourcefiles muss man mit einem C-Compiler übersetzen, nicht mit einem C++-Compiler.
Ein C-Compiler aber wird /niemals/ einen Fehler ausgeben, der sich auf einen C++-Standard bezieht. Das aber passiert hier.
Wie es dazu kommt, daß Dein make/configure/whatever dafür sorgt, daß da C-Sourcecode mit einem C++-Compiler übersetzt wird, weiß ich nicht, aber das ist halt ein Fehler. Eindeutig.
Mit dem Problem beschäftigen sich auch andere Leute (zwar nicht im Zusammenhang mit Deinem µC, aber im Zusammenhang mit dem Selbstbau eines gcc).
The gcc of you host is to new to build the old gcc for the toolchain
use an old linux with old gcc
or use precompiled toolchains
or change a .mk file somewhere in toolchains/ and set the gcc
compatibility mode, like 94403ec
Habe es soweit geschafft die RL78 Toolchain auf meinem System
zu compilieren.
Siehe Anhang des Prefix-Verzeichnisses.
Ob alles so ist wie es sein soll kann ich noch nicht Mangels eines
Targets sagen, werde ich aber mal soweit mit einem mini C-Prog
testen.
Eventuell kann ja jemand ein RL78 Target spaßhalber flashen.
Ob dass dann schon ein Beweis dafür ist, dass ich alles richtig
gemacht habe kann ich aber nicht sagen.
Auf jeden Fall habe ich einen RL78 gdb und gcc und die zugehörige
stdlib, so daß man schon was testen könnte.
Danke allen, die mir geholfen haben.
Falls Interesse besteht, kann ich mein Toolchain-Dir irgendwo
zum Download rein stellen, für Linux Nutzer.
Für die Windows Fraktion macht mein Kompilat wahrscheinlich kein
Sinn, kann aber trotzdem jeder gerne haben.
1
>du -sh ./RL78-Toolchain
2
5.0G ./RL78-Toolchain
-rw------- 1 mw users 803606194 Jan 8 19:27 RL78-Toolchain.7z
Für die RL78 nutze ich den GCC 4.9.2 (Compilier-Datum: 11/2016 aber immerhin schon 64 Bit), aber mit meiner eigenen Bibliothek, die bereits einen Großteil der Hardware unterstützt (I2C nur in Software). Das Ganze belegt aber nur knapp 250MB.
Wenn Du mir einen konkreten Typen nennst, kann ich ein Paket mit allen erforderlichen Dateien generieren, im Makefile musst Du dann nur noch den Pfad zur Toolchain angeben und die Programmierbefehle anpassen.
Zumindest früher war es so, dass die Renesas-Toolchains die Register-Deskriptionen in einem eigenen Format verwendet hat. Die musste ich mir erst mit einem eigenen Tool in ein GCC-lesbaras Format (.h) umwandeln.
danke für das Angebot. Komme eventuell darauf zurück.
Die Verhältnisse bei meinem Packet sind wie unten dargestellt.
Eine komplette Liste der Files findest Du im Anhang 7z komprimiert.
1
mw@linux-kwm1:...RL78-Toolchain_MW/prefix
2
>du -sh .
3
725M .
4
mw@linux-kwm1:...RL78-Toolchain_MW/prefix
5
>du -sh bin include lib64 libexec rl78-elf share
6
94M bin
7
12K include
8
15M lib64
9
213M libexec
10
382M rl78-elf
11
23M share
Falls Du ein Testprogramm hättest, das ich compilieren könnte
und Du es in ein Target flashen könntest um zu testen, ob mein
gebauter Compiler das macht, was er soll, wäre das fein.
Es hat aber keine Eile, da ich zur Zeit noch nichts mit einem RL78
mache, geschweige den welche habe.
Ich besitze nur ein altes Dev-Board mit einem V850, was ich aber noch
nie richtig eingesetzt habe.
Wenn die Toolchain richtig funktioniert, würde ich durchaus mal
einige RL78 bei Mouser bestellen um etwas zu spielen.
Bin gespannt, ob es auch so ein Hickhack gibt wie bei den gerade
bestellten AVRs und PICs mit Ausfuhrgenehmigung aus den Staaten.
Hoffe, das ist bei den Renesas Controllern nicht der Fall.
Da ich gerade einen Testaufbau mit einem R5F10PGJ habe, kann ich Dir ein kleines Testprojekt zum compilieren bereitstellen. Im Makefile muss dazu nur noch der Pfad zur Toolchain angepasst werden.
Startup und Newlib kann man damit nicht prüfen, da alles über meine eigene Library (unilib) abgewickelt wird.
Die LPCs haben ja neben SWD einen seriellen Bootloader eingebaut, was mir in meinem aktuellen Projekt sehr helfen würde, weil ich die Teile eh seriell anbinde.
Nur finde ich grade ums Ver… nicht heraus, wie das Protokoll dafür aussieht bzw. welches Tool (unter Linux) das kann.
Weiß das jemand? Oder kann ich mein stinknormales stm32flash auch für diese Teile hernehmen?
Die RL78 haben einen integrierten Bootloader, mit dem seriell (bidirektional) über den TOOL0 Pin kommuniziert wird. Ich nutze meinen Universalprogrammer