Hallo, ich nutze STM32 und habe den STLink. Da der Programmer nicht so
schön wie bei ATmel ist, und man nicht einfach die .elf oder Production
file auswählen und alles schreiben kann sondern das mit vielen einzelnen
Schritten geht, habe ich ein VB Programm geschrieben welches das mit der
stm32_programmer_cli.exe macht und einer CMD line. Das funktioniert auch
wenn ich das manuell mache und die eingebe flashed er die hex mit eep
und allen Fuses direkt in einem Rutsch. Super.
So sieht meine CMD line aus:
"C:\Program
Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\stm32_program
mer_cli.exe" -c port=swd -rdu -e all -d "MeinPfad/meinedatei.hex" -v
--skiperase -ob iwdg_sw=0 rdp=1 bor_lev=12
Jetzt habe ich ein VB Programm wo ich einmal den
stm32_programmer_cli.exe wähle, einmal den Pfad mit allen Production hex
angebe und dann listet mir das Programm alle möglichen Baugruppen auf,
ich kann die gewünschte wählen und auf PRogramm klicken - dann sollte
die CMD öffnen und der Ablauf starten.
Mein Programm erzeugt den o.g. String welchen ich so manuell in die CMD
kopieren kann und der passt auch 1:1 auch mit den "..." etc. Daran liegt
es nicht. Aber in der CMD selber steht dann immer nur:
"C:\Program" ist entweder falsch geschrieben oder konnte nicht gefunden
werden. => Das ist strange weil der String den ich übergebe alle Infos
enthält und nicht nur C:\Programm
Und dann wird unten der Pfad angegeben wo mein VB programm liegt.
So sieht meine VB Funktion aus:
1 | Dim ProgArgument As String = ""
|
2 |
|
3 | ProgArgument += ControlChars.Quote + My.Settings.PfadSTlink + ControlChars.Quote
|
4 | ProgArgument += " -c port=swd -rdu -e all -d "
|
5 | ProgArgument += ControlChars.Quote + My.Settings.PfadProduction + "\" + ComboBox1.SelectedItem + "\Firmware\bin\" + ComboBox1.SelectedItem + ".hex" + ControlChars.Quote
|
6 | ProgArgument += " -v --skiperase -ob iwdg_sw=0 rdp=1 bor_lev=12"
|
7 |
|
8 |
|
9 | Dim myprocess As New ProcessStartInfo("cmd.exe")
|
10 | myprocess.Arguments = "/k " + ProgArgument
|
11 | myprocess.WindowStyle = ProcessWindowStyle.Normal
|
12 | Process.Start(myprocess)
|