Witam!
Eclipse Kepler
Sourcery CodeBench Lite 2011.09-69
OpenOCD 0.6.1
STM32F103ZET6
Szablon projektu - Freddie Chopin
Do tej pory wszystkie projekty na STM32 działały dobrze jednak teraz buduję większa aplikację i pojawiają się problemy. Objawia się to losową zmianą wartości zmiennych np. zadeklarowanych jako const czy przerwaniem __Default_Handler.
Przejrzałem cały program dokładnie kilkanaście razy, sprawdziłem wszystkie operacja na wskaźnikach, ale niestety to nie rozwiązało problemu.
Stąd moje pytania:
W jaki sposób dokładnie określić rozmiar __main_stack_size i __process_stack_size w skrypcie linkera?
Do tej pory wiedziałem, że dla "bardziej rozbudowanych" aplikacji process_stack_size ma być 1-2kB, a main_stack_size niezerowy ( ale jaki? ) gdy używam przerwań.
Jak oszacować ilość potrzebnego RAM'u przed zmianą kontrolera na mniejszy? Czytałem, że jednym ze sposobów jest wypełnienie RAM'u znanymi wartościami i podczas działania programu np. za pomocą debugera zobaczyć jak daleko zaszły zmiany. Tylko nie mam pomysłu jak to zrobić w Eclipse.
Jak określić zajętość RAM podczas działania programu, czytałem o porównywaniu wskaźnika stosu i wskaźnika sterty, ale nie wiem do tego się dobrać? Czy wystarczy __get_PSP() - __get_MSP() z core_cm3 CMSIS'a?
W projekcie wykorzystuje w wielu funkcjach duże tablice, podobno lepiej jest je deklarować dynamicznie lub globalnie. Jakia jest różnica przy tego typu deklaracjach:
Eclipse Kepler
Sourcery CodeBench Lite 2011.09-69
OpenOCD 0.6.1
STM32F103ZET6
Szablon projektu - Freddie Chopin
Do tej pory wszystkie projekty na STM32 działały dobrze jednak teraz buduję większa aplikację i pojawiają się problemy. Objawia się to losową zmianą wartości zmiennych np. zadeklarowanych jako const czy przerwaniem __Default_Handler.
Przejrzałem cały program dokładnie kilkanaście razy, sprawdziłem wszystkie operacja na wskaźnikach, ale niestety to nie rozwiązało problemu.
Stąd moje pytania:
W jaki sposób dokładnie określić rozmiar __main_stack_size i __process_stack_size w skrypcie linkera?
Do tej pory wiedziałem, że dla "bardziej rozbudowanych" aplikacji process_stack_size ma być 1-2kB, a main_stack_size niezerowy ( ale jaki? ) gdy używam przerwań.
Jak oszacować ilość potrzebnego RAM'u przed zmianą kontrolera na mniejszy? Czytałem, że jednym ze sposobów jest wypełnienie RAM'u znanymi wartościami i podczas działania programu np. za pomocą debugera zobaczyć jak daleko zaszły zmiany. Tylko nie mam pomysłu jak to zrobić w Eclipse.
Jak określić zajętość RAM podczas działania programu, czytałem o porównywaniu wskaźnika stosu i wskaźnika sterty, ale nie wiem do tego się dobrać? Czy wystarczy __get_PSP() - __get_MSP() z core_cm3 CMSIS'a?
W projekcie wykorzystuje w wielu funkcjach duże tablice, podobno lepiej jest je deklarować dynamicznie lub globalnie. Jakia jest różnica przy tego typu deklaracjach:
Code: c