Forum: Projekte & Code Vier Gewinnt für CH32V003 und Linux-Toolchain


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Beim (immer noch andauernden) Evaluieren was ein CH32V003 kann (und was 
nicht) habe ich ein altes Spieleprogramm auf den Chip portiert, der im 
Ursprung einmal als JavaScript kodiert, danach auf einen ATmega portiert 
war.

Jetzt habe ich das weiter auf eben einen CH32V003 portiert. Hier ging es 
mir erst einmal nur darum, die "KI" des Spiels auf den Chip zu portieren 
um zu sehen, wie groß das Compilat werden wird. Aus diesem Grund 
geschieht die Visualisierung des Spiels in in einem seriellen Terminal 
(Putty, Picocom o.ä.).

Wahrscheinlich werde ich dieses Programm noch weiter bearbeiten, damit 
das VierGewinnt auch in Verbindung mit einem grafischem Display 
funktioniert.

Das Programm selbst setzt auf dem CH32FUN von Christian Lohr auf, das 
ich auf das wesentliche "gestrippt" habe, weil ich definitiv andere 
MCU's als den V003 nicht bearbeiten möchte.

Zudem habe ich dann das Framework selbst in einen Ordner im 
Projektverzeichnis abgelegt und das Makefile meinen Gegebenheiten 
angepasst. Hier heißt das, dass systemweit der Compiler 
riscv-none-elf-gcc sowie das Kommandozeilentool minichlink verfügbar 
sein muß.

Das Makefile selbst wurde so bearbeitet, dass es bei einem Aufruf nicht 
mehr automatisch einen Compiler-Linkergang und einen Flashvorgang 
vornimmt, sondern lediglich compiliert und linkt. Ein Flashvorgang muß 
mit

make flash

gestartet werden.

Ein Auspacken des hier angehängten Archivs in ein Verzeichnis und ein 
dortiges Starten des Makes reicht aus um das Programm zu übersetzen.

Die zusätzlich zum VierGewinnt Spiel benötigten Dateien habe ich in 
einer kleinen Dokumentation beschrieben und hier ebenfalls im Anhang 
hinzugefügt.

Wenn das jemand ausprobieren mag: Viel Spaß damit.

Zur KI:

Die KI ist "relativ" spieleschwach, da ich meine stärkere KI des Spiels 
(Mini-Max-Algorithmus) aufgrund des wenigen RAM nicht verwenden konnte. 
Für ungeübte Spieler und Kinder kann das aber dennoch schon eine 
Herausforderung sein, gegen das Programm zu gewinnen.

Nein, ich brauche keine Belehrung über andere Chips der CH32-Familie. 
Ein (deutlich) und schwer zu schlagendes VierGewinnt habe ich für einen 
STM32F103 / F401 schon (auch mit Display) realisiert.
Hier geht es "nur" darum, was eben der V003 und was nicht!

von Vanye R. (vanye_rijan)


Lesenswert?

> Jetzt habe ich das weiter auf eben einen CH32V003 portiert.

Wenn du damit fertig bist koenntest du noch einen der alten Schachkernel 
portieren. Wollte ich auch immer schon mal machen. .-)

> Das Programm selbst setzt auf dem CH32FUN von Christian Lohr auf, das
> ich auf das wesentliche "gestrippt" habe,

Hehe, so arbeite ich auch.

> Beim (immer noch andauernden) Evaluieren was ein CH32V003 kann

Eigentlich gibt es da gar nicht so viel zu evaluieren. Sie koennen im 
grossen und ganzen das was im Datenblatt steht. Haben IMHO relativ 
schoene Peripherie, also adc, uart usw. Interessant ist das sie beim 
SOT8 mehrere Pins zusammen gebondet haben. Doof ist das sie beim SOT16 
das nicht gemacht haben und man so eines der SPI Signale nicht zur 
Verfuegung hat. :-(

Die einzig echte Schwaeche ist IMHO das sie nicht doll bei Lowpower 
sind.

Vanye

von Ralph S. (jjflash)


Lesenswert?

Vanye R. schrieb:
> Wenn du damit fertig bist koenntest du noch einen der alten Schachkernel
> portieren. Wollte ich auch immer schon mal machen. .-)

Na ja, Schach ist so eine Sache, da bin ich schon länger dran 
(allerdings nicht für CH32). Grundsätzlich läuft das super auf STM32F4 
... Die Schach-KI ist halt nicht von mir. Das VG hier dann doch.

Beim Schach will ich bestimmt schon 3 oder 4 Jahre das auf einem 
grafischen Display umsetzen ... und habe das nie gemacht. Immer nur die 
übliche Schach-Textnotation.

Im Moment habe ich dieses VG hier auch auf einem Display am laufen, aber 
für grafische Dinge habe ich gerade nicht meine Tools zur Hand (bin 
gerade stationär im Krankenhaus und auf dem Rechner den ich mit habe, 
habe ich nicht alle Tools drauf).

:-) Zeit, Dokumentationen zu schreiben

von Vanye R. (vanye_rijan)


Lesenswert?

> Na ja, Schach ist so eine Sache, da bin ich schon länger dran
> (allerdings nicht für CH32). Grundsätzlich läuft das super auf STM32F4

Klar, laeuft das auf einem F4. Es lief ja auch mal auf einem ZX81 mit 1k 
Ram. :-D
Mit etwas suchen findet man diverse alte C-Sourcen im Netz die auf so 
einem kleinen Controller lauffaehig sein sollten. Ich hab mir die 
schonmal weggelegt und wollte das irgendwann mal machen. Das schoene 
daran ist ja das man so einen Schachcomputer hat gegen den man noch 
gewinnen kann. Und Grafik braucht man noch nicht mal unbedingt. Es 
reicht ja wenn da am Ende "c2-c4" steht.
Den Rest kann man dann ja je nach Faehigkeit im Kopf oder auf einem 
schoenen Holzbrett. .-)

Vanye

von Ralph S. (jjflash)


Lesenswert?

Vanye R. schrieb:
> Es
> reicht ja wenn da am Ende "c2-c4" steht.

Für solche Sachen gibts doch schon seit 1000 Jahren das Minimalschach 
für den AVR ... und in extrem kryptischem C-Code

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

... so, jetzt habe ich auch einmal die Version mit dem Display gemacht 
(aus verschiedenen Gründen hatte ich jetzt einmal etwas Zeit) und habe 
dann auch gleich einen Bug aus meinem Makefile entfernt.

Auch hier gilt wieder: es bedarf eines systemweit installierten Compiler 
und einem Flashprogram 'minichlink'.

Optionen für make sind:

<kein Argument>  build, clean, flash

In Ermangelung meines normalen Equipments (und somit einem installierten 
Programm zum Erstellen eines Schaltplans) habe ich einen Schaltplan im 
Ascii-Format erstellt, allerdings sollte sowieso klar sein, wie das zu 
verschalten ist: Außer 4 Tasten, dem Anschluß des Displays und  2 
Kondensatoren über den Betriebsspannungen braucht die Schaltung nichts 
weiter.

Zum Display ist zu sagen: ich hatte ein ST7735 verwendet. In der Datei 
stxx_display.h im Verzeichnis 'include' kann jedoch auch ein anderes 
Display ausgewählt werden und auch die Auflösung (die momentan auf 
128x160 Pixel eingestellt ist) kann durch ein anderes Display (bspw. 
128x128) ersetzt werden.

Wer das Dingelchen aufbaut:

Viel Spaß damit.

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.