YMODEM으로 다운로드한 펌웨어로 점프해서 실행을 해본다.
프로젝트 파일
점프 유무 플래그 추가
펌웨어 주소로 점프 하는 코드 추가
if (is_jump)
{
void (**jump_func)(void) = (void (**)(void))(0x08020000 + 4);
printf("JUMP\\n");
printf(" addr : 0x%lX\\n", (uint32_t)*jump_func);
HAL_Delay(100);
HAL_RCC_DeInit();
// Disable Interrupts
//
for (int i=0; i<8; i++)
{
NVIC->ICER[i] = 0xFFFFFFFF;
__DSB();
__ISB();
}
SysTick->CTRL = 0;
(*jump_func)();
}
다운로드 완료 후 JUMP 실행
case YMODEM_TYPE_END:
printf("\\n");
printf("FLASH End \\n");
is_jump = true;
break;
전체 코드
다운로드 및 펌웨어 실행 결과
펌웨어 점프 후 펌웨어를 디버깅 하기 위해서 부트로더 디버깅 설정에서 심볼을 추가한다.
부트로더에서 점프후 펌웨어 디버깅이 가능하다.