STM32F0x IAP应用软件

来源:互联网 发布:可以测颜值的软件 编辑:程序博客网 时间:2024/06/01 16:39

首先,本文不是提供源码的文章,而是提供一种产品和设计思路,所以请索要源码的人自觉绕开。

原创作品,转载请注明出处。

-------------------------------------------------------------------------------------------

IAP+APP 是最基本的远程升级套件,而很多人忽略了IAP升级软件的重要性,这里就来讲讲这个IAP升级软件。暂时不考虑xmode、ymode,因为根本就不实用,在不同的平台都不能兼容,最多只能做做试验。

-------------------------------------------------------------------------------------------

STM32F0xx系列是比F1系列便宜许多的,但是有一个不好的地方,就是FLASH容量偏小、运算速度慢、甚至IAP机制都不能用F1系列的。

所以本文就来介绍一款F0能够适用的IAP及电脑端上层IAP应用软件。

众所周知,F1系列的IAP一般都要占用12K的空间(08000000-08003000),或者小一点的也要8K的空间(08000000-08002000),这对于F1系列的FLASH来说,这并不算多;但是对于F0这种经济性的MCU就算多了,所以首先就要把IAP代码段缩减一半,做到4K之内(08000000-08001000),这对于STM32F030F4之类的只有16K的FLASH特别有效。


然后接下来就是本文提供的重点内容:APP代码修改、文件合并工具、IAP应用软件。

-------------------------------------------------------------------------------------------

1.APP代码修改

这个应该是老生长谈的事情了,首先是中断向量的偏移问题,F1系列的中断向量偏移比较简单,而F0系列的则是略有不同,如下:

     RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

    for(i = 0; i < 48; i++)
        VectorTable[i] = *(__IO uint32_t *)(APPLICATION_ADDRESS + (i << 2));//APPLICATION_ADDRESS =0x08001000
    SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
    

请注意:以上这段一定要放在MAIN函数的最前面,特别是各个NVIC配置之前;如果位置错了,很有可能因为意外中断而导致跑飞!!!

其次,为了节省FLASH空间,这里不采用FLASH的标志作为跳转依据,而是采用BKP0作为标志寄存器,如下:

#ifdef IAP_DEBUG
        case 0xe0:
            if((UART1_RXB[2] == 0x01) && (UART1_RXB[3] == 0x01))//串口收到特定数据,则进入IAP模式
            {
                RTC_WriteBackupRegister(RTC_BKP_DR0, 0xABABABAB);//在BKP0位置写IAP标志(0xABABABAB)
                NVIC_SystemReset(); //重启之后IAP会判断BKP0寄存器
            }
            break;
#endif

因为只要没掉电,BKP寄存器的数据在SystemReset过程中是不会丢失的,完全可以实现APP跳转IAP过程中保存数据。当然BKP的使用方法需要按照ST的说明书,先打开RTC功能。。。次要细节这里就不做说明。

之后还要设置开发工具里面的起始位置,这里以IAR为例:


-------------------------------------------------------------------------------------------

2.文件合并工具

不管哪种的IAP,都需要用JLINK之类的工具把IAP段先行烧录进去,否则无法使用;但是这会导致操作麻烦,生产过程复杂。

使用文件合并工具就能减少这段时间。

这个工具是用来把IAP段、APP段合并为同一个文件的工具,便于一次性烧录,免去二次烧录的麻烦。


当然这个工具还会把APP段空闲FLASH全部写成FF,避免不必要的代码残留导致的意外问题。

还有针对不同容量的芯片,配置文件也略有不同,本文暂且不详述。

-------------------------------------------------------------------------------------------

3.IAP应用软件

为什么费时费力要做UI软件?话说MCU工程师们总是会接点什么外包工程的,难免会遇到这样的问题:

    A  .授权烧录,但是无法控制数量;

    B .自己烧录费时费事、物流费用高;

    C .代码泄漏或者被解密的风险;

    D .升级不方便、难以应对突发事件。

因为JLINK,STLINK,ULINK之类的工具是没有计数功能,也没有授权文件,谁都能烧录,而且还能读出全部代码。这就带来以上的尴尬问题。

而IAP应用软件正好可以解决这些麻烦。




授权文件正在开发中,敬请期待(其实是我嫌麻烦。有加密的功能用起来不方便,最重要是有一次忘记加密算法把自己坑了。后续需要的话再补充进去)

-------------------------------------------------------------------------------------------

4.使用方法

略,太简单我不想写。

5.资源下载

IAP软件:

http://download.csdn.net/download/triv2009/10166626

文件合并工具:

http://download.csdn.net/download/triv2009/10167131

原创粉丝点击