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
- STM32F0x IAP应用软件
- 应用软件?
- 应用软件
- 应用软件
- iap
- IAP
- IAP
- IAP
- IAP
- IAP
- STM32F0X单片机的内部FLASH问题
- linux应用软件
- 应用软件资源
- 应用软件开发
- 手机应用软件
- 应用软件安全
- 数据库应用软件
- wince2416应用软件
- MySQL数据库的重要文件
- Linux C/C++ include“”环境变量
- 计算机组成学习笔记(1)
- 普元 DI 6.2,DI使用的tomcat7.0.54扫描出安全漏洞,有什么解决方案么?
- mongodb 数据库备份与恢复2
- STM32F0x IAP应用软件
- 《深入理解java虚拟机》String.intern()探究
- Kvm虚拟机NAT、桥接网络模式配置
- Machine Learning 关于比赛的预测1
- 团体程序设计天梯赛-练习集 L1-033. 出生年
- Go网络编程之Socket编程
- 已经出狱的李一男和即将出狱的王欣,还能赶上这个时代吗?
- 坚石诚信ET199外壳加密方式
- 机器学习/深度学习入门资料汇总