cyneer 发表于 2019-9-20 16:30

GD32 BootLoader跳转踩大坑了

本帖最后由 cyneer 于 2019-9-20 16:36 编辑

使用BootLoader跳转过来,可以进入App,但发现初始化FreeRTOS任务时系统卡住了,也不在HardFault也不往其它地方执行程序:
App中使用了以下设置:


结果发现是GD32的库函数,gd32f30x_misc.c下的这个函数,又把中断向量表重新设置回了0x08000000的位置………………………………………………
/*!
    \brief      configures the nested vectored interrupt controller
    \paramnone
    \param none
    \retval   none
*/
static void nvic_configuration(void)
{
    //nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x0);                              //已经设置了中断向量表,这里不用再重设
    nvic_irq_enable(ENET_IRQn, ATKMODU_HIGHTEST_INTPRY, 0);//nvic_irq_enable(ENET_IRQn, 2, 0);
}

{:huffy:}{:huffy:}


实际上是在配置网络那个函数里,重新设置了一下中断向量表:
void enet_system_setup(void)
{
    nvic_configuration();
________其它省略。
}

库函数用顺手了,结果踩大坑了………………………………
我的内心…………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………



mycent 发表于 2019-9-25 20:48

感谢!让我们以后不跳这个坑。

airwill 发表于 2019-9-28 12:00

嗯,做 BOOTLOAD, 要注意 中断向量表的地址迁移

ningling_21 发表于 2019-9-28 13:52

这个确实要注意

Ketose 发表于 2019-9-29 09:39

自己没有细心弄,就从别人身上找原因?

lvben5d 发表于 2019-10-31 10:56

Ketose 发表于 2019-9-29 09:39
自己没有细心弄,就从别人身上找原因?

也不能怪库函数,毕竟人家要默认设置一下存放地址的开点。 你应该自己断章取义,用其他库函数哈。

CharryW 发表于 2019-10-31 14:48

楼主,nvic_configuration(void)这个函数不是库函数哟,这个只是例程中的中断配置而已

YZyuan123 发表于 2021-3-31 14:20

感谢楼主

朝生 发表于 2023-2-10 15:51

有Bootloader的,中断向量就需要重新配置。

Pretext 发表于 2023-2-10 15:51

正常,之前也有过这个问题。

芯路例程 发表于 2023-2-10 15:52

哈哈,下回注意,开发就是踩了坑,以后就不会再踩这个坑了。

七毛钱 发表于 2023-2-22 15:17

踩个坑长个记性

Jacquetry 发表于 2023-3-2 19:54

中断向量表要重新配置吧

go1d 发表于 2023-5-30 17:03

帮大忙了,找了半天没找到为啥跳不去中断处理
页: [1]
查看完整版本: GD32 BootLoader跳转踩大坑了