Forum: Mikrocontroller und Digitale Elektronik 8051 MCU - Neuronales Netz programmieren?


von Jon (Gast)


Lesenswert?

Servus,

Diese Frage ist ernst gemeint, auch wenn sie ungewöhnlich klingt:

Ich würde gerne auf einem 8051 MCU ein eindaches Neuronales Netz 
implementieren bzw. mithilfe dessen eine simple Machine Learning 
Anwendung konzipieren. Ist das prinzipiell möglich?

Was bräuchte man dafür? Assembler oder Python - würde beides 
funktionieren?


Danke!

von MaWin (Gast)


Lesenswert?

Jon schrieb:
> Ist das prinzipiell möglich?

Ja.
Es ist halt witzlos klein.

> Was bräuchte man dafür?

Know how über die Algorithmen, na ja, notfalls geht copy&paste.

> Assembler oder Python - würde beides
> funktionieren?

Python auf einen 8051, nein.

von Lothar (Gast)


Lesenswert?

MaWin schrieb:
> Python auf einen 8051, nein

Auf 8051 ist C üblich aber wenn es wie Python sein soll es gibt noch 
BASIC

von Klaus S. (kseege)


Lesenswert?

Jon schrieb:
> Ich würde gerne auf einem 8051 MCU ein eindaches Neuronales Netz
> implementieren bzw. mithilfe dessen eine simple Machine Learning
> Anwendung konzipieren. Ist das prinzipiell möglich?

Der 8051 ist konzipiert für Bit- und Bytemanipulationen, da ist er 
schnell.
Ab 16bit Datenbreite werden Programme schnarchlangsam.

Es hindert einen aber auch niemand daran, über die Ports 4GByte RAM 
anzusprechen und einen beliebigen Prozessor zu emulieren, man muß nur 
eventuell etliche Jahre auf ein erstes Ergebnis warten (Vorbild: 
Teertropfenexperiment).

Schneller könnte es werden, wenn man die Firma Thinking Machines Corp." 
mit ihren 1-Bit-Prozessoren nachmacht, da wäre dann ein 8051 für 1 Bit 
zuständig.
Da ein CH552 nur 0,30 Euronen kostet, ist das vielleicht erschwinglicher 
als das Original.

Gruß Klaus (der soundsovielte)

von c-hater (Gast)


Lesenswert?

Jon schrieb:

> Ich würde gerne auf einem 8051 MCU ein eindaches Neuronales Netz
> implementieren bzw. mithilfe dessen eine simple Machine Learning
> Anwendung konzipieren. Ist das prinzipiell möglich?

Ja.

> Was bräuchte man dafür? Assembler oder Python - würde beides
> funktionieren?

Würde beides gehen.

Bloß praktisch nützlich? Eher nicht... Egal, ob Asm oder Python...

von Flieger (Gast)


Lesenswert?

Ohne Vorstellungen zum Problem ... ja - geht, nein - geht nicht.  Ich 
denke einen Hidden Layer mit zB 128 Knoten, 8 Aingangs- und 8 
Ausgangsknoten sollte moeglich sein. Taktung .. vielleicht 1.. 10 Hz. 
Die Tanh() Funktion natuerlich in Integer, als Tabelle hinterlegt. 
Trainieren, besser auf dem PC.

Was auch immer man damit machen kann. zB TicTacToe

von H. H. (Gast)


Lesenswert?

Flieger schrieb:
> Was auch immer man damit machen kann. zB TicTacToe

Kriegsspiele...

von MaWin (Gast)


Lesenswert?

Flieger schrieb:
> Ich denke einen Hidden Layer mit zB 128 Knoten, 8 Aingangs- und 8
> Ausgangsknoten sollte moeglich sein

So viel RAM hat der 8051 nicht.

Nimm 4 Eingänge und Ausgänge.

Klar ist das sinnlos, aber das ist wohl egal

von Gerald K. (geku)


Lesenswert?

Wenn es darum geht Erfahrung mit "Neuronale Netze" zu machen, würde ich 
auf den 8051 verzichten und eine Kombination von Raspberry Pi und Intel® 
Neural Compute Stick 2 einsetzen.

https://www.intel.de/content/www/de/de/support/articles/000057005/boards-and-kits.html

von Flieger (Gast)


Lesenswert?

Der 8051 kann doch externes RAM ansprechen..

von Lotta  . (mercedes)


Lesenswert?

Das geht auf dem 8052 nur in C / Assembler, weil Du ein
System mit extremen Bankswitching entwerfen mußt, um
Speicher zu scheffeln.
Wenn Du aber nen "Schachtürken" entwickeln willst,
ist der RASPI und python die bessere Wahl.


mfg

von Lothar (Gast)


Lesenswert?

Flieger schrieb:
> Der 8051 kann doch externes RAM ansprechen

Gibt doch auch 8051 mit "relativ" viel RAM zudem kann man die const 
Tabellen ja einfach in den Flash schieben mit code const

https://www.silabs.com/mcu/8-bit-microcontrollers/efm8-laser-bee

https://www.silabs.com/mcu/8-bit-microcontrollers/c8051f58x

von Lotta  . (mercedes)


Lesenswert?

Ich würde mindestens 5X64 Kbyte RAM nehmen
und 32-64 Kbyte Flash.

Segment1  Tabellen / Variablen 64 kbyte
Segment2  Eingangsnetz 64 Kbyte
Segment3  1. Innenlage 64 kbyte
Segment4  2. Innenlage 64 Kbyte
Segment5  Ausgangsnetz 64 Kbyte

Auch dies ist noch ganz schön lütt, da
ja noch der Massenspeicher fehlt.

mfg

von Stefan F. (Gast)


Lesenswert?

Flieger schrieb:
> Der 8051 kann doch externes RAM ansprechen..

Über Portexpander kann er beliebig viel RAM ansprechen. Es gibt auch RAM 
Chips mit serieller Schnittstelle.

von Atos (Gast)


Lesenswert?

Wenn es 8051 sein soll dann nimm einen DQ80251 von DCD, der ist schon 
etwas schneller, ist 32-Bit und soll zu 8051 sehr kompatibel sein.

von fns43449 (Gast)


Lesenswert?

Entwickle das Model in Python z.b. PyTorch, Tensorflow, ... auf einem 
Desktop Rechner, schau wie viele Ressourcen du für die Inferenz brauchst 
und wähle danach deine Hardware aus. Exportiere das trainierte Modell 
z.B. ONNX und implementiere die NN-Runtime auf deiner Hardware (in ASM, 
C, C++, Rust, ...).

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.