GD32e230的iap跳转app问题

[复制链接]
1353|4
手机看帖
扫描二维码
随时随地手机跟帖
koolent|  楼主 | 2020-8-20 15:37 | 显示全部楼层 |阅读模式
本帖最后由 koolent 于 2020-8-20 15:38 编辑

gd32e230跳转到app之前关闭总中断,跳转到app后开总中断后面串口发送会死,怎么回事

使用特权

评论回复
koolent|  楼主 | 2020-8-20 17:05 | 显示全部楼层
有iap升级的例程吗

使用特权

评论回复
sonicll| | 2020-8-21 09:21 | 显示全部楼层
串口发送是怎么个死法,发送标志不置位?进不了中断?你要描述清楚你的故障现象,别人才能帮你分析啊

使用特权

评论回复
lvben5d| | 2020-8-21 10:13 | 显示全部楼层
sonicll 发表于 2020-8-21 09:21
串口发送是怎么个死法,发送标志不置位?进不了中断?你要描述清楚你的故障现象,别人才能帮你分析啊 ...

这种帖子发出来 就是缺少换位思维的新人,不但问题描述不准确(因为经验问题)别人也不太了解进行交流。 希望要准确 详尽描述下才有机会,否则先去度娘寻找了。

使用特权

评论回复
清溪| | 2020-12-1 22:15 | 显示全部楼层
(1) GD32e230的iap程序一般开始会有判断,比如按键判断,当满足IO口电平条件时,将直接跳转到App程序,不进行程序的升级。
if(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0))
    {
            if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)      
                {
                    usart_disable(USART0);
                    dma_channel_disable(DMA_CH2);
                    JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);               
                    Jump_To_Application = (pFunction) JumpAddress;                          
                    __set_MSP(*(__IO uint32_t*) ApplicationAddress);                       
                    Jump_To_Application();                                                
    }

(2) 判 断 语 句 if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)。显然 0x10000 转换为 10进制计算,其大小为 64KB,如果应用代码使用内部 SRAM 没超过 128KB,或者本身 SRAM没超过 128KB,&0x2FFE0000 即堆栈地址是否落在:0x20000000~0x2001ffff 区间中,这个区间的大小为 128K。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

12

帖子

0

粉丝