startup.c

Для того чтобы наша фунция work() выполнялась необходимо для начала сделать ее видимой в данном участке программы:

/* external vars */
extern unsigned long _estack;
extern void work();

А затем передать ей управление в обработчике вектора сброса:

/* reset handler */
void reset_handler(void) {
    /* call working code */
    work();
}