Хорошая идея записать из бутлоадыря, я как то и не подумал... а по поводу размещения - надо было все функции BOOT определять так:
unsigned char func1(void) __attribute__ (( section("BS_Section") ));
и в gld добавить
BS_Section __BSP_BASE :
{
*(BS_Section);
}>program
но лень остановила доделать