Hallo zusammen,
ich habe jetzt mehrere Tests mit dem USB-Bootloader auf einem Xmega256A3U gemacht.
Ausgehend von der Demo XMega_BootUSB habe ich versucht den Code in meinen zu integrieren.
Solange die Hex-File kleiner als ca. 110 kB ist, funktioniert das Update einwandfrei.
Ist die File größer, bekomme ich den Fehler: " Error: Cannot bulk write USB device".
Die Bootapp habe ich quasi so gelassen wie sie im Beispiel ist und die Mainapp in meine Applikation integriert um die Codegröße hinzubekommen.
Ich habe im Forum diesen Post von miparo vom 19.08.2014 gefunden:
Hallo Louis,
im Log unten sieht man wie die Adresse immer um 512 bytes(Page) erhöht wird.
gesendet als:
COMdlg.SendChar('A'); // Address
if CPUtyp = PDI then // XMEGA
begin
bb := (idx and $ff); // lo byte
COMdlg.SendChar(char(bb)); // lo byte
bb := (idx shr 8); //
COMdlg.SendChar(char(bb)); // hi byte
bb := (idx shr 16);
COMdlg.SendChar(char(bb)); // ext byte
end
else
begin // only Mega
bb := (idx shr 1); // div 2
COMdlg.SendChar(char(bb)); // lo byte
bb := (idx shr 9); // div 2
COMdlg.SendChar(char(bb)); // hi byte
if (OrgFlashEnd > $20000) then
begin // flash > 128kb
bb := (idx shr 17);
COMdlg.SendChar(char(bb)); // ext byte
end;
end;
Leider bleibt der Flashloader bei ca. 117kB stehen.
Wir suchen noch.
miparo
Das sieht ja nach einem ähnlichen Problem aus. Gibt es hierzu mitlerweile eine Lösung?
Ich verwende aktuell die Compiler Rev: 5.09.23 und Flash-Loader 4.1
Da der CDC-Treiber hervorragend funktioniert würden wir gerne umsteigen und auf einen FTDI verzichten, leider können wir den Code nicht unter 110 k halten und somit kein Update mehr durchführen.
Würde mich freuen, wenn es Ideen gibt.
Danke
Nils
ich habe jetzt mehrere Tests mit dem USB-Bootloader auf einem Xmega256A3U gemacht.
Ausgehend von der Demo XMega_BootUSB habe ich versucht den Code in meinen zu integrieren.
Solange die Hex-File kleiner als ca. 110 kB ist, funktioniert das Update einwandfrei.
Ist die File größer, bekomme ich den Fehler: " Error: Cannot bulk write USB device".
Die Bootapp habe ich quasi so gelassen wie sie im Beispiel ist und die Mainapp in meine Applikation integriert um die Codegröße hinzubekommen.
Ich habe im Forum diesen Post von miparo vom 19.08.2014 gefunden:
Quote by miparo
Hallo Louis,
im Log unten sieht man wie die Adresse immer um 512 bytes(Page) erhöht wird.
gesendet als:
Code
COMdlg.SendChar('A'); // Address
if CPUtyp = PDI then // XMEGA
begin
bb := (idx and $ff); // lo byte
COMdlg.SendChar(char(bb)); // lo byte
bb := (idx shr 8); //
COMdlg.SendChar(char(bb)); // hi byte
bb := (idx shr 16);
COMdlg.SendChar(char(bb)); // ext byte
end
else
begin // only Mega
bb := (idx shr 1); // div 2
COMdlg.SendChar(char(bb)); // lo byte
bb := (idx shr 9); // div 2
COMdlg.SendChar(char(bb)); // hi byte
if (OrgFlashEnd > $20000) then
begin // flash > 128kb
bb := (idx shr 17);
COMdlg.SendChar(char(bb)); // ext byte
end;
end;
Leider bleibt der Flashloader bei ca. 117kB stehen.
Wir suchen noch.
miparo
Das sieht ja nach einem ähnlichen Problem aus. Gibt es hierzu mitlerweile eine Lösung?
Ich verwende aktuell die Compiler Rev: 5.09.23 und Flash-Loader 4.1
Da der CDC-Treiber hervorragend funktioniert würden wir gerne umsteigen und auf einen FTDI verzichten, leider können wir den Code nicht unter 110 k halten und somit kein Update mehr durchführen.
Würde mich freuen, wenn es Ideen gibt.
Danke
Nils