Post

STM32F BootLoader Jump to RTOS App

▶ BootLoader Jump to RTOS App 설정

  • systick 초기화 - rtos에서 사용
  • 주변장치 Deinit()
  • SCB->VTOR 레지스터를 운영 앱의 백터 테이블 주소로 설정
  • MSP(Main Stack Pointer) 재설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void jump_to_application(uint32_t app_address)
{
    void (*app_reset_handler)(void);
    // SysTick 비활성화
    SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;
    NVIC_DisableIRQ(SysTick_IRQn);

    // 백터 테이블 설정
    SCB->VTOR = app_address;

    // 스택 포인터 설정
    __set_MSP(*(volatile uint32_t *)app_address);

    // 리셋 핸들러 주소
    app_reset_handler = (void (*)(void))(*(volatile uint32_t *)(app_address+4));

    // 어플리캐이션 실행
    app_reset_handler();
}
This post is licensed under CC BY 4.0 by the author.