Forum: Compiler & IDEs Scheiß Codegeneratoren! Silabs!


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernd K. (prof7bit)


Bewertung
2 lesenswert
nicht lesenswert
Ja genau Silabs, euch mein ich!


Vor 2 Wochen hats noch kompiliert, Dann kam eine Update und jetzt 
fabriziert der so einen Mist:


"i: undefined identifier"
"ea: undefined identifier"

Man beachte wo die beiden Variablen deklariert werden!
1
extern void WDT_0_enter_DefaultMode_from_RESET(void) {
2
  // $[WDTCN - Watchdog Timer Control]
3
4
  // Feed WDT timer before disabling (Erratum WDT_E102)
5
  WDTCN = 0xA5;
6
7
  // Add 2 LFO cycle delay before disabling WDT (Erratum WDT_E102)
8
  for (i = 0; i < (2 * 3062500UL) / (10000 * 3); i++) {
9
    NOP();
10
  }
11
12
  // Disable WDT
13
  ea = IE_EA;
14
  IE_EA = 0;
15
  WDTCN = 0xDE;
16
  WDTCN = 0xAD;
17
  IE_EA = ea;
18
19
  // [WDTCN - Watchdog Timer Control]$
20
21
  // $[Watchdog Timer Init Variable Declarations]
22
  uint32_t i;
23
  bool ea;
24
  // [Watchdog Timer Init Variable Declarations]$
25
26
}

Testen die ihren Scheiß nicht mal im Ansatz bevor sie das auf die Leute 
loslassen? Ich find das hochgradig unprofessionell!

Das ist auch der Grund warum ich derartigem 
Konfigurator-GUI-Codegenerierungs-Hokuspokus so ablehnend gegenüber 
stehe! Da will ich eigentlich ganz locker entspannt was ganz anderes 
machen und plötzlich merk ich daß das blöde Silabs-Projekt gar nicht 
mehr kompiliert weil Silabs scheinbar irgendwann letzte Woche ein 
vollkommen ungetestetes defektes Update an alle Nutzer dieser 
verdreckten IDE rausgehauen hat! Laut Versionskontrolle bestand die 
obige Funktion letzte Woche noch aus nur zwei Zeilen ohne den ganzen 
Klimbim außen rum!

Das ist das einzige Projekt das ich noch habe das noch von der 
Hersteller-IDE erzeugt wurde und von der verwaltet wird, alles andere 
mach ich mit schriftlich hingeschriebener Konfiguration und einfachen 
Makefiles und die funktionieren bei jedem Wetter! Und genau dieses eine 
das noch am Tropf der Hersteller-IDE hängt fliegt mir um die Ohren!

Das soll Euch allen als Mahnmal dienen!

Elender IDE-Rotz! Wem soll mit so einem Scheiß denn überhaupt geholfen 
sein? Das macht doch mehr kaputt als es nützt!

</rant>

von Yalu X. (yalu) (Moderator)


Bewertung
5 lesenswert
nicht lesenswert
Du bist hier an der falschen Adresse. Diese hier ist vermutlich die
richtige:

  https://www.silabs.com/support

Wenn du deinen Schmerz mit Leidensgenossen teilen möchtest, kannst dies
hier versuchen:

  https://www.silabs.com/community

Beitrag #5750789 wurde von einem Moderator gelöscht.
von Hans (Gast)


Bewertung
-6 lesenswert
nicht lesenswert
Danke Yalu.

Weiß nicht warum jeder meint sein Gemecker jedem aufdrücken zu müssen..
immer dieses rumgeheule---

von Susi S. (Gast)


Bewertung
-7 lesenswert
nicht lesenswert
Bernd K. schrieb:
> und die funktionieren bei jedem Wetter!

...und die IDE-Versionen hängen vom Wetter ab?

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Bewertung
11 lesenswert
nicht lesenswert
Hans schrieb:

> Weiß nicht warum jeder meint sein Gemecker jedem aufdrücken zu müssen..
> immer dieses rumgeheule---

Ich finde, dass kann man durchaus auch einfach mal als Erfahrungsbericht 
lesen und dann hat es auch seinen Wert (der über Bernds Frustloslassen 
hinausgeht).

von Bernd K. (prof7bit)


Bewertung
3 lesenswert
nicht lesenswert
Yalu X. schrieb:
> Wenn du deinen Schmerz mit Leidensgenossen teilen möchtest

Habs mittlerweile auch im Silabs-Forum in der entsprechenden Rubrik 
gemeldet, die wissen also jetzt Bescheid: 
https://www.silabs.com/community/software/simplicity-studio/forum.topic.html/efm8bb1_generatedco-HttE

> Du bist hier an der falschen Adresse

Ich finde das ist durchaus On-Topic in "Compiler und IDEs".

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Bewertung
3 lesenswert
nicht lesenswert
Torsten R. schrieb:
> Ich finde, dass kann man durchaus auch einfach mal als Erfahrungsbericht
> lesen und dann hat es auch seinen Wert (der über Bernds Frustloslassen
> hinausgeht).

Das schon. Aber Bernd beginnt seinen Beitrag mit den Worten

> Ja genau Silabs, euch mein ich!

Wörtlich genommen heißt das, er will gar nicht mit uns diskutieren,
sondern mit Silabs (bzw. Silicon Labs), von denen wohl kaum einer hier
in einem deutschsprachigen Forum aktiv sein wird.

Deswegenm schrieb ich: Falsche Adresse.

Aber in Wahrheit will er wohl das Forum einfach einfach nur nutzen, um
seinen Frust abzulassen

> </rant>

und poltert dann mit Wörtern wie Mist, Scheiß, Hokuspokus, blöde,
verdreckten, Klimbim, Rotz usw. herum.


Natürlich kann man auch hier im Forum über fehlerhafte kommerzielle
Software diskutieren, aber meiner Meinung nach sollte man dabei erst
einmal den Hersteller der Software zu Wort kommen lassen, und die darauf
folgende Diskussion sollte trotz allen Unmuts sachlich bleiben und nicht
von Emotionen dominiert werden.

Am Ende stellt sich vielleicht heraus, das Bernd die Release-Notes nicht
gelesen hat, in denen dieses Problem und dessen Lösung bereits vorweg
genommen wurde ;-)


Edit:

Bernd K. schrieb:
> Habs mittlerweile auch im Silabs-Forum in der entsprechenden Rubrik
> gemeldet, die wissen also jetzt Bescheid:
> 
https://www.silabs.com/community/software/simplicity-studio/forum.topic.html/efm8bb1_generatedco-HttE

Ok, aber warum war das nicht dein erster Schritt?

: Bearbeitet durch Moderator
von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Yalu X. schrieb:
> und poltert dann mit Wörtern wie Mist, Scheiß, Hokuspokus, blöde,
> verdreckten, Klimbim, Rotz usw. herum.

menschlich verständlich, ich gehe normalerweise davon aus das sowas 
getestet sein sollte vor Veröffentlichung, erlebe es oft genug aber 
anders.

> ... aber meiner Meinung nach sollte man dabei erst
> einmal den Hersteller der Software zu Wort kommen lassen

in der Art, "Oh sie sind der Erste der diesen Fehler meldet" während das 
Internet schon voll ist mit Beschwerden

von Susi S. (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Joachim B. schrieb:
> während das Internet schon voll ist mit Beschwerden

Ist es das? Ein oder mehrere Links wären nicht schlecht.

von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Yalu X. schrieb:
> Aber in Wahrheit will er wohl das Forum einfach einfach nur nutzen

Die drittletzte Zeile weist den Grund meines Postings aus. In Zukunft 
kann man darauf verweisen und sagen: "Seht genau hin Kinder, so kanns 
gehen!"

von RumpelHeinzchen (Gast)


Bewertung
-12 lesenswert
nicht lesenswert
Ich denke, es ist besser für den TO, vor Inbetriebnahme des Mundwerks 
das Gehirn einzuschalten:

Wie wäre es denn, erst mal die Variable zu initialisieren, bevor man sie 
einer anderen zuweist?


  IE_EA = 0;   erst mal initialisieren
  ea = IE_EA;   dann eine andere Variable "befüllen"
  WDTCN = 0xDE;
  WDTCN = 0xAD;
  IE_EA = ea;

von 2⁵ (Gast)


Bewertung
4 lesenswert
nicht lesenswert
RumpelHeinzchen schrieb:
> Ich denke, es ist besser für den TO, vor Inbetriebnahme des Mundwerks
> das Gehirn einzuschalten:

Wenn man keine Ahnung hat, dann sollte man einfach mal die Finger still 
halten. IE_EA ist keine Variable, das ist ein Register.
1
// Save current interrupt state and disable interrupts 
2
EA_save = IE_EA;
3
IE_EA = 0;

von RumpelHeinzchen (Gast)


Bewertung
-6 lesenswert
nicht lesenswert
2⁵ schrieb:
> RumpelHeinzchen schrieb:
>> Ich denke, es ist besser für den TO, vor Inbetriebnahme des Mundwerks
>> das Gehirn einzuschalten:
>
> Wenn man keine Ahnung hat, dann sollte man einfach mal die Finger still
> halten.

Eben!

>IE_EA ist keine Variable, das ist ein Register.

Und?! Sag das dem TO. Ich habe lediglich die Reihenfolge der Befehle 
richtig gestellt.
>
>
1
> // Save current interrupt state and disable interrupts
2
> EA_save = IE_EA;
3
> IE_EA = 0;
4
>

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
>> ... aber meiner Meinung nach sollte man dabei erst
>> einmal den Hersteller der Software zu Wort kommen lassen
>
> in der Art, "Oh sie sind der Erste der diesen Fehler meldet" während das
> Internet schon voll ist mit Beschwerden

Das ist eben das Problem. "Das Internet" ist voll davon, aber es 
demjenigen mitzuteilen, der das Problem tatsächlich beheben könnte, 
daran denken die wenigsten.
Ist es die Aufgabe des Herstellers, "das Internet" in seiner Gänze 
abzuklappern, um rauszufinden, ob jemand einen Bug gefunden hat?

von 2⁵ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
RumpelHeinzchen schrieb:
> Und?! Sag das dem TO. Ich habe lediglich die Reihenfolge der Befehle
> richtig gestellt.

RumpelHeinzchen schrieb:
> Wie wäre es denn, erst mal die Variable zu initialisieren, bevor man sie
> einer anderen zuweist?
>
>   IE_EA = 0;   erst mal initialisieren
>   ea = IE_EA;   dann eine andere Variable "befüllen"

qed.

von Joachim B. (jar)


Bewertung
1 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Ist es die Aufgabe des Herstellers, "das Internet" in seiner Gänze
> abzuklappern, um rauszufinden, ob jemand einen Bug gefunden hat?

nö, natürlich nicht, aber manche Fehler lassen sich durchaus vom 
Hersteller in wenigen Tests finden und mal unter uns, ich glauber den 
Shice nicht mehr "Sie sind ja der Erste der das meldet"

Wie kann das sein das man auf Webseitenformularen 40 Zeichen 
Eingabefelder hat aber der Ettikettendrucker nach 20 Zeichen 
abschneidet, das sollte doch gemerkt werden, oder das im Webformular 3 
Adresszeilen sind aber nur 2 gedruckt werden.

Bestes Beispiel TomTom Navi Software auf winCE eine rechts/links Abbiege 
Kombi gibt als Sprachausgabe nur links abbiegen aus, was sofort mit 
bitte wenden weitergeführt wird. Derselbe Bug war bei der TomTom 
Hardware für 500,- includet und das soll keiner gemerkt haben?

von Jim M. (turboj)


Bewertung
1 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Testen die ihren Scheiß nicht mal im Ansatz bevor sie das auf die Leute
> loslassen? Ich find das hochgradig unprofessionell!

Silabe IDE nutzt für die 8051ger den Keil C Compiler, und ich bin 
ehrlich verwundert das es Versionen gegeben hat die Deinen geposteten C 
Source geschluckt hätten. Das war definitiv ein Bug.

Leider ist Keil einer der besseren Compiler für die 8051 Architektur...

von Bernd K. (prof7bit)


Bewertung
2 lesenswert
nicht lesenswert
Jim M. schrieb:
> Leider ist Keil einer der besseren Compiler für die 8051 Architektur...

Meine Begeisterung für diesen Compiler hält sich arg in Grenzen. Sobald 
zum Beispiel 32 bit integer ins Spiel kommen wirft der Optimizer das 
Handtuch. Da wird dann schon mal ein >>8 als acht einzelne Bitschifts 
ausgeführt anstatt einfach die 3 unteren Bytes zu nehmen oder Division 
durch ne konstante Zweierpotenz wird nicht als solche erkannt und solche 
Scherze. Da muß man ständig ein Auge auf den erzeugten Code haben. Von 
dem nostalgischen C89 Feeling zu dem er einem verhilft weil er seit den 
90ern nicht mehr weiterentwickelt wurde und anscheinend nur noch als 
untote Mumie mitgeschleift wird will ich gar nicht erst anfangen.

von Bernd K. (prof7bit)


Bewertung
1 lesenswert
nicht lesenswert
Jim M. schrieb:
> und ich bin
> ehrlich verwundert das es Versionen gegeben hat die Deinen geposteten C
> Source geschluckt hätten.

Kein Compiler der Welt hätte das geschluckt.

Der Code (das ist generierter Code von der IDE!) ist klammheimlich 
mutiert nachdem die IDE Updates gezogen hat! Ich hab noch den alten zum 
Vergleich.

Letzte Woche sah der noch so aus:
1
extern void WDT_0_enter_DefaultMode_from_RESET(void) {
2
  // $[WDTCN - Watchdog Timer Control]
3
  //Disable Watchdog with key sequence
4
  WDTCN = 0xDE; //First key
5
  WDTCN = 0xAD; //Second key
6
  // [WDTCN - Watchdog Timer Control]$
7
8
}

: Bearbeitet durch User
von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Die haben das Posting verschoben ohne die alte URI gültig zu lassen, 
www-Kompetenz bei Silabs also auch unterirdisch.

https://www.silabs.com/community/mcu/8-bit/forum.topic.html/efm8bb1_generatedco-HttE

von Peter D. (peda)


Bewertung
2 lesenswert
nicht lesenswert
Ich hätte eigentlich gedacht, den Codewizzard benutzt man nur einmal 
beim Start eines Projektes. Und heraus kommt dann ganz normaler C-Code, 
den man in sein Projekt einbindet.

Best practice ist, Variablen immer erst dann zu definieren, wenn sie 
gebraucht werden, also:
1
  for (uint32_t i = 0; i < (2 * 3062500UL) / (10000 * 3); i++) {
2
    NOP();
3
  }
bzw. falls der Compiler sehr alt ist:
1
  {
2
    uint32_t i;
3
    for (i = 0; i < (2 * 3062500UL) / (10000 * 3); i++) {
4
      NOP();
5
    }
6
  }

von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Ich hätte eigentlich gedacht, den Codewizzard benutzt man nur einmal
> beim Start eines Projektes. Und heraus kommt dann ganz normaler C-Code,
> den man in sein Projekt einbindet.

Die haben sich das als two-way-tool gedacht, es ist permanent aktiv, und 
es betrifft auch nur 2 oder 3 Dateien die man normalerweise überhaupt 
nicht anrührt.

> Best practice ist, Variablen immer erst dann zu definieren, wenn sie
> gebraucht werden, also:  for (uint32_t i = 0; i < (2 * 3062500UL) /
> (10000 * 3); i++) {
>     NOP();
>   }

Ja, wem sagst Du das? Wir haben es hier leider mit dem Keil C51 Compiler 
zu tun, das ist ein versteinertes Relikt aus den 80er Jahren, der 
spricht nur C89. Variablendeklarationen sind nur am Anfang erlaubt bevor 
jeglicher Code ausgeführt wird!

von Dr. Sommer (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Variablendeklarationen sind nur am Anfang erlaubt bevor
> jeglicher Code ausgeführt wird!

Genau wie im Linux Kernel Source Code... Hurra!

Von wegen Code-Generatoren:
Simulink generiert Code welcher Typen wie "int32_T" benutzt. Dieser ist 
für Cortex-M ein Alias auf "int". Natürlich möchte man im eigenen Code 
die Standard-Typen wie "int32_t" verwenden. Wenn man jetzt aber 
sinngemäß schreibt:
1
int32_T SimulinkVariable;
2
int32_t* variable = &SimulinkVariable;
Gibt's einen Compiler-Fehler. Weil int32_t ein "long" ist, welcher zwar 
auch 32bit groß ist, aber trotzdem ein anderer Typ und damit nicht 
kompatibel. Warum verwendet Simulink nicht einfach die Standard-Typen 
wie "int32_t"? Warum das Rad in Form von "int32_T" eckig neu erfinden? 
Danke Simulink-Ingenieure!

von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
> Simulink generiert Code welcher Typen wie "int32_T" benutzt. Dieser ist
> für Cortex-M ein Alias auf "int".

Es geht noch besser:

GigaDevice (großer chinesischer Hersteller für Flashspeicher und auch 
für ARM Cortex MCUs) hat folgende Perle tief drin in seinen Headern 
versteckt:
1
typedef enum {FALSE = 0, TRUE = !FALSE} bool;

Copyright 2017! Weiter oben haben sie stdint.h includiert aber für 
stdbool.h hats anscheinend nicht mehr gereicht. Da frag ich mich echt 
was die im Reich der Mitte für Kräuter rauchen. Uns das beste: Es wird 
nicht ein einziges mal referenziert irgendwo, es steht nur da rum und 
sorgt für Ärger. Man kann es auskommentieren und all deren mitgelieferte 
"Treiber"-Module kompilieren immer noch.

: Bearbeitet durch User
von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Da frag ich mich echt
> was die im Reich der Mitte für Kräuter rauchen.

Ha! Das frage ich mich auch. Ich darf mich auch gerade ausführlich mit 
chinesischem Code herumschlagen. Der ist auch enorm hässlich. Über die 
ganzen Verletzungen des C-Standards muss man schon geflissentlich 
hinweglesen, den Spaghetti-Code akzeptieren und die fehlende 
Fehlerbehandlung abnicken. Man lernt, sich über die kleinen Dinge im 
Leben zu freuen (Nicht-chinesische Kommentare, sinnvolle Funktionsnamen, 
Module welche überhaupt als Source vorliegen, Bereichsprüfung bei 
Argumenten). Der Code von Microchip (Indien) ist ähnlich toll.

Nochmal von wegen Simulink: Das generiert einen struct, welches den 
internen Zustand des Modells repräsentiert. Je nachdem, ob das Modell 
ein Gedächtnis hat oder nicht (z.B Integrator) muss man ein zusätzliches 
"work"-Struct anlegen und einen Zeiger darauf initialisieren. Natürlich 
kann der C(++)-Code nicht automatisch feststellen ob das "work"-struct 
existiert oder nicht (nichtmal mit SFINAE); wenn man das Modell jetzt 
abändert dass es kein Gedächtnis mehr braucht gibts einen 
Compiler-Fehler, im umgekehrten Fall Null-Zeiger-Dereferenzierung, die 
natürlich besonders schlecht zu finden ist weil auf Cortex-M die 
0-Adresse gültig ist.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Wir haben es hier leider mit dem Keil C51 Compiler
> zu tun, das ist ein versteinertes Relikt aus den 80er Jahren, der
> spricht nur C89.

Der Herr Keil hat damals ein hervorragendes Stück Arbeit geliefert. Es 
war der Startschuß, auch MCs in C zu programmieren. Es hat mich schon 
etwas gewurmt, als ich das erste Projekt von Assembler auf C umgestellt 
hatte, daß es kleiner und schneller geworden ist.
Aber der Herr Keil ist vermutlich schon lange in Rente und keiner hat 
sich gefunden, der die Entwicklung weiter führt.

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
> Warum das Rad in Form von "int32_T" eckig neu erfinden?

Ich vermute, weil es eben immer noch zu viele Compiler gibt, die bei C89 
stehen geblieben sind und es selbst 30(!) Jahre später nicht geschafft 
haben, einen simplen Header mit ein paar Typedefs mitzuliefern.
Oder es liegt daran, dass so Dinge wie Autosar C89 vorschreiben.

: Bearbeitet durch User
von SummSumm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Silabs hat Kritik aber voll verdient - das Simplicity Studio macht bei 
mir auch regelmäßig Faxen.

Nicht wegen geändertem Code, sondern einfach weil es die 
Projekteinstellungen "vergisst" und ich alles nochmal neu einstellen 
darf. Und es packt oft Sachen ins Projekt mit rein die ich überhaupt 
nicht haben will - Treiber für irgendwelche Chips die auf den 
Entwicklungsboards drauf sind und sowas - wirft dann natürlich Fehler 
wenn das nicht konfiguriert ist.

Passiert oft wenn man eben diese GUI Konfiguratoren bemüht (für den 
Wireless Kram mit seinen 1000 Optionen ist das leider ohne recht 
aufwändig) oder ich das Projekt auf einen anderen Rechner übertrage... 
oder nach größeren Updates.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Bewertung
4 lesenswert
nicht lesenswert
Yalu X. schrieb:
> Torsten R. schrieb:
>> Ich finde, dass kann man durchaus auch einfach mal als Erfahrungsbericht
>> lesen und dann hat es auch seinen Wert (der über Bernds Frustloslassen
>> hinausgeht).
>
> Das schon. Aber Bernd beginnt seinen Beitrag mit den Worten
>
>> Ja genau Silabs, euch mein ich!

Ich erkläre dir das mal allgemein, nicht anhand von Silabs. Leider ist 
es heute so, dass viele Firmen nur noch dann reagieren, wenn man deren 
dreckige Wäsche öffentlich wäscht. Nur wenn eine Firma öffentlich 
Scheiße aussieht kommt man dort manchmal auf die Idee etwas zu tun. 
Danke ihr verfickten BWLer ...

Praktisches Beispiel: Du hast ein Problem mit DHL (wer hat das nicht)? 
Vergiß den telefonischen oder E-Mail "Support". Verarschen kann man sich 
alleine. Treibt man statt dessen zuerst die Sau durch's Internet Dorf, 
besonders durch soziale Medien, dann nimmt sich das "DHL Social Media 
Team" des Problems an.

Wenn man solche Erfahrungen ein paar mal gemacht hat, dann lernt man 
daraus und es wird zur Routine. Zuerst die Firma öffentlich schlecht 
machen und anprangern, dann auf Support hoffen wird zum normalen 
Vorgehen. Man ist ja lernfähig. Die Firmen wollen das so, die Firmen 
bekommen es. Willkommen im Internet.

Beitrag #5751592 wurde von einem Moderator gelöscht.
von Le X. (lex_91)


Bewertung
-2 lesenswert
nicht lesenswert
Hannes J. schrieb:
> Beispiel: Du hast ein Problem mit DHL (wer hat das nicht)?

Ich hab das nicht. Noch nie.

von juchuu (Gast)


Bewertung
0 lesenswert
nicht lesenswert
SummSumm schrieb:
> Silabs hat Kritik aber voll verdient - das Simplicity Studio macht
> bei
> mir auch regelmäßig Faxen.

Wir brauchen das nur zum Setzen der CP2102-Config, und dafür ist es so 
RICHTIG übertrieben. Weil die neueren Chips (CP2102N) nur noch davon 
unterstützt werden, ist SILAB in der Beliebtheit hier nicht gerade 
gestiegen.

Was die Codegeneratoren und Code vom Hersteller angeht: Ich persönlich 
lasse (für Bastelprojekte) die Finger davon. Gebranntes Kind scheut das 
Feuer und so. Bei mir wars die Peripheral-Lib von Microchip. Neue 
Version der IDE -> Millionen Fehler (Perihperal Lib depracted oder so).

Beitrag #5751735 wurde von einem Moderator gelöscht.
von c.m. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Scheiß ... Hokuspokus ... blöde Silabs-Projekt ... ungetestetes defektes
> Update ... verdreckten IDE ... Elender IDE-Rotz! ... Scheiß
> </rant>

Oh das Gefühl kenne ich: Tools die dir eigentlich helfen sollen die 
Arbeit zu machen sind Müll, und du ärgerst dich erstmal damit herum 
diese Tools zu fixen anstatt an der eigentlichen Aufgabe zu arbeiten. 
Einfach nur geil!

Die resultierenden verbalen Ausrutscher bezeichne ich als 
berufsbedingte Koprolalie

von Bernd K. (prof7bit)


Bewertung
-1 lesenswert
nicht lesenswert
c.m. schrieb:
> und du ärgerst dich erstmal damit herum
> diese Tools zu fixen anstatt an der eigentlichen Aufgabe zu arbeiten.

Jetzt muß ich Zeit aufwenden dem Trottel im Silabs-Forum lang und breit 
und dreimal zu erklären daß der Bug überhaupt existiert, wie es 
ausschaut hat er eine Leseschwäche! Es gibt anscheinend auch überhaupt 
keinen Bugtracker und "support" schickt mich ins Forum. Wann immer ich 
einen Bug melden will muß ich anscheinend erst an diesem nicht besonders 
hellen Türsteher da vorbei, die IDE-Entwickler bekommen das ansonsten 
nie zu sehen!

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Jetzt muß ich Zeit aufwenden dem Trottel im Silabs-Forum lang und breit
> und dreimal zu erklären daß der Bug überhaupt existiert

Normal. Man muss sich damit abfinden dass es unmöglich ist den 
"Support"-Leuten das Problem zu erläutern (die, die das irgendwann man 
programmiert haben arbeiten bestimmt sowieso nicht mehr da). Durch 
schmutzige Tricks und Hacks das Problem zu umgehen ist meist 
ökonomischer.

Schreibe in deinem Fall vielleicht "Projekt kompiliert nicht" statt 
"Code-Generator erzeugt falschen Code". Es ist meist besser dass die 
"Support"-Leute selbst herausfinden woran es liegt, als selbst schon 
Ursachenforschung darzulegen, die einem dann nicht abgenommen wird.

Es hilft auch Probleme mit Eval-Boards und Beispielprojekten zu 
reproduzieren. Wenn es da schon nicht funktioniert werden die eher 
hellhörig.

Beitrag #5751853 wurde von einem Moderator gelöscht.
Beitrag #5751878 wurde von einem Moderator gelöscht.
Beitrag #5752119 wurde von einem Moderator gelöscht.
Beitrag #5752166 wurde von einem Moderator gelöscht.
von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Bernd K. schrieb:
> Wann immer ich
> einen Bug melden will muß ich anscheinend erst an diesem nicht besonders
> hellen Türsteher da vorbei, die IDE-Entwickler bekommen das ansonsten
> nie zu sehen!

Der "Türsteher" nennt sich offiziell "First Level Support".

von Mike J. (linuxmint_user)


Bewertung
3 lesenswert
nicht lesenswert
Ich bin seit Jahren dafür dass hier ein Auskotz-Bereich erstellt wird, 
wo man dann seinen Ärger auch mal los wird ... und wo andere Leute 
vielleicht auch mal sehen womit man sich gerade beschäftigt.

Der Thread-Name könnte mit dem User-Namen anfangen und dann kommt das 
Thema.

von Bernd K. (prof7bit)


Bewertung
2 lesenswert
nicht lesenswert
Ich wurde soeben informiert daß das Problem jetzt in deren internen 
Bug-Tracker eingepflegt wurde:
1
Case #: 00191110
2
Subject: EFM8BB1 generated code for watchdog is wrong.
3
Company: <zensiert>
4
Case Type: Other
5
Part Number: EFM8BB10F8G-QSOP24
6
Created Date: 2/27/2019
7
Case History: Customer Case: 00191110 [Support agents click here]
8
9
Silicon Labs
10
400 W Cesar Chavez
11
Austin, TX 78701 USA
12
ref:_00DA0L2kI._5001M1HxbM7:ref
13
14
15
The procedure to reproduce the issue:
16
1. update SS to latest version and update SDK and hardware configurator tool.
17
2. import example like
18
C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\8051\v4.1.6\examples\EFM8BB1_SLSTK2020A\Blinky
19
3. you should see the code in initDevice.c was not generated with the latest hardware configurator
20
3. open the configurator file in the project.
21
4. generate the source through the configurator file.
22
5. the code could not pass building process.

Beitrag #5752878 wurde von einem Moderator gelöscht.
Beitrag #5754739 wurde von einem Moderator gelöscht.
von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Ist es die Aufgabe des Herstellers, "das Internet" in seiner Gänze
> abzuklappern, um rauszufinden, ob jemand einen Bug gefunden hat?

Nein, aber einfach mal vor dem Abgabetermin eine Testsuite drüberlaufen 
lassen sollte sich doch erledigen lassen...

Sämtliche Ingeneure, die bei unserem SoC-Hersteller (mit dem Q am 
Namensanfang) anfragen, ob ein Treiber den CTS-Test (Google-Testsuite, 
verpflichtend für Android) bestanden hat, bekommen keine Antwort darauf. 
Auch keine Testresultate. Schlussfolgerung: Die testen nicht.

Joachim B. schrieb:
> aber manche Fehler lassen sich durchaus vom
> Hersteller in wenigen Tests finden und mal unter uns,
>ich glauber den Shice nicht mehr "Sie sind ja der Erste
> der das meldet"

Ich habe gerade Spaß mit McAfee... wenn man unter WSL "git clone" oder 
"git log" nutzt, wirft das System sofort einen Bluescreen.

Erste Frage vom Support: "Warum sollte McAfee schuld sein?"
- weil das ein McAfee-Treiber ist, der da abstürzt
- Link zu McAfee-Community-Forenpost?
Zweite Frage: "wir hätten gerne Logs".
- ich produziere seit einer Woche Logs.

Meine Frage, ob die wenigstens mal versucht haben, das Problem zu 
reproduzieren (Erklärung in der Mail), wird konsequent übergangen und 
durch "mehr Logs bitte" beantwortet.

Peter D. schrieb:
> Ich hätte eigentlich gedacht, den Codewizzard benutzt man nur einmal
> beim Start eines Projektes. Und heraus kommt dann ganz normaler C-Code,
> den man in sein Projekt einbindet.

Ich weiß ja nicht... Wir haben so ein System auf Arbeit, wo aus 
Excel-Tabellen sowohl C++-Code als auch Header-Dateien rausfallen. Das 
passiert nicht automatisch, also hat man fertigen Code.

Inzwischen bin ich der Meinung, dass sämtliche Codegeneratoren als Teil 
des Buildprozesses sämtlichen generierten Code neu erzeugen müssen, 
denn dann fällt mir wenigstens der Build auf die Nase (oder das Ergebnis 
kommt nicht durch die Testsuite). Das merkt man wenigstens rechtzeitig 
und nicht eine Woche später, wenn man die Eingabedateien aktualisiert.

Dr. Sommer schrieb:
> Von wegen Code-Generatoren:
> Simulink generiert Code welcher Typen wie "int32_T" benutzt.
> Dieser ist für Cortex-M ein Alias auf "int".

Ich sehe sehr viel Android-Code, der mit VOID, UINT32 und UCHAR garniert 
ist. Oder anderen Aliasen für die Standardtypen. Sehr viel Code. 
Komplett refaktorisiert und inkompatibel zum Vorgänger, definitiv nicht 
älter als 2015.

Und obwohl das alles für Android ist, muss man dadrin mit einem 
Windows-Programm rumfuhrwerken und der Code besitzt seine "#ifdef WIN32" 
und ist kompatibel mit Visual Studio.

Achso, und er tritt ständig auf NULL-Pointer. Denn die haben ihr 
assert() so gebaut, dass es einen NULL-Pointer dereferenziert. Man kann 
so einem Compiler schließlich nicht trauen...

Bernd K. schrieb:
> GigaDevice (großer chinesischer Hersteller für Flashspeicher und auch
> für ARM Cortex MCUs) hat folgende Perle tief drin in seinen Headern
> versteckt:
> typedef enum {FALSE = 0, TRUE = !FALSE} bool;

Ich kenne nur die Variante mit:
1
#define FALSE 0
2
#define TRUE 1

Und ja, beide Konstanten sehe ich auch ständig. Vergleiche immer in 
Yoda-Schreibweise...

Dr. Sommer schrieb:
> Das frage ich mich auch. Ich darf mich auch gerade ausführlich mit
> chinesischem Code herumschlagen. Der ist auch enorm hässlich.

Ich musste solchen Code bisher nur lesen, aber da gab es einen 
gewaltigen Vorteil: Es ist immerhin Code. Hässlich und fehlerhaft, aber 
wenigstens nicht zig Ebenen aus Datenstrukturen übereinander gestapelt.

Dr. Sommer schrieb:
> Der Code von Microchip (Indien) ist ähnlich toll.

Die Ingeneure auch. An der Uni habe ich deren Kompetenz nur in den 
Extremen gesehen (d.h. entweder wirklich Ahnung oder Heißluftgebläse). 
Ich wüsste gerne, warum das so ist.

Hannes J. schrieb:
> Praktisches Beispiel: Du hast ein Problem mit DHL (wer hat das nicht)?

Inzwischen wird PostNord sogar schon vom Staatsfernsehen als Witz 
benutzt...

Aber hey, ich habe heute (Samstag!) einen Anruf von der 
Krankenversicherung bekommen, dass ich 50% meiner Arztrechnung 
zurückbekomme. Die habe ich 2017 eingereicht. "Ja, wir liegen etwas 
zurück."

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> bekommen keine Antwort darauf.

Das ist normal. Die großen Haie interessieren sich nicht für kleine 
Fische und halten es nicht für nötig, zu antworten. Das ist auch bei 
harmlosen Fragen so, welche sich problemlos beantworten lassen sollten. 
Auf eine Anfrage von Google würden sie antworten...

S. R. schrieb:
> Wir haben so ein System auf Arbeit, wo aus Excel-Tabellen sowohl
> C++-Code als auch Header-Dateien rausfallen

C++ aus Excel? Oh graus...

S. R. schrieb:
> Ich sehe sehr viel Android-Code, der mit VOID, UINT32 und UCHAR garniert
> ist.

Ja, kenne ich. Das ist völlig Banane.

S. R. schrieb:
> Und obwohl das alles für Android ist, muss man dadrin mit einem
> Windows-Programm rumfuhrwerken und der Code besitzt seine "#ifdef WIN32"
> und ist kompatibel mit Visual Studio.

Ja die Entwickler tun sich sehr schwer damit dass Android Linux ist. Sie 
stellen nur sehr widerwillig Linux-basierte Android-Tools zur Verfügung. 
Am liebsten würden sie alles als .exe anbieten, natürlich nur zu WinXP 
kompatibel.

S. R. schrieb:
> Man kann so einem Compiler schließlich nicht trauen...

Wer sonst mit MSVC und anderen proprietären Compilern arbeitet... ;-)

S. R. schrieb:
> aber wenigstens nicht zig Ebenen aus Datenstrukturen übereinander
> gestapelt.

Naja, wenn halt Daten abgebildet werden sollen...

S. R. schrieb:
> "Ja, wir liegen etwas zurück."

Benutzen bestimmt SAP ;-)

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
>> aber wenigstens nicht zig Ebenen aus Datenstrukturen
>> übereinander gestapelt.
>
> Naja, wenn halt Daten abgebildet werden sollen...

Bei uns auf Arbeit ist der Begriff "convert-function" zum running gag 
geworden. Wir haben ungefähr 300 davon, die alle verschiedene 
Datenstrukturen ineinander umformen.

Macht schon Spaß, einem Nullpointer hinterherzulaufen, nur um sieben 
Ebenen tief im Code ein memcpy zu finden... und dann nochmal ein halbes 
Dutzend Ebenen tief runterzumüssen, bis man die (statische!) 
Datenstruktur findet. Die Woche ist gelaufen.

Chinesischer Code hat üblicherweise weniger Abstraktionsebenen.

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> Bei uns auf Arbeit ist der Begriff "convert-function" zum running gag
> geworden

Ich kenn das mehr mit "Tool" ?

S. R. schrieb:
> Wir haben ungefähr 300 davon, die alle verschiedene Datenstrukturen
> ineinander umformen.

Klingt, als bräuchtet ihr eine normalisierte Struktur, aus welcher dann 
die gewünschten Auszüge gemacht werden... das geht am besten in 
funktionalen Sprachen

S. R. schrieb:
> Macht schon Spaß, einem Nullpointer hinterherzulaufen, nur um sieben
> Ebenen tief im Code ein memcpy zu finden

Habt ihr etwa keine assert(pointer) an jeder Funktion?

S. R. schrieb:
> Chinesischer Code hat üblicherweise weniger Abstraktionsebenen.

Aber 500-zeilige Funktionen sind auch nicht so super.

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
>> Wir haben ungefähr 300 davon, die alle verschiedene Datenstrukturen
>> ineinander umformen.
>
> Klingt, als bräuchtet ihr eine normalisierte Struktur, aus welcher dann
> die gewünschten Auszüge gemacht werden...

Nö... das passiert, wenn die Entwickler nicht miteinander reden und sich 
nicht vertrauen. Dann gibt es in jedem Modul eine eigene Datenstruktur, 
die ein Rechteck beschreibt - und jeweils eine "convert"-Funktion von/zu 
den Rechteck-Funktionen des jeweils anderen Moduls.

Und Konstanten/Enumerationen, die Android vordefiniert, haben wir auch 
nochmal als separate Datentypen definiert. Mindestens zwei mal.

Dr. Sommer schrieb:
> Habt ihr etwa keine assert(pointer) an jeder Funktion?

Manuelle Prüfungen, (fast) überall. Ein zügiger Absturz ist mir aber 
lieber, als ein schlichter Eintrag im Log. Zumal der Treiber nach sowas 
ohnehin nicht mehr richtig funktioniert.

Aber auch ein assert(pointer) hilft nur begrenzt, wenn einfach Gülle in 
die Hardwareregister geschrieben wird. Besonders nervig, wenn das 
manchmal funktioniert (use-after-free). Da sucht man sich nen Wolf.

von janvi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> ich glauber den Shice nicht mehr "Sie sind ja der Erste der das meldet"

Silab geht ja noch, bei Realtek habe ich schon zwei Tage investiert um 
ihm einen Fehler genau reproduzierbar zu beschreiben. Als Antwort kam 
dann dann: Hätten sie die FAQ Frage Nr. 86 gelesen ...
War also schon jahrelang bekannt und die Kunden sollen sich halt was 
anderes raussichen wenns ihnen nicht passt

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.