Hier im Forum wurde der Microcontroller N76E003 von Nuvoton schon einmal
erwähnt und irgendwie kribbelt es mich in den Fingern mir den näher
anzusehen, weil:
- 18 KByte Flash
- 4 mal 16 Bit Timer
- UART
- SPI
- I2C
- 12-Bit ADC
- 1 KByte Ram
an Board für 2,50 Euro per 5 Stück (Ebay).
Aaaaaber:
es scheint nur von Nuvoton Programmer zu geben (und Programmer auf EBAY
gar keine).
Außerdem ist das was ich gelesen habe ausschließlich Windows, ich hätte
es aber gerne unter Linux.
Und weiters würde ich dafür gerne eher selbst einen Programmer bauen
(natürlich findet sich im Netz nichts - oder ich bin zu doof zum suchen
- )
Bevor ich mir die Dinger also bestelle muß es eine Chance geben, ein
Binärfile in den Chip zu bekommen.
Also:
Datenblatt lesen (um einen eigenen Programmer und ein Hostprogramm auf
dem PC zu machen).
-----------------------------
Jetzt kommt mein Kopfschütteln über nuvoton:
Im Datenblatt heißt es (Zitat):
1
Nuvoton provides ICP tool for N76E003, which enables user to easily perform ICP through Nuvoton ICP programmer. The ICP programmer developed by Nuvoton has been optimized according to the electric characteristics of MCU. It also satisfies the stability and efficiency during production progress.
2
3
For more details, please visit Nuvoton 8-bit Microcontroller website:
4
Nuvoton 80C51 Microcontroller Technical Support
Aus einem weiteren Text des Datenblatts geht hervor, dass an dem
Flashprozess die Pins ICPDA (für Data I/O), ICPCL und /RST beteiligt
sind (irgendwie riecht das für mich nach I2C ähnlichem).
Nirgendwo auf der Nuvoton Seite finden sich nähere Details. Es finden
sich Beispiele wohl für eine Art Bootloader der erst mit einem ICP
Programmer ins Flash gebracht werden muß, aber nichts über das
ICP-Protokoll des Controllers selbst.
Hat jemand hier vielleicht weitereführende Informationen (nuvoton habe
ich angeschrieben, aber erwartungsgemäß haben sie nicht geantwortet).
---------------------------------------------------------
Irgendwie hätte es mich schon gejuckt mit dem (guten) alten MCS-51
Kernel mit neuerem Gewand etwas zu tun, aber anfangen ohne ausreichendes
Datenblatt zum Programmieren des Chips mach ich dann doch nicht.
Der Aufwand, mit ein "Entwicklungskit" zu kaufen, und über einen
Logikanalyzer die Codes abfangen um dann zu überlegen was da passiert
ist mir etwas zu hoch.
Gruß,
Ralph
Die Nulinks kosten zwischen 22-33€ bei Digikey. Da lohnt sich der
Aufwand wohl nicht, was eigenes zu entwickeln.
Wichtiger dürfte ein passender Compiler sein, der ordentlich
funktioniert. Keil ist sehr gut, kostet aber auch ganz ordentlich (ist
es mMn aber auch wert).
Hm, das Problem ist, dass Software für die Nulinks lt. Internetrecherche
nur für Windows verfügbar ist.
Außerdem hätte ich schon gerne meinen eigenen Pool für diverse
Mikrocontroller (vor allen Dingen deshalb: hat man es selbstgemacht, hat
man es in aller Regel auch verstanden).
Als Compiler (wenn auch nicht sooooooo toll) würde ich den SDCC
verwenden und einen eigenen Konfigurationsheader dafür schreiben.
Puuuuh, vllt. mache ich doch ein Reverse-engeneering mit dem Nulink,
aber wirklich begeistert bin ich davon nicht !
Ralph S. schrieb:> Als Compiler (wenn auch nicht sooooooo toll) würde ich den SDCC> verwenden und einen eigenen Konfigurationsheader dafür schreiben.
Der Wickenhäuser soll auch nicht schlecht sein und ist frei.
Von Silabs gibt es eine kostenlose unlimitierte Keil-Version, man muß
sich nur registrieren lassen.
Ralph S. schrieb:> Puuuuh, vllt. mache ich doch ein Reverse-engeneering mit dem Nulink,> aber wirklich begeistert bin ich davon nicht !
Vielleicht braucht man den Novoton-Programmer nur einmal, um sich einen
eigenen Bootloader aufzuspielen. Aufpassen muß man aber, ob der
Programmer wirklich den gewünschten MC unterstützt. Ich finde das sehr
unübersichtlich und versteckt auf der Webseite.
Meine Erfahrungen mit Nuvoton und auch der deutschen Vertretung im
München sind durchweg negativ. Wenn man überhaupt eine Antwort bekommt,
ist sie weit am Thema vorbei. Man muss wohl erst einen Auftrag über 1Mio
Stück platzieren, damit man ernst genommen wird.
Ein BU-Link, der angeblich ICP und ISP kann, fliegt hier noch rum. Bei
Interesse bitte Mail.
Sooo, nachdem mein Nulink-Clone vorgestern zusammen mit ein paar
N76-Boards gekommen ist, hatte ich mich mal umgesehen wie ich die Teile
mit dem SDCC bespielen kann. Dabei bin ich auf "Nuvoprog" gestoßen:
https://github.com/erincandescent/nuvoprog
Da hat sich also schon jemand die Arbeit gemacht, das ICP-Tool zu
reversen. Das Tool ist in Go geschrieben und läuft wohl auch unter
Linux. Werde mir das heute Abend mal genauer anschauen. Da der Nulink
nur mittels USB-HID angesteuert wird, sollte sich so ein Teil auch
prinzipiell ganz gut z.B. mit einem BluePill-Board emulieren lassen.
Christopher J. schrieb:> Da der Nulink> nur mittels USB-HID angesteuert wird, sollte sich so ein Teil auch> prinzipiell ganz gut z.B. mit einem BluePill-Board emulieren lassen.
Hast du vor, so etwaszu tun?
Ralph S. schrieb:> Christopher J. schrieb:>> Da der Nulink>> nur mittels USB-HID angesteuert wird, sollte sich so ein Teil auch>> prinzipiell ganz gut z.B. mit einem BluePill-Board emulieren lassen.>> Hast du vor, so etwaszu tun?
Ja, Lust hätte ich definitiv. Erstmal werde ich aber versuchen mit dem
Kerl hinter "Nuvoprog" den Software-Support mit den "richtigen" Nulinks
zu optimieren, so dass man zunächst die Abhängigkeit von Windows nicht
mehr hat.
Wollte gestern Abend nun endlich mal meine N76E003 mit dem original
ICP-Tool austesten und habe dazu mal eine Windowskiste mit SDCC
aufgesetzt. Alleine der Aufwand um ein simples "make" zum laufen zu
bringen ist absoluter Wahnsinn. Es wird also definitiv Zeit, dass das
auch unter Linux funktioniert.
PS: Nuvoton hat es ja tatsächlich doch geschafft den Source-Code seines
ICP-Tools auf Github zu packen:
https://github.com/OpenNuvoton/ISPTool/tree/master/NuvoISP
Bist du schon weiter gekommen?
Ich habe zur Zeit so ziemlich das selbe vor.
Programm erstellen und programmieren mittels Linux.
Leider ist der Nuvoton noch nicht eingetroffen.
Auf das Programmiergerät warte ich auch noch, das sollte aber heute
kommen.
jdelphi schrieb:> Bist du schon weiter gekommen?
Naja, wie man es nimmt. Habe erstmal den Nulink-Clone mit dem
N76E003-Board an einer Windowskiste in Betrieb genommen um sicher zu
gehen, dass die Hardware funktioniert. Das ist bis jetzt auch der Fall
und das Windows-ICP-Tool hat den Nulink-Clone ohne zu murren erkannt und
direkt gefragt ob ich ein Firmware-Update machen möchte, was dann auch
erfolgreich verlaufen ist.
Als nächstes werde ich mal Nuvoprog an einer Linuxkiste ausprobieren.
Laut Readme ist Nuvoprog bisher nur für den "Nulink-Me" lauffähig, wie
man sie auf den Nuvoton Dev-Boards als Onboard-Debugger findet. Ob es da
abseits der USB-PID noch andere Unterschiede zum "richtigen" Nulink gibt
wird sich zeigen. Ich vermute aber eher nicht.
Hab gestern mal Nuvoprog ausgetestet und es funktioniert auch mit dem
"richtigen" Nulink unter Linux einwandfrei. Die PID unterscheidet sich
nicht von der eines "Nulink-Me".
Getestet habe ich flashen und auslesen des APROM. Die Option-Bytes und
das LDROM habe ich noch nicht angerührt.
Super,
leider ist bei mir beides noch nicht eingetroffen.
ich wollte eine Art Arduino Board mit dem N76E003 basteln.
Dafür hatte ich heute morgen mal kurz recherchiert, wie der NU-Link
aufgebaut ist.
Dabei musste ich feststellen, das der Original Chip zum Programmieren
alleine um die 4 Euro kostet. Somit ist das Projekt erstmal gestorben.
Ich bau doch keine Platine mit nem 4 Euro Chip um einen 20 cent Chip zu
programmieren. (also fest auf der Platine integriert)
Das erklärt auch, warum die Kits bei denen alle fast das gleiche kosten.
Dabei bin ich noch über den Link hier gestoßen.
http://www.nuvoton.com/hq/support/faq/55f5ff59-7c79-11e5-be69-4511a3410ebb/?__locale=en
anscheinend kann man den Programmer auch leicht selber schießen.
Daher ist es sicher sinnvoll gleich 2 von denen sich anzulegen.
In einem anderen Post wird erwähnt, das sich schonmal jemand mit dem
Programmieren und der Programmiersequenz beschäftigt hat. Hat da
zufällig jemand den Link von dem erwähnten Beitrag gefunden.
Chris schrieb:> Den nulink gibt es fur ca 15 euro beim chinamann.> Das Protokoll zum Flaschen für Novotron wurde auch schon entschlüsselt> und ein patch für jtag Adapter gepostet, in einem RC Helikopter/Drohne> Thread versteckt. Es macht was proprietäres vor dem Flaschen um das> Flash freizuschalten.> Irgendwas invertiert oder eine andere Signalfolge. Ansonsten Standard> Protocol.
jdelphi schrieb:> In einem anderen Post wird erwähnt, das sich schonmal jemand mit dem> Programmieren und der Programmiersequenz beschäftigt hat. Hat da> zufällig jemand den Link von dem erwähnten Beitrag gefunden.>> Chris schrieb:>> Den nulink gibt es fur ca 15 euro beim chinamann.>> Das Protokoll zum Flaschen für Novotron wurde auch schon entschlüsselt>> und ein patch für jtag Adapter gepostet, in einem RC Helikopter/Drohne>> Thread versteckt. Es macht was proprietäres vor dem Flaschen um das>> Flash freizuschalten.>> Irgendwas invertiert oder eine andere Signalfolge. Ansonsten Standard>> Protocol.
Das bezieht sich, wie ich bereits geschrieben hatte, nur auf die
Cortex-M von Nuvoton und nicht auf die 8051. Für Cortex-M gibt es SWD,
da ist die ganze Sache ganz eindeutig klar und es gibt auch OpenOCD für
die Cortexe von Nuvoton. Bringt nur alles nix für die N76E003.
Ich hab mir gerade mal das Linux Programm angeshn.
Ich kenne mich mit go zwar nicht aus, aber die main.go ist doch recht
übersichtlich.
Was mich nur ganz Stuzig macht, ist die Zeile
1
import "github.com/erincandescent/nuvoprog/cmd"
bedeutet das, das bei jedem Aufruf, die aktuelle Version heruntergeladen
und ausgeführt wird?
Ich finde das ein wenig mehr als bedenklich, vor allem, da ja alles
benötigte dabei liegt.
So wag ich mich nicht ganz das Ding zu starten, vor allem nicht auf
dauer.
PS: Programmer und Chips sind gekommen.
jdelphi schrieb:> Was mich nur ganz Stuzig macht, ist die Zeile import> "github.com/erincandescent/nuvoprog/cmd">> bedeutet das, das bei jedem Aufruf, die aktuelle Version heruntergeladen> und ausgeführt wird?
Nene, das ist lediglich die Art und Weise wie man in Go Module
importiert. Das wird nicht bei jedem Start heruntergeladen, sondern nur
einmal bei der Installation, wenn man aus den Quellen installiert. Go
ist auch eine kompilierte Sprache und packt alles in ein statisch
gelinktes Binary, inkl. der Runtime. Dieses Binary ist dann auf jeder
Plattform für die es gebaut wurde, z.B. Linux/amd64, ohne irgendwelche
Abhängigkeiten lauffähig.
Go installiert man unter Linux am einfachsten indem man sich von
https://golang.org/dl/ die Zip-Datei lädt. Eine Installationsanleitung
findet man hier:https://golang.org/doc/install#install
Statt nach /usr/local/go kann man das natürlich auch nach
$HOME/devtools/go oder irgendwo anders hin entpacken, muss dann aber die
Umgebungsvariable "GOROOT" in .profile korrekt setzen. "GOPATH" (dort
landet per "go get" heruntergeladener Code) ist standardmäßig $HOME/go,
kann aber ebenfalls nach belieben angepasst werden. Bei mir liegt das
z.B. in $HOME/src/go. In meiner $HOME/.profile habe ich also folgendes
stehen:
1
export GOROOT=$HOME/devtools/go
2
export GOPATH=$HOME/src/go
3
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Hat man das soweit eingerichtet, kann man ganz einfach Nuvoprog
runterladen und kompilieren.
1
go get -u github.com/erincandescent/nuvoprog
"go get" benötigt Git und Nuvoprog benötigt libusb. Ansonsten gibt es
glaube ich keine Abhängigkeiten.
sorry, hatte gedacht go wäre eine Art Batchdatei / Javascript.
Hatte das erstellen schon hinbekommen.
Ich hänge gerade nur ein wenig am Programmer unter Windows.
Woran erkenne ich, das der Programmer unter Widows gefunden wurde?
Wenn ich ohne angeschlossenen Programmer in NuvoISP auf Connect klicke,
steht dahinter dann "Waiting for device connection"
Wenn ich den Programmer anschließe, steht genau das selbe dort. Windows
hatte den Programmer erkannt und einen Treiber installiert. Werde gleich
mal die PID und VID Prüfen.
Btw. Was sollte der NU Prog für eine PID und VID haben?
USB 2.0ICE USB ICE
VID 0416
PID 511B
bzw. unter Linux:
0416:511b Winbond Electronics Corp.
Janos G. schrieb:> bzw. unter Linux:> 0416:511b Winbond Electronics Corp.
Meiner hat 0416:511c. Laut der rules-Datei aus OpenNuvoton/OpenOCD gibt
es die PIDs 511b, 511c, 511d und 5200.
Ich habe allerdings keine Ahnung welche PID für welchen Nulink gelten
sollte.
Hatte mir diesen hier bestellt:
https://de.aliexpress.com/item/32873175554.html
Das Teil hat aber kein schwarzes PCB wie auf dem Verkäuferbild, sondern
ist rot. Außerdem war auch kein 10-Poliges Kabel dabei, sondern nur fünf
Jumperkabel.
Läuft so halb unter windows jetzt.
Ich hatte noch die Anfangsfirmware drauf und hatte bei Nuvoton die
neuste Programmer Software geholt.
Leider muss man erst die ältere Version in Windows installieren.
Da ich die nicht installiert hatte und der Treiber nicht installiert
wurde, ist es von vorne bis hinten nicht gelaufen.
Bei einer Verbindung steht nun Nu-Link Connecter. mit einer ID.
Am Programmer selber ist die erste LED grün und die letzte blinkt
unregelmässig, wenn er nach einem Device sucht.
Das Problem ist jetzt nur, das er das Device (Den N76E003) noch nicht
erkennt. Mal schauen wos da hängt.
PS: Sei froh das kein 10 Pol Kabel bei lag. Bei mir lag ein 10 Pol Kabel
bei. Jedoch haben sie die rote Seite vom Flachbandkabel nicht auf Pin 1
gesetzt. Gab dann erst mal nen Kurzschluss.
TOP.
Device Erkennung geht nun auch.
Hab das teil dann an Linux angestöpselt und dort das Hello World
erstellen und Programmieren lassen. Ging auch alles. Musste nur wegen
USB nene sudo vorsetzen. Aber das bügel ich dann morgen noch mit udev
gerade.
115200 bps.
https://github.com/erincandescent/libn76
Christopher, hast du noch vor einen eigenen Programmer zu basteln?
Oder kann man dir anderweitig weiterhelfen?
Ich habe heute mal ein wenig an einem Experimentierboard gebastelt.
Grösse der PCB wird 100 x 100mm. In der Mitte wird ein Header wie bei
einem Arduino sein. Man kann also Erweiterungen aufstecken.
Der MCP2200 kann durch einen PIC18F14K50 ersetzt werden. Die beiden sind
ja zu 100% Pinkompatibel (Kann ja auch nicht anders sein, der MCP ist ja
auch in Warheit ein PIC mit fertiger Firmware von Microchip und eigener
ID. )
Falls jemand Interesse hat, oder einem noch was auffällt, einfach
melden.