历史上的今天
返回首页

历史上的今天

今天是:2025年04月06日(星期日)

2021年04月06日 | 关于STM32的IAP总结

2021-04-06 来源:eefocus

最近有项目要用到IAP的功能,于是调试了下STM32的IAP,可能因为个人水平的原因吧,也颇 费了一般周折


现在返回头来想,其实还是蛮简单的. 整个过程按照如下步骤:

1.解锁

2.判断是否保护,有保护的话要先关闭保护

3.擦除

4.编程

5.复位进入应用程序区


关于解锁:看资料的时候说的神乎其神,有个读/编程控制器叫”FPEC 有几个寄存器,专门负责Flash的,对这几个寄存器以一定得顺序访问并设置即可成功解锁Flash,至于怎么访问,谁先谁后,数据手册上写的头晕,直接来个快刀斩乱麻Flash_UnLock()函数封装了这一系列的操作,有一点要注意,如果你是自己操作寄存器的话,如果操作的方法或者顺序不对都会造成Flash的锁定,之后的所有操作都会返回一个错误,直到下次启动后才能 正常操作关于保护,为了保护用户数据不被无意修改或者恶意读取,STM32提供了对芯片FLASH的写读等一系列的保护,加密方式是按照每4页为一个单位,也就是说,如果你想加密的话,你至少要加密4页,也就至少4K的空间,至于高密的STM32是否就是8K了?这个我没仔细去看!还待以后仔细查看?


关于擦除,擦除也是很简单,但是只能一页一页的擦除,ST公司也提供了一个函数,至于这个函数后面的输入地址参数,经过试验发现只要这个地址落在这个页里,就是擦除这个页,不知道这样理解对不对,还需要验证???


FLASHStatus=FLASH_ErasePage(Address);

关于编程,STM32编程一次只能以半字(16位)的方式编程,库提供了两个函数

FLASH_StatusFLASH_ProgramWord(u32Address,u32Data)编程一个字

FLASH_StatusFLASH_ProgramHalfWord(u32Address,u16Data)编程半个字在实际编程虽然你调用的一个字编程的时候内部操作仍然是按照半字的方式编程另外还有个最最重要的一点:还要注意大小端的问题,有些你认为可移植性很好的代码,其实并不一定,用位移组合成一个32位整型,然后当做参数来编程,由于大小端的模式,刚好第一个字节在最后边了,最后一个字节在前面了,导致了AN2557下载我的代码可以使用,我自己的下载我自己的代码竟然不能使用,很是郁闷了一阵子,读出整个Flash的内容就很容易看出来不同了,这个没有想到也着实该死,后来用指针强指,不但效率高了,程序也方便了,汗一个!


为什么有些人说STM32的IAP其实一个半成品,不成熟的呢????这个还需以后了解!关于应用程序还有些要说,在写应用程序的时候,只要记住,你的应用程序放在哪个地方,记得要在工程设置里设置一下,我用的是MDK,这点比IAR方便一些,指定你的代码从哪个地址加载,然后还要指定你的代码区的Size,也就是你芯片flash的总size


减去IAP程序的Size后得到的,这个设置的地方在projectOptionsforTarget的IROM1这个位置指定,还有一个地方,在Linker页面有个项也要指定R/OBase设置包含RO输出段的常量和代码域地址。地址必须为字对齐。如果没有指定,缺省的RO地址为0x8000。这里也要设置成应用程序启动的地址R/O基地址含有初始化程序的入口地址。最最重要的一点,中断向量表的映射,因为应用程序从其它地方启动了,向量表同样也要增加偏移,


不然中断入口找不到可是个麻烦事

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x2000);

这个函数就是做这个的,第二个参数是相对的,不是绝对的,也就是基地址+第二个参数其它好像也没什么了

推荐阅读

史海拾趣

Centellax Inc公司的发展小趣事

Centellax Inc公司自成立以来,一直致力于电子通信技术的研发与创新。在成立初期,公司凭借其独特的测试测量技术,在光通信行业中崭露头角。随着技术的不断迭代和市场的扩大,Centellax逐渐积累了大量的专利和知识产权,为公司的长期发展奠定了坚实的基础。

在技术创新方面,Centellax不断投入研发资源,推出了一系列高性能的测试测量设备。这些设备不仅满足了客户对高速器件深入分析的需求,还提升了公司在行业内的竞争力。同时,Centellax还积极与高校、研究机构等合作,共同推动电子通信技术的进步。

艾迈斯(AMASS)公司的发展小趣事

在国内市场取得一定成绩后,艾迈斯(AMASS)公司开始积极拓展国际市场。他们通过与国外知名企业的合作,成功将产品打入国际市场。同时,艾迈斯还针对不同国家和地区的市场需求,推出了定制化的产品和服务,进一步提升了公司在国际市场上的竞争力。如今,艾迈斯的产品已经远销全球多个国家和地区,成为了国际市场上备受瞩目的品牌之一。

台湾町洋(dinkle)公司的发展小趣事

町洋注重企业文化建设,倡导以人为本的管理理念。公司为员工提供了良好的工作环境和福利待遇,并积极开展各种培训和学习活动,帮助员工提升自身素质和专业技能。这种关注员工成长和发展的企业文化使得町洋的凝聚力不断增强,为公司的持续发展提供了有力保障。

Advanced Power Solutions公司的发展小趣事

Advanced Power Solutions公司自创立之初,就致力于电源管理技术的研发。在一次偶然的实验中,公司的研发团队发现了一种新的电源转换技术,可以显著提高能源利用效率。公司迅速投入资源,完善这项技术,并成功将其应用于新产品中。这款高效能的产品迅速在市场上获得了认可,为公司带来了可观的收益,也奠定了公司在电源管理领域的领先地位。

益升华(Essentra)公司的发展小趣事

在电子产品的保护领域,益升华(Essentra)公司一直走在行业前列。多年前,公司研发团队发现市场上缺乏一种既轻便又耐用的塑料保护盖。于是,他们投入大量资源进行研发,经过数百次的试验和改进,最终成功开发出一种新型的塑料保护盖,它不仅具备优异的抗冲击性和耐磨损性,还能有效隔绝外界环境中的静电和尘埃。这一创新产品迅速获得市场的认可,为益升华(Essentra)公司带来了可观的收益。

Advanced Linear Devices公司的发展小趣事

益升华(Essentra)公司深知客户是企业发展的基石。因此,公司始终将客户服务放在首位,致力于为客户提供优质的产品和服务。公司建立了完善的客户服务体系,为客户提供从产品咨询、选购、安装到售后维护的全流程服务。同时,公司还积极开展客户回访和满意度调查活动,及时了解客户需求和反馈意见,不断改进产品和服务质量。这些努力使益升华(Essentra)公司赢得了客户的广泛赞誉和信任。

问答坊 | AI 解惑

如何打造行业领军企业

效益是企业赖以生存的前提,创新是企业发展的动力,创新活动,是市场拉动和技术推动两者的汇聚点。在过去的计划经济时代,重庆川仪和当时很多国营企业一样,技术开发严重脱离市场、脱离生产,看似研发成果不断,但真正形成产品并赚回真金白银的却不 ...…

查看全部问答>

初始化网卡问题

EBOOT中的 CS8900: MAC Address: 11:11:11:11:11:11 ERROR: Probe: EISA Number Error. ERROR: InitEthDevice: Failed to initialize Ethernet controller. ERROR: OEMPlatformInit: Failed to initialize Ethernet controller. 这个错误一般 ...…

查看全部问答>

关于6410访问SPI总线的问题,请高手指教

小弟把三星的SPI总线驱动编译进了内核,(开发板提供了源码但是没有加入内核)。然后用WriteFile函数发送测试数据,可以看到SPI口输出正常,但是用ReadFile读取SPI口时,一直读回0. SPI的读取时序如下图,我先用 WriteFile(hSPI, &cBuffer_out, 1, ...…

查看全部问答>

哈哈 今天的第一帖又是我发的!~

哈哈 今天的第一帖又是我发的!~…

查看全部问答>

LM3S8962学习(二) -- 按键与中断

读按键的值,可以通过函数GPIOPinRead来完成   如何实现中断呢?主要有以下几个步骤需要做   1. 先定义一个LED和一个KEY #define LED GPIO_PIN_0#define KEY GPIO_PIN_0   2. 在startup_rvmdk.S 文件中增加PORT_E的中断服务 ...…

查看全部问答>

st32怎样测正负信号?

我需要测小于零的信号,我看过手册,是不是在参考电压端口用一个正负的参考电源?可STM32内部只有一个1.2v的正电源,可怎样找到一个负电源啊?别的单片机一般这样解决办法是采用的双端输入,STM32有没有类视的设置啊?请大家给一个解决方案…

查看全部问答>

【求助】请帮忙选个MOS管做开关管

要求条件是:通过电压为5V电流最大值是2A,有着方面得经验得DX帮忙啊!!!! 先谢谢了啊!!!! 把你们经常用的型号告诉我好吗???…

查看全部问答>

我的车库门摇控器上的LSD2262 芯片坏了...

请问贵网站的LSD2262 芯片能替换上去吗..!!!直接取下焊上就能用吗!!!先谢谢!!!我是菜鸟…

查看全部问答>

人人都爱易电源——转发有礼!

人人都爱易电源——转发有礼! 活动主题:人人都爱易电源——转发有礼!活动时间:10月11日—28日 活动链接:https://bbs.eeworld.com.cn/thread-352431-1-1.html…

查看全部问答>

学习很累!

哎,研究生生活马上过去一半了,回望着一年确实学到了不少东西,感觉自己能力提高了些许,但是还是很多细节的方面需要加强,继续努力,加油!…

查看全部问答>