Ну что же - жаль.
Я все же попробую.
Мне кажется - Вы меня не совсем правильно поняли.
Как будет размер расти, если нужные функции собраны один раз а вызываем их мы и из прошивки, и из бутлоадера?
Их функций то всего - с десяток!
Но могут быть "тяжёлыми" для дублирования и в бутлоадере и в прошивке.
Шрифты, картинки...
Картинка на весь экранчик (герб России) - 34Кб, к примеру.
Не... с SD карты можно выводить картинки, но они медленнее грузятся, для бьющегося сердечка (теперь это будет "фича" Армады) - скорость низка, только DMA и флеш!
FreeRTOS - конечно в основной прошивке!
Речь скорее о "драйверах".
Уже пробую
Код:
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
CCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 0
FLASH (rx) : ORIGIN = 0x08069800, LENGTH = 44K
FUNC_ARR (rx) : ORIGIN = 0x08069000, LENGTH = 2K
INTERRUPTS_STUB (rx) : ORIGIN = 0x8000000, LENGTH = 4K
MEMORY_ARRAY (xrw) : ORIGIN = 0x00000000, LENGTH = 0
}
Код:
SECTIONS
{
/*
* For Cortex-M devices, the beginning of the startup code is stored in
* the .isr_vector section, which goes to FLASH
*/
.isr_vector_stub :
{
. = ALIGN(4);
_isr_stub = .;
KEEP(*(.isr_vector_stub))
. = ALIGN(4);
} >INTERRUPTS_STUB
.func_pointer_arr :
{
. = ALIGN(4);
_func_p_arr = .;
KEEP(*(.func_pointer_arr))
. = ALIGN(4);
} > FUNC_ARR
Код:
#include <stdio.h>
typedef void
(* const pFunc)(void);
extern int summ(int, int);
extern int multiplication(int, int);
__attribute__ ((section(" .func_pointer_arr"),used))
pFunc func_pointers_array[] =
{
pFunc(summ),
pFunc(multiplication),
pFunc(0x0),
pFunc(0x0)
};
Код:
#include <stdio.h>
int summ(int x, int y){
return (x+y);
}
int multiplication(int x, int y){
return (x*y);
}
Правильно?