Forum: Mikrocontroller und Digitale Elektronik CH32V203 programmieren


von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

Ich versuche den CH32V203 zu programmieren. Die Verbindung kommt aber 
nicht zustande. Woran liegt es?
1
Open On-Chip Debugger 0.11.0+dev-02415-gfad123a16-dirty (2023-10-11-14:01)
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
Info : only one transport option; autoselect 'sdi'
6
Warn : Transport "sdi" was already selected
7
Ready for Remote Connections
8
Info : WCH-LinkE  mode:RV version 2.12 
9
Error:  WCH-Link failed to connect with riscvchip
10
Error:  1.Make sure the two-line debug interface has been opened. If not, set board to boot mode then use ISP tool to open it
11
Error:  2.Please check your physical link connection

von Christoph M. (mchris)


Lesenswert?

Muss der Controller zuerst mittels des ISP-Tools entsperrt werden?
https://github.com/COKPOWEHEU/wch-isp

von Mehmet K. (mkmk)


Lesenswert?

Ich wurstle mich z.Zt. durch die Risc-V von WCH.
Z.Zt. spiele ich mit genau Deinem Board herum. Zusammen mit dem 
MounRiver IDE hatte ich noch mit keinem der Dev-Board oder mit meinen 
eigenen Boards irgendwelche Probleme.
Das einzige was mir einfällt: der E-Link ist default für die ARM MCUs 
von WCH konfiguriert. Diesen musst Du auf Risc-V umstellen. Entweder mit 
der Windows-Tool oder falls Du wie ich mit Linux unterwegs bist: Gehäuse 
öffnen und vor dem Einstecken den Mode-Switch gedrückt halten. Dadurch 
wechselt die LED von blau auf rot.

von Christoph M. (mchris)


Lesenswert?

Mehmet K. (mkmk)
24.06.2025 16:54
>Das einzige was mir einfällt: der E-Link ist default für die ARM MCUs
>von WCH konfiguriert. Diesen musst Du auf Risc-V umstellen.

Danke. Irgendwo hatte ich gesehen, dass Programmierer die rote LED für 
RISC-V und die blaue LED für etwas Anderes.
Ich habe aber einen CH32V003 erfolgreich damit programmiert, deshalb 
müsste die Einstellung eigentlich stimmen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Auch bei mir funktioniert der WCH-LinkE mit zwei verschiedenen CH32V003-
und einem CH32V203-Board (sieht genau so wie deines) problemlos. Ich
kann mich nicht erinnern, dass ich dafür mit irgendwelchen Spezialtools
oder dem Mode-Switch etwas umkonfigurieren musste.

Da ich ich den WCH-LinkE im Paket mit zwei Dev-Boards und ein paar losen
CH32[02]03 erworben hatte, hat vielleicht der Hersteller oder Händler
die ggf. erforderlichen Konfigurationen bereits vorgenommen.

Mit welchen Kommandozeilenargumenten rufst du openocd auf?

von Christoph M. (mchris)


Lesenswert?

> Mit welchen Kommandozeilenargumenten rufst du openocd auf?
Ich nutze die Arduino IDE.

Dort sieht das ganze so aus:
1
packages/WCH/tools/openocd/1.0.0/bin/openocd -f /home/christoph/.arduino15/packages/WCH/tools/openocd/1.0.0/bin/wch-riscv.cfg -c init -c halt -c program {/tmp/arduino_build_205312/nix2.ino.elf} verify; wlink_reset_resume; exit;

und wch-riscvcfg:
1
  
2
#interface wlink
3
adapter driver wlinke
4
adapter speed 6000
5
transport select sdi
6
7
wlink_set_address 0x00000000
8
set _CHIPNAME wch_riscv
9
sdi newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x00001
10
11
set _TARGETNAME $_CHIPNAME.cpu
12
13
target create $_TARGETNAME.0 wch_riscv -chain-position $_TARGETNAME
14
$_TARGETNAME.0 configure  -work-area-phys 0x20000000 -work-area-size 10000 -work-area-backup 1
15
set _FLASHNAME $_CHIPNAME.flash
16
17
flash bank $_FLASHNAME wch_riscv 0x00000000 0 0 0 $_TARGETNAME.0
18
19
echo "Ready for Remote Connections"

Gibt es eine Möglichkeit, die Verbindung über openocd schrittweise, 
manuell zu testen?

von F. P. (fail)


Lesenswert?

Muß es unbedingt openocd sein? Versuch's doch mal hiermit: 
https://github.com/ch32-rs/wlink

von Christoph M. (mchris)


Lesenswert?

>Muß es unbedingt openocd sein? Versuch's doch mal hiermit:
>https://github.com/ch32-rs/wlink

Danke für den Hinweis.
Mittlerweile habe ich den Fehler gefunden: Das gelbe Patchkabel im Bild 
hatte keinen Durchgang. Unglaublich, wie schlecht die Qualität dieser 
Steckkabel sein kann. Da kann man dann ewig suchen ..

von Christoph M. (mchris)


Lesenswert?

In meinem Benchmark sind die Risc-V weit abgeschlagen vom ARM-Cortex M33 
des Pipico2. Ich hätte erwartet, dass die Kerne des Pipico2-RiscV 
deutlich schneller als die des CH32V203 sind, aber sie scheinen ähnlich 
schnell.
1
Geschwindigkeitsfaktor reltaiv zum Arduino Nano:
2
CH32V203:    : ~5.3
3
PiPico RiscV : ~6
4
PiPico ARM   : ~51
1
/*
2
Program: Float Benchmark Arduino Framework
3
4
2025-06-26 mchris
5
*/
6
7
void setup() {
8
  Serial.begin(115200);
9
}
10
11
void loop() {
12
  float sum = 0;
13
  float x, y;
14
  Serial.println("start");
15
  uint32_t start = micros();
16
  for (uint32_t n = 0; n < 10000; n++) {
17
    float r = random(0, 1000) * 1e-6; // random float between 0 and 0.001
18
    x = sin(2 * PI * n / 1000 + r);
19
    y = cos(2 * PI * n / 1000 + r);
20
    sum += sqrt(x * x + y * y);
21
  }
22
  uint32_t dt = micros() - start;
23
  Serial.print("sum: ");
24
  Serial.println(sum, 6); // more decimals for float
25
  Serial.print("calculation time [us]: ");
26
  Serial.println(dt);
27
  Serial.println();
28
  delay(1000); // avoid flooding serial
29
}

von Christoph M. (mchris)


Lesenswert?

Die Frage ist, ob beim CH32V203 und beim Pipico2 wirklich 
Float-Libraries bentutzt werden. Vielleicht sind sie deshalb so langsam.

Beitrag "Re: CH32V003, float wirklich langsam?"

von Nemopuk (nemopuk)


Lesenswert?

Christoph M. schrieb:
> Das gelbe Patchkabel im Bild hatte keinen Durchgang.

Das hatte ich schon zweimal. Die haben in dem Fall einfach auf die 
Isolation gecrimpt.

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Nemopuk schrieb:
> Christoph M. schrieb:
>> Das gelbe Patchkabel im Bild hatte keinen Durchgang.
>
> Das hatte ich schon zweimal. Die haben in dem Fall einfach auf die
> Isolation gecrimpt.

Nemopuk schrieb:
> Das hatte ich schon zweimal. Die haben in dem Fall einfach auf die
> Isolation gecrimpt.

Ich hatte dieses Problem auch schon mehrfach vorliegen und es hat lange 
gedauert bis es entdeckt wurde!

von Johannes F. (jofe)


Lesenswert?

Apollo M. schrieb:
> Ich hatte dieses Problem auch schon mehrfach vorliegen und es hat lange
> gedauert bis es entdeckt wurde!

Wahrscheinlich ist es besser, sich diese Steckkabelchen selbst zu 
machen. Es gibt ja diese Dupont-Stecker (bzw. -Buchsen) und -Zangen zu 
kaufen. Dann kann man auch gleich vernünftige Litze mit 0,25mm² oder so 
nehmen, statt der AWG200 aus Eisen...

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.