Flash编程速度问题
IAP方式写Flash,34KB的数据大概需要100S,包括写和页擦除。但是用仿真器5S左右就搞定了。有提升空间吗?当然IAP方式是串口接数据,仿真器是SWD接口。本帖最后由 stm1024 于 2018-6-7 18:58 编辑
仿真器用的是axf文件,含有调试信息和bin文件,通常bin文件比hex文件要小很多,基本上50%都不到,可能这也是一个原因吧。
当然SWD实际上也是串口的,不过比ISP效率还是要高一些
34K?100S?一分半钟?太慢,串口波特率多少?
印象中几百K也才2分钟,具体多少忘了。
可以根据波特率算出数据传输时间,剩下就是擦和写FLASH时间。
擦手册,看看擦除要多少时间,擦除是主要时间。 先计算出数据传输的时间,写入地址,写入时间,解锁flash编写擦除控制器,擦除flash,也可看看【STM 32 IAP(对flash进行读写)】代码 100S绝对的慢。
仿真器下载时,是在RAM中跑编程算法程序的,然后给内部Flash烧写数据。
你也可以试试在RAM中跑程序,然后IAP往Flash里写数据,这样只是为了测试写Flash。 huangxuejia-292 发表于 2018-6-7 20:28
34K?100S?一分半钟?太慢,串口波特率多少?
印象中几百K也才2分钟,具体多少忘了。
可以根据波特率算出 ...
波特率9600。
擦除页反正就FLASH_ErasePage();
写的话调用的是FLASH_ProgramWord(),每次写4字节,有没有更好的函数了? toofree 发表于 2018-6-8 00:17
100S绝对的慢。
仿真器下载时,是在RAM中跑编程算法程序的,然后给内部Flash烧写数据。
你也可以试试在RAM ...
有没有测试过在内存中写Flash会快?而不是代码执行上的快。 100S几十K,在真正生产都不用做了,优化下软件 上位机程序效率修改后,现在34KB大约40S完成,大约1KB/S。
如果不是搬到内存中运行的话,提升空间应该不多了。 最起码要115200,9600的波特率传输速率本来就很慢。
页:
[1]