Graceful shutdown and reboot

939 views
0 Comments

Ich habe folgendes Szenario, bzw. möchte ich folgende Funktionalität erreichen. Dazu habe ich bereits ein RPi, ein StromPi3 und ein BatterieHAT, alles über ein Steckernetzteil versorgt. Jetzt würde ich gerne den Standby-Stromverbrauch reduzieren, aber gleichzeitig beim Ziehen des Steckernetzteils aus der Steckdose (oder in Zukunft beim Abschalten der Stromversorgung zum Steckernetzteil) den RPi sanft herunterfahren. Beim Einschalten des Steckernetzteils soll der RPi wieder starten. Also:

  1. Spannung zum Strompi3 wird eingeschaltet: RPi bootet
  2. Spannung zum Strompi3 wird unterbrochen: RPi wird heruntergefahren und wird strom/spannungslos
  3. Spannung zum Strompi3 wird wieder eingeschaltet: RPi bootet wieder

Könnten Sie mir bitte Tips zur Konfiguration geben, damit ich diese Funktionalität erreichen kann. Danke.

Answered question

9 Answers

Hallo Hans,
für Ihren Anwendungsfall können Sie das so machen. So wird, wenn die Funktion ShutdownRPI ausgeführt wird, das Signal immer über den Resetpin gesendet und nur, wenn Sie nicht im Seriellessmodus sind, zusätzlich über die serielle Schnittstelle.
So haben Sie die von Ihnen gewünschte Option, egal ob Sie im Seriallessmodus sind oder nicht.
Mit freundlichen Grüßen
Tim (Joy-it)

Answered question
Hans (anonymous) 0 Comments

Danke, dann scheint es, dass ich es richtig verstanden habe (ich finde, die Anleitung ist da nicht so genau, wie ich es mir gewünscht hätte).

Eine Anmerkung zur Änderung sei mir noch erlaubt: Wäre folgende Definition der Funktion „ShutdownRPi“ nicht die, die der Beschreibung eher entspräche? (Aber vielleicht verstehe ich auch den kleinen Code-Schnipsel nicht richtig…):

void ShutdownRPi(void)
{
Config_Reset_Pin_Output();
HAL_GPIO_WritePin(RESET_Rasp_GPIO_Port, RESET_Rasp_Pin, GPIO_PIN_RESET);
serialLess_communication_on_flag = 1;
if (!serialLessMode)
{
HAL_UART_Transmit(&huart1, (uint8_t *) shutdownMessage, sizeof(shutdownMessage), sizeof(shutdownMessage));
}
}

Answered question

Guten Tag Hans,
der Jumper für den serialless Mode stellt nur eine Verbindung zwischen dem Microcontroller des StromPi 3 und  dem GPIO 21 des Raspberry Pis her. Dieser Jumper hat sonst keine Auswirkungen auf die Konfiguration. Sie könnten anstatt dieses Jumpers natürlich auch ein Kabel auf den mittleren Pin stecken und so an beliebiger Stelle weiterverarbeiten.
In der Firmware wurde nur der serialless Mode so verändert, dass auch im serialless Mode die Meldungen über die serielle Schnittstelle gesendet werden.
Also wie folgt:
serialless disabled: unveränderter serial Modus mit Kommunikation über die serielle Schnittstelle
serialless enabled: Status über GPIO und zusätzlich die Ausgabe der Meldungen über die serielle Schnittstelle
Der Standard serialless Modus ist in dem Fall nicht mehr verfügbar.
Mit freundlichen Grüßen
Nils (Joy-IT)

Answered question
Hans (anonymous) 0 Comments

Oh, danke!
Habe ich das so richtig verstanden: Mit dieser Firmware gibt es folgende Möglichkeiten:

  1. Serial Mode + Jumper „Serialless“ OFF: Klassischer serial mode
  2. Serial Mode + Jumper „Serialless“ ON: Serial mode und Meldung auf GPIO 21
  3. Serialless Mode + Jumper „Serialless“ OFF: Serialless mode und keine Meldung auf GPIO 21 (dafür muss noch eine Anwendung gefunden werden! 😉 )
  4. Serialless Mode + Jumper „Serialless“ ON: Klassischer serial mode

Umschalten zwischen „Serial Mode“ und „Serialless Mode“ geschieht nur mit Hilfe der Python Skripte, der Jumper hat nur die Funktion, das Ausgangssignal auf GPIO 21 zu legen (und beeinflusst nicht den serial oder serialless Modus)?
Stimmt das so?

Answered question

Guten Tag Hans,
das ist mit einer kleinen Änderung im Code möglich:

Ich habe die Zeile 805 kopiert und in die seriallesMode Schleife zusätzlich eingefügt (gelbe Markierung). Jetzt werden die Schlüsselzeilen auch im serialless Modus gesendet. Die modifizierte Firmware können Sie sich hier herunterladen.
Mit freundlichen Grüßen
Nils (Joy-IT)

Answered question
Write your answer.