Autor Thema: AskSin++ Library  (Gelesen 168160 mal)

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1380 am: 04 November 2019, 08:50:52 »
Der Bootloader schreibt ja nur die Pages die per OTA übertragen werden.
Nur beim Selbstupdate ist es anders, da dort die Routine sehr klein sein muss.

Wenn man per OTA den Bootloader aktuallisiern will, muss ja folgendes passieren:

1. neuen Bootloader per OTA flashen an die Adresse 0x0000 (wie eine normale Firmware)
2. an Adresse 0x6FFC muss ein Magciword geschrieben werden
3. bei Booten prüft der Bootloader, ob das Magicword an Adresse 0x6FFC steht.
4. wenn Magicword gefunden wurde, liest der Bootloader ab Adresse 0x0000 und schreibt 30 Pages ab Adresse 0x7000. Dadurch aktualisiert sich der Bootloader selbst

Bei 30 Pages wird aber auch die Page 0x7F00 überschrieben oder hab ich mich da verrechnet?

Zitat
/**
 * The updateBootloaderFromRWW function is placed in the topmost page and cannot be changed via OTA Update
 * This must not be touched for OTA update otherwise you may brick the bootloader and need and ISP update
 */

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1381 am: 08 November 2019, 21:17:05 »
Hmm ich bekomme es irgendwie nicht so recht hin eine Firmware zu bauen, die man per OTA flashen könnte.
Entweder passt beim Konvertieren ins eq3 Format was nicht oder aber das flash-ota meckert rum.

Offline papa

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1677
Antw:AskSin++ Library
« Antwort #1382 am: 09 November 2019, 07:43:51 »
Was machst Du denn genau ? Meine Glaskugel ist gerade kaputt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1383 am: 09 November 2019, 08:40:50 »
Sorry, war gestern etwas kurz angebunden ...

Habe mich am Makefile versucht um damit eine Firmware für das OTA Update des Bootloaders zu bauen.
Soweit wird auch alles gebaut und das Magicword landet auch an der richtigen Stelle im Flash.

Hier mal die letzten Zeilen der Firmware.
Wie man sieht kommt das Magicword an die Adresse 6FFC.
Was mich aber vewundert ist, die Zeile davor.
Da wird ja nur von 30 bis 34 hochgezählt ...
:100E90008CEB91E00E94EA0681E00E94EE050E9440
:100EA000CC030E94F203FB01DC0102C005900D920D
:100EB00041505040D8F70895FB01DC0102C0019079
:0E0EC0000D9241505040D8F70895F894FFCF9E
:100ECE003031323334353637383941424344454672
:026FFC0011473B
:00000001FF

Wenn ich die angehängte Hex-Datei umwandel und dann mit flash-ota versuche zu übertragen, bekomme ich folgenden Fehler:
HomeMatic OTA flasher version 0.103-git

Reading firmware from Bootloader-AskSin-OTA-Atmega328p_OTA_201911090831.eq3...
can't get length information!

Ich hab irgendwie die Vermutung, das es daran liegt, dass der Flash nicht zusammenhängend ist.
Also, dass erst vorne alles hingeschrieben wird und dann noch was am Ende.
« Letzte Änderung: 09 November 2019, 08:46:54 von Xent »

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1384 am: 09 November 2019, 09:04:35 »
Jetzt hab ich mal die erste Page mit dem Magicword gefüllt und den Bootloader ab 0x1000 anfangen lassen und schon akzeptiert auch das flash-ota die Datei ...

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1385 am: 09 November 2019, 18:24:10 »
Hab’s jetzt hinbekommen, dass man den Bootloader OTA aktualisieren kann.
Mehr schreib ich morgen dazu.

Aktuell hab ich noch das Problem mit der Makefile, dass dort die eine Zeile des Flashs die Adresse 0x0ECE hat. 
Irgendwie passt das nicht da in der Zeile ja schon was ab 0x0EC0 geschrieben wurde.
Musste jetzt diese Zeile raus editieren.

jp112sdl

  • Gast
Antw:AskSin++ Library
« Antwort #1386 am: 09 November 2019, 22:20:00 »
Hattest du es mal mit der https://github.com/jabdoa2/Asksin_OTA_Bootloader/blob/master/Contrib/hex2eq3.php versucht?
Da kannst du beim Konvertieren des HEX-Files als Parameter direkt markAsBootloaderUpdate mitgeben.

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1387 am: 10 November 2019, 07:02:38 »
Oh ne, dass hab ich noch garnicht gesehen.
Werd ich mir mal anschauen.

Offline PeMue

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
    • PeMue's github
Antw:AskSin++ Library
« Antwort #1388 am: 16 November 2019, 17:46:44 »
Hallo zusammen,

wäre das Thema Bootloader per OTA flashen nicht etwas für den Fensterkontakt? Wenn die Spannungsgrenzen nicht richtig eingestellt sind, dann könnte man ohne große Probleme nachflashen und die Sache wäre gut. Leider weiß ich nicht, was man da tun muss ...

Danke für einen Hinweis.

Gruß Peter
1x FB7170 (29.04.88) 5.7 1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F)
1x RPi BV2LCDCSM 1.63 5.7 2xMAX HKT, 1xMAX RT, V200KW1
1xFB 7490 (113.06.05) 5.7 1xCUL V3 1.63 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 1xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU 1xRFXtrx 90 1xWT440H 1xCM160 3xTFA30.3150 5xFA21

Offline Xent

  • Full Member
  • ***
  • Beiträge: 167
Antw:AskSin++ Library
« Antwort #1389 am: 19 November 2019, 08:22:24 »
Den Bootloader per OTA Flashen ist nochmal ein anderes Thema.

Ich hab versucht den Bootloader zu optimieren, da sich bei mir scheinbar immer wieder der CC1101 verabschieded und nichts mehr empfängt.
Nach ner Neuinitialisierung empfängt er dann wieder was.
Auch habe ich das flash-ota angepasst, so dass man einstellen kann, das mehr als 5 Versuche gemacht werden.

Offline mdk2412

  • New Member
  • *
  • Beiträge: 8
Antw:AskSin++ Library
« Antwort #1390 am: 24 November 2019, 12:26:43 »
Das kann auch einfach im Code geändert werden. Einfach den zweiten Templateparameter in der Typedefinition vom Radio in 3 ändern.

typedef Radio<SPIType,2> RadioType;


Ich versuche gerade, aus Layout-Gründen den Pin 2 GDO0 umzulegen (da außer dem Taster-Pin ja nur der Pin 2 auf der Seite ist, wollte ich alles auf die andere Seite vom Arduino bringen). Von 2 auf 3 geht, auf 9 geht schon nicht, und die bevorzugte Variante auf einen der analogen Pins A0-A3 geht gar nicht.

Was müsste man also noch alles umstellen, um den Pin 2 nach 9 oder A0-3 zu legen?

jp112sdl

  • Gast
Antw:AskSin++ Library
« Antwort #1391 am: 24 November 2019, 12:30:22 »
Pin 2 und 3 sind die einzigen beiden Hardware-Interrupts beim 328P.

Offline mdk2412

  • New Member
  • *
  • Beiträge: 8
Antw:AskSin++ Library
« Antwort #1392 am: 24 November 2019, 12:43:20 »
Pin 2 und 3 sind die einzigen beiden Hardware-Interrupts beim 328P.

Ich hatte sowas befürchtet... Danke für die Info, dann brauche ich ja nicht weiter zu suchen.

Offline papa

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1677
Antw:AskSin++ Library
« Antwort #1393 am: 24 November 2019, 16:09:30 »
Das Radio (Zeile 751) benutzt die Standard-Arduino-Funktionen attachInterrupt/detachInterrupt. Damit gehen nur die Hardware-Interrupts. Man könnte mal versuchen, das so umzubauen. Dann sollte jeder andere Pin auch gehen.
void enable () {
  if( digitalPinToInterrupt(GDO0) == NOT_AN_INTERRUPT )
    enableInterrupt(GDO0,isr,FALLING);
  else
    attachInterrupt(digitalPinToInterrupt(GDO0),isr,FALLING);
}
void disable () {
  if( digitalPinToInterrupt(GDO0) == NOT_AN_INTERRUPT )
    disableInterrupt(GDO0);
  else
    detachInterrupt(digitalPinToInterrupt(GDO0));
}
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Offline mdk2412

  • New Member
  • *
  • Beiträge: 8
Antw:AskSin++ Library
« Antwort #1394 am: 30 November 2019, 12:23:26 »
Das Radio (Zeile 751) benutzt die Standard-Arduino-Funktionen attachInterrupt/detachInterrupt. Damit gehen nur die Hardware-Interrupts. Man könnte mal versuchen, das so umzubauen. Dann sollte jeder andere Pin auch gehen.

Vielen Dank für die Lösung (s.o). Das funktioniert so. Sind irgendwelche Nebenwirkungen davon zu erwarten, dass jetzt kein Hardware-Interrupt-Pin benutzt wird?

 

decade-submarginal