Witam,
ostatnio zajmowałem się operacją zapisu i odczytu danych z pamięci flash na mojej płytce F3 discovery. Problem pojawił się w momencie próby użycia przerwania generowanego przez timer lub przy restarcie mikroprocesora. Procek wtedy się zwiesza (zapętla się w endless loop w pliku startup_stm32f303xc.s). Zapewne chodzi o to, że operacje na flashu blokują procesor przy próbie wykonania przerwania. W tym celu po skonsultowaniu się z supportem oraz własnym przeszukaniu forów, myślę, że należy skopiować ISR vector oraz funkcje przerwań do pamięci RAM. Nie wiem jak skopiować ten wektor a co do funkcji to znalazłem taką notę: Link
i w niej jest ładnie opisane kopiowanie kodu do CCM RAM. Postępowałem krok po kroku jak w tej instrukcji (GNU_based toolchain) no i po wgraniu kodu, który się ładnie skompilował program działa, ale oczywiście bez wektora ISR także w RAMie problem pozostał ten sam. Czy ktoś może mi poradzić jak skopiować ten wektor od pamięci RAM?
mapowanie opisane w punkcie 2.2.4 nie działa mi w takim sensie, że procek wysiada od razu na początku.
ostatnio zajmowałem się operacją zapisu i odczytu danych z pamięci flash na mojej płytce F3 discovery. Problem pojawił się w momencie próby użycia przerwania generowanego przez timer lub przy restarcie mikroprocesora. Procek wtedy się zwiesza (zapętla się w endless loop w pliku startup_stm32f303xc.s). Zapewne chodzi o to, że operacje na flashu blokują procesor przy próbie wykonania przerwania. W tym celu po skonsultowaniu się z supportem oraz własnym przeszukaniu forów, myślę, że należy skopiować ISR vector oraz funkcje przerwań do pamięci RAM. Nie wiem jak skopiować ten wektor a co do funkcji to znalazłem taką notę: Link
i w niej jest ładnie opisane kopiowanie kodu do CCM RAM. Postępowałem krok po kroku jak w tej instrukcji (GNU_based toolchain) no i po wgraniu kodu, który się ładnie skompilował program działa, ale oczywiście bez wektora ISR także w RAMie problem pozostał ten sam. Czy ktoś może mi poradzić jak skopiować ten wektor od pamięci RAM?
mapowanie opisane w punkcie 2.2.4 nie działa mi w takim sensie, że procek wysiada od razu na początku.