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
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.
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 | }
|
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 |
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.