本帖最后由 地瓜patch 于 2025-8-21 14:51 编辑
功能测试完成后,写了个boot升级程序。将app地址偏移了0x4000后,freertos直接跳入hardfault。
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)
{
/* Check the parameters */
assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));
assert_param(IS_NVIC_OFFSET(Offset));
SCB->VTOR = NVIC_VectTab | Offset;
}
#define CLI() __set_PRIMASK(1)
#define SEI() __set_PRIMASK(0)
int main(void)
{
/* USER CODE BEGIN 1 */
SEI();
NVIC_SetVectorTable(FLASH_BASE, 0x4000);
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
.......
}
没有boot程序,没有偏移时跑freetrtos程序正常。
|