LINUX.ORG.RU

История изменений

Исправление 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 больше не будет, а будут просто циклы по константным массивам с вызовами функций по указателям с передачей им указателей на константные структуры с аргументаами…

В этом случае исползование оперативы ещё сократится…