Witam,
Napisałem program, w którym do odliczania czasu używam SysTick'a i przerwania od niego. Gdy skompiluję i zapiszę program do pamięci Flash, program ten działa jak należy i możliwe jest jego debugowanie. Jeśli skompiluję i wpiszę program do pamięci RAM, to program nie działa poprawnie, a debugować go można jedynie do momentu wystąpienia przerwania od SysTick'a - w tym momencie dostaję komunikat 'No source available for "" ' lub 'No source available for function "g_pfnVectors()" '. W tym pierwszym przypadku PC ma wartość spoza zakresu pamięci RAM i Flash, w drugim PC = 0x20000004.
Sprawdzałem jak wygląda wygenerowany po kompilacji program i wszystko wydaje się być w porządku - w odpowiednim miejscu tablicy wektorów jest wpisany poprawny adres procedury obsługi przerwania SysTick'a, a kod programu jest w całości umieszczony w pamięci RAM. Nie jest to raczej problem z kompilacją, bo programy bez przerwań umieszczone w pamięci RAM działają poprawnie i mogę je debugować. Skorzystałem także z prostego programu dostępnego na stronie ST - ten program również nie działa w pamięci RAM i daje się debugować tylko do momentu wystąpienia przerwania.
Może o czymś zapomniałem lub czegoś nie wiem?
Używam środowiska w konfiguracji: Eclipse + CodeSourcery Lite + OpenOCD + Turtelizer2. Procesor to STM32F103RBT6.
Napisałem program, w którym do odliczania czasu używam SysTick'a i przerwania od niego. Gdy skompiluję i zapiszę program do pamięci Flash, program ten działa jak należy i możliwe jest jego debugowanie. Jeśli skompiluję i wpiszę program do pamięci RAM, to program nie działa poprawnie, a debugować go można jedynie do momentu wystąpienia przerwania od SysTick'a - w tym momencie dostaję komunikat 'No source available for "" ' lub 'No source available for function "g_pfnVectors()" '. W tym pierwszym przypadku PC ma wartość spoza zakresu pamięci RAM i Flash, w drugim PC = 0x20000004.
Sprawdzałem jak wygląda wygenerowany po kompilacji program i wszystko wydaje się być w porządku - w odpowiednim miejscu tablicy wektorów jest wpisany poprawny adres procedury obsługi przerwania SysTick'a, a kod programu jest w całości umieszczony w pamięci RAM. Nie jest to raczej problem z kompilacją, bo programy bez przerwań umieszczone w pamięci RAM działają poprawnie i mogę je debugować. Skorzystałem także z prostego programu dostępnego na stronie ST - ten program również nie działa w pamięci RAM i daje się debugować tylko do momentu wystąpienia przerwania.
Może o czymś zapomniałem lub czegoś nie wiem?
Używam środowiska w konfiguracji: Eclipse + CodeSourcery Lite + OpenOCD + Turtelizer2. Procesor to STM32F103RBT6.