everkimage 发表于 2018-6-7 17:48:10

Flash编程速度问题

IAP方式写Flash,34KB的数据大概需要100S,包括写和页擦除。但是用仿真器5S左右就搞定了。有提升空间吗?当然IAP方式是串口接数据,仿真器是SWD接口。

stm1024 发表于 2018-6-7 18:57:09

本帖最后由 stm1024 于 2018-6-7 18:58 编辑

仿真器用的是axf文件,含有调试信息和bin文件,通常bin文件比hex文件要小很多,基本上50%都不到,可能这也是一个原因吧。
当然SWD实际上也是串口的,不过比ISP效率还是要高一些

huangxuejia-292 发表于 2018-6-7 20:28:12

34K?100S?一分半钟?太慢,串口波特率多少?
印象中几百K也才2分钟,具体多少忘了。
可以根据波特率算出数据传输时间,剩下就是擦和写FLASH时间。
擦手册,看看擦除要多少时间,擦除是主要时间。

feixiang20 发表于 2018-6-8 00:06:33

先计算出数据传输的时间,写入地址,写入时间,解锁flash编写擦除控制器,擦除flash,也可看看【STM 32 IAP(对flash进行读写)】代码

toofree 发表于 2018-6-8 00:17:47

100S绝对的慢。
仿真器下载时,是在RAM中跑编程算法程序的,然后给内部Flash烧写数据。
你也可以试试在RAM中跑程序,然后IAP往Flash里写数据,这样只是为了测试写Flash。

everkimage 发表于 2018-6-8 08:13:27

huangxuejia-292 发表于 2018-6-7 20:28
34K?100S?一分半钟?太慢,串口波特率多少?
印象中几百K也才2分钟,具体多少忘了。
可以根据波特率算出 ...

波特率9600。
擦除页反正就FLASH_ErasePage();
写的话调用的是FLASH_ProgramWord(),每次写4字节,有没有更好的函数了?

everkimage 发表于 2018-6-8 08:17:13

toofree 发表于 2018-6-8 00:17
100S绝对的慢。
仿真器下载时,是在RAM中跑编程算法程序的,然后给内部Flash烧写数据。
你也可以试试在RAM ...

有没有测试过在内存中写Flash会快?而不是代码执行上的快。

forget121 发表于 2018-6-8 09:34:11

100S几十K,在真正生产都不用做了,优化下软件

everkimage 发表于 2018-6-13 16:10:22

上位机程序效率修改后,现在34KB大约40S完成,大约1KB/S。
如果不是搬到内存中运行的话,提升空间应该不多了。

发表于 2018-6-13 16:33:42

最起码要115200,9600的波特率传输速率本来就很慢。
页: [1]
查看完整版本: Flash编程速度问题