История изменений
Исправление shkolnick-kun, (текущая версия) :
Я не настоящий сварщик, но разве static inline не заинлайнит эту функцию внутрь вызывающей?
Не всегда.
какие альтернативы
В моём случае:
- стек;
- глобальные переменные.
Там либа спроектирована так, чтобы можно было сделать:
const yaflEKFBaseSt kf = YAFL_EKF_BASE_INITIALIZER(fx, jfx, hx, jhx, 0, NX, NZ, 0.0, 0.0, kf_memory);
В этом случае деcкриптор самого фильтра будет лежать в ROМ/FLASH. В оперативе будет только kf_memory.
Более того, почти все аргументы вызовов функций yafl_math.c из yafl.c вычисляются во время компиляции.
Т.е. либу можно переписать так, что функций типа yafl_ekf_base_update больше не будет, а будут просто циклы по константным массивам с вызовами функций по указателям с передачей им указателей на константные структуры с аргументаами…
В этом случае исползование оперативы ещё сократится…
Исправление shkolnick-kun, :
Я не настоящий сварщик, но разве static inline не заинлайнит эту функцию внутрь вызывающей?
Не всегда.
какие альтернативы В моём случае:
- стек;
- глобальные переменные.
Там либа спроектирована так, чтобы можно было сделать:
const yaflEKFBaseSt kf = YAFL_EKF_BASE_INITIALIZER(fx, jfx, hx, jhx, 0, NX, NZ, 0.0, 0.0, kf_memory);
В этом случае деcкриптор самого фильтра будет лежать в ROМ/FLASH. В оперативе будет только kf_memory.
Более того, почти все аргументы вызовов функций yafl_math.c из yafl.c вычисляются во время компиляции.
Т.е. либу можно переписать так, что функций типа yafl_ekf_base_update больше не будет, а будут просто циклы по константным массивам с вызовами функций по указателям с передачей им указателей на константные структуры с аргументаами…
В этом случае исползование оперативы ещё сократится…
Исправление shkolnick-kun, :
Я не настоящий сварщик, но разве static inline не заинлайнит эту функцию внутрь вызывающей?
Не всегда.
какие альтернативы В моём случае:
- стек;
- глобальные переменные.
Там либа сделана так, чтобы можно было сделать:
const yaflEKFBaseSt kf = YAFL_EKF_BASE_INITIALIZER(fx, jfx, hx, jhx, 0, NX, NZ, 0.0, 0.0, kf_memory);
В этом случае деcкриптор самого фильтра будет лежать в ROМ/FLASH. В оперативе будет только kf_memory.
Более того, почти все аргументы вызовов функций yafl_math.c из yafl.c вычисляются во время компиляции.
Т.е. либу можно переписать так, что функций типа yafl_ekf_base_update больше не будет, а будут просто циклы по константным массивам с вызовами функций по указателям с передачей им указателей на константные структуры с аргументаами…
В этом случае исползование оперативы ещё сократится…
Исходная версия shkolnick-kun, :
Я не настоящий сварщик, но разве static inline не заинлайнит эту функцию внутрь вызывающей?
Не всегда.
какие альтернативы В моём случае:
- стек;
- глобальные переменные.
Там либа сделана, чтобы можно было сделать так:
const yaflEKFBaseSt kf = YAFL_EKF_BASE_INITIALIZER(fx, jfx, hx, jhx, 0, NX, NZ, 0.0, 0.0, kf_memory);
В этом случае деcкриптор самого фильтра будет лежать в ROМ/FLASH. В оперативе будет только kf_memory.
Более того, почти все аргументы вызовов функций yafl_math.c из yafl.c вычисляются во время компиляции.
Т.е. либу можно переписать так, что функций типа yafl_ekf_base_update больше не будет, а будут просто циклы по константным массивам с вызовами функций по указателям с передачей им указателей на константные структуры с аргументаами…
В этом случае исползование оперативы ещё сократится…