Forum: Mikrocontroller und Digitale Elektronik N76E003 nuvoton, Informationen über ICP gesucht.


von Ralph S. (jjflash)


Lesenswert?

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

von Schorsch X. (bastelschorsch)


Lesenswert?

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).

von Ralph S. (jjflash)


Lesenswert?

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 !

von Peter D. (peda)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

Peter D. schrieb:
> Ich finde das sehr
> unübersichtlich und versteckt auf der Webseite.

ich auch !

von Christopher J. (christopher_j23)


Lesenswert?

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.

: Bearbeitet durch User
von Ralph S. (jjflash)


Lesenswert?

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?

von Christopher J. (christopher_j23)


Lesenswert?

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

: Bearbeitet durch User
von jdelphi (Gast)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von jdelphi (Gast)


Lesenswert?

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.

von jdelphi (Gast)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von jdelphi (Gast)


Lesenswert?

Ich hatte Tomaten auf den Augen.
Mir ist eben erst bewusst geworden, das du ja der Verfasser in dem 
anderen Post warst. duck

von jdelphi (Gast)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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.

von Janos G. (jdelphi)


Lesenswert?

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.

: Bearbeitet durch User
von Christopher J. (christopher_j23)


Lesenswert?

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.

von Janos G. (jdelphi)


Lesenswert?

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.

: Bearbeitet durch User
von Janos G. (jdelphi)


Lesenswert?

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

von Janos G. (jdelphi)


Angehängte Dateien:

Lesenswert?

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.

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.