Jump to content
Sign in to follow this  
PaulPaulaner

Absturz Hat Brick ?

Recommended Posts

Der HAT Brick flasht sich etwas ungewöhnlich. Du schließt den nicht per USB an, der micro USB Anschluss ist nur für Strom. Sondern du lässt den HAT Brick auf dem Raspberry Pi stecken, verbindest dich dann mit Brick Viewer zum Raspberry Pi und wählst auf den Update/Flashing Dialog den Bricklet Tab aus. Dort wählst du als Parent None und kannst dann als Port den HAT Brick auswählen. Dort wählst du als Plugin Custom aus und kannst dann die Firmware Datei über den Browse Knopf auswählen und der Flash Knopf die Firmwae flashen.

Mit dem HAT Brick hat sich die Trennung zwischen Bricks und Bricklets etwas verwischt. Der HAT Brick ist nach außen in Brick nutzt intern aber Bricklet Strukturen, wodurch er wie ein Bricklet geflasht wird. Auf Dauer werden wir den Flash Dialog in Brick Viewer überarbeiten und vereinfachen.

Share this post


Link to post
Share on other sites
Posted (edited)

Hat funktioniert, Danke

hab jetzt erst noch mit der 2.02 getestet und dann auf die Version welche du mir gegeben hast.

Test mit dem Brick Viewer

mit der 2.02 - gleiches Verhalten 3 x geschaltet => Bricklets aus

mit der 2.03 -  20 x geschaltet => funktioniert noch (mit meiner Applikation getestet auch OK)

 

 

brickd.log

Edited by PaulPaulaner

Share this post


Link to post
Share on other sites

Okay, dass bestätigt, dass irgendwo her ein Packet kommt, das an den HAT Brick geschickt wird und der dies als Abschaltbefehl für die Bricklets versteht.

Das brickd.log verwirrt uns hier. Das Log quillt über an Warnungen dieser Art:

Broadcasting response (...) because no client/zombie has a matching pending request

Brick Daemon hat eine Antwort von der Hardware empfangen, für die es keine offene Anfrage gibt. Teilweise sind dies Antworten, die offensichtlich korrupt sind (unbekannte UID, ungültige Länge oder unbekannte Funktions-ID). Viele andere Antworten sind aber so ohne Kontext erstmal gültige Antworten.

Das passt zum Brick Viewer Screenshot von vorher auf dessen Industrial Dual Relay Tab 174 Timeouts (fehlende Antworten) zu sehen waren. Die Antworten konnten in Brick Daemon nicht mehr zugeordnet werden, weil diese korrumpiert wurden.

Die "Broadcasting Response" Meldungen im Log sollten unter normalen Umständen überhaupt nicht auftreten.

Eine Vermutung wäre, dass die Bricklet Kommunikation durch die Umgebung gestört wird. Und zwar so stark, dass die Protokoll-Checksummen das nicht mehr abfangen können.

Ein möglicher Test wäre es den Hardware Aufbau zu vereinfachen, z.B. den Display vollständig abzubauen, Bricklet Leitungslängen verkürzen und damit die Antennenwirkung der Kabel verringern. Oder auch mal den Aufbau wo anders betreiben (Draußen, Zuhause, etc.)

rtrbt postet gleich auch noch ein Testprogramm auf Basis der neuen "C/C++ Bindings für Mikrocontroller", die ohne brickd auskommen. Einfach um zu sehen wie sich das verhält, und ob dort auch diese Fehler auftreten.

Share this post


Link to post
Share on other sites

Hier das Testprogramm in zwei Variationen: Mit dem HAL der dem Brick Daemon entspricht und alternativ mit dem HAL, der direkt mit dem GPIO-Chip des Raspberry Pi kommuniziert.

Du musst für beide Testprogramme erst den Brick Daemon auf dem Raspberry Pi mit "sudo systemctl stop brickd" beenden, danach kannst du die Programme laufen lassen. Ich habe dir den Source mal mit angehangen, beide Programme schalten die Relays im Wechsel und lesen die Monoflop-Informationen zurück. Poste mal bitte die Ausgaben beider Programme.

embedded_c_hal_bcm2835 embedded_c_hal_linux main.c

Share this post


Link to post
Share on other sites
Posted (edited)

Info zu den Aufbauten:

Räumlichkeiten  unterschiedlich

1x Pi ohne Display und Leitungen zu den Bricklets 15cm => Keller

1x wie bereits auf Foto gezeigt mit Display und Leitungen zu den Bricklets 50cm => OG

 

 

mit der 2.0.3 & 2.0.2 für den HAT getestet Ausgabe ident.

Relay tester - HAL Linux
Found device Frp of type 2100 at port B
Found device Nnn of type 284 at port C
Found device NjK of type 284 at port E
Found device Li7 of type 111 at port I
Relay 1 error counters: 0 0 0 0
Relay 2 error counters: 0 0 0 0

 

Relay tester - HAL BCM2835
Found device Frp of type 2100 at port B
Found device Nnn of type 284 at port C
Found device NjK of type 284 at port E
Found device Li7 of type 111 at port I
Relay 1 error counters: 0 0 0 0
Relay 2 error counters: 0 0 0 0

Edited by PaulPaulaner

Share this post


Link to post
Share on other sites

Moin,

Das verwirrt noch mehr. Die Relays haben bei allen Tests mit den Programmen 60 Sekunden abwechselnd geschaltet? Oder ist das Problem (bei HAT Firmware 2.0.2, die 2.0.3 kannst du künftig wieder ignorieren) nochmal aufgetreten, aber die Ausgabe hat sich nicht geändert? Mit dem Brick Viewer passiert es aber weiterhin?

Um den gebroadcasteten Paketen im brickd.log nachzugehen, habe ich vom Brick Daemon eine Variante gebaut, die mehr Informationen liefert, wenn ein Paket defekt ist. Die ist in zwei Varianten im Anhang, einmal die 2.4.1 + das Logging, einmal alle Änderungen die wir seit der 2.4.1 schon hatten + das Logging. Bitte installiere mal jeweils eine Variante davon, reproduziere das Problem mit dem Brick Viewer und hänge das entsprechende brickd.log an. (Wegen der Übersicht: Bennene erstmal das brickd.log, dass du schon hast, um, sonst werden die Dateien so groß)

brickd-2.4.1~log_armhf.deb brickd-2.4.2~log_armhf.deb

Share this post


Link to post
Share on other sites

Mit beiden Programmen kein Absturz

Auch kein Unterschied zwischen der HAT - Firmware lief mit beiden Programmen durch

mit dem Brick-Viewer und Firmware 2.0.2 Absturz 2.0.3 kein Absturz

 

bei der Installation der neuen Daemon-Versionen bekomm ich leider einen Fehler.

sudo dpkg -i /home/pi/Ratio/brickd-2.4.2~log_armhf.deb
(Lese Datenbank ... 149419 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../brickd-2.4.2~log_armhf.deb ...
Removed /etc/systemd/system/multi-user.target.wants/brickd.service.
Entpacken von brickd (2.4.2~log) über (2.4.2~log) ...
brickd (2.4.2~log) wird eingerichtet ...
Created symlink /etc/systemd/system/multi-user.target.wants/brickd.service → /lib/systemd/system/brickd.service.
Job for brickd.service failed because the control process exited with error code.
See "systemctl status brickd.service" and "journalctl -xe" for details.
dpkg: Fehler beim Bearbeiten des Paketes brickd (--install):
 Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
Trigger für man-db (2.7.6.1-2) werden verarbeitet ...
Fehler traten auf beim Bearbeiten von:
 brickd

 

 

journalctl -xe
Jul 29 15:58:03 raspberrypi systemd[1]: apt-daily-upgrade.timer: Adding 26min 44
Jul 29 15:58:04 raspberrypi systemd[1]: Reloading.
Jul 29 15:58:04 raspberrypi systemd[1]: apt-daily.timer: Adding 8h 33min 55.9280
Jul 29 15:58:04 raspberrypi systemd[1]: apt-daily-upgrade.timer: Adding 24min 41
Jul 29 15:58:04 raspberrypi systemd[1]: Starting Brick Daemon...
-- Subject: Unit brickd.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit brickd.service has begun starting up.
Jul 29 15:58:04 raspberrypi brickd[1122]: /usr/bin/brickd: /lib/arm-linux-gnueab
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Control process exited,
Jul 29 15:58:04 raspberrypi systemd[1]: Failed to start Brick Daemon.
-- Subject: Unit brickd.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit brickd.service has failed.
--
-- The result is failed.
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Unit entered failed stat
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Failed with result 'exit
Jul 29 15:58:05 raspberrypi sudo[1047]: pam_unix(sudo:session): session closed f
lines 1796-1818/1818 (END)

 

 systemctl status brickd.service
● brickd.service - Brick Daemon
   Loaded: loaded (/lib/systemd/system/brickd.service; enabled; vendor preset: e
   Active: failed (Result: exit-code) since Wed 2020-07-29 15:58:04 CEST; 21s ag
  Process: 1122 ExecStart=/usr/bin/brickd --daemon (code=exited, status=1/FAILUR

Jul 29 15:58:04 raspberrypi systemd[1]: Starting Brick Daemon...
Jul 29 15:58:04 raspberrypi brickd[1122]: /usr/bin/brickd: /lib/arm-linux-gnueab
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Control process exited,
Jul 29 15:58:04 raspberrypi systemd[1]: Failed to start Brick Daemon.
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Unit entered failed stat
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Failed with result 'exit
...skipping...
● brickd.service - Brick Daemon
   Loaded: loaded (/lib/systemd/system/brickd.service; enabled; vendor preset: e
   Active: failed (Result: exit-code) since Wed 2020-07-29 15:58:04 CEST; 21s ag
  Process: 1122 ExecStart=/usr/bin/brickd --daemon (code=exited, status=1/FAILUR

Jul 29 15:58:04 raspberrypi systemd[1]: Starting Brick Daemon...
Jul 29 15:58:04 raspberrypi brickd[1122]: /usr/bin/brickd: /lib/arm-linux-gnueab
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Control process exited,
Jul 29 15:58:04 raspberrypi systemd[1]: Failed to start Brick Daemon.
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Unit entered failed stat
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Failed with result 'exit

● brickd.service - Brick Daemon

   Loaded: loaded (/lib/systemd/system/brickd.service; enabled; vendor preset: e
   Active: failed (Result: exit-code) since Wed 2020-07-29 15:58:04 CEST; 21s ag
  Process: 1122 ExecStart=/usr/bin/brickd --daemon (code=exited, status=1/FAILUR

Jul 29 15:58:04 raspberrypi systemd[1]: Starting Brick Daemon...
Jul 29 15:58:04 raspberrypi brickd[1122]: /usr/bin/brickd: /lib/arm-linux-gnueab
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Control process exited,
Jul 29 15:58:04 raspberrypi systemd[1]: Failed to start Brick Daemon.
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Unit entered failed stat
Jul 29 15:58:04 raspberrypi systemd[1]: brickd.service: Failed with result 'exit
~

 

 

Share this post


Link to post
Share on other sites

Dann starte den Brick Daemon mal von Hand mit "sudo brickd".

Share this post


Link to post
Share on other sites

Für die Nachwelt: Wir haben telefonisch rausgefunden, dass es ein Hardwareproblem mit doppelt belegten GPIOs ist. Im HAT-Schaltplan kann nachgesehen werden, welche GPIOs vom HAT verwendet werden.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...