2017-06-04 5 views
1

Ich habe Schwierigkeiten, ein Stück Code zu arbeiten, habe ich einen Code mit einer Funktion mit lokalen Puffer, wenn der lokale Puffer initialisiert wird, dann habe ich Ausnahme, aber wenn nur ohne Initialisierung deklariert es funktioniert gut, ich kann nicht verstehen warum. Ich habe auch die Stack-Größe im Linker erhöht, aber das scheint nicht das Problem zu sein.Vollständige Pufferinitalisierung führt zu Ausnahme

Hinweis: Ich kompiliere mit c99/c11 kompilieren Option, die die gesamte Pufferinitialisierung unterstützen.

#define UDS_SRV_CFG2_MAX 20 

NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) { 

    tUdsStatus eUdsStatus; 
    u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX] = { 0 }; // this leads to exception 
    //... 
} 

NCS_PRI_FCT tUdsStatus UDS_RdbiManagement(u16 *puwLen, u8 *aubUdsData) { 

    tUdsStatus eUdsStatus; 
    u8 ubTableCfgIdx[UDS_SRV_CFG2_MAX]; // code works fine here 
    // ... 
} 
+1

Sie können nicht kompilieren mit c99/c11 kompilieren Option ". Entweder bauen Sie im C99-Modus, * oder * bauen Sie im C11-Modus. Sie können beides nicht tun, sie schließen sich gegenseitig aus. –

+0

Was meinst du "ganze Puffer Initialisierung"? In C (C89, C99, C11) gibt es keine partielle Initialisierung. Objekte sind entweder nicht initialisiert oder vollständig (alle Arbeitsbytes) initialisiert. – pmg

+0

Und * wo * erhalten Sie die Ausnahme? Wenn 'UDS_RdbiManagement' aufgerufen wird? Irgendwo anders? Sie * haben * einen Debugger verwendet, um herauszufinden, wo der Absturz in * Ihrem * Code passiert? –

Antwort

1

Nun Dank für Ihre Antworten war das Problem infact Stapel Ausrichtung, die Ausnahmen führt, da der Stapel Ausrichtung der Plattform 4byts, 20-Byte-Puffer übergeben Sie den Test ist aber 15 Bytes mit einer Ausnahme fehlgeschlagen Puffer da von falschem Compiler-Alignment. Dies wurde behoben, indem die Kompilierungsoption für den Fehlausrichtungsstapel hinzugefügt wurde und in der Hardware das korrekte Flag aktiviert wurde.

Nabil,

embbeded/Elektronik-Ingenieur.

Verwandte Themen