Forum: Mikrocontroller und Digitale Elektronik STK500.exe ohne AVR-Studio installieren / Installing STK500.exe without AVRStudio


von Robert H. (kee4)


Lesenswert?

Hallo zusammen,
ich hoffe ich bin im richtigen Forum und nicht off topic.

Seit ein paar Tagen veruche ich STK500.exe ohne der Installtion von
AVR-Studio zum Laufen zu bringen.
Ich möchte das Programm als Produktionsprogrammer in unserer Elektronik-
fertigung einsetzen.

Was habe ich bis jetzt gemacht?
- Ich habe das Verzeichnis STK500 von meienm PC (wo AVR-Studio 4.18 
installiert ist) auf einen PC in der Fertigung kopiert
- Ich habe die Dateien "AvrCommon.dll" and "Stk500Common.dll"" 
(regsvr32.exe AVRCommon.dll and regsvr32.exe Stk500Common.de) registiert
- Ich habe herausgefunden das ich die Datei auch "SComm.dll" kopieren 
muß
- Ich habe die Datei "SComm.dll" registiert

So weit so gut:
Ich habe meine Batchdatei gestartet!

+--------------------------------------------------------------------+
|                                                                    |
| C:\TestProject>ISPProgrammer 1                                     |
|                                                                    |
| ~ STK500 command line programme, v 2.3 Atmel Corp                  |
| ~ Connected to AVRISP mkII on port USB:000200090638                |
| ~ Setting ISP frequency to 125.0 Khz                               |
| ~ Could not load device parameters for ATMEGA328                   |
|                                                                    |
| C:\TestProject>                                                    |
|                                                                    |
+--------------------------------------------------------------------+

UND AB HIER HABE ICH EIN PROBLEM:
!!! Could not load device parameters for ATMEGA328

Ich suche nach einer Lösung wie STK500 die "Partdescriptionfiles" 
findet!

Das habe ich schon probiert:
- alle .xml-Files in das STK500-Verzeichnis kopiert
- alle .xml-Files in ein Verzeichnis "Partdescriptionfiles" im 
STK500-Verzeichnis kopiert
- Das Verzeichnis "Partdescriptionfiles" in den Suchpfad gesetzt

Übrigens:
Wenn ich AVR-Studio auf dem Produktions-PC installiere dann funktioniert 
alles. Aber ich will keine Programme die man eignetlich nicht nutzt auf
allen ProduktionsPCs installieren.

Diesen Artikel habe ich schon gelesen:
http://www.avrfreaks.net/forum/stk500exe-required-components-installation
aber er endet beim Problem der "Partdescriptionfiles"

=> Nach der Englischen Übersetzung findet Ihr die verwendete Batchdatei 
...

Vielen Dank im voraus
Gruß
ROBERT



Hallo together,
I hope I have selected the right forum and I'm not off topic. Sorry for 
my english - I'm german.

Since a few days, I try to "install" STK500.exe to run without an 
installed "AVR Studio". I need
this to run STK500.exe as a production-programmer in our fabrication.

What did I do until yet?
- I copyed the directory "STK500" from my PC (where AVR Studio 4.18 is 
installed) to a PC at the fabrication
- I registerd "AvrCommon.dll" and "Stk500Common.dll"" (regsvr32.exe 
AVRCommon.dll and regsvr32.exe Stk500Common.de)
- I found out that i have to copy "SComm.dll" to my Production-PC
- I registerd "SComm.dll" since that, there i a USB-Communication 
between ASTK500.exe an my "AVR ISP mk II(clone)"

So far so good:
- I start my Batch-File

+--------------------------------------------------------------------+
|                                                                    |
| C:\TestProject>ISPProgrammer 1                                     |
|                                                                    |
| ~ STK500 command line programme, v 2.3 Atmel Corp                  |
| ~ Connected to AVRISP mkII on port USB:000200090638                |
| ~ Setting ISP frequency to 125.0 Khz                               |
| ~ Could not load device parameters for ATMEGA328                   |
|                                                                    |
| C:\TestProject>                                                    |
|                                                                    |
+--------------------------------------------------------------------+

AND NOW THE PROBLEM:
!!! Could not load device parameters for ATMEGA328

I'm searching for an soulution to make STK500.exe to find the 
"Partdescriptionfiles"

I already tryed:
- copy all .xml-Files to the SKT500-Directory
- copy all .xml-Files to a folder called "Partdescriptionfiles" in the 
SKT500-Directory
- add the Partdescriptionfiles-Directory to the searchpath

When I'm installing ACVRStudio to the ProductionPC - then it works fine, 
but i don't like to install
"programms" never used to all the PCs in our Electronic-Production.

I reed this article too:
http://www.avrfreaks.net/forum/stk500exe-required-components-installation
but it stops at the Partdescriptionfiles-Problem

Thanks a lot
regards
Robert

------------------------------------------------------------------------ 
----------------------------
:StartOfBatch
@echo off
MODE CON:cols=40 lines=25
COLOR F0
TITLE STK500/MKII GANGPROGRAMMER/Instanz "%1"
cls

:STK500
set PrgPath="C:\STK500"

:Programmer
REM USBPortIDs für Aufruf von 4 Instansen setzen
if %1==4 set USBPortID=000200090639
if %1==3 set USBPortID=000200090638
if %1==2 set USBPortID=000200090637
if %1==1 set USBPortID=000200090636

set Port=USB
set PrgMode=s
set ISPFrq=125kHz
:Projekt
set Device=ATMEGA328
set ProjektPath=%~dp0
set HexFile=S12A_HWT_BL.%1.hex
set EEPFile=S12A_HWT.eep

set lfuse=E2
set hfuse=CC
set efuse=FC
set lock=EC
set Fuses=%hfuse%%lfuse%

del %0.%1.err
goto start1
goto EndeBatch

:start1
%PrgPath%\stk500.exe -c%Port% -m%PrgMode% -I%ISPFrq% -d%Device% -e 
-f%Fuses% -E%efuse% -f%Fuses% -G%efuse%
if %errorlevel%==1 goto ErrorFuses
echo fertig Fuses

%PrgPath%\stk500.exe -c%Port% -m%PrgMode% -I%ISPFrq% -d%Device%    -pb 
-if%ProjektPath%\%HexFile% -ie%ProjektPath%\%EEPFile%
if %errorlevel%==1 goto ErrorHexFile
%PrgPath%\stk500.exe -c%Port% -m%PrgMode% -I%ISPFrq% -d%Device%    -vb 
-if%ProjektPath%\%HexFile% -ie%ProjektPath%\%EEPFile%
if %errorlevel%==1 goto ErrorHexFile
echo fertig Hex/EEP-File

%PrgPath%\stk500.exe -c%Port% -m%PrgMode% -I%ISPFrq% -d%Device% 
-l%lock%  -L%lock%
if %errorlevel%==1 goto ErrorLockbits
echo fertig LockBit

goto EndeBatch

:ErrorFuses
echo Fehler beim "Fuses" programmieren : Errorlevel=%errorlevel%
goto ErrorEnd

:ErrorHexFile
echo Fehler beim "Hex/EEP-File" programmieren : Errorlevel=%errorlevel%
goto ErrorEnd

:ErrorEEPFile
echo Fehler beim "EEP-File" programmieren : Errorlevel=%errorlevel%
goto ErrorEnd

:ErrorLockbits
echo Fehler beim "Lockbits" programmieren : Errorlevel=%errorlevel%
goto ErrorEnd

:ErrorEnd
pause


:EndeBatch
echo %errorlevel% >%0.%1.err
pause
------------------------------------------------------------------------ 
----------------------------

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Spräche denn was dagegen, statt stk500.exe ein AVRDUDE zu nehmen?

Vermutlich verstößt du sogar formal gegen Atmels Lizenzbedingungen,
wenn du das stk500.exe einzeln irgendwohin transferierst. Davon
abgesehen, habe ich auch keine Idee, wie das Teil seine XML-Dateien
sucht, möglicherweise mit einem registry key, den der Installer des
Studio einträgt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Jörg W. schrieb:
> möglicherweise mit einem registry key

Bei mir finden sich die im Bild sichtbaren Registry Keys

von Robert H. (kee4)


Lesenswert?

Hallo Hr. Wunsch,

Danke erst mal für die Antwort.

Ich habe avrdude bereits auf automatsichen Testsystemen laufen.
Windows 7  Professional  x32
AVRDUDE funktioniert dort mit ein paar Einschränkungen:
Wenn ich avrdude aus einer Batchdatei dreimal hintereinander starte
hängt sich der zweite Aufruf von AVRDUDE auf.
AVRDUDE kommt vom ersten Aufruf zurück, aber der Programmer scheint
noch nicht fertig zu sein.
Wenn der zweite Aufruf von AVRDUDE auf den MKII zugreifen will hängt das
Programm.

Batchjob1.bat
   c:\avrdude\avrdude.exe ...-p fuses
   c:\avrdude\avrdude.exe ...-p flash
   c:\avrdude\avrdude.exe ...-p eeprom
doesn't work

Batchjob2.bat
   c:\avrdude\avrdude.exe ...-p fuses
   DosDelay(500msec)
   c:\avrdude\avrdude.exe ...-p flash
   DosDelay(500msec)
   c:\avrdude\avrdude.exe ...-p eeprom
works

Deßhalb habe ich mich entschlossen es mit STK500 zu probieren.

Die Programmier-PCs laufen unter Windows 7 professional X64 und dafür 
habe
ich noch keine saubere funktionierende Lösung gefunden den 
LIBUSB-Treiber
unter W7 64-Bit zum Laufen zubringen.
Der Jungo-Treiber lässt sich hier ohne Problem installieren.

Gruß und Danke
ROBERT

von Robert H. (kee4)


Lesenswert?

Hallo Matthias Sch.
in der Regitry habe ich schon gesucht. Aber nur nach 
"Partdescriptionfiles"
diese Einträge habe ich noch nicht gesehen.
Ich werde es morgen testen ...

Danke einstweilen.

Gruß
ROBERT

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Robert H. schrieb:
> Deßhalb habe ich mich entschlossen es mit STK500 zu probieren.

Klar, wenn man eins nicht zum Laufen bekommt, statt den Fehler zu
suchen, lieber das nächste nehmen.  Dann hat man wenigstens neue
Fehler. ;-)

Erstens kann man natürlich alle Programmieranweisungen bei
AVRDUDE in eine Kommandozeile schreiben, dann gibt es nur eine
ISP-Session, und alles sollte funktionieren.

Zweitens wäre noch interessant, welche AVRDUDE-Version das war.
Beim AVRISPmkII sind eigentlich keine „Denkpausen“ nötig, aber ich
glaube mich zu erinnern, dass da früher mal ein (überflüssiger) Reset
der Schnittstelle im Code drin war.  Sollte eigentlich beseitigt sein.

(Das JTAGICEmkII hat intern immer so einen Reset gemacht, da es noch
zwischen RS-232 und USB umschalten musste.  Dagegen half wirklich nur
ein sleep, um die Zeit zu überbrücken, bis das OS das Teil wieder in
den Bus einsortiert hat.)

Ich habe aber selbst kein Windows (höchstens innerhalb einer VM),
daher kann ich es jetzt gerade nicht ausprobieren.

von Uwe K. (ukhl)


Lesenswert?

Der einfache Weg ist das AVR-Studio zu installieren und nur das zu 
Verwenden was man wirklich braucht. Das ist sicher besser, als die EXE 
mit "Hackversuchen" zum laufen zu bekommen.

Die Zeiten wo PC's in der Fertigung zu klein waren, sollten lange der 
Vergangenheit angehören.

Keine Probleme schaffen, wo keine sind.

von Robert H. (kee4)


Lesenswert?

Jörg W. schrieb:

Hallo Jörg,
>> Deßhalb habe ich mich entschlossen es mit STK500 zu probieren.
> Klar, wenn man eins nicht zum Laufen bekommt, statt den Fehler zu
> suchen, lieber das nächste nehmen.  Dann hat man wenigstens neue
> Fehler. ;-)
Ein wenig zu meiner Entschuldigung:
Da saß mir einfach die Fertigung und die Zeit im Nacken, deßhalb habe
ich das ganze zurückgestellt.
Zum Fehler finden habe ich am 6.11 den Thread
"avrdude: stk500v2_recv_mk2: error in USB receive (AVRDUDE 6.1)"
eröffnet!

> Zweitens wäre noch interessant, welche AVRDUDE-Version das war.
> Beim AVRISPmkII sind eigentlich keine „Denkpausen“ nötig, aber ich
> glaube mich zu erinnern, dass da früher mal ein (überflüssiger) Reset
> der Schnittstelle im Code drin war.  Sollte eigentlich beseitigt sein.

Probiert mit AVR-Dude: 6.0.1 und 5.11

Ich werde bei Gelegenheit das ganze weiter Testen und berichten!

Danke für die Antwort

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Robert H. schrieb:
> Zum Fehler finden habe ich am 6.11 den Thread
> "avrdude: stk500v2_recv_mk2: error in USB receive (AVRDUDE 6.1)"
> eröffnet!

Ja, den habe ich damals nicht gesehen.  Habe dort geantwortet.

Ja, der Patch dafür ist noch nicht drin, wird im nächsten Release
dabei sein.

von Robert H. (kee4)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
vielen Dank für eure Hilfe. Es läuft bei mir am Platz in einer VM:
(Der entscheidende Tip kam von MSchoeldgen - DANKE dir)

Hier die Zusammenfassung:
- Den Jungutreiber installiert aus dem Paktet:
  (C:\Program Files (x86)\Atmel\AVR Tools\AVRJungoUSB.exe)

- Den Ordner ...\SKT500 von AVRStudio in Verzeichnis kopiert
  (z.B. C:\STK500)
- Den Ordner ...\Partdescriptionfiles kopiert
  (z.B. C:\STK500\Partdescriptionfiles)

- die Dateien "AvrCommon.dll", "Stk500Common.dll" und"SComm.dll" kopiert 
und registriert
  (Kopiert nach C:\STK500 und mit "regsvr32.exe dllname.dll" registiert
   Achtung! Als Administrator machen)

- Dann von meinem PC den Schlüssel HKLM\Software\Wow6432\Atmel\AVRTools
  exportiert und im Windows meiner Testumgebung importiert

- Den Registryeintrag HKLM\Software\Wow6432\Atmel angepasst:
  AVRToolsPath   Reg_SZ C:\ST500\
  AVRToolsPlugin Reg_SZ C:\ST500\
  StudioPath     Reg_SZ C:\ST500\
- Den Registryeintrag HKLM\Software\Wow6432\Atmel\STK500 angepasst:
  IniPath        Reg_SZ C:\ST500\
  STK500Path     Reg_SZ C:\ST500\
  UpgradePath    Reg_SZ C:\ST500\

Ich hoffe ich habe jetzt keinen Schritt den ich ausgeführt habe ver-
gessen. Somit sollte diese ein kleine Anleitung sein.
(Ob es unbedingt einfacher ist als gleich AVRStudio zu installieren muß 
dann jeder selber wissen - ich habe jedefalls einiges daraus gelernt)

HINWEIS: Ich abe jetzt nicht mehr geprüft ob es die Lizenz von ATMEL 
erlaubt, STK500 alleine ohne AVR-Studio zu installieren!

Gruß und DANKE euch
Robert

Angehängt habe ich
- den Registryschlüssel für win Win7 x64 System
- und eine Bespielbatchdatei für den Programmierjob mit 4 Programmern

von Robert H. (kee4)


Lesenswert?

ANMERKUNG VON MIR:

Wenn sich "SComm.dll" nicht registieren lässt wie auf meinen 
Produktivrechnern, dann fehlt "WDAPI1011.dll" in "C:\Windows\SysWOW64".

Ich habe diese DLL dann nur in das angegebene Verzeichnis kopiert und
dann lies sich "SComm.dll" registrieren.

Seltsam auf den VMs war diese DLL von der Installation her vorhanden. 
Auf
den Produktivrechnern nicht. Beide Maschinen sollten vom vom Update aber
auf aktuellen Stand sein!

Und für mich noch unverständlicher: Dependency Walker sagte auf beiden
Systemn dass WDAPI1011.dll fehlt!

Gruß ROBERT

: Bearbeitet durch User
von Robert H. (kee4)


Lesenswert?

Hallo zusammen,

Die oben beschriebene Lösung hat auf meinen 64-Bit-Maschinen 
funktioniert.
Aber einfaches "rein Kopierern" und "registrieren" von "WDAPI1011.dll" 
hat
hier nicht funktioniert.

Da mich das Problem interessierte habe ich nochmal etwas Zeit spendiert
und das ganz als "Fortbildung" gesehen.

Durch Vergleich einer Installation auf einer VM wo es und funktioniert 
und
einen echten 32-Bit-System habe ich mit "Dependency Walker" 
festgestellt,
dass MFC90.dll und MSVCR90.dll fehlt.
Diese Dateien bringt
Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package
mit. (https://www.microsoft.com/de-DE/download/details.aspx?id=26368)

Nach dem Runterladen und Installiere, lies sich "SComm.dll" ohne 
Probleme
installieren. Jetzt läuft STK500 "stand alone" auf einem Win7 
32Bit-System.

So weit diese ergänzende Info für alle die es interessiert.

Gruß und ALLEN VIELEN DANK FÜR DIE HILFEN
Robert

von Robert H. (kee4)


Lesenswert?

Hallo zusammen,
vielleicht noch ein Hinweis weil die Frage immer wieder auftauchte:

WARUM VERWENDE ICH NICHT "AVRDUDE"?

Ich habe AVR-Dude auf unseren automatischen Testsystemen die noch unter
Win7 32-Bit laufen im Einsatz und bin hoch zufrieden.

Aber wir haben auch reine Chip-Programmierarbeitsplätze die auf Win7x64
umgestellt wurden. Und hier habe ich Probleme mit AVRDude. Ich habe noch
keine einfache Lösung gefunden AVRDUDE und Win7x64 zum Laufen zu 
bekommen.

- mein Probelem ist dabei der LIBUSB-Treiber der unter x64 nicht läuft

Habe schon versucht den Treiber mit "DriverSignatureEnhancer" zu 
signieren
aber das ganze war nie von Efolg gekrönt.

Irgendwann will ich keine zwei verschieden Programmiersystem mehr 
betreuen
sondern es sollte alles gleich sein.

Gruß Robert

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.