历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2019年03月11日 | STM32F0x IAP应用软件

2019-03-11 来源:eefocus

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


IAP+APP 是最基本的远程升级套件,而很多人忽略了IAP升级软件的重要性,这里就来讲讲这个IAP升级软件。暂时不考虑xmode、ymode,因为根本就不实用:在不同的WINDOWS平台都不能兼容,而且还要分X86/64BIT版本,IAP段代码占空间大。。。最多只能拿来做做试验。


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


STM32F0xx系列是比F1系列便宜许多的,便宜也有好货:单位功耗低、引脚少、系列全。但是有一些不好的地方,比如FLASH容量偏小、运算速度慢、甚至IAP机制都不能用F1系列的。


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


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


IAP一般都是采用串口1,但是针对STM32F042xx之类的建议采用串口2,应该修改IAP代码,因为这些芯片的串口1大都复用于CAN/USB,这些修改也较为容易。


然后接下来就是本文提供的重点内容: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的说明书,打开PWR\RTC功能。。。次要细节这里就不做说明。


注意:使用BKP寄存器有一个好处,就是IAP代码段不需要考虑芯片的FLASH大小,可以做成全系列通用。因为不同容量的芯片,其BKP地址是一致的,整个系列都可以使用同一个IAP代码;而采用FLASH方式,则IAP段代码就必须根据芯片的FLASH容量来修改并重新编译,比如stm32F0XX6/XX8系列的IAP段就不能通用,一个32K,一个64K,因为终点FLASH地址不同,必须修改对应的升级标志地址,导致通用性不佳。


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


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


2.文件合并工具


不管哪种的IAP,都需要用烧录工具把IAP段先行烧录进去,然后通过IAP烧录APP。但是这会导致操作麻烦,生产过程复杂。


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


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



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


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


3.IAP应用软件


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


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


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


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


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


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


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



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


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

推荐阅读

史海拾趣

Daniels Manufacturing公司的发展小趣事

进入21世纪后,随着信息技术的快速发展,数字化转型成为制造业的重要趋势。DMC紧跟时代步伐,积极推进数字化转型和智能制造。通过引入先进的生产管理系统、自动化生产线和智能检测设备,DMC实现了生产过程的数字化、网络化和智能化。这不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗。此外,DMC还利用大数据和人工智能技术,对市场需求进行精准预测和分析,为产品研发和市场营销提供有力支持。

BUSSMANN公司的发展小趣事

1985年,库柏工业收购了Bussmann公司,成立了新的事业部——“Cooper Bussmann熔断器”。这一收购为Bussmann带来了更广阔的市场和更多的资源,同时也带来了新的挑战和机遇。在库柏工业的支持下,Bussmann开始了更加积极的创新和市场拓展,逐渐成为了全球熔断器行业的领导者。

Crameda Intersys公司的发展小趣事

Crameda Intersys公司非常重视人才的培养和引进。公司建立了完善的人才培养机制,通过内部培训和外部引进相结合的方式,不断提升员工的专业技能和创新能力。同时,公司还积极营造创新氛围,鼓励员工提出新的想法和解决方案。这些措施有效地激发了员工的创新热情,为公司的发展提供了源源不断的人才支持。

Eink公司的发展小趣事
进入21世纪,E-Ink继续推动电子纸技术的发展。2000年,E-Ink与美国朗讯科技公司合作,成功开发出第一张可卷曲的电子纸和电子墨。随后,在2001年,E-Ink与日本Toppan Printing公司合作,利用Toppan的滤镜技术生产出了彩色电子纸,这是电子纸技术的一大突破。
恒连电子(EVERCOM)公司的发展小趣事

恒连电子注重企业文化建设和团队建设,为员工创造了一个良好的工作环境和发展平台。公司倡导“以人为本”的管理理念,关注员工的成长和发展,为员工提供丰富的培训和学习机会。同时,公司还建立了完善的激励机制和福利制度,激发员工的工作积极性和创造力。在团队建设方面,公司注重团队协作和沟通能力的培养,鼓励员工相互学习、共同进步。通过优秀的团队建设和企业文化建设,恒连电子打造了一支高效、专业、团结的队伍,为公司的发展提供了有力的人才保障。

达方(DARFON)公司的发展小趣事

随着市场竞争的加剧,达方电子意识到单一产品线的风险。因此,公司开始实施多元化战略,逐步拓展至电源元件、整合通讯元件等领域。通过多元化战略的实施,达方电子成功降低了经营风险,并为公司带来了新的增长点。

问答坊 | AI 解惑

求助 关于反应速度测试仪的设计 (MCS-51单片机)

希望高手们帮帮忙先谢谢了!要求如下: 1  能够完成一个人反应速度的测试工作,并将结果显示在LED数字显示屏上。 2  程序开始时亮黄灯进入准备状态,被测试者按一次按钮则黄灯灭,开始进行测试。 3  每一个测试完成 ...…

查看全部问答>

发现同一个贴子里多个附件下载的问题

最近在论坛里发现很多帖子的资源包含多个附件,而这些附件都是一个文件分成多个的,下载时会连续扣调芯币,这样的话论坛中大部分人几乎无法负担。 这种情况,建议论坛能不能改一下,在一个帖子里的附件下载只扣一次芯币,其他附件就不用扣了。…

查看全部问答>

大赛B题 声源自制

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 我原来写过几个简单的小程序 有双音多频 单音多频的 大家可以下载看看 这几个程序使用的是PIC16F54 都是可以直接使用的 大家只要将HEX文件烧录就可以用了  …

查看全部问答>

关于步进电机控制

各位高手:这是两相电机,怎么接线呢?   我接的线不知道是不是不对,还是程序有问题,在软件防真时可以,但是下载到板上时电机就老是抖动,没按照我设计的转一圈转。   我是:2跟5并接12V,然后P0.0接3  P0.1接1  P0.2接4 ...…

查看全部问答>

ISE文件类型说明

在使用ISE进行设计的过程中,会在你的工程目录中生成好多类型的文件,这些文件是什么文件呢?通过自己和网上朋友的经验对ISE的文件类型做一下小小总结: ISE文件类型说明 *.bit  下载配置文件。*.bld  报告文件。*.edn  网表文 ...…

查看全部问答>

请问哪里有无线协议的详细文档下载?

刚学GPRS开发,想找些无线通讯协议看看,google了一下,没找到,所以想请教一下,哪里有这一类的完整文档下载,谢谢!…

查看全部问答>

电感

电感电感在电路中常用“L”加数字表示,如:L6表示编号为6的电感。电感线圈是将绝缘的导线在绝缘的骨架上绕一定的圈数制成。直流可通过线圈,直流电阻就是导线本身的电阻,压降很小;当交流信号通过线圈时,线圈两端将会产生自感电动势,自感电动势 ...…

查看全部问答>

5天学会Protel99SE图文教程下载

虽然这个是老古董了,因为看到,还有朋友再使用和学习protel 99,这份资料不错,相信能给初学者带来帮助。 …

查看全部问答>

《单片机与计算机串口通信实践》

串口通信的第一种实现方案:半双工通信方式;这适用于:下位机需要等待上位机的回复之后,方可继续发送下一个数据包的应用场合。在大多数的串口书籍中,串口通信的具体实现均是采用的该方案;但功能太简化、代码不细致。在本书中,全面考虑了菜单 ...…

查看全部问答>

关于nokia5110显示屏的参数设定

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 刚刚做了下实验,看看调整供电电压对nokia5110液晶显示屏的影响 这个显示屏由于比较便宜,又是点阵的,所以用的比较多,我虽然老早就用了,但是一直有点疑问放在心上,就是其参数设定问题 1 ...…

查看全部问答>