logo
Welcome, Guest. Please Login or Register.
04. May 2024, 18:02:25


Home Help Search Login RegisterWIKIUHSDR Download

Amateurfunk Sulingen
Diskussions- und Newsboard des DARC-Ortsverbandes I40  |  allgemeine Kategorie  |  mcHF Projekt Deutsch / English (here you can discuss everything related to mcHF) (Moderators: DF8OE, DL1PQ)  |  Topic: grafischer Bootscreen beim mcHF <- zurück vorwärts ->
Pages: [1] 2 Go Down Print
   Author  Topic: grafischer Bootscreen beim mcHF  (Read 2545 times)
HB9ocq
Neuling
*

Offline

Posts: 46



OSS: free bugs'n'fixes!

View Profile WWW
grafischer Bootscreen beim mcHF
« on: 13. December 2016, 09:17:46 »

Quote from: dl8mby on 08. December 2016, 08:19:40
Hallo Stephan,

kannst Du bitte noch was zu make docs sagen.

hallo Markus,

  die Antwort auf diese Frage ist leider nicht so kurz dass sie Forumstauglich waere.

  Ich will Dich nicht auf die Schippe nehmen, muss Dich jedoch mit folgendem Vergleich auf die eigentliche Doku von Doxygen verweisen:

Quote:
Laut Makefile wird ja "nur" gcc aufgerufen,
aber das Know-How steckt wohl in den "*.c" Dateien,
was bedeutet, das die Anzahl der nützlichen
Informationen von dessen Güte abhängt.
Wie erstellt man diese? Gibt es dafür Templates
je nach Programmiersprache oder ist das alles
Handarbeit?

  Ausserdem habe nicht ich den Grundstein fuer "make docs" in mcHF gelegt. Ich habe nur einmalig im Makefile etwas aufgeraeumt und das Logo erstellt.
  <https://raw.githubusercontent.com/df8oe/mchf-github/active-devel/mchf-eclipse/mcHF-logo.png>
  Am ausbleiben von Reklamationen deute ich dass es gefaellt :->

  An die Code-Ritter hier: wuerde dieses Bild sich nicht als Splash-Screen und/oder Hintergrund fuer "about" eignen?
  In welchem Format muesste ich es aufbereiten, damit es ins FW-Binary kann?
  (ja, ich weiss: Leute mit bloss 0.5MB FLASH wollen nichts davon fuer "Non-Functional-Items" abgeben...)
Logged

73 de Stephan HB9ocq
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:arm-none-eabi-gcc Code Optimierung mittels Compiler
« Reply #1 on: 13. December 2016, 09:51:25 »

So ist es.... Wir sind nur noch wenige KB von der Grenze bei den 512ern entfernt. Also keine gute Idee...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DB4PLE
positron
Urgestein
*****

Offline

Posts: 1278





View Profile
Re:arm-none-eabi-gcc Code Optimierung mittels Compiler
« Reply #2 on: 13. December 2016, 12:26:22 »

Hallo,

auch wenn es off-topic ist:

https://de.wikipedia.org/wiki/X_PixMap

ist relativ simpel, wenn man bunte Bildchen direkt in C-Code einbinden möchte und keine libs für PNG/JPG und Co. einbinden will, denn das Bildformat ist als gültige C-Datenstruktur abgebildet.

Wenn Du den Decoder schreibst oder findest und wir ihn und das Bildchen rauswerfen dürfen, wenn es eng wird, why not.

73
Danilo



Logged
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:arm-none-eabi-gcc Code Optimierung mittels Compiler
« Reply #3 on: 13. December 2016, 14:56:23 »

Wir haben noch 29K frei, bis wir die 512er Marke überschreiten...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
HB9ocq
Neuling
*

Offline

Posts: 46



OSS: free bugs'n'fixes!

View Profile WWW
Re:arm-none-eabi-gcc Code Optimierung mittels Compiler
« Reply #4 on: 13. December 2016, 15:55:44 »

Quote from: DB4PLE on 13. December 2016, 12:26:22
https://de.wikipedia.org/wiki/X_PixMap
Danilo

Quote from: DF8OE on 13. December 2016, 14:56:23
Wir haben noch 29K frei, bis wir die 512er Marke überschreiten...
Andreas

ich gucke mir das gerne mal an, so als Denksportaufgabe - lasst euch soweit nicht von der Entwicklung fuer HAM-Funktionen ablenken.
Ich mach dann einen neuen Thread auf, ist ja nicht eigentliche "...-gcc Code Optimierung..."

73 de Stephan

[EDIT:] danke Andreas fuer den separaten Thread, dies ist ein "Nebengleis" unter allen Betrachtungswinkeln :-)
« Last Edit: 13. December 2016, 16:48:36 by HB9ocq » Logged

73 de Stephan HB9ocq
HB9ocq
Neuling
*

Offline

Posts: 46



OSS: free bugs'n'fixes!

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #5 on: 13. December 2016, 20:49:21 »

Naiver erster Versuch  -  tl;dr: unbrauchbar

Code:

$
$ convert mcHF-logo.png mcHF-logo.xpm
$ cp mcHF-logo.xpm mcHF-logo.xpm.c
$
$ gcc  -c  -o mcHF-logo.xpm.o  mcHF-logo.xpm.c            # Linux on C2D
$ ls -ld mcHF-logo.xpm.o
-rw-rw-r-- 1 stephans stephans 51776 Dec 13 20:06 mcHF-logo.xpm.o
$
$ arm-none-eabi-gcc  -c -o mcHF-logo.o  mcHF-logo.xpm.c  # just a random ARM-arch...
$ ls -ld mcHF-logo.xpm.o
-rw-rw-r-- 1 stephans stephans 45808 Dec 13 20:08 mcHF-logo.xpm.o
$


Die Eckdaten des Originalbild sind wie folgt:
Code:

$
$ pngcheck mcHF-logo.png
OK: mcHF-logo.png (160x120, 32-bit RGB+alpha, non-interlaced, 84.4%).
$

Die "Groesse" ist immerhin bereits nur die Haelfte des mcHF-LCDs...  :-o

In diesem "default" XPM-Format, werden fuer jedes Pixel 2 chars im C-String eingesetzt
Code:

$ grep -A1 pixels mcHF-logo.xpm
/* pixels */
"_ _ [ p.*._ _ _ _ _ _ _ _ _ _ _ <.C.@._ _ _ _ _ _ _ _ _ _ } s.:._ _ _ _ _ _ _ _ "
"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  .M."
"h.g.h.g.h.h.g.h.h.g.h.h.g.h.g.h.g.h.g.h.h.g.h.h.g.h.h.g.h.h.g.h.h.g.h.h.g.h.g.h."
"g.h.g.h.h.g.h.h.g.h.g.h.g.h.g.h.h.h.M. ._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ",
$

D.h. dass der C-String um diese 160x120=19200 Pixels * 2 char = 38400 Bytes im FLASH-ROM belegt.

==>> Das geht so nicht, resp. das ist echt Platzverschwendung.

Ich versuche was an den Parameter zur Konversion nach XPM zu schrauben moeglich ist...
Sonst muss ein anderes Format als XPM her.


Nebenschauplatz: wieviele Farben sind im Bild definiert?
Code:

$
$ head mcHF-logo.xpm
/* XPM */
static char *mcHF_logo[] = {
/* columns rows colors chars-per-pixel */
"160 120 164 2 ",
"  c #000000",
".  c #010908",
"X  c #150000",
"o  c #000016",
"O  c #070D15",
"+  c #080B15",
$
$
$ grep -cP '"[^ ]* {1,3}c ' mcHF-logo.xpm
163
$

Also 163 Farben sind zuviel des Guten, m.M.n. sollten ein paar Handvoll ausreichen
--> cleveres Suchen+Ersetzen oder andere Farbreduktion.

(warum sind in dieser einfachen Grafik so viele Farben? Antialiasing an den Farbuebergaenge/Kanten)
Logged

73 de Stephan HB9ocq
DL8EBD
positron
Urgestein
*****

Offline

Posts: 1926





View Profile
Re:grafischer Bootscreen beim mcHF
« Reply #6 on: 13. December 2016, 20:53:50 »

Kann man den Bootscreen nicht ins EEProm auslagern?
Logged

bitte keine technische Fragen oder Diskussionen via PN, dafür ist das Forum da.
vy73
Thomas
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #7 on: 13. December 2016, 21:14:16 »

Wenn Du 3 Minuten warten willst, bis es geladen ist  ...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DL8EBD
positron
Urgestein
*****

Offline

Posts: 1926





View Profile
Re:grafischer Bootscreen beim mcHF
« Reply #8 on: 14. December 2016, 05:51:44 »


wie taktet ihr denn den I2C Bus?
Um ehrlich zu sein habe ich das noch nie gemessen...
Aber mal angenommene 38KB sollten doch in wenigen Sekunden erledigt sein.

Aber ist natürlich kein Must have.....
Eigentlich hasse ich Geräte die erst einen Willkommensgruß zeigen. Am liebsten wäre mir einschalten und sofort loslegen.
Logged

bitte keine technische Fragen oder Diskussionen via PN, dafür ist das Forum da.
vy73
Thomas
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #9 on: 14. December 2016, 06:53:29 »

Mit 400 KHz. Und das dauert schon seine Zeit bei serieller Übertragung von ca. 38KB - kannst ja mal ausrechnen 

Auf jeden Fall dauert alleine das Laden des Bildes *deutlich* länger als der aktuelle gesamte Einschaltvorgang. Und der käme ja zum Laden noch dazu. Außerdem will man nach dem Laden ja wenigstens noch was davon sehen (== Anzeigezeit).

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
dl8mby
alter Hase
****

Offline

Posts: 363



Ich liebe dieses Forum!

View Profile
Re:grafischer Bootscreen beim mcHF
« Reply #10 on: 14. December 2016, 07:56:19 »

Hallo Andreas,

zum Einschalt-Logo.
Kann man nicht eventuell im Display selbst
(im Controller) ein default Startbild hinterlegen?

Weiß nicht ob der verwendete Type so was kann.
Manche Displays haben für so was einen Buffer,
wo ein Inhalt auf Dauer ablegbar ist.

War nur so ein Gedanke von mir.

vy73
Markus
DL8MBY 
Logged
DB4PLE
positron
Urgestein
*****

Offline

Posts: 1278





View Profile
Re:grafischer Bootscreen beim mcHF
« Reply #11 on: 14. December 2016, 08:51:22 »

Hallo,

tatsächlich ist das Laden der Daten des Bootscreens vom I2C unpraktisch. Wollte erwähnen, das der Bootscreen künstlich in SW verlängert wird, damit er ausreichend lange auf dem Bildschirm ist um die relevanten Infos zu lesen.

Für die Logo-Fans: Warum nicht einfach ein Binary an eine andere Adresse flashen, die außerhalb der 512k Zone liegt.
Dazu muss man dem Bootloader von Andreas beibringen, ein Binary bestimmten Namens an eine andere Adresse zu flashen, sofern der Speicher verfügbar ist. Die Erkennung von Flashgröße ist ja schon im mcHF selbst implementiert. Ich denke, Andreas hat dazu keine Lust (oder schätze ich das falsch ein, Andreas? ) aber dank Open Soure und Open Mind kein Problem solche Änderung zu integrieren.

Dann würden die 512er kein Logo sehen, die mit mehr und dem richtigen Bootloader eben ein Logo 


73
Danilo
« Last Edit: 14. December 2016, 08:52:01 by DB4PLE » Logged
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #12 on: 14. December 2016, 09:31:16 »

Wenn es gewünscht ist kann ich sowas in den BL einbauen.

Der Flashspeicher ist beim STM in Blöcke aufgeteilt. "Unten" ist die Blockgröße kleiner (16KB), darüber steigt sie an. Es macht Sinn, die Startadresse des Bildes an den Beginn eines Blockes zu legen.

Ich möchte allerdings hier nur auf "...mach mal..." reagieren, weil ich selbst in einem sichtbaren Bootlogo nicht so wirklich die Notwendigkeit / den Sinn sehe...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
HB9ocq
Neuling
*

Offline

Posts: 46



OSS: free bugs'n'fixes!

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #13 on: 14. December 2016, 09:31:23 »

Quote from: DL8EBD on 14. December 2016, 05:51:44
Aber mal angenommene 38KB sollten doch in wenigen Sekunden erledigt sein.
Jetzt seid doch bitte etwas geduldig: es werden NICHT 38kB sein, das waere Verhaeltnisbloedsinn weil bald 10% des gesamt FLASH-ROMs.
Mein Bauchgefuehl zieht mich in Wunschrichtung 5kB (mit "Elkotolleranz", also +/-30%).

Quote from: dl8mby on 14. December 2016, 07:56:19
Kann man nicht eventuell im Display selbst (im Controller) ein default Startbild hinterlegen?
Lieber nicht: es sind bereits 2 Displaytypen und 2 (oder 3) Anbindungsvarianten(*). Es ist verlockend, aber wenn auf solche Peripheriespezifizitaeten eingegangen wird, geht Flexibilitaet fuer kuenftige Evolution der FW verloren.
(*)Wenn in jedem Geraet NUR genau jene Routinen fuer genau die verloetete HW waere, kaeme auch wieder etwas freier FLASH-ROM Platz zustande.
Ein Profiling ueber welchen Code tatsaechlich abgearbeitet wird waere aufschlussreich.
(haette/taete/wollte - 3 Brueder die Bankrott gingen...  ;-)

In SW gelten jedoch IMMER folgende 2 Regeln:
1. don't optimise. (fuer alle: Einsteiger wie Profis)
2. don't optimize yet. (aber auch NUR fuer absolute Experten :-)

Warum? In SW muss die Korrektheit des Codes erste Priotitaet haben - das lehrt uns die (SW-)Geschichte; kleine u. grosse Beispiele aus den Medien und dem eigenen Alltag kann jeder selber nennen.

Quote from: DB4PLE on 14. December 2016, 08:51:22
Für die Logo-Fans: Warum nicht einfach ein Binary an eine andere Adresse flashen, die außerhalb der 512k Zone liegt.
Dann würden die 512er kein Logo sehen, die mit mehr und dem richtigen Bootloader eben ein Logo  :)
Danilo

Das erfordert "bald sowas wie ein ROM-Dateisystem" genauer eine Partitionierung. Dies bedeutet zusaetzliche Routinen im Bootloader UND in der Anwendung.

Bei allem Enthusiasmus/Elan/Willen: das mcHF-Projekt hat (noch) nicht die noetigen Kapazitaeten um DIES auch noch einzubauen. Dies laeuft auf eine heftigstes Refactoring hinaus.
Tut mir leid hier die grosse Spur markieren zu muessen, aber ueber 15J Erfahrung mit Brotarbeit im Embedded-SW Bereich mit genau diesen Aufgabenstellungen in mit ueber 12MA starken Teams bringen mich zu solchen Aussagen.

Wenn dann mal der uC fuer STM32F7 hoffentlich mit maximal moeglichem FLASH-ROM Platz(*) festgenagelt ist, dann ist der richtige Moment um die Architektur fuer FLASH-ROM Partitionierung festzulegen (weil sowieso anderen Maschinencode rauskommen muss, also auch andere Portieraufwaende anstehen).
Alternativ waere eine uSD-Karte auf dem UI-PCB, oder ein weterer geraeteinterner USB-Port fuer ein (optional) Dauerhaft verbauter Massenspeicher. Und wieder Dateisystemcode (wohl FATxy) im FW-Binary...
(* Andreas hat "schon immer" fuer die 1 oder 2MB Typen der STM32F4 Reihe geweibelt: bloss die wenigsten haben sein Tipp ernst genommen...)
- - -
In meinem o.g. Analyseposting gehen klar die allerersten Nachteile hervor:
1. es ist ABSOLUT unsinnig pro Pixel 2 Bytes Platz zu verschwenden; ueberhaupt und schon gar nicht fuer eine nebensaechliche Dekoration
2. es sind nur ganz wenige Farben fuer das Bild ueberhaupt noetig (es geht nicht um TrueColor Portraitfotos der Entwickler/Besitzer - mcHF ist kein Fotoapparat). XPM erlaubt genau so wenige -beliebige- Farben einzusetzen wie benoetigt.

Ich versuche in den naechsten Tagen 2 Sachen:

a) die Farben des Bildes zu redizieren

b) ein Codierschema auszutuefteln, um die Strings fuer die XPM Datenstruktur IM FLASH platzsparender vorzuhalten, dann on-the-fly zu decodieren damit die XPM (voruebergehend, im RAM) Datenstruktur "fuer Danilo" daherkommt.

zu a):
- ich bin kein Bilbearbeitungsprofi
- ich will dies Algorithmisch in den Buildvorgang (ins Makefile) integrieren
- je nach meinem "Ungeschick" kann es in etwas Fleissarbeit (=benoetigt meine Zeit) ausarten

zu b):
- stichwort zum Prinzip: "Packed ASCII String", aber moeglichst auf 4bit/px = 16Farben angepasst
- eine Decodierrroutine fuer in die mcHF-FW
- ein Hilfsprogramm (script) fuer den Buildvorgang

Bitte diese Vorstudie abwarten - den sonst vorhandenen Dampf lieber in HAM-Funktionen einsetzen.
« Last Edit: 14. December 2016, 09:35:02 by HB9ocq » Logged

73 de Stephan HB9ocq
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:grafischer Bootscreen beim mcHF
« Reply #14 on: 14. December 2016, 09:49:07 »

Dem "do not optimize" kann ich so nicht zustimmen.

Hätten wir so beim mcHF gedacht und gehandelt wären wir nicht wesentlich weiter als zu KA7OEIs Zeiten. Alles, was in der FW passiert ist, ist dadurch entstanden, dass optimiert wurde und Refactoring betrieben wurde.

Das Geheimnis liegt darin, während der Arbeiten nicht den Überblick zu verlieren und unter (kommerziellem) Zeitdruck zu arbeiten.

"Bewegung" kommt von "bewegen"...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
Pages: [1] 2 Go Up Print 
Diskussions- und Newsboard des DARC-Ortsverbandes I40  |  allgemeine Kategorie  |  mcHF Projekt Deutsch / English (here you can discuss everything related to mcHF) (Moderators: DF8OE, DL1PQ)  |  Topic: grafischer Bootscreen beim mcHF <- zurück vorwärts ->
Jump to: 


Login with username, password and session length

 Es wird die Verwendung von Browsern die auf der "Blink"-Engine basieren und mindestens
1024x768 Pixel Bildschirmauflösung für die beste Darstellung empfohlen
 
Amateurfunk Die Beiträge sind, sofern nicht anders vermerkt, unter der folgenden Lizenz veröffentlicht:
GNU Free Documentation License 1.3 GNU Free Documentation License 1.3
verbindet!
Powered by MySQL Powered by PHP Diskussions- und Newsboard des DARC-Ortsverbandes I40 | Powered by YaBB SE
© 2001-2004, YaBB SE Dev Team. All Rights Reserved.
- modified by Andreas Richter (DF8OE)
Impressum & Disclaimer
Valid XHTML 1.0! Valid CSS!