Witam
Używam do celów testowych uk z rdzeniem ARM7TDMI flash 32kB RAM 8KB. Niestety nie są to porażające wartości stąd chciałbym możliwie optymalnie je wykorzystać przed ew. zmianą uk.
Bardzo często program ląduje w uchwycie ldr pc, =Data_Abort_Handler // Data Abort exception
...
Inicjalizacja pamięci:
Zgodnie z dokumentacją aby uk z rdzeniem ARM7 mogły pracować z Freertos'em muszą być właczone w tryb supervisor
co ciekawe ustalenie stosu __supervisor_stack_size=0 czy 1024 nie zmienia działania.
Pamięć dla tasków:
Każdy z kreowanych tasków ma wystarczającą ilość pamięci - korzystam z
a mimo to dodanie np. jakieś funkcji do tasku powoduje często wywołanie data abort. Zwiększenie pamięci dla tego konkretnego tasku nie przynosi rezultatu, pomimi, że: (Suma pamięci dla przydzielonych tasków) x (szerokość stosu = 4B)<configTOTAL_HEAP_SIZE.
Istnieje może jakiś wiarygodny sposób aby ocenić, że możliwości RAM uk zostały przekroczone?
Używam do celów testowych uk z rdzeniem ARM7TDMI flash 32kB RAM 8KB. Niestety nie są to porażające wartości stąd chciałbym możliwie optymalnie je wykorzystać przed ew. zmianą uk.
Bardzo często program ląduje w uchwycie ldr pc, =Data_Abort_Handler // Data Abort exception
...
Inicjalizacja pamięci:
Zgodnie z dokumentacją aby uk z rdzeniem ARM7 mogły pracować z Freertos'em muszą być właczone w tryb supervisor
__undefined_stack_size = 0;
__supervisor_stack_size = 1024;
__abort_stack_size = 0;
__fiq_stack_size = 0;
__irq_stack_size = 128;
__user_system_stack_size =0 ;co ciekawe ustalenie stosu __supervisor_stack_size=0 czy 1024 nie zmienia działania.
Pamięć dla tasków:
Cytat:#define configTOTAL_HEAP_SIZE ( ( size_t ) 3000)
Każdy z kreowanych tasków ma wystarczającą ilość pamięci - korzystam z
uxTaskGetStackHighWaterMark( NULL );a mimo to dodanie np. jakieś funkcji do tasku powoduje często wywołanie data abort. Zwiększenie pamięci dla tego konkretnego tasku nie przynosi rezultatu, pomimi, że: (Suma pamięci dla przydzielonych tasków) x (szerokość stosu = 4B)<configTOTAL_HEAP_SIZE.
Istnieje może jakiś wiarygodny sposób aby ocenić, że możliwości RAM uk zostały przekroczone?