地瓜patch 发表于 2025-8-21 14:47

App地址偏移后,freertos直接跳入hardfault

本帖最后由 地瓜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程序正常。



海滨消消 发表于 2025-8-22 16:29

内存访问越界?

duo点 发表于 2025-8-22 16:29

检查数组和指针访问,所有数组访问是否在有效范围内,指针初始化是否正确。

onlycook 发表于 2025-8-22 16:30

堆栈溢出?

onlycook 发表于 2025-8-22 16:30

增加堆栈大小

七毛钱 发表于 2025-8-22 16:31

中断配置错误?

内政奇才 发表于 2025-8-22 16:32

FreeRTOS配置不当?

地瓜patch 发表于 2025-8-22 17:37

结帖:在boot中跳转app前需要将禁用计数器,清零重载值
页: [1]
查看完整版本: App地址偏移后,freertos直接跳入hardfault