打印
[STM32F1]

关于IAP成功后,应用程序运行一半出错的问题。

[复制链接]
1412|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caijize|  楼主 | 2013-12-16 10:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 caijize 于 2013-12-16 10:41 编辑

最近需要给产品新加个“空中升级”的功能,自己长写了个简单的程序来测试,下载运行都成功了,但应用程序运行到一半却没反应,请高手们帮我看一下,问题可能出在哪里。
应用程序主函数如下:


int main(void){
        u32 i = 0;
        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);
        SystemInit();
        LED_Init();
        while(1){                               // (1)
                LED_SetRedOn();         
                LED_SetGreenOff();
                while(i<0x2ff4){                //(2)
                        if(i>0x2f4){    //(4)
                                LED_SetGreenOn();           
                        //        LED_SetRedOff();
                        }
                        i++;        
                }                        
                LED_SetGreenOff();
                LED_SetRedOff();         
                while(i>0){            //(3)
                        i--;
                }
        }
}



经过多次测试,程序一开始能正常运行点亮红灯跟绿灯,但如果第二个WHILE循环条件大于0x2f4的话循环跳不出来,同样如果条件(4)的值大于0x2f4的话绿灯不被点亮。而只要把循环(2)的条件设为小于0x2f4的话循环就能跳出,把灯都灭了,但后面的循环就跳不出来。

我已经按照网上说的将应用程序的起始地址设成了存放的地址,偏移地址VECT_TAB_OFFSET也已经设了,是不是还有其它什么遗漏的地方呢?

先谢谢各位大侠们指教!!















沙发
副BAN主就是我| | 2013-12-16 11:37 | 只看该作者
1,这个程序在修改flash地址和nvic地址之前是没问题的吧?

2,升级之后监测过变量i的值的变化吗?有屏幕的话最好,没屏幕的找特殊的flash地址写入i值,看看为什么跳不出循环。

使用特权

评论回复
板凳
ffeige1984| | 2013-12-16 18:23 | 只看该作者
空中升级这个功能我们做过:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000) 别人把偏移量改为0x2000是因为别人前 0x2000放有BOOT

使用特权

评论回复
地板
cjhk| | 2013-12-16 19:09 | 只看该作者
空中升级  以前公司做过   感觉挺方便的   楼主   比较有意思

使用特权

评论回复
5
caijize|  楼主 | 2013-12-16 19:26 | 只看该作者
谢谢Michael大神,果然是中断引起的问题,在Bootloader里有用了SysTick中断,而应用程序里面没有,所以引起了错误。我在应用程序里也打开了SysTick中断后就没有问题了。

使用特权

评论回复
6
max_v| | 2013-12-16 19:58 | 只看该作者
ffeige1984 发表于 2013-12-16 18:23
空中升级这个功能我们做过:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000) 别人把偏移量改为0x2000是因 ...

空中升级用啥无线模块?

使用特权

评论回复
7
ffeige1984| | 2013-12-16 21:26 | 只看该作者
我们是用GPRS,想这位老兄用的IAP我们只是下载程序

使用特权

评论回复
8
caijize|  楼主 | 2013-12-17 10:52 | 只看该作者
ffeige1984 发表于 2013-12-16 21:26
我们是用GPRS,想这位老兄用的IAP我们只是下载程序

嗯,我也是打算用GPRS升级~~

使用特权

评论回复
9
ffeige1984| | 2013-12-17 10:58 | 只看该作者
协议做好行,在加上校验 基本上就没什么问题

使用特权

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

本版积分规则

5

主题

20

帖子

0

粉丝