STM32/STM8技术论坛
直播中

云静京

7年用户 189经验值
私信 关注
[问答]

Flash编程速度有提升空间吗?

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

回帖(9)

周灿金

2018-12-26 08:53:43
本帖最后由 stm1024 于 2018-6-7 18:58 编辑

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

李建宁

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

李飞

2018-12-26 09:07:40
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李维嘉

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

云静京

2018-12-26 09:34:43
引用: hongjane 发表于 2018-12-26 07:46
34K?100S?一分半钟?太慢,串口波特率多少?
印象中几百K也才2分钟,具体多少忘了。
可以根据波特率算出数据传输时间,剩下就是擦和写FLASH时间。

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

云静京

2018-12-26 09:40:53
引用: zhouxk 发表于 2018-12-26 08:01
100S绝对的慢。
仿真器下载时,是在RAM中跑编程算法程序的,然后给内部Flash烧写数据。
你也可以试试在RAM中跑程序,然后IAP往Flash里写数据,这样只是为了测试写Flash。

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

张丽华

2018-12-26 09:52:12
100S几十K,在真正生产都不用做了,优化下软件
举报

云静京

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

孙婷婷

2018-12-26 10:23:50
最起码要115200,9600的波特率传输速率本来就很慢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分