搜索
bottom↓
回复: 11

写了个简单的spiflash文件管理工具

[复制链接]

出0入362汤圆

发表于 2018-12-31 23:52:58 | 显示全部楼层 |阅读模式
本帖最后由 tomzbj 于 2018-12-31 23:57 编辑

github地址: https://github.com/tomzbj/flasher.py
包括完整的上/下位机程序.

功能:
1. 读取flash信息, 包括厂商和容量;
2. 读取flash内保存的文件;
3. 列出flash内文件, 包括文件名/起始地址/字节数/写入时间/crc32校验值;
4. 删除flash内保存的文件;
5. 检查flash内文件的crc32值;
6. 检查flash空间使用情况;
7. 按指定地址和长度擦除flash;
8. 写入文件, 可以自动寻找合适的位置写入, 也可以指定地址写入.
效果:
列出文件:
  1. D:\work\__my_github\flasher.py>py flasher.py -l
  2. Connected, Port=COM9, baudrate=1000000

  3. Filename              Addr        Size      Date/Time             CRC32
  4. flasher.py            0x00030000  20437     2018/12/31 23:00:25   0xb1687a59
  5. hzk11a.bin            0x00000000  167200    2018/12/31 23:08:25   0xbeb70ae2

  6.         2 files, 187637 bytes,  69632 bytes free,  40960 bytes continuous
复制代码


写入文件:
  1. D:\work\__my_github\flasher.py>py flasher.py -w demo\firmware\Makefile
  2. Connected, Port=COM9, baudrate=1000000

  3. Erasing 100%...
  4. Writing 100%...
  5. Verifying... OK!
复制代码


显示使用情况:
  1. D:\work\__my_github\flasher.py>py flasher.py -u
  2. Connected, Port=COM9, baudrate=1000000

  3. Capacity: 256KB    Number of blocks: 64
  4. -: Empty block    X: Data block    R: Reserved block
  5. 000000-03FFFF: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------XXXXX----------R
复制代码


欢迎批评指正~~~

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入25汤圆

发表于 2019-1-1 00:40:15 | 显示全部楼层

还要下位机,,这样用起来就比较麻烦了!!

如果是连接到Cortex-M单片机上的SPI Flash,,可以考虑通过J-LINK读写单片机的SPI寄存器来读写SPI Flash,,这样就不需要下位机了

出0入0汤圆

发表于 2019-1-1 06:58:38 | 显示全部楼层
这个不适合用于单片机吧

出0入362汤圆

 楼主| 发表于 2019-1-1 08:49:34 来自手机 | 显示全部楼层
下位机我用的是 stm32f030

出0入4汤圆

发表于 2019-1-1 11:21:04 | 显示全部楼层
能给个python学习指导吗?python不会啊

出0入0汤圆

发表于 2019-1-1 15:42:08 | 显示全部楼层
import serial
这个用的是哪个包?

出0入362汤圆

 楼主| 发表于 2019-1-1 16:03:08 | 显示全部楼层
McuY 发表于 2019-1-1 15:42
import serial
这个用的是哪个包?

pyserial啊

出0入0汤圆

发表于 2019-1-1 17:35:06 | 显示全部楼层
关注,学习。

出0入0汤圆

发表于 2019-1-2 11:09:03 | 显示全部楼层
XIVN1987 发表于 2019-1-1 00:40
还要下位机,,这样用起来就比较麻烦了!!

如果是连接到Cortex-M单片机上的SPI Flash,,可以考虑通过J- ...

对,用J-LINK读比较好,不用弄下位机,上位机添加相应算法就可以支持不同芯片了

出0入362汤圆

 楼主| 发表于 2019-1-2 13:01:40 | 显示全部楼层
dreambox 发表于 2019-1-2 11:09
对,用J-LINK读比较好,不用弄下位机,上位机添加相应算法就可以支持不同芯片了 ...


毕竟还是依赖JLINK啊, IAP场合就不行了.
我这个下位机就俩文件, .c和.h各一个, 150多行, 2个函数, 占用空间情况:
  1. D:\work\__my_github\flasher.py\demo\firmware\thirdparty\flasher>arm-none-eabi-size flasher.o
  2.    text    data     bss     dec     hex filename
  3.     416       0      20     436     1b4 flasher.o
复制代码

这个开销不算大吧.
硬件相关部分(spi和uart接口)都作为函数指针传入, 移植性应该是没问题的, 在不同平台上不需要修改源程序. (除crc32部分外, 这部分以后继续优化.)

出0入0汤圆

发表于 2019-1-2 15:04:42 | 显示全部楼层
写入速度呢?

出0入362汤圆

 楼主| 发表于 2019-1-2 15:27:32 | 显示全部楼层

每秒大约几十k吧,串口是瓶颈,再就是flash的擦除时间了。
用户提供的擦除函数如果能优化一下,判断需要擦除的区域包含完整的32k或64k块时改用32k/64k擦除指令,在写入大文件时能省不少时间。
晚上回去我再测测~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 01:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表