Cześć,
Używam stm32F407, Eclpisa z bleeding-edge-toolchain, projekt oparty no przykładzie freddiego oraz używam bibliotek StdPeriph_Drive.
Napotkałem dzisiaj na dziwny problem.
Tworząc tablice (uint32_t) 100-elementową program działa poprawnie. Gdy rozszerzę tablicę do 1000, program się zawiesza.
Kod okroiłem do inicjalizacji procesora i tej tablicy oraz zapisania do niej kolejnych wartości od 0 w górę (aby kompilator nie wyrzucił zmiennej). Niestety problem nadal występuje.
Podglądając pamięć w debuggerze okazało się że pierwszy element tablicy jest
zapisany pod adresem : 0x1FFF F410 i ma wartość 0xFFFF FFFF
Natomiast ostatni : 0x2000 03B0 i ma wartość 0xEC00 0000
Gdy tablica była 100-elementowa dane były zapisywane od adresu 0x20000000 w górę.
Czy ktoś jest w stanie wyjaśnić dlaczego te dane są zapisywane pod złym adresem (poniżej 0x2000 0000) oraz jak ten problem można rozwiązać.
Z góry dzięki
Dołączam konfigurację rcc oraz pętlę tworząca tablicę.
Używam stm32F407, Eclpisa z bleeding-edge-toolchain, projekt oparty no przykładzie freddiego oraz używam bibliotek StdPeriph_Drive.
Napotkałem dzisiaj na dziwny problem.
Tworząc tablice (uint32_t) 100-elementową program działa poprawnie. Gdy rozszerzę tablicę do 1000, program się zawiesza.
Kod okroiłem do inicjalizacji procesora i tej tablicy oraz zapisania do niej kolejnych wartości od 0 w górę (aby kompilator nie wyrzucił zmiennej). Niestety problem nadal występuje.
Podglądając pamięć w debuggerze okazało się że pierwszy element tablicy jest
zapisany pod adresem : 0x1FFF F410 i ma wartość 0xFFFF FFFF
Natomiast ostatni : 0x2000 03B0 i ma wartość 0xEC00 0000
Gdy tablica była 100-elementowa dane były zapisywane od adresu 0x20000000 w górę.
Czy ktoś jest w stanie wyjaśnić dlaczego te dane są zapisywane pod złym adresem (poniżej 0x2000 0000) oraz jak ten problem można rozwiązać.
Z góry dzięki
Dołączam konfigurację rcc oraz pętlę tworząca tablicę.
Code: c
Code: c