Forum: Projekte & Code Tips zum ch341a Programmer


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter S. (petersieg)


Lesenswert?

Kein Projekt von mir - nur Tips zu anderen Projekten und was ich damit 
gemacht habe, in der Hoffnung, das es ggf. anderen etwas weiter hilft.

Jegliche Anwendung auf eigene Gefahr. Ich bin nicht verantwortlich für 
entstandene Schäden.
Keine Garantie auf Aktualität der Internet Links.
Using on your own risk. I'm not responsible for any damage that can 
occur!

*Über ebay sah ich den ch341a Programmer (Black):*

Ohne Adapter <5€: https://www.ebay.de/itm/145699744549
Mit Adapter <10€: https://www.ebay.de/itm/186725049307

Diese Programmer können X25Y = SPI Flash und X24Y I2C Flash 8-Pin 
Bausteine
programmieren, Des Weiteren auch z.B. FRAM mit 25er Pinout und 93/5xx 
Bausteine mit
Adapter! Für 1,8V Bausteine wird ebenfalls ein entsprechender Adapter 
benötigt!

*Links mit Anleitungen:*
https://www.hardwareluxx.de/community/threads/ch341a-usb-programmer-mainboard-uefi-bios-wiederherstellen-windows.1312607/
https://www.onetransistor.eu/2023/10/imsprog-ch341a-programmer-linux.html
https://www.onetransistor.eu/2017/08/ch341a-mini-programmer-schematic.html
https://www.onetransistor.eu/2018/11/use-ch341a-with-asprogrammer-on-windows.html
http://cvieth.bplaced.net/elektronik_ch341a.html
https://jensd.be/980/linux/bios-or-spi-programming-on-windows-or-linux-using-a-ch341a

Unter Windows 11 habe ich NeoProgrammer verwendet: 
https://drive.google.com/file/d/1sq_gOTvRnj1gtqvJPOQpNQwBLG6tmYJc/view?usp=drive_link
Open Source Alternative: AsProgrammer: 
https://github.com/nofeletru/UsbAsp-flash/releases

Unter MacOS Sonoma habe ich mit IMSProg rumgespielt: 
https://github.com/bigbigmdm/IMSProg
(Das sollte auch der geeignete Kandidat für Linux sein)

(Homebrew hatte ich bereits installiert):
Benötigte Pakete installieren: brew install qt@5 libusb cmake pkgconf
Download IMSProg von github (unzip) und ins Verzeichnis gehen, wo 
build_all.sh liegt.
build_all.sh ausführen.

Das Script build_all.sh übersetzt und bindet die Sourcen.
Danach erfolgt automatisch allerdings auch ein Installieren und
Die MaxOS typischen <Programname>.app Verzeichnis werden in Programme 
(Applications) erstellt.
Dabei ist in z.B. IMSProg.app/Contents/MacOS nicht das ausführbare 
Programm, sondern ein Link
zum eigentlichen Programm unter /usr/local/bin.

Nun - alles erledigt das build_all.sh Script - bis auf:
Die IC Datenbank IMSProg.Dat musste ich noch manuell in ein Verzeichnis:
$HOME/.local/share/imsprog/IMSProg.Dat
kopieren - ansonsten meldet sich das Programm mit: Datenbank nicht 
gefunden.
(Hier sollte besser auch direkt gesagt werden, WO er es nicht gefunden 
hat - erspart das suchen
im Sourcecode).

Nun nach einem Test funktionierte alles, wie es soll.. und die kleine 
Geschichte könnte hier nun
zu Ende sein.. ;-)

Mich störte allerdings:
Das das build_all.sh auch alles ungefragt installierte. Ich mag es 
lieber, wenn das zwei getrennte
Vorgänge sind! Zweitens, habe ich nun das ganze QT@5 "Geraffel", obwohl 
ich es nur für dieses eine
Programm nutze.

Also hatte ich zuerst versucht heraus zu findet, welche dylibs etc. das 
IMSProg benötigt mittels otool -L
und diese dann mittels zip -u -y -r mit in ein Zip zu binden. Nun das 
funktionierte so auch nach mehrmaligen
Nachbinden immer noch fehlender Libs, die von anderen Libs benötigt 
wurden, nicht.
Zuletzt fehlten noch plugins für QT. Als ich diese auch mit dazu gepackt 
hatte, wußte das Programm
immer noch nicht, welches es nun benutzen sollte?! Also fehlte ihm immer 
noch etwas.. Im Zip wurde alles
immer mit absolutem Pfad von / (Root) aus eingepackt und mit sudo unzip 
<ZIP> -d / ausgepackt.
Kein Erfolg.

Dann habe ich mal gegoogelt. Ein Hinweis auf macdeployqt führte auch zu 
nichts weiter.

Hier: https://github.com/SCG82/macdylibbundler
fand ich dylibbundler - las sich sehr interessant.

Erster Aufruf nach dem make: dylibbundler -cd -of -f -q -a ./IMSProg.app
auf einer lokalen Kopie von IMSProg.app brachte genau nichts. Keine 
Fehlermeldung, aber auch sonst nicht.
Start, Stop, Nichts.
Aber da ist ja auch nur ein Link zum eigentlichen Programm gewesen 
(siehe oben).
Also link durch richtiges Programm ersetzt (aus /usr/local/bin/IMSProg 
kopiert)
Zweiter Start - Hoppla - lauter Abhängigkeiten werden gefunden und in 
ein neues Unterverzeichnis
Frameworks kopiert und im Executable werden die Referenzen auf die 
lokalen Kopien geändert - wow!

Okay - wie jetzt testen mit nur einem Sonoma System?

Also mit brew remove gt@5 alles QT Zugehörige wieder deinstalliert.
mit uninstall.sh im IMSProg Verzeichnis alles deinstalliert.
Dann das durch dylibbundler angepasste IMSProg. app ausführen (open 
IMSProg.app vom Terminal)
Und Programm startet und gibt wieder die Meldung aus, das die IC 
Datenbank nicht gefunden wurde,
läuft aber sonst!
Also die IC Datenbank IMSProg.Dat wieder in das Verzeichnis:
$HOME/.local/share/imsprog/IMSProg.Dat
kopiert und erneuter Start und et voila - alles läuft wie es soll ;-)

Unter einem etwas älterem Monterey, allerdings wird das nicht 
ausführbare Icon angezeigt und nach
Doppelklick meldet MacOS, das mind. MacOS 14.7 oder höher benötigt wird 
:-(
(Keine Ahnung, wie ich das ggf. anpassen kann - Unter Monterey kann 
Homebrew anscheinend QT5 nicht einfach
installieren, sondern will es kompilieren und benötigt dazu ein volles 
Xcode - nicht nur die Commandine Tools!?)
Nun - läuft jetzt hier ersteinmal und passt so.

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.