Forum: Mikrocontroller und Digitale Elektronik Ungewollte Pfade in S19-datei


von Stefan H. (cheeco)


Angehängte Dateien:

Lesenswert?

Hallo,

ich programmiere einen STM8003F3 mit dem ST Visual Develop und dem 
Cosmic-Compiler. Alles funktioniert wunderbar, aber auch in der 
Release-Version fallen mir Pfadangaben in der .S19-Datei auf, die 
wahrscheinlich auch auf den Mikrocontroller programmiert werden.
Habe schon in den Compile-Optionen nach Debug-Symbolen etc. gesucht, 
allerdings konnte ich nichts verdächtiges finden.

Hat jemand eine Idee, woher die Pfadangaben kommen können?
Ist wie gesagt nur ein kosmetisches Problem, würde mich aber trotzdem 
interessieren.

Stefan


C COMPILER COMMAND LINE:
cxstm8 +warn +mods0 +split -pne -pp -dSTM8S003 -i..\..\..\firmware 
-i..\..\..\..\libraries\stm8s_stdperiph_driver\inc 
-i..\..\..\..\utilities\stm8s_eval 
-i..\..\..\..\utilities\stm8s_eval\common 
-i..\..\..\..\utilities\stm8s_eval\stm8-128_eval $(ToolsetIncOpts) 
-cl$(IntermPath) -co$(IntermPath) $(InputFile)

LINKER COMMAND LINE:
clnk $(ToolsetLibOpts) -o $(OutputPath)$(TargetSName).sm8 
-m$(OutputPath)$(TargetSName).map $(OutputPath)$(TargetSName).lkf
cvdwarf $(OutputPath)$(TargetSName).sm8

von Niklas Gürtler (Gast)


Lesenswert?

Benutzt du vielleicht irgendwo
1
__FILE__
Im Code? Das landet dann natürlich im Image. Eventuell ist das auch 
indirekt in einem Makro der Standard Library.

von Keiler (Gast)


Lesenswert?

Niklas Gürtler schrieb:
> Benutzt du vielleicht irgendwo__FILE__
> Im Code? Das landet dann natürlich im Image. Eventuell ist das auch
> indirekt in einem Makro der Standard Library.

Das zu verifizieren oder auszuschliessen würde man mit einem "leeren" 
Programm wie dem hier:
1
main() {
2
for(;;);
3
}

von Keiler (Gast)


Lesenswert?

Da fällt mir noch was ein:
Vielleicht sind das Teile der debug Informationen.

Deinen compiler kenne ich nicht, bei gcc sind das die switches die mit 
"-g" zu tun haben.

Ein kurzer Test zeigt ca. 3kb debug Informationen:
1
#include <stdio.h>
2
3
int main(void) {
4
  printf("BLABLA\n");
5
  return 0;
6
}

Dann:
1
$ gcc -Wall -g test.c -o debug
2
$ gcc -Wall -g test.c -o nodebug
3
$ ls -al
4
5
-rwxr-xr-x 1 bx bx 16356 Dec  2 12:53 debug
6
-rwxr-xr-x 1 bx bx 13720 Dec  2 12:53 nodebug
7
-rw-r--r-- 1 bx bx    71 Dec  2 12:53 test.c

Gehe ich nun mit "strings" über die beiden binaries kommt da einiges bei 
raus, zuviel zum direkten pasten. Ist ja auch nur ein Beispiel und nicht 
die Lösung.
1
$ strings debug
2
$ strings nodebug

von Stefan H. (cheeco)


Lesenswert?

Danke für die Hinweise, ich habe das Problem gefunden.
In der Include-Datei stm8s_conf.h von den Standard Peripheral Library 
steht unten:
1
******************************************************************************
2
  * @file    stm8s_conf.h
3
  * @author  MCD Application Team
4
  * @version V2.3.0
5
  * @date    16-June-2017
6
  * @brief   This file is used to configure the Library.
7
   ******************************************************************************
8
....
9
....
10
/* Uncomment the line below to expanse the "assert_param" macro in the
11
   Standard Peripheral Library drivers code */
12
#define USE_FULL_ASSERT    (1) 
13
14
/* Exported macro ------------------------------------------------------------*/
15
#ifdef  USE_FULL_ASSERT
16
17
/**
18
  * @brief  The assert_param macro is used for function's parameters check.
19
  * @param expr: If expr is false, it calls assert_failed function
20
  *   which reports the name of the source file and the source
21
  *   line number of the call that failed.
22
  *   If expr is true, it returns no value.
23
  * @retval : None
24
  */
25
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
26
/* Exported functions ------------------------------------------------------- */
27
void assert_failed(uint8_t* file, uint32_t line);
28
#else
29
#define assert_param(expr) ((void)0)
30
#endif /* USE_FULL_ASSERT */

Wenn man die Zeile #define USE_FULL_ASSERT auskommentiert, dann 
verschwinden die Pfadangaben. Wenn man's weiß, ist es im Nachhinein 
ziemlich offensichtlich.

Stefan

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Keiler schrieb:
> Da fällt mir noch was ein:
> Vielleicht sind das Teile der debug Informationen.

Die Debug-Informationen landen aber nicht im Flash-Image und damit auch 
nicht in der S19-Datei.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.